- allows to directly select an address from the addressbook, chose "send coins" from the context menu, which sends you to sendcoins tab and fills in the selected address
188 lines
6.2 KiB
C++
188 lines
6.2 KiB
C++
#ifndef BITCOINGUI_H
|
|
#define BITCOINGUI_H
|
|
|
|
#include <QMainWindow>
|
|
#include <QSystemTrayIcon>
|
|
|
|
class TransactionTableModel;
|
|
class ClientModel;
|
|
class WalletModel;
|
|
class TransactionView;
|
|
class OverviewPage;
|
|
class AddressBookPage;
|
|
class SendCoinsDialog;
|
|
class SignVerifyMessageDialog;
|
|
class Notificator;
|
|
class RPCConsole;
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QLabel;
|
|
class QModelIndex;
|
|
class QProgressBar;
|
|
class QStackedWidget;
|
|
QT_END_NAMESPACE
|
|
|
|
/**
|
|
Bitcoin GUI main class. This class represents the main window of the Bitcoin UI. It communicates with both the client and
|
|
wallet models to give the user an up-to-date view of the current core state.
|
|
*/
|
|
class BitcoinGUI : public QMainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit BitcoinGUI(QWidget *parent = 0);
|
|
~BitcoinGUI();
|
|
|
|
/** Set the client model.
|
|
The client model represents the part of the core that communicates with the P2P network, and is wallet-agnostic.
|
|
*/
|
|
void setClientModel(ClientModel *clientModel);
|
|
/** Set the wallet model.
|
|
The wallet model represents a bitcoin wallet, and offers access to the list of transactions, address book and sending
|
|
functionality.
|
|
*/
|
|
void setWalletModel(WalletModel *walletModel);
|
|
|
|
protected:
|
|
void changeEvent(QEvent *e);
|
|
void closeEvent(QCloseEvent *event);
|
|
void dragEnterEvent(QDragEnterEvent *event);
|
|
void dropEvent(QDropEvent *event);
|
|
bool eventFilter(QObject *object, QEvent *event);
|
|
|
|
private:
|
|
ClientModel *clientModel;
|
|
WalletModel *walletModel;
|
|
|
|
QStackedWidget *centralWidget;
|
|
|
|
OverviewPage *overviewPage;
|
|
QWidget *transactionsPage;
|
|
AddressBookPage *addressBookPage;
|
|
AddressBookPage *receiveCoinsPage;
|
|
SendCoinsDialog *sendCoinsPage;
|
|
SignVerifyMessageDialog *signVerifyMessageDialog;
|
|
|
|
QLabel *labelEncryptionIcon;
|
|
QLabel *labelConnectionsIcon;
|
|
QLabel *labelBlocksIcon;
|
|
QLabel *progressBarLabel;
|
|
QProgressBar *progressBar;
|
|
|
|
QMenuBar *appMenuBar;
|
|
QAction *overviewAction;
|
|
QAction *historyAction;
|
|
QAction *quitAction;
|
|
QAction *sendCoinsAction;
|
|
QAction *addressBookAction;
|
|
QAction *signMessageAction;
|
|
QAction *verifyMessageAction;
|
|
QAction *aboutAction;
|
|
QAction *receiveCoinsAction;
|
|
QAction *optionsAction;
|
|
QAction *toggleHideAction;
|
|
QAction *exportAction;
|
|
QAction *encryptWalletAction;
|
|
QAction *backupWalletAction;
|
|
QAction *changePassphraseAction;
|
|
QAction *aboutQtAction;
|
|
QAction *openRPCConsoleAction;
|
|
|
|
QSystemTrayIcon *trayIcon;
|
|
Notificator *notificator;
|
|
TransactionView *transactionView;
|
|
RPCConsole *rpcConsole;
|
|
|
|
QMovie *syncIconMovie;
|
|
/** Keep track of previous number of blocks, to detect progress */
|
|
int prevBlocks;
|
|
|
|
/** Create the main UI actions. */
|
|
void createActions();
|
|
/** Create the menu bar and sub-menus. */
|
|
void createMenuBar();
|
|
/** Create the toolbars */
|
|
void createToolBars();
|
|
/** Create system tray icon and notification */
|
|
void createTrayIcon();
|
|
/** Create system tray menu (or setup the dock menu) */
|
|
void createTrayIconMenu();
|
|
|
|
public slots:
|
|
/** Set number of connections shown in the UI */
|
|
void setNumConnections(int count);
|
|
/** Set number of blocks shown in the UI */
|
|
void setNumBlocks(int count, int nTotalBlocks);
|
|
/** Set the encryption status as shown in the UI.
|
|
@param[in] status current encryption status
|
|
@see WalletModel::EncryptionStatus
|
|
*/
|
|
void setEncryptionStatus(int status);
|
|
|
|
/** Notify the user of an event from the core network or transaction handling code.
|
|
@param[in] title the message box / notification title
|
|
@param[in] message the displayed text
|
|
@param[in] style modality and style definitions (icon and used buttons - buttons only for message boxes)
|
|
@see CClientUIInterface::MessageBoxFlags
|
|
@param[in] ret pointer to a bool that will be modified to whether Ok was clicked (modal only)
|
|
*/
|
|
void message(const QString &title, const QString &message, unsigned int style, bool *ret = NULL);
|
|
/** Asks the user whether to pay the transaction fee or to cancel the transaction.
|
|
It is currently not possible to pass a return value to another thread through
|
|
BlockingQueuedConnection, so an indirected pointer is used.
|
|
https://bugreports.qt-project.org/browse/QTBUG-10440
|
|
|
|
@param[in] nFeeRequired the required fee
|
|
@param[out] payFee true to pay the fee, false to not pay the fee
|
|
*/
|
|
void askFee(qint64 nFeeRequired, bool *payFee);
|
|
void handleURI(QString strURI);
|
|
|
|
private slots:
|
|
/** Switch to overview (home) page */
|
|
void gotoOverviewPage();
|
|
/** Switch to history (transactions) page */
|
|
void gotoHistoryPage();
|
|
/** Switch to address book page */
|
|
void gotoAddressBookPage();
|
|
/** Switch to receive coins page */
|
|
void gotoReceiveCoinsPage();
|
|
/** Switch to send coins page */
|
|
void gotoSendCoinsPage(QString addr = "");
|
|
|
|
/** Show Sign/Verify Message dialog and switch to sign message tab */
|
|
void gotoSignMessageTab(QString addr = "");
|
|
/** Show Sign/Verify Message dialog and switch to verify message tab */
|
|
void gotoVerifyMessageTab(QString addr = "");
|
|
|
|
/** Show configuration dialog */
|
|
void optionsClicked();
|
|
/** Show about dialog */
|
|
void aboutClicked();
|
|
#ifndef Q_OS_MAC
|
|
/** Handle tray icon clicked */
|
|
void trayIconActivated(QSystemTrayIcon::ActivationReason reason);
|
|
#endif
|
|
/** Show incoming transaction notification for new transactions.
|
|
|
|
The new items are those between start and end inclusive, under the given parent item.
|
|
*/
|
|
void incomingTransaction(const QModelIndex& parent, int start, int /*end*/);
|
|
/** Encrypt the wallet */
|
|
void encryptWallet(bool status);
|
|
/** Backup the wallet */
|
|
void backupWallet();
|
|
/** Change encrypted wallet passphrase */
|
|
void changePassphrase();
|
|
/** Ask for passphrase to unlock wallet temporarily */
|
|
void unlockWallet();
|
|
|
|
/** Show window if hidden, unminimize when minimized, rise when obscured or show if hidden and fToggleHidden is true */
|
|
void showNormalIfMinimized(bool fToggleHidden = false);
|
|
/** Simply calls showNormalIfMinimized(true) for use in SLOT() macro */
|
|
void toggleHidden();
|
|
};
|
|
|
|
#endif // BITCOINGUI_H
|