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)36 private:
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