Bitcoin Core  0.18.99
P2P Digital Currency
addresstablemodel.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2018 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 
23 class AddressTableModel : public QAbstractTableModel
24 {
25  Q_OBJECT
26 
27 public:
28  explicit AddressTableModel(WalletModel *parent = nullptr);
30 
31  enum ColumnIndex {
32  Label = 0,
33  Address = 1
34  };
35 
36  enum RoleIndex {
37  TypeRole = Qt::UserRole
38  };
39 
41  enum EditStatus {
42  OK,
47  KEY_GENERATION_FAILURE
48  };
49 
50  static const QString Send;
51  static const QString Receive;
55  int rowCount(const QModelIndex &parent) const;
56  int columnCount(const QModelIndex &parent) const;
57  QVariant data(const QModelIndex &index, int role) const;
58  bool setData(const QModelIndex &index, const QVariant &value, int role);
59  QVariant headerData(int section, Qt::Orientation orientation, int role) const;
60  QModelIndex index(int row, int column, const QModelIndex &parent) const;
61  bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
62  Qt::ItemFlags flags(const QModelIndex &index) const;
65  /* Add an address to the model.
66  Returns the added address on success, and an empty string otherwise.
67  */
68  QString addRow(const QString &type, const QString &label, const QString &address, const OutputType address_type);
69 
71  QString labelForAddress(const QString &address) const;
72 
74  QString purposeForAddress(const QString &address) const;
75 
76  /* Look up row index of an address in the model.
77  Return -1 if not found.
78  */
79  int lookupAddress(const QString &address) const;
80 
81  EditStatus getEditStatus() const { return editStatus; }
82 
83  OutputType GetDefaultAddressType() const;
84 
85 private:
87  AddressTablePriv *priv = nullptr;
88  QStringList columns;
89  EditStatus editStatus = OK;
90 
92  bool getAddressData(const QString &address, std::string* name, std::string* purpose) const;
93 
95  void emitDataChanged(int index);
96 
97 public Q_SLOTS:
98  /* Update address list from core.
99  */
100  void updateEntry(const QString &address, const QString &label, bool isMine, const QString &purpose, int status);
101 
102  friend class AddressTablePriv;
103 };
104 
105 #endif // BITCOIN_QT_ADDRESSTABLEMODEL_H
Address already in address book.
OutputType
Definition: outputtype.h:16
static const QString Send
Specifies send address.
Wallet could not be unlocked to create new receiving address.
const char * name
Definition: rest.cpp:38
EditStatus
Return status of edit/insert operation.
WalletModel *const walletModel
Qt model of the address book in the core.
int flags
Definition: bitcoin-tx.cpp:507
Interface to Bitcoin wallet from Qt view code.
Definition: walletmodel.h:125
static const QString Receive
Specifies receive address.
No changes were made during edit operation.
EditStatus getEditStatus() const