addressbookpage.h
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