X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Faddresstablemodel.h;h=7fd07cfb8157da2d2c69ac4d17ffc5c4484c7f4d;hb=98e61758744ed34e8b7f59b37edb6d09b33d5517;hp=87994143343c1c3a2a9937930f2ff1cf20e82e83;hpb=ba4081c1fcaddf361abd61b2721994eff5475bb3;p=novacoin.git diff --git a/src/qt/addresstablemodel.h b/src/qt/addresstablemodel.h index 8799414..7fd07cf 100644 --- a/src/qt/addresstablemodel.h +++ b/src/qt/addresstablemodel.h @@ -5,27 +5,42 @@ #include class AddressTablePriv; +class CWallet; +class WalletModel; +/** + Qt model of the address book in the core. This allows views to access and modify the address book. + */ class AddressTableModel : public QAbstractTableModel { Q_OBJECT public: - explicit AddressTableModel(QObject *parent = 0); + explicit AddressTableModel(CWallet *wallet, WalletModel *parent = 0); ~AddressTableModel(); enum ColumnIndex { - Label = 0, /* User specified label */ - Address = 1 /* Bitcoin address */ + Label = 0, /**< User specified label */ + Address = 1 /**< Bitcoin address */ }; - enum { - TypeRole = Qt::UserRole - } RoleIndex; + enum RoleIndex { + TypeRole = Qt::UserRole /**< Type of address (#Send or #Receive) */ + }; + + /** Return status of edit/insert operation */ + enum EditStatus { + OK, + INVALID_ADDRESS, /**< Unparseable address */ + DUPLICATE_ADDRESS, /**< Address already in address book */ + WALLET_UNLOCK_FAILURE, /**< Wallet could not be unlocked to create new receiving address */ + KEY_GENERATION_FAILURE /**< Generating a new public key for a receiving address failed */ + }; - static const QString Send; /* Send addres */ - static const QString Receive; /* Receive address */ + static const QString Send; /**< Specifies send address */ + static const QString Receive; /**< Specifies receive address */ - /* Overridden methods from QAbstractTableModel */ + /** @name Methods overridden from QAbstractTableModel + @{*/ int rowCount(const QModelIndex &parent) const; int columnCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; @@ -33,22 +48,39 @@ public: QVariant headerData(int section, Qt::Orientation orientation, int role) const; QModelIndex index(int row, int column, const QModelIndex & parent) const; bool removeRows(int row, int count, const QModelIndex & parent = QModelIndex()); + Qt::ItemFlags flags(const QModelIndex & index) const; + /*@}*/ /* Add an address to the model. Returns the added address on success, and an empty string otherwise. */ QString addRow(const QString &type, const QString &label, const QString &address); - /* Update address list from core. Invalidates any indices. + /* Look up label for address in address book, if not found return empty string. + */ + QString labelForAddress(const QString &address) const; + + /* Look up row index of an address in the model. + Return -1 if not found. */ - void updateList(); + int lookupAddress(const QString &address) const; + + EditStatus getEditStatus() const { return editStatus; } + private: + WalletModel *walletModel; + CWallet *wallet; AddressTablePriv *priv; QStringList columns; + EditStatus editStatus; + signals: + void defaultAddressChanged(const QString &address); public slots: - + /* Update address list from core. Invalidates any indices. + */ + void update(); }; #endif // ADDRESSTABLEMODEL_H