X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Fbitcoingui.h;h=dbc32640b825625a6016ce4d1c6802a462c23597;hb=fbbd42a535813b2d7e30dba44c5c36b70833fe55;hp=e1b3ef1783cc302947402fa9d7f9644838c5dc5a;hpb=b1ef1b24ced1e8360d1bf62b9fefbc960cdd19be;p=novacoin.git diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index e1b3ef1..dbc3264 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -6,6 +6,13 @@ class TransactionTableModel; class ClientModel; +class WalletModel; +class TransactionView; +class OverviewPage; +class AddressBookPage; +class SendCoinsDialog; +class MessagePage; +class Notificator; QT_BEGIN_NAMESPACE class QLabel; @@ -13,77 +20,154 @@ class QLineEdit; class QTableView; class QAbstractItemModel; class QModelIndex; +class QProgressBar; +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); - void setModel(ClientModel *model); - - /* Transaction table tab indices */ - enum { - AllTransactions = 0, - SentReceived = 1, - Sent = 2, - Received = 3 - } TabIndex; + ~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); private: - ClientModel *model; + ClientModel *clientModel; + WalletModel *walletModel; - QLineEdit *address; - QLabel *labelBalance; - QLabel *labelConnections; + QStackedWidget *centralWidget; + + OverviewPage *overviewPage; + QWidget *transactionsPage; + AddressBookPage *addressBookPage; + AddressBookPage *receiveCoinsPage; + SendCoinsDialog *sendCoinsPage; + MessagePage *messagePage; + + QLabel *labelEncryptionIcon; QLabel *labelConnectionsIcon; - QLabel *labelBlocks; - QLabel *labelTransactions; + QLabel *labelBlocksIcon; + QLabel *progressBarLabel; + QProgressBar *progressBar; - QAction *quit; - QAction *sendcoins; - QAction *addressbook; - QAction *about; - QAction *receivingAddresses; - QAction *options; - QAction *openBitcoin; + QMenuBar *appMenuBar; + QAction *overviewAction; + QAction *historyAction; + QAction *quitAction; + QAction *sendCoinsAction; + QAction *addressBookAction; + QAction *messageAction; + QAction *aboutAction; + QAction *receiveCoinsAction; + QAction *optionsAction; + QAction *openBitcoinAction; + QAction *exportAction; + QAction *encryptWalletAction; + QAction *backupWalletAction; + QAction *changePassphraseAction; + QAction *aboutQtAction; QSystemTrayIcon *trayIcon; - QList transactionViews; + Notificator *notificator; + TransactionView *transactionView; + QMovie *syncIconMovie; + + /** Create the main UI actions. */ void createActions(); - QWidget *createTabs(); + /** Create the menu bar and submenus. */ + void createMenuBar(); + /** Create the toolbars */ + void createToolBars(); + /** Create system tray (notification) icon */ void createTrayIcon(); - void setTabsModel(QAbstractItemModel *transaction_model); public slots: - void setBalance(qint64 balance); - void setAddress(const QString &address); + /** Set number of connections shown in the UI */ void setNumConnections(int count); + /** Set number of blocks shown in the UI */ void setNumBlocks(int count); - void setNumTransactions(int count); + /** Set the encryption status as shown in the UI. + @param[in] status current encryption status + @see WalletModel::EncryptionStatus + */ + void setEncryptionStatus(int status); + /** Set the status bar text if there are any warnings (removes sync progress bar if applicable) */ + void refreshStatusBar(); + + /** Notify the user of an error in the network or transaction handling code. */ 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. + /** 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. http://bugreports.qt.nokia.com/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 handleURL(QString strURL); + + void gotoMessagePage(); + void gotoMessagePage(QString); private slots: - void sendcoinsClicked(); - void addressbookClicked(); + /** 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(); + + /** Show configuration dialog */ void optionsClicked(); - void receivingAddressesClicked(); + /** Show about dialog */ void aboutClicked(); - void newAddressClicked(); - void copyClipboardClicked(); +#ifndef Q_WS_MAC + /** Handle tray icon clicked */ void trayIconActivated(QSystemTrayIcon::ActivationReason reason); - void transactionDetails(const QModelIndex& idx); +#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 pass phrase to unlock wallet temporarily */ + void unlockWallet(); + + /** Show window if hidden, unminimize when minimized */ + void showNormalIfMinimized(); }; #endif