trafficgraphwidget.h
1 // Copyright (c) 2011-present The Bitcoin Core developers 2 // Distributed under the MIT software license, see the accompanying 3 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 5 #ifndef BITCOIN_QT_TRAFFICGRAPHWIDGET_H 6 #define BITCOIN_QT_TRAFFICGRAPHWIDGET_H 7 8 #include <QWidget> 9 #include <QQueue> 10 11 #include <chrono> 12 13 class ClientModel; 14 15 QT_BEGIN_NAMESPACE 16 class QPaintEvent; 17 class QTimer; 18 QT_END_NAMESPACE 19 20 class TrafficGraphWidget : public QWidget 21 { 22 Q_OBJECT 23 24 public: 25 explicit TrafficGraphWidget(QWidget *parent = nullptr); 26 void setClientModel(ClientModel *model); 27 std::chrono::minutes getGraphRange() const; 28 29 protected: 30 void paintEvent(QPaintEvent *) override; 31 32 public Q_SLOTS: 33 void updateRates(); 34 void setGraphRange(std::chrono::minutes new_range); 35 void clear(); 36 37 private: 38 void paintPath(QPainterPath &path, QQueue<float> &samples); 39 40 QTimer* timer{nullptr}; 41 float fMax{0.0f}; 42 std::chrono::minutes m_range{0}; 43 QQueue<float> vSamplesIn; 44 QQueue<float> vSamplesOut; 45 quint64 nLastBytesIn{0}; 46 quint64 nLastBytesOut{0}; 47 ClientModel* clientModel{nullptr}; 48 }; 49 50 #endif // BITCOIN_QT_TRAFFICGRAPHWIDGET_H