1 // Copyright (c) 2011-2020 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 #include <QPainterPath> 11 12 class ClientModel; 13 14 QT_BEGIN_NAMESPACE 15 class QPaintEvent; 16 class QTimer; 17 QT_END_NAMESPACE 18 19 class TrafficGraphWidget : public QWidget 20 { TrafficGraphWidget(QWidget * parent)21 Q_OBJECT 22 23 public: 24 explicit TrafficGraphWidget(QWidget *parent = nullptr); 25 void setClientModel(ClientModel *model); 26 int getGraphRangeMins() const; 27 28 protected: 29 void paintEvent(QPaintEvent *) override; 30 31 public Q_SLOTS: 32 void updateRates(); 33 void setGraphRangeMins(int mins); 34 void clear(); 35 setClientModel(ClientModel * model)36private: 37 void paintPath(QPainterPath &path, QQueue<float> &samples); 38 39 QTimer *timer; 40 float fMax; 41 int nMins; 42 QQueue<float> vSamplesIn; 43 QQueue<float> vSamplesOut; 44 quint64 nLastBytesIn; getGraphRangeMins() const45 quint64 nLastBytesOut; 46 ClientModel *clientModel; 47 }; 48 49 #endif // BITCOIN_QT_TRAFFICGRAPHWIDGET_H paintPath(QPainterPath & path,QQueue<float> & samples)50