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_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 0 : 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 0 : 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; 53 : Mode mode; 54 : Tabs tab; 55 : QString returnValue; 56 : AddressBookSortFilterProxyModel *proxyModel; 57 : QMenu *contextMenu; 58 : QAction *deleteAction; // to be able to explicitly disable it 59 : QString newAddressToSelect; 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