1 // Copyright (c) 2011-2013 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>
11 class AddressTablePriv
;
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
24 explicit AddressTableModel(CWallet
*wallet
, WalletModel
*parent
= 0);
28 Label
= 0, /**< User specified label */
29 Address
= 1 /**< Bitcoin address */
33 TypeRole
= Qt::UserRole
/**< Type of address (#Send or #Receive) */
36 /** Return status of edit/insert operation */
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
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;
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
; }
78 WalletModel
*walletModel
;
80 AddressTablePriv
*priv
;
82 EditStatus editStatus
;
84 /** Notify listeners that data changed. */
85 void emitDataChanged(int index
);
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