Wallet encryption part 2: ask passphrase when needed, add menu options
[novacoin.git] / src / qt / addresstablemodel.h
index 32dd4d9..bc505c4 100644 (file)
@@ -5,23 +5,32 @@
 #include <QStringList>
 
 class AddressTablePriv;
+class CWallet;
+class WalletModel;
 
 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 */
-        IsDefaultAddress = 2 /* Is default address? */
+        Address = 1  /* Bitcoin address */
     };
 
-    enum {
+    enum RoleIndex {
         TypeRole = Qt::UserRole
-    } RoleIndex;
+    };
+
+    // Return status of last edit/insert operation
+    enum EditStatus {
+        OK,
+        INVALID_ADDRESS,
+        DUPLICATE_ADDRESS,
+        WALLET_UNLOCK_FAILURE
+    };
 
     static const QString Send; /* Send addres */
     static const QString Receive; /* Receive address */
@@ -34,23 +43,34 @@ 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, bool setAsDefault);
-
-    /* Set and get default address */
-    QString getDefaultAddress() const;
-    void setDefaultAddress(const QString &defaultAddress);
+    QString addRow(const QString &type, const QString &label, const QString &address);
 
     /* Update address list from core. Invalidates any indices.
      */
     void updateList();
 
+    /* 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.
+     */
+    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);