X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=blobdiff_plain;f=src%2Fqt%2Fbitcoingui.h;h=f4e72b3a76f0f39335d4aa0e33363d6e2907f79c;hp=484987ca68aab3e7b85acaec6a87dfbbef1b6412;hb=f8ea0dd6459856f2df18ca2ad532d49432a087dd;hpb=b7bcaf940d27fa8cfe89422943fbeaab7a350930 diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 484987c..f4e72b3 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -8,9 +8,17 @@ class TransactionTableModel; class ClientModel; class WalletModel; class TransactionView; +class MintingView; class OverviewPage; class AddressBookPage; class SendCoinsDialog; +class SignVerifyMessageDialog; +class SecondAuthDialog; +class MultisigDialog; +class Notificator; +class RPCConsole; +class AboutDialog; +class OptionsDialog; QT_BEGIN_NAMESPACE class QLabel; @@ -23,21 +31,26 @@ class QStackedWidget; class QUrl; 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); - - /* Transaction table tab indices */ - enum { - AllTransactions = 0, - SentReceived = 1, - Sent = 2, - Received = 3 - } TabIndex; protected: void changeEvent(QEvent *e); @@ -53,66 +66,151 @@ private: OverviewPage *overviewPage; QWidget *transactionsPage; + QWidget *mintingPage; AddressBookPage *addressBookPage; AddressBookPage *receiveCoinsPage; SendCoinsDialog *sendCoinsPage; + SignVerifyMessageDialog *signVerifyMessageDialog; + SecondAuthDialog *secondAuthDialog; + MultisigDialog *multisigPage; QLabel *labelEncryptionIcon; QLabel *labelConnectionsIcon; QLabel *labelBlocksIcon; + QLabel *labelMiningIcon; QLabel *progressBarLabel; QProgressBar *progressBar; + QMenuBar *appMenuBar; QAction *overviewAction; QAction *historyAction; + QAction *mintingAction; QAction *quitAction; QAction *sendCoinsAction; QAction *addressBookAction; + QAction *signMessageAction; + QAction *verifyMessageAction; + QAction *secondAuthAction; + QAction *multisigAction; QAction *aboutAction; QAction *receiveCoinsAction; QAction *optionsAction; - QAction *openBitcoinAction; + QAction *toggleHideAction; QAction *exportAction; QAction *encryptWalletAction; + QAction *lockWalletAction; + QAction *unlockWalletAction; + QAction *unlockWalletMiningAction; + QAction *backupWalletAction; + QAction *dumpWalletAction; + QAction *importWalletAction; QAction *changePassphraseAction; + QAction *aboutQtAction; + QAction *openRPCConsoleAction; QSystemTrayIcon *trayIcon; + Notificator *notificator; TransactionView *transactionView; + MintingView *mintingView; + RPCConsole *rpcConsole; + AboutDialog *aboutDialog; + OptionsDialog *optionsDialog; QMovie *syncIconMovie; - void createActions(); - QWidget *createTabs(); + /** Create the main UI actions. */ + void createActions(int nQtStyle); + /** Create the menu bar and sub-menus. */ + void createMenuBar(); + /** Create the toolbars */ + void createToolBars(int nQtStyle); + /** Create system tray (notification) icon */ void createTrayIcon(); public slots: + /** Set number of connections shown in the UI */ void setNumConnections(int count); - void setNumBlocks(int count); + /** Set number of blocks shown in the UI */ + void setNumBlocks(int count, int nTotalBlocks); + /** Set stake miner status in the UI */ + void updateMining(); + /** Set the encryption status as shown in the UI. + @param[in] status current encryption status + @see WalletModel::EncryptionStatus + */ void setEncryptionStatus(int status); - void error(const QString &title, const QString &message); - /* It is currently not possible to pass a return value to another thread through - BlockingQueuedConnection, so use an indirected pointer. - http://bugreports.qt.nokia.com/browse/QTBUG-10440 + /** Notify the user of an error in the network or transaction handling code. */ + void error(const QString &title, const QString &message, bool modal); + void message(const QString &title, const QString &message, unsigned int style, const QString &detail=QString()); + + /** 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); + + void gotoMultisigPage(); private slots: - // UI pages + /** Switch to overview (home) page */ void gotoOverviewPage(); + /** Switch to history (transactions) page */ void gotoHistoryPage(); + /** Switch to minting page */ + void gotoMintingPage(); + /** Switch to address book page */ void gotoAddressBookPage(); + /** Switch to receive coins page */ void gotoReceiveCoinsPage(); + /** Switch to send coins page */ void gotoSendCoinsPage(); - // Misc actions + /** 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 Second Auth dialog */ + void gotoSecondAuthPage(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 dumpWallet(); + void importWallet(); + void changePassphrase(); + /** Ask for passphrase to unlock wallet temporarily */ + void lockWallet(); void unlockWallet(); + void unlockWalletMining(bool status); + + /** 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