Bitcoin-Qt signmessage GUI (pull request #582)
[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 on_signMessage_clicked();
61     void selectionChanged();
62     void on_showQRCode_clicked();
63     /** Spawn contextual menu (right mouse menu) for address book entry */
64     void contextualMenu(const QPoint &point);
65
66     /** Copy label of currently selected address entry to clipboard */
67     void onCopyLabelAction();
68     /** Edit currently selected address entry */
69     void onEditAction();
70 };
71
72 #endif // ADDRESSBOOKDIALOG_H