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