Add traffic monitor
[novacoin.git] / src / qt / trafficgraphwidget.h
1 // Copyright (c) 2011-2013 The Bitcoin developers
2 // Distributed under the MIT/X11 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 class ClientModel;
12
13 QT_BEGIN_NAMESPACE
14 class QPaintEvent;
15 class QTimer;
16 QT_END_NAMESPACE
17
18 class TrafficGraphWidget : public QWidget
19 {
20     Q_OBJECT
21
22 public:
23     explicit TrafficGraphWidget(QWidget *parent = 0);
24     void setClientModel(ClientModel *model);
25     int getGraphRangeMins() const;
26
27 protected:
28     void paintEvent(QPaintEvent *);
29
30 public slots:
31     void updateRates();
32     void setGraphRangeMins(int mins);
33     void clear();
34
35 private:
36     void paintPath(QPainterPath &path, QQueue<float> &samples);
37
38     QTimer *timer;
39     float fMax;
40     int nMins;
41     QQueue<float> vSamplesIn;
42     QQueue<float> vSamplesOut;
43     quint64 nLastBytesIn;
44     quint64 nLastBytesOut;
45     ClientModel *clientModel;
46 };
47
48 #endif // BITCOIN_QT_TRAFFICGRAPHWIDGET_H