/ src / qt / coincontroldialog.h
coincontroldialog.h
  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