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