walletframe.h raw
1 // Copyright (c) 2011-present 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_WALLETFRAME_H
6 #define BITCOIN_QT_WALLETFRAME_H
7
8 #include <QFrame>
9 #include <QMap>
10
11 class ClientModel;
12 class PlatformStyle;
13 class SendCoinsRecipient;
14 class WalletModel;
15 class WalletView;
16
17 QT_BEGIN_NAMESPACE
18 class QStackedWidget;
19 QT_END_NAMESPACE
20
21 /**
22 * A container for embedding all wallet-related
23 * controls into BitcoinGUI. The purpose of this class is to allow future
24 * refinements of the wallet controls with minimal need for further
25 * modifications to BitcoinGUI, thus greatly simplifying merges while
26 * reducing the risk of breaking top-level stuff.
27 */
28 class WalletFrame : public QFrame
29 {
30 Q_OBJECT
31
32 public:
33 explicit WalletFrame(const PlatformStyle* platformStyle, QWidget* parent);
34 ~WalletFrame();
35
36 void setClientModel(ClientModel *clientModel);
37
38 bool addView(WalletView* walletView);
39 void setCurrentWallet(WalletModel* wallet_model);
40 void removeWallet(WalletModel* wallet_model);
41 void removeAllWallets();
42
43 bool handlePaymentRequest(const SendCoinsRecipient& recipient);
44
45 void showOutOfSyncWarning(bool fShow);
46
47 QSize sizeHint() const override { return m_size_hint; }
48
49 Q_SIGNALS:
50 void createWalletButtonClicked();
51 void message(const QString& title, const QString& message, unsigned int style);
52 void currentWalletSet();
53
54 private:
55 QStackedWidget *walletStack;
56 ClientModel *clientModel;
57 QMap<WalletModel*, WalletView*> mapWalletViews;
58
59 bool bOutOfSync;
60
61 const PlatformStyle *platformStyle;
62
63 const QSize m_size_hint;
64
65 public:
66 WalletView* currentWalletView() const;
67 WalletModel* currentWalletModel() const;
68
69 public Q_SLOTS:
70 /** Switch to overview (home) page */
71 void gotoOverviewPage();
72 /** Switch to history (transactions) page */
73 void gotoHistoryPage();
74 /** Switch to receive coins page */
75 void gotoReceiveCoinsPage();
76 /** Switch to send coins page */
77 void gotoSendCoinsPage(QString addr = "");
78
79 /** Show Sign/Verify Message dialog and switch to sign message tab */
80 void gotoSignMessageTab(QString addr = "");
81 /** Show Sign/Verify Message dialog and switch to verify message tab */
82 void gotoVerifyMessageTab(QString addr = "");
83
84 /** Load Partially Signed Bitcoin Transaction */
85 void gotoLoadPSBT(bool from_clipboard = false);
86
87 /** Encrypt the wallet */
88 void encryptWallet();
89 /** Backup the wallet */
90 void backupWallet();
91 /** Change encrypted wallet passphrase */
92 void changePassphrase();
93 /** Ask for passphrase to unlock wallet temporarily */
94 void unlockWallet();
95
96 /** Show used sending addresses */
97 void usedSendingAddresses();
98 /** Show used receiving addresses */
99 void usedReceivingAddresses();
100 };
101
102 #endif // BITCOIN_QT_WALLETFRAME_H
103