Merge coin control features
[novacoin.git] / src / qt / sendcoinsdialog.h
1 #ifndef SENDCOINSDIALOG_H
2 #define SENDCOINSDIALOG_H
3
4 #include <QDialog>
5 #include <QString>
6
7 namespace Ui {
8     class SendCoinsDialog;
9 }
10 class WalletModel;
11 class SendCoinsEntry;
12 class SendCoinsRecipient;
13
14 QT_BEGIN_NAMESPACE
15 class QUrl;
16 QT_END_NAMESPACE
17
18 /** Dialog for sending bitcoins */
19 class SendCoinsDialog : public QDialog
20 {
21     Q_OBJECT
22
23 public:
24     explicit SendCoinsDialog(QWidget *parent = 0);
25     ~SendCoinsDialog();
26
27     void setModel(WalletModel *model);
28
29     /** Set up the tab chain manually, as Qt messes up the tab chain by default in some cases (issue https://bugreports.qt-project.org/browse/QTBUG-10907).
30      */
31     QWidget *setupTabChain(QWidget *prev);
32
33     void pasteEntry(const SendCoinsRecipient &rv);
34     bool handleURI(const QString &uri);
35
36 public slots:
37     void clear();
38     void reject();
39     void accept();
40     SendCoinsEntry *addEntry();
41     void updateRemoveEnabled();
42     void setBalance(qint64 balance, qint64 stake, qint64 unconfirmedBalance, qint64 immatureBalance);
43
44 private:
45     Ui::SendCoinsDialog *ui;
46     WalletModel *model;
47     bool fNewRecipientAllowed;
48
49 private slots:
50     void on_sendButton_clicked();
51     void removeEntry(SendCoinsEntry* entry);
52     void updateDisplayUnit();
53     void coinControlFeatureChanged(bool);
54     void coinControlButtonClicked();
55     void coinControlChangeChecked(int);
56     void coinControlChangeEdited(const QString &);
57     void coinControlUpdateLabels();
58     void coinControlClipboardQuantity();
59     void coinControlClipboardAmount();
60     void coinControlClipboardFee();
61     void coinControlClipboardAfterFee();
62     void coinControlClipboardBytes();
63     void coinControlClipboardPriority();
64     void coinControlClipboardLowOutput();
65     void coinControlClipboardChange();
66 };
67
68 #endif // SENDCOINSDIALOG_H