6b08f8415b6667b7e362823e9a5a7321703e08fa
[novacoin.git] / src / qt / addressbookpage.h
1 #ifndef ADDRESSBOOKPAGE_H
2 #define ADDRESSBOOKPAGE_H
3
4 #include <QDialog>
5
6 namespace Ui {
7     class AddressBookPage;
8 }
9 class AddressTableModel;
10
11 QT_BEGIN_NAMESPACE
12 class QTableView;
13 class QItemSelection;
14 class QSortFilterProxyModel;
15 class QMenu;
16 QT_END_NAMESPACE
17
18 /** Widget that shows a list of sending or receiving addresses.
19   */
20 class AddressBookPage : public QDialog
21 {
22     Q_OBJECT
23
24 public:
25     enum Tabs {
26         SendingTab = 0,
27         ReceivingTab = 1
28     };
29
30     enum Mode {
31         ForSending, /**< Open address book to pick address for sending */
32         ForEditing  /**< Open address book for editing */
33     };
34
35     explicit AddressBookPage(Mode mode, Tabs tab, QWidget *parent = 0);
36     ~AddressBookPage();
37
38     void setModel(AddressTableModel *model);
39     const QString &getReturnValue() const { return returnValue; }
40
41 public slots:
42     void done(int retval);
43     void exportClicked();
44
45 private:
46     Ui::AddressBookPage *ui;
47     AddressTableModel *model;
48     Mode mode;
49     Tabs tab;
50     QString returnValue;
51     QSortFilterProxyModel *proxyModel;
52     QMenu *contextMenu;
53     QAction *deleteAction;
54
55 private slots:
56     void on_deleteButton_clicked();
57     void on_newAddressButton_clicked();
58     /** Copy address of currently selected address entry to clipboard */
59     void on_copyToClipboard_clicked();
60     void selectionChanged();
61     void on_showQRCode_clicked();
62     /** Spawn contextual menu (right mouse menu) for address book entry */
63     void contextualMenu(const QPoint &point);
64
65     /** Copy label of currently selected address entry to clipboard */
66     void onCopyLabelAction();
67     /** Edit currently selected address entry */
68     void onEditAction();
69 };
70
71 #endif // ADDRESSBOOKDIALOG_H