[tests] Add -blocknotify functional test
[bitcoinplatinum.git] / src / qt / addresstablemodel.h
blobd04b95ebaeb361cecaacdb1f1b1701a58b70201a
1 // Copyright (c) 2011-2015 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.
5 #ifndef BITCOIN_QT_ADDRESSTABLEMODEL_H
6 #define BITCOIN_QT_ADDRESSTABLEMODEL_H
8 #include <QAbstractTableModel>
9 #include <QStringList>
11 class AddressTablePriv;
12 class WalletModel;
14 class CWallet;
16 /**
17 Qt model of the address book in the core. This allows views to access and modify the address book.
19 class AddressTableModel : public QAbstractTableModel
21 Q_OBJECT
23 public:
24 explicit AddressTableModel(CWallet *wallet, WalletModel *parent = 0);
25 ~AddressTableModel();
27 enum ColumnIndex {
28 Label = 0, /**< User specified label */
29 Address = 1 /**< Bitcoin address */
32 enum RoleIndex {
33 TypeRole = Qt::UserRole /**< Type of address (#Send or #Receive) */
36 /** Return status of edit/insert operation */
37 enum EditStatus {
38 OK, /**< Everything ok */
39 NO_CHANGES, /**< No changes were made during edit operation */
40 INVALID_ADDRESS, /**< Unparseable address */
41 DUPLICATE_ADDRESS, /**< Address already in address book */
42 WALLET_UNLOCK_FAILURE, /**< Wallet could not be unlocked to create new receiving address */
43 KEY_GENERATION_FAILURE /**< Generating a new public key for a receiving address failed */
46 static const QString Send; /**< Specifies send address */
47 static const QString Receive; /**< Specifies receive address */
49 /** @name Methods overridden from QAbstractTableModel
50 @{*/
51 int rowCount(const QModelIndex &parent) const;
52 int columnCount(const QModelIndex &parent) const;
53 QVariant data(const QModelIndex &index, int role) const;
54 bool setData(const QModelIndex &index, const QVariant &value, int role);
55 QVariant headerData(int section, Qt::Orientation orientation, int role) const;
56 QModelIndex index(int row, int column, const QModelIndex &parent) const;
57 bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
58 Qt::ItemFlags flags(const QModelIndex &index) const;
59 /*@}*/
61 /* Add an address to the model.
62 Returns the added address on success, and an empty string otherwise.
64 QString addRow(const QString &type, const QString &label, const QString &address);
66 /* Look up label for address in address book, if not found return empty string.
68 QString labelForAddress(const QString &address) const;
70 /* Look up row index of an address in the model.
71 Return -1 if not found.
73 int lookupAddress(const QString &address) const;
75 EditStatus getEditStatus() const { return editStatus; }
77 private:
78 WalletModel *walletModel;
79 CWallet *wallet;
80 AddressTablePriv *priv;
81 QStringList columns;
82 EditStatus editStatus;
84 /** Notify listeners that data changed. */
85 void emitDataChanged(int index);
87 public Q_SLOTS:
88 /* Update address list from core.
90 void updateEntry(const QString &address, const QString &label, bool isMine, const QString &purpose, int status);
92 friend class AddressTablePriv;
95 #endif // BITCOIN_QT_ADDRESSTABLEMODEL_H