move back to original directory structure
[novacoin.git] / src / qt / bitcoingui.h
1 #ifndef BITCOINGUI_H
2 #define BITCOINGUI_H
3
4 #include <QMainWindow>
5 #include <QSystemTrayIcon>
6
7 class TransactionTableModel;
8 class ClientModel;
9
10 QT_BEGIN_NAMESPACE
11 class QLabel;
12 class QLineEdit;
13 class QTableView;
14 class QAbstractItemModel;
15 class QModelIndex;
16 QT_END_NAMESPACE
17
18 class BitcoinGUI : public QMainWindow
19 {
20     Q_OBJECT
21 public:
22     explicit BitcoinGUI(QWidget *parent = 0);
23     void setModel(ClientModel *model);
24     
25     /* Transaction table tab indices */
26     enum {
27         AllTransactions = 0,
28         SentReceived = 1,
29         Sent = 2,
30         Received = 3
31     } TabIndex;
32
33 protected:
34     void changeEvent(QEvent *e);
35     void closeEvent(QCloseEvent *event);
36
37 private:
38     ClientModel *model;
39
40     QLineEdit *address;
41     QLabel *labelBalance;
42     QLabel *labelConnections;
43     QLabel *labelBlocks;
44     QLabel *labelTransactions;
45
46     QAction *quit;
47     QAction *sendcoins;
48     QAction *addressbook;
49     QAction *about;
50     QAction *receivingAddresses;
51     QAction *options;
52     QAction *openBitcoin;
53
54     QSystemTrayIcon *trayIcon;
55     QList<QTableView *> transactionViews;
56
57     void createActions();
58     QWidget *createTabs();
59     void createTrayIcon();
60     void setTabsModel(QAbstractItemModel *transaction_model);
61
62 public slots:
63     void setBalance(qint64 balance);
64     void setAddress(const QString &address);
65     void setNumConnections(int count);
66     void setNumBlocks(int count);
67     void setNumTransactions(int count);
68     void error(const QString &title, const QString &message);
69     /* It is currently not possible to pass a return value to another thread through
70        BlockingQueuedConnection, so use an indirected pointer.
71        http://bugreports.qt.nokia.com/browse/QTBUG-10440
72     */
73     void askFee(qint64 nFeeRequired, bool *payFee);
74
75 private slots:
76     void sendcoinsClicked();
77     void addressbookClicked();
78     void optionsClicked();
79     void receivingAddressesClicked();
80     void aboutClicked();
81     void newAddressClicked();
82     void copyClipboardClicked();
83     void trayIconActivated(QSystemTrayIcon::ActivationReason reason);
84     void transactionDetails(const QModelIndex& idx);
85     void incomingTransaction(const QModelIndex & parent, int start, int end);
86 };
87
88 #endif