addressbookpage.h raw
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_ADDRESSBOOKPAGE_H
6 #define BITCOIN_QT_ADDRESSBOOKPAGE_H
7
8 #include <QDialog>
9
10 class AddressBookSortFilterProxyModel;
11 class AddressTableModel;
12 class PlatformStyle;
13
14 namespace Ui {
15 class AddressBookPage;
16 }
17
18 QT_BEGIN_NAMESPACE
19 class QItemSelection;
20 class QMenu;
21 class QModelIndex;
22 QT_END_NAMESPACE
23
24 /** Widget that shows a list of sending or receiving addresses.
25 */
26 class AddressBookPage : public QDialog
27 {
28 Q_OBJECT
29
30 public:
31 enum Tabs {
32 SendingTab = 0,
33 ReceivingTab = 1
34 };
35
36 enum Mode {
37 ForSelection, /**< Open address book to pick address */
38 ForEditing /**< Open address book for editing */
39 };
40
41 explicit AddressBookPage(const PlatformStyle *platformStyle, Mode mode, Tabs tab, QWidget *parent = nullptr);
42 ~AddressBookPage();
43
44 void setModel(AddressTableModel *model);
45 const QString &getReturnValue() const { return returnValue; }
46
47 public Q_SLOTS:
48 void done(int retval) override;
49
50 private:
51 Ui::AddressBookPage *ui;
52 AddressTableModel* model{nullptr};
53 Mode mode;
54 Tabs tab;
55 QString returnValue;
56 AddressBookSortFilterProxyModel *proxyModel;
57 QMenu *contextMenu;
58 QString newAddressToSelect;
59 void updateWindowsTitleWithWalletName();
60
61 private Q_SLOTS:
62 /** Delete currently selected address entry */
63 void on_deleteAddress_clicked();
64 /** Create a new address for receiving coins and / or add a new address book entry */
65 void on_newAddress_clicked();
66 /** Copy address of currently selected address entry to clipboard */
67 void on_copyAddress_clicked();
68 /** Copy label of currently selected address entry to clipboard (no button) */
69 void onCopyLabelAction();
70 /** Edit currently selected address entry (no button) */
71 void onEditAction();
72 /** Export button clicked */
73 void on_exportButton_clicked();
74
75 /** Set button states based on selected tab and selection */
76 void selectionChanged();
77 /** Spawn contextual menu (right mouse menu) for address book entry */
78 void contextualMenu(const QPoint &point);
79 /** New entry/entries were added to address table */
80 void selectNewAddress(const QModelIndex &parent, int begin, int /*end*/);
81
82 Q_SIGNALS:
83 void sendCoins(QString addr);
84 };
85
86 #endif // BITCOIN_QT_ADDRESSBOOKPAGE_H
87