Bitcoin ABC  0.29.2
P2P Digital Currency
coincontroldialog.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2016 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 class CCoinControl;
23 class COutPoint;
24 
25 namespace Ui {
26 class CoinControlDialog;
27 }
28 
29 #define ASYMP_UTF8 "\xE2\x89\x88"
30 
31 class CCoinControlWidgetItem : public QTreeWidgetItem {
32 public:
33  explicit CCoinControlWidgetItem(QTreeWidget *parent, int type = Type)
34  : QTreeWidgetItem(parent, type) {}
35  explicit CCoinControlWidgetItem(QTreeWidgetItem *parent, int type = Type)
36  : QTreeWidgetItem(parent, type) {}
37 
38  bool operator<(const QTreeWidgetItem &other) const override;
39 };
40 
41 class CoinControlDialog : public QDialog {
42  Q_OBJECT
43 
44 public:
45  explicit CoinControlDialog(CCoinControl &coin_control, WalletModel *model,
47  QWidget *parent = nullptr);
49 
50  // static because also called from sendcoinsdialog
52  QDialog *);
53 
54  static QList<Amount> payAmounts;
56 
57 private:
58  Ui::CoinControlDialog *ui;
62  Qt::SortOrder sortOrder;
63 
64  QMenu *contextMenu;
65  QTreeWidgetItem *contextMenuItem;
67  QAction *lockAction;
68  QAction *unlockAction;
69 
71 
72  void sortView(int, Qt::SortOrder);
73  void updateView();
74 
75  enum {
82  };
83 
84  enum { TxIdRole = Qt::UserRole, VOutRole };
85 
86  friend class CCoinControlWidgetItem;
87 
88  static COutPoint buildOutPoint(const QTreeWidgetItem *item);
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
Coin Control Features.
Definition: coincontrol.h:21
CCoinControlWidgetItem(QTreeWidgetItem *parent, int type=Type)
bool operator<(const QTreeWidgetItem &other) const override
CCoinControlWidgetItem(QTreeWidget *parent, int type=Type)
An outpoint - a combination of a transaction hash and an index n into its vout.
Definition: transaction.h:20
static COutPoint buildOutPoint(const QTreeWidgetItem *item)
QTreeWidgetItem * contextMenuItem
WalletModel * model
static QList< Amount > payAmounts
static void updateLabels(CCoinControl &m_coin_control, WalletModel *, QDialog *)
const PlatformStyle * platformStyle
CCoinControl & m_coin_control
QAction * copyTransactionHashAction
Ui::CoinControlDialog * ui
void sortView(int, Qt::SortOrder)
CoinControlDialog(CCoinControl &coin_control, WalletModel *model, const PlatformStyle *platformStyle, QWidget *parent=nullptr)
void showMenu(const QPoint &)
void viewItemChanged(QTreeWidgetItem *, int)
Qt::SortOrder sortOrder
static bool fSubtractFeeFromAmount
void buttonBoxClicked(QAbstractButton *)
Interface to Bitcoin wallet from Qt view code.
Definition: walletmodel.h:47