coincontroldialog.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_COINCONTROLDIALOG_H
   6  #define BITCOIN_QT_COINCONTROLDIALOG_H
   7  
   8  #include <consensus/amount.h>
   9  
  10  #include <QAbstractButton>
  11  #include <QAction>
  12  #include <QDialog>
  13  #include <QList>
  14  #include <QMenu>
  15  #include <QPoint>
  16  #include <QString>
  17  #include <QTreeWidgetItem>
  18  
  19  class PlatformStyle;
  20  class WalletModel;
  21  
  22  namespace wallet {
  23  class CCoinControl;
  24  } // namespace wallet
  25  
  26  namespace Ui {
  27      class CoinControlDialog;
  28  }
  29  
  30  #define ASYMP_UTF8 "\xE2\x89\x88"
  31  
  32  class CCoinControlWidgetItem : public QTreeWidgetItem
  33  {
  34  public:
  35      explicit CCoinControlWidgetItem(QTreeWidget *parent, int type = Type) : QTreeWidgetItem(parent, type) {}
  36      explicit CCoinControlWidgetItem(QTreeWidgetItem *parent, int type = Type) : QTreeWidgetItem(parent, type) {}
  37  
  38      bool operator<(const QTreeWidgetItem &other) const override;
  39  };
  40  
  41  
  42  class CoinControlDialog : public QDialog
  43  {
  44      Q_OBJECT
  45  
  46  public:
  47      explicit CoinControlDialog(wallet::CCoinControl& coin_control, WalletModel* model, const PlatformStyle *platformStyle, QWidget *parent = nullptr);
  48      ~CoinControlDialog();
  49  
  50      // static because also called from sendcoinsdialog
  51      static void updateLabels(wallet::CCoinControl& m_coin_control, WalletModel*, QDialog*);
  52  
  53      static QList<CAmount> payAmounts;
  54      static bool fSubtractFeeFromAmount;
  55  
  56  protected:
  57      void changeEvent(QEvent* e) override;
  58  
  59  private:
  60      Ui::CoinControlDialog *ui;
  61      wallet::CCoinControl& m_coin_control;
  62      WalletModel *model;
  63      int sortColumn;
  64      Qt::SortOrder sortOrder;
  65  
  66      QMenu *contextMenu;
  67      QTreeWidgetItem *contextMenuItem;
  68      QAction* m_copy_transaction_outpoint_action;
  69      QAction *lockAction;
  70      QAction *unlockAction;
  71  
  72      const PlatformStyle *platformStyle;
  73  
  74      void sortView(int, Qt::SortOrder);
  75      void updateView();
  76  
  77      enum
  78      {
  79          COLUMN_CHECKBOX = 0,
  80          COLUMN_AMOUNT,
  81          COLUMN_LABEL,
  82          COLUMN_ADDRESS,
  83          COLUMN_DATE,
  84          COLUMN_CONFIRMATIONS,
  85      };
  86  
  87      enum
  88      {
  89          TxHashRole = Qt::UserRole,
  90          VOutRole
  91      };
  92  
  93      friend class CCoinControlWidgetItem;
  94  
  95  private Q_SLOTS:
  96      void showMenu(const QPoint &);
  97      void copyAmount();
  98      void copyLabel();
  99      void copyAddress();
 100      void copyTransactionOutpoint();
 101      void lockCoin();
 102      void unlockCoin();
 103      void clipboardQuantity();
 104      void clipboardAmount();
 105      void clipboardFee();
 106      void clipboardAfterFee();
 107      void clipboardBytes();
 108      void clipboardChange();
 109      void radioTreeMode(bool);
 110      void radioListMode(bool);
 111      void viewItemChanged(QTreeWidgetItem*, int);
 112      void headerSectionClicked(int);
 113      void buttonBoxClicked(QAbstractButton*);
 114      void buttonSelectAllClicked();
 115      void updateLabelLocked();
 116  };
 117  
 118  #endif // BITCOIN_QT_COINCONTROLDIALOG_H
 119