/ src / qt / addressbookpage.h
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