Dash Core  0.12.2.1
P2P Digital Currency
bitcoingui.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2015 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_BITCOINGUI_H
6 #define BITCOIN_QT_BITCOINGUI_H
7 
8 #if defined(HAVE_CONFIG_H)
9 #include "config/dash-config.h"
10 #endif
11 
12 #include "amount.h"
13 
14 #include <QLabel>
15 #include <QMainWindow>
16 #include <QMap>
17 #include <QMenu>
18 #include <QPoint>
19 #include <QPushButton>
20 #include <QSystemTrayIcon>
21 
22 class ClientModel;
23 class NetworkStyle;
24 class Notificator;
25 class OptionsModel;
26 class PlatformStyle;
27 class RPCConsole;
28 class SendCoinsRecipient;
30 class WalletFrame;
31 class WalletModel;
32 class HelpMessageDialog;
33 class ModalOverlay;
34 class MasternodeList;
35 
36 class CWallet;
37 
38 QT_BEGIN_NAMESPACE
39 class QAction;
40 class QProgressBar;
41 class QProgressDialog;
42 QT_END_NAMESPACE
43 
48 class BitcoinGUI : public QMainWindow
49 {
50  Q_OBJECT
51 
52 public:
53  static const QString DEFAULT_WALLET;
54  static const std::string DEFAULT_UIPLATFORM;
55 
56  explicit BitcoinGUI(const PlatformStyle *platformStyle, const NetworkStyle *networkStyle, QWidget *parent = 0);
57  ~BitcoinGUI();
58 
63 
64 #ifdef ENABLE_WALLET
65 
69  bool addWallet(const QString& name, WalletModel *walletModel);
70  bool setCurrentWallet(const QString& name);
71  void removeAllWallets();
72 #endif // ENABLE_WALLET
74 
75 protected:
76  void changeEvent(QEvent *e);
77  void closeEvent(QCloseEvent *event);
78  void showEvent(QShowEvent *event);
79  void dragEnterEvent(QDragEnterEvent *event);
80  void dropEvent(QDropEvent *event);
81  bool eventFilter(QObject *object, QEvent *event);
82 
83 private:
86 
91  QLabel *labelBlocksIcon;
93  QProgressBar *progressBar;
94  QProgressDialog *progressDialog;
95 
96  QMenuBar *appMenuBar;
97  QAction *overviewAction;
98  QAction *historyAction;
99  QAction *masternodeAction;
100  QAction *quitAction;
101  QAction *sendCoinsAction;
107  QAction *aboutAction;
110  QAction *optionsAction;
117  QAction *aboutQtAction;
118  QAction *openInfoAction;
120  QAction *openGraphAction;
121  QAction *openPeersAction;
126  QAction *openAction;
129 
130  QSystemTrayIcon *trayIcon;
131  QMenu *trayIconMenu;
132  QMenu *dockIconMenu;
137 
141 
143 
145  void createActions();
147  void createMenuBar();
149  void createToolBars();
151  void createTrayIcon(const NetworkStyle *networkStyle);
153  void createIconMenu(QMenu *pmenu);
154 
156  void setWalletActionsEnabled(bool enabled);
157 
159  void subscribeToCoreSignals();
162 
164  void updateNetworkState();
165 
167 
168 Q_SIGNALS:
170  void receivedURI(const QString &uri);
172  void requestedRestart(QStringList args);
173 
174 public Q_SLOTS:
176  void setNumConnections(int count);
178  void setNetworkActive(bool networkActive);
180  void handleRestart(QStringList args);
182  void setNumBlocks(int count, const QDateTime& blockDate, double nVerificationProgress, bool headers);
184  void setAdditionalDataSyncProgress(double nSyncProgress);
185 
193  void message(const QString &title, const QString &message, unsigned int style, bool *ret = NULL);
194 
195 #ifdef ENABLE_WALLET
196 
200  void setHDStatus(int hdEnabled);
201 
206  void setEncryptionStatus(int status);
207 
208  bool handlePaymentRequest(const SendCoinsRecipient& recipient);
209 
211  void incomingTransaction(const QString& date, int unit, const CAmount& amount, const QString& type, const QString& address, const QString& label);
212 #endif // ENABLE_WALLET
213 
214 private Q_SLOTS:
215 #ifdef ENABLE_WALLET
216 
217  void gotoOverviewPage();
219  void gotoHistoryPage();
221  void gotoMasternodePage();
223  void gotoReceiveCoinsPage();
225  void gotoSendCoinsPage(QString addr = "");
226 
228  void gotoSignMessageTab(QString addr = "");
230  void gotoVerifyMessageTab(QString addr = "");
231 
233  void openClicked();
234 #endif // ENABLE_WALLET
235 
236  void optionsClicked();
238  void aboutClicked();
240  void showDebugWindow();
241 
243  void showInfo();
244  void showConsole();
245  void showGraph();
246  void showPeers();
247  void showRepair();
248 
250  void showConfEditor();
252  void showMNConfEditor();
254  void showBackups();
255 
257  void showHelpMessageClicked();
260 #ifndef Q_OS_MAC
261 
262  void trayIconActivated(QSystemTrayIcon::ActivationReason reason);
263 #endif
264 
266  void showNormalIfMinimized(bool fToggleHidden = false);
268  void toggleHidden();
269 
271  void detectShutdown();
272 
274  void showProgress(const QString &title, int nProgress);
275 
277  void setTrayIconVisible(bool);
278 
280  void toggleNetworkActive();
281 
282  void showModalOverlay();
283 };
284 
285 class UnitDisplayStatusBarControl : public QLabel
286 {
287  Q_OBJECT
288 
289 public:
290  explicit UnitDisplayStatusBarControl(const PlatformStyle *platformStyle);
293 
294 protected:
296  void mousePressEvent(QMouseEvent *event);
297 
298 private:
300  QMenu* menu;
301 
303  void onDisplayUnitsClicked(const QPoint& point);
305  void createContextMenu();
306 
307 private Q_SLOTS:
309  void updateDisplayUnit(int newUnits);
311  void onMenuSelection(QAction* action);
312 };
313 
314 #endif // BITCOIN_QT_BITCOINGUI_H
RPCConsole * rpcConsole
Definition: bitcoingui.h:134
QAction * sendCoinsMenuAction
Definition: bitcoingui.h:102
bool enableWallet
Definition: bitcoingui.h:73
QLabel * labelConnectionsIcon
Definition: bitcoingui.h:90
QSystemTrayIcon * trayIcon
Definition: bitcoingui.h:130
QAction * aboutQtAction
Definition: bitcoingui.h:117
QAction * verifyMessageAction
Definition: bitcoingui.h:106
QLabel * labelEncryptionIcon
Definition: bitcoingui.h:88
void showEvent(QShowEvent *event)
QAction * usedSendingAddressesAction
Definition: bitcoingui.h:103
void createActions()
Definition: bitcoingui.cpp:283
void setAdditionalDataSyncProgress(double nSyncProgress)
void optionsClicked()
Definition: bitcoingui.cpp:768
void requestedRestart(QStringList args)
OptionsModel * optionsModel
Definition: bitcoingui.h:299
ClientModel * clientModel
Definition: bitcoingui.h:84
void showHelpMessageClicked()
Definition: bitcoingui.cpp:840
QAction * openAction
Definition: bitcoingui.h:126
void unsubscribeFromCoreSignals()
void createIconMenu(QMenu *pmenu)
Definition: bitcoingui.cpp:730
void createToolBars()
Definition: bitcoingui.cpp:552
void createTrayIcon(const NetworkStyle *networkStyle)
Definition: bitcoingui.cpp:720
void createMenuBar()
Definition: bitcoingui.cpp:494
QAction * openPeersAction
Definition: bitcoingui.h:121
void detectShutdown()
void handleRestart(QStringList args)
void message(const QString &title, const QString &message, unsigned int style, bool *ret=NULL)
QMenuBar * appMenuBar
Definition: bitcoingui.h:96
void aboutClicked()
Definition: bitcoingui.cpp:778
QProgressDialog * progressDialog
Definition: bitcoingui.h:94
void showConsole()
Definition: bitcoingui.cpp:801
bool eventFilter(QObject *object, QEvent *event)
ModalOverlay * modalOverlay
Definition: bitcoingui.h:136
QAction * openRepairAction
Definition: bitcoingui.h:122
void setNetworkActive(bool networkActive)
Definition: bitcoingui.cpp:937
UnitDisplayStatusBarControl(const PlatformStyle *platformStyle)
void changeEvent(QEvent *e)
void toggleHidden()
QAction * historyAction
Definition: bitcoingui.h:98
QAction * unlockWalletAction
Definition: bitcoingui.h:115
void setClientModel(ClientModel *clientModel)
Definition: bitcoingui.cpp:584
static const QString DEFAULT_WALLET
Definition: bitcoingui.h:53
QAction * openRPCConsoleAction
Definition: bitcoingui.h:119
void setTrayIconVisible(bool)
int64_t CAmount
Definition: amount.h:14
void showConfEditor()
Definition: bitcoingui.cpp:825
QLabel * labelWalletHDStatusIcon
Definition: bitcoingui.h:89
void mousePressEvent(QMouseEvent *event)
const PlatformStyle * platformStyle
Definition: bitcoingui.h:142
QAction * toggleHideAction
Definition: bitcoingui.h:111
BitcoinGUI(const PlatformStyle *platformStyle, const NetworkStyle *networkStyle, QWidget *parent=0)
Definition: bitcoingui.cpp:78
void showBackups()
Definition: bitcoingui.cpp:835
void updateNetworkState()
Definition: bitcoingui.cpp:908
void showPrivateSendHelpClicked()
Definition: bitcoingui.cpp:845
QAction * backupWalletAction
Definition: bitcoingui.h:113
void setNumBlocks(int count, const QDateTime &blockDate, double nVerificationProgress, bool headers)
Definition: bitcoingui.cpp:951
QAction * lockWalletAction
Definition: bitcoingui.h:116
void updateDisplayUnit(int newUnits)
const char * name
Definition: rest.cpp:37
QAction * showBackupsAction
Definition: bitcoingui.h:125
QLabel * progressBarLabel
Definition: bitcoingui.h:92
QAction * changePassphraseAction
Definition: bitcoingui.h:114
void trayIconActivated(QSystemTrayIcon::ActivationReason reason)
Definition: bitcoingui.cpp:758
void showNormalIfMinimized(bool fToggleHidden=false)
QAction * optionsAction
Definition: bitcoingui.h:110
QAction * usedReceivingAddressesAction
Definition: bitcoingui.h:104
void setWalletActionsEnabled(bool enabled)
Definition: bitcoingui.cpp:698
void closeEvent(QCloseEvent *event)
void setNumConnections(int count)
Definition: bitcoingui.cpp:932
QAction * encryptWalletAction
Definition: bitcoingui.h:112
QProgressBar * progressBar
Definition: bitcoingui.h:93
UnitDisplayStatusBarControl * unitDisplayControl
Definition: bitcoingui.h:87
void updateHeadersSyncProgressLabel()
Definition: bitcoingui.cpp:942
void showPeers()
Definition: bitcoingui.cpp:813
static const std::string DEFAULT_UIPLATFORM
Definition: bitcoingui.h:54
void toggleNetworkActive()
QAction * signMessageAction
Definition: bitcoingui.h:105
void showGraph()
Definition: bitcoingui.cpp:807
QAction * openMNConfEditorAction
Definition: bitcoingui.h:124
void setOptionsModel(OptionsModel *optionsModel)
QAction * showHelpMessageAction
Definition: bitcoingui.h:127
void showDebugWindow()
Definition: bitcoingui.cpp:787
int spinnerFrame
Definition: bitcoingui.h:140
void showInfo()
Definition: bitcoingui.cpp:795
void showModalOverlay()
void showMNConfEditor()
Definition: bitcoingui.cpp:830
void dropEvent(QDropEvent *event)
QMenu * trayIconMenu
Definition: bitcoingui.h:131
void onDisplayUnitsClicked(const QPoint &point)
WalletFrame * walletFrame
Definition: bitcoingui.h:85
QAction * aboutAction
Definition: bitcoingui.h:107
QLabel * labelBlocksIcon
Definition: bitcoingui.h:91
static int count
Definition: tests.c:41
void receivedURI(const QString &uri)
void onMenuSelection(QAction *action)
QAction * masternodeAction
Definition: bitcoingui.h:99
void dragEnterEvent(QDragEnterEvent *event)
void subscribeToCoreSignals()
QAction * showPrivateSendHelpAction
Definition: bitcoingui.h:128
QAction * openInfoAction
Definition: bitcoingui.h:118
QAction * receiveCoinsMenuAction
Definition: bitcoingui.h:109
void showRepair()
Definition: bitcoingui.cpp:819
QAction * quitAction
Definition: bitcoingui.h:100
QAction * receiveCoinsAction
Definition: bitcoingui.h:108
int prevBlocks
Definition: bitcoingui.h:139
QAction * openGraphAction
Definition: bitcoingui.h:120
Notificator * notificator
Definition: bitcoingui.h:133
HelpMessageDialog * helpMessageDialog
Definition: bitcoingui.h:135
void showProgress(const QString &title, int nProgress)
QAction * overviewAction
Definition: bitcoingui.h:97
QAction * openConfEditorAction
Definition: bitcoingui.h:123
QAction * sendCoinsAction
Definition: bitcoingui.h:101
QMenu * dockIconMenu
Definition: bitcoingui.h:132