1 // Copyright (c) 2011-2020 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 addWallet(WalletModel* walletModel, 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 sizeHint()47 QSize sizeHint() const override { return m_size_hint; } 48 49 Q_SIGNALS: 50 void createWalletButtonClicked(); 51 52 private: 53 QStackedWidget *walletStack; 54 ClientModel *clientModel; 55 QMap<WalletModel*, WalletView*> mapWalletViews; 56 57 bool bOutOfSync; 58 59 const PlatformStyle *platformStyle; 60 61 const QSize m_size_hint; 62 63 public: 64 WalletView* currentWalletView() const; 65 WalletModel* currentWalletModel() const; 66 67 public Q_SLOTS: 68 /** Switch to overview (home) page */ 69 void gotoOverviewPage(); 70 /** Switch to history (transactions) page */ 71 void gotoHistoryPage(); 72 /** Switch to receive coins page */ 73 void gotoReceiveCoinsPage(); 74 /** Switch to send coins page */ 75 void gotoSendCoinsPage(QString addr = ""); 76 77 /** Show Sign/Verify Message dialog and switch to sign message tab */ 78 void gotoSignMessageTab(QString addr = ""); 79 /** Show Sign/Verify Message dialog and switch to verify message tab */ 80 void gotoVerifyMessageTab(QString addr = ""); 81 82 /** Load Partially Signed Bitcoin Transaction */ 83 void gotoLoadPSBT(bool from_clipboard = false); 84 85 /** Encrypt the wallet */ 86 void encryptWallet(); 87 /** Backup the wallet */ 88 void backupWallet(); 89 /** Change encrypted wallet passphrase */ 90 void changePassphrase(); 91 /** Ask for passphrase to unlock wallet temporarily */ 92 void unlockWallet(); 93 94 /** Show used sending addresses */ 95 void usedSendingAddresses(); 96 /** Show used receiving addresses */ 97 void usedReceivingAddresses(); 98 }; 99 100 #endif // BITCOIN_QT_WALLETFRAME_H 101