Bitcoin ABC  0.24.7
P2P Digital Currency
addresstablemodel.h
Go to the documentation of this file.
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.
4 
5 #ifndef BITCOIN_QT_ADDRESSTABLEMODEL_H
6 #define BITCOIN_QT_ADDRESSTABLEMODEL_H
7 
8 #include <QAbstractTableModel>
9 #include <QStringList>
10 
11 enum class OutputType;
12 
13 class AddressTablePriv;
14 class WalletModel;
15 
16 namespace interfaces {
17 class Wallet;
18 }
19 
24 class AddressTableModel : public QAbstractTableModel {
25  Q_OBJECT
26 
27 public:
28  explicit AddressTableModel(WalletModel *parent = nullptr);
30 
31  enum ColumnIndex {
33  Label = 0,
35  Address = 1
36  };
37 
38  enum RoleIndex {
40  TypeRole = Qt::UserRole
41  };
42 
44  enum EditStatus {
46  OK,
57  };
58 
60  static const QString Send;
62  static const QString Receive;
63 
66  int rowCount(const QModelIndex &parent) const override;
67  int columnCount(const QModelIndex &parent) const override;
68  QVariant data(const QModelIndex &index, int role) const override;
69  bool setData(const QModelIndex &index, const QVariant &value,
70  int role) override;
71  QVariant headerData(int section, Qt::Orientation orientation,
72  int role) const override;
73  QModelIndex index(int row, int column,
74  const QModelIndex &parent) const override;
75  bool removeRows(int row, int count,
76  const QModelIndex &parent = QModelIndex()) override;
77  Qt::ItemFlags flags(const QModelIndex &index) const override;
80  /* Add an address to the model.
81  Returns the added address on success, and an empty string otherwise.
82  */
83  QString addRow(const QString &type, const QString &label,
84  const QString &address, const OutputType address_type);
85 
90  QString labelForAddress(const QString &address) const;
91 
96  QString purposeForAddress(const QString &address) const;
97 
98  /* Look up row index of an address in the model.
99  Return -1 if not found.
100  */
101  int lookupAddress(const QString &address) const;
102 
103  EditStatus getEditStatus() const { return editStatus; }
104 
106 
107 private:
109  AddressTablePriv *priv = nullptr;
110  QStringList columns;
112 
114  bool getAddressData(const QString &address, std::string *name,
115  std::string *purpose) const;
116 
118  void emitDataChanged(int index);
119 
120 public Q_SLOTS:
121  /* Update address list from core.
122  */
123  void updateEntry(const QString &address, const QString &label, bool isMine,
124  const QString &purpose, int status);
125 
126  friend class AddressTablePriv;
127 };
128 
129 #endif // BITCOIN_QT_ADDRESSTABLEMODEL_H
interfaces
Definition: dummywallet.cpp:12
OutputType
OutputType
Definition: outputtype.h:17
count
static int count
Definition: tests.c:41
WalletModel
Interface to Bitcoin wallet from Qt view code.
Definition: walletmodel.h:47
AddressTableModel::walletModel
WalletModel *const walletModel
Definition: addresstablemodel.h:108
AddressTableModel
Qt model of the address book in the core.
Definition: addresstablemodel.h:24
AddressTableModel::~AddressTableModel
~AddressTableModel()
Definition: addresstablemodel.cpp:166
AddressTableModel::labelForAddress
QString labelForAddress(const QString &address) const
Look up label for address in address book, if not found return empty string.
Definition: addresstablemodel.cpp:386
AddressTableModel::KEY_GENERATION_FAILURE
@ KEY_GENERATION_FAILURE
Generating a new public key for a receiving address failed.
Definition: addresstablemodel.h:56
AddressTableModel::Receive
static const QString Receive
Specifies receive address.
Definition: addresstablemodel.h:62
AddressTableModel::data
QVariant data(const QModelIndex &index, int role) const override
Definition: addresstablemodel.cpp:180
AddressTableModel::columns
QStringList columns
Definition: addresstablemodel.h:110
AddressTableModel::emitDataChanged
void emitDataChanged(int index)
Notify listeners that data changed.
Definition: addresstablemodel.cpp:425
AddressTableModel::ColumnIndex
ColumnIndex
Definition: addresstablemodel.h:31
AddressTableModel::priv
AddressTablePriv * priv
Definition: addresstablemodel.h:109
AddressTableModel::addRow
QString addRow(const QString &type, const QString &label, const QString &address, const OutputType address_type)
Definition: addresstablemodel.cpp:322
AddressTableModel::EditStatus
EditStatus
Return status of edit/insert operation.
Definition: addresstablemodel.h:44
AddressTableModel::index
QModelIndex index(int row, int column, const QModelIndex &parent) const override
Definition: addresstablemodel.cpp:304
AddressTableModel::rowCount
int rowCount(const QModelIndex &parent) const override
Definition: addresstablemodel.cpp:170
AddressTableModel::flags
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition: addresstablemodel.cpp:286
AddressTableModel::Label
@ Label
User specified label.
Definition: addresstablemodel.h:33
AddressTablePriv
Definition: addresstablemodel.cpp:71
AddressTableModel::columnCount
int columnCount(const QModelIndex &parent) const override
Definition: addresstablemodel.cpp:175
AddressTableModel::setData
bool setData(const QModelIndex &index, const QVariant &value, int role) override
Definition: addresstablemodel.cpp:218
AddressTableModel::RoleIndex
RoleIndex
Definition: addresstablemodel.h:38
AddressTableModel::lookupAddress
int lookupAddress(const QString &address) const
Definition: addresstablemodel.cpp:411
name
const char * name
Definition: rest.cpp:43
AddressTableModel::getEditStatus
EditStatus getEditStatus() const
Definition: addresstablemodel.h:103
AddressTableModel::WALLET_UNLOCK_FAILURE
@ WALLET_UNLOCK_FAILURE
Wallet could not be unlocked to create new receiving address.
Definition: addresstablemodel.h:54
AddressTableModel::TypeRole
@ TypeRole
Type of address (Send or Receive)
Definition: addresstablemodel.h:40
AddressTableModel::INVALID_ADDRESS
@ INVALID_ADDRESS
Unparseable address.
Definition: addresstablemodel.h:50
AddressTableModel::OK
@ OK
Everything ok.
Definition: addresstablemodel.h:46
AddressTableModel::NO_CHANGES
@ NO_CHANGES
No changes were made during edit operation.
Definition: addresstablemodel.h:48
AddressTableModel::Send
static const QString Send
Specifies send address.
Definition: addresstablemodel.h:60
AddressTableModel::updateEntry
void updateEntry(const QString &address, const QString &label, bool isMine, const QString &purpose, int status)
Definition: addresstablemodel.cpp:315
AddressTableModel::editStatus
EditStatus editStatus
Definition: addresstablemodel.h:111
AddressTableModel::GetDefaultAddressType
OutputType GetDefaultAddressType() const
Definition: addresstablemodel.cpp:421
AddressTableModel::getAddressData
bool getAddressData(const QString &address, std::string *name, std::string *purpose) const
Look up address book data given an address string.
Definition: addresstablemodel.cpp:402
AddressTableModel::removeRows
bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex()) override
Definition: addresstablemodel.cpp:371
AddressTableModel::AddressTableModel
AddressTableModel(WalletModel *parent=nullptr)
Definition: addresstablemodel.cpp:159
AddressTableModel::purposeForAddress
QString purposeForAddress(const QString &address) const
Look up purpose for address in address book, if not found return empty string.
Definition: addresstablemodel.cpp:394
AddressTableModel::DUPLICATE_ADDRESS
@ DUPLICATE_ADDRESS
Address already in address book.
Definition: addresstablemodel.h:52
AddressTableModel::headerData
QVariant headerData(int section, Qt::Orientation orientation, int role) const override
Definition: addresstablemodel.cpp:276
AddressTableModel::Address
@ Address
Bitcoin address.
Definition: addresstablemodel.h:35