Line data Source code
1 : // Copyright (c) 2011-2018 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 0 : class CCoinControlWidgetItem : public QTreeWidgetItem 31 : { 32 : public: 33 0 : explicit CCoinControlWidgetItem(QTreeWidget *parent, int type = Type) : QTreeWidgetItem(parent, type) {} 34 0 : 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 0 : 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 : private: 55 : Ui::CoinControlDialog *ui; 56 : CCoinControl& m_coin_control; 57 : WalletModel *model; 58 : int sortColumn; 59 : Qt::SortOrder sortOrder; 60 : 61 : QMenu *contextMenu; 62 : QTreeWidgetItem *contextMenuItem; 63 : QAction *copyTransactionHashAction; 64 : QAction *lockAction; 65 : QAction *unlockAction; 66 : 67 : const PlatformStyle *platformStyle; 68 : 69 : void sortView(int, Qt::SortOrder); 70 : void updateView(); 71 : 72 : enum 73 : { 74 : COLUMN_CHECKBOX = 0, 75 : COLUMN_AMOUNT, 76 : COLUMN_LABEL, 77 : COLUMN_ADDRESS, 78 : COLUMN_DATE, 79 : COLUMN_CONFIRMATIONS, 80 : }; 81 : 82 : enum 83 : { 84 : TxHashRole = Qt::UserRole, 85 : VOutRole 86 : }; 87 : 88 : friend class CCoinControlWidgetItem; 89 : 90 : private Q_SLOTS: 91 : void showMenu(const QPoint &); 92 : void copyAmount(); 93 : void copyLabel(); 94 : void copyAddress(); 95 : void copyTransactionHash(); 96 : void lockCoin(); 97 : void unlockCoin(); 98 : void clipboardQuantity(); 99 : void clipboardAmount(); 100 : void clipboardFee(); 101 : void clipboardAfterFee(); 102 : void clipboardBytes(); 103 : void clipboardLowOutput(); 104 : void clipboardChange(); 105 : void radioTreeMode(bool); 106 : void radioListMode(bool); 107 : void viewItemChanged(QTreeWidgetItem*, int); 108 : void headerSectionClicked(int); 109 : void buttonBoxClicked(QAbstractButton*); 110 : void buttonSelectAllClicked(); 111 : void updateLabelLocked(); 112 : }; 113 : 114 : #endif // BITCOIN_QT_COINCONTROLDIALOG_H