Line data Source code
1 : // Copyright (c) 2011-2013 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_WALLETVIEW_H
6 : #define BITCOIN_QT_WALLETVIEW_H
7 :
8 : #include "amount.h"
9 :
10 : #include <QStackedWidget>
11 :
12 : class BitcoinGUI;
13 : class ClientModel;
14 : class OverviewPage;
15 : class PlatformStyle;
16 : class ReceiveCoinsDialog;
17 : class SendCoinsDialog;
18 : class SendCoinsRecipient;
19 : class TransactionView;
20 : class WalletModel;
21 : class AddressBookPage;
22 :
23 : QT_BEGIN_NAMESPACE
24 : class QModelIndex;
25 : class QProgressDialog;
26 : QT_END_NAMESPACE
27 :
28 : /*
29 : WalletView class. This class represents the view to a single wallet.
30 : It was added to support multiple wallet functionality. Each wallet gets its own WalletView instance.
31 : It communicates with both the client and the wallet models to give the user an up-to-date view of the
32 : current core state.
33 : */
34 : class WalletView : public QStackedWidget
35 : {
36 0 : Q_OBJECT
37 :
38 : public:
39 : explicit WalletView(const PlatformStyle *platformStyle, QWidget *parent);
40 : ~WalletView();
41 :
42 : void setBitcoinGUI(BitcoinGUI *gui);
43 : /** Set the client model.
44 : The client model represents the part of the core that communicates with the P2P network, and is wallet-agnostic.
45 : */
46 : void setClientModel(ClientModel *clientModel);
47 : /** Set the wallet model.
48 : The wallet model represents a bitcoin wallet, and offers access to the list of transactions, address book and sending
49 : functionality.
50 : */
51 : void setWalletModel(WalletModel *walletModel);
52 :
53 : bool handlePaymentRequest(const SendCoinsRecipient& recipient);
54 :
55 : void showOutOfSyncWarning(bool fShow);
56 :
57 : private:
58 : ClientModel *clientModel;
59 : WalletModel *walletModel;
60 :
61 : OverviewPage *overviewPage;
62 : QWidget *transactionsPage;
63 : ReceiveCoinsDialog *receiveCoinsPage;
64 : SendCoinsDialog *sendCoinsPage;
65 : AddressBookPage *usedSendingAddressesPage;
66 : AddressBookPage *usedReceivingAddressesPage;
67 :
68 : TransactionView *transactionView;
69 :
70 : QProgressDialog *progressDialog;
71 : const PlatformStyle *platformStyle;
72 :
73 : public Q_SLOTS:
74 : /** Switch to overview (home) page */
75 : void gotoOverviewPage();
76 : /** Switch to history (transactions) page */
77 : void gotoHistoryPage();
78 : /** Switch to receive coins page */
79 : void gotoReceiveCoinsPage();
80 : /** Switch to send coins page */
81 : void gotoSendCoinsPage(QString addr = "");
82 :
83 : /** Show Sign/Verify Message dialog and switch to sign message tab */
84 : void gotoSignMessageTab(QString addr = "");
85 : /** Show Sign/Verify Message dialog and switch to verify message tab */
86 : void gotoVerifyMessageTab(QString addr = "");
87 :
88 : /** Show incoming transaction notification for new transactions.
89 :
90 : The new items are those between start and end inclusive, under the given parent item.
91 : */
92 : void processNewTransaction(const QModelIndex& parent, int start, int /*end*/);
93 : /** Encrypt the wallet */
94 : void encryptWallet(bool status);
95 : /** Backup the wallet */
96 : void backupWallet();
97 : /** Change encrypted wallet passphrase */
98 : void changePassphrase();
99 : /** Ask for passphrase to unlock wallet temporarily */
100 : void unlockWallet();
101 :
102 : /** Show used sending addresses */
103 : void usedSendingAddresses();
104 : /** Show used receiving addresses */
105 : void usedReceivingAddresses();
106 :
107 : /** Re-emit encryption status signal */
108 : void updateEncryptionStatus();
109 :
110 : /** Show progress dialog e.g. for rescan */
111 : void showProgress(const QString &title, int nProgress);
112 :
113 : Q_SIGNALS:
114 : /** Signal that we want to show the main window */
115 : void showNormalIfMinimized();
116 : /** Fired when a message should be reported to the user */
117 : void message(const QString &title, const QString &message, unsigned int style);
118 : /** Encryption status of wallet changed */
119 : void encryptionStatusChanged(int status);
120 : /** Notify that a new transaction appeared */
121 : void incomingTransaction(const QString& date, int unit, const CAmount& amount, const QString& type, const QString& address, const QString& label);
122 : };
123 :
124 : #endif // BITCOIN_QT_WALLETVIEW_H
|