sendcoinsentry.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_SENDCOINSENTRY_H
   6  #define BITCOIN_QT_SENDCOINSENTRY_H
   7  
   8  #include <qt/sendcoinsrecipient.h>
   9  
  10  #include <QWidget>
  11  
  12  class WalletModel;
  13  class PlatformStyle;
  14  
  15  namespace interfaces {
  16  class Node;
  17  } // namespace interfaces
  18  
  19  namespace Ui {
  20      class SendCoinsEntry;
  21  }
  22  
  23  /**
  24   * A single entry in the dialog for sending bitcoins.
  25   */
  26  class SendCoinsEntry : public QWidget
  27  {
  28      Q_OBJECT
  29  
  30  public:
  31      explicit SendCoinsEntry(const PlatformStyle *platformStyle, QWidget *parent = nullptr);
  32      ~SendCoinsEntry();
  33  
  34      void setModel(WalletModel *model);
  35      bool validate(interfaces::Node& node);
  36      SendCoinsRecipient getValue();
  37  
  38      /** Return whether the entry is still empty and unedited */
  39      bool isClear();
  40  
  41      void setValue(const SendCoinsRecipient &value);
  42      void setAddress(const QString &address);
  43      void setAmount(const CAmount &amount);
  44  
  45      /** Set up the tab chain manually, as Qt messes up the tab chain by default in some cases
  46       *  (issue https://bugreports.qt-project.org/browse/QTBUG-10907).
  47       */
  48      QWidget *setupTabChain(QWidget *prev);
  49  
  50      void setFocus();
  51  
  52  public Q_SLOTS:
  53      void clear();
  54      void checkSubtractFeeFromAmount();
  55  
  56  Q_SIGNALS:
  57      void removeEntry(SendCoinsEntry *entry);
  58      void useAvailableBalance(SendCoinsEntry* entry);
  59      void payAmountChanged();
  60      void subtractFeeFromAmountChanged();
  61  
  62  private Q_SLOTS:
  63      void deleteClicked();
  64      void useAvailableBalanceClicked();
  65      void on_payTo_textChanged(const QString &address);
  66      void on_addressBookButton_clicked();
  67      void on_pasteButton_clicked();
  68      void updateDisplayUnit();
  69  
  70  protected:
  71      void changeEvent(QEvent* e) override;
  72  
  73  private:
  74      SendCoinsRecipient recipient;
  75      Ui::SendCoinsEntry *ui;
  76      WalletModel* model{nullptr};
  77      const PlatformStyle *platformStyle;
  78  
  79      bool updateLabel(const QString &address);
  80  };
  81  
  82  #endif // BITCOIN_QT_SENDCOINSENTRY_H
  83