Check addresses in address book for validity
authorWladimir J. van der Laan <laanwj@gmail.com>
Sat, 2 Jul 2011 13:09:53 +0000 (15:09 +0200)
committerWladimir J. van der Laan <laanwj@gmail.com>
Sat, 2 Jul 2011 13:11:40 +0000 (15:11 +0200)
src/qt/addressbookdialog.cpp
src/qt/addresstablemodel.cpp
src/qt/addresstablemodel.h
src/qt/editaddressdialog.cpp
src/qt/editaddressdialog.h

index ce9c6a5..5eb60b7 100644 (file)
@@ -48,7 +48,6 @@ void AddressBookDialog::setModel(AddressTableModel *model)
     ui->receiveTableView->setModel(receive_model);
     ui->receiveTableView->sortByColumn(0, Qt::AscendingOrder);
 
-
     // Send filter
     QSortFilterProxyModel *send_model = new QSortFilterProxyModel(this);
     send_model->setSourceModel(model);
@@ -120,10 +119,7 @@ void AddressBookDialog::on_editButton_clicked()
             EditAddressDialog::EditReceivingAddress);
     dlg.setModel(model);
     dlg.loadRow(selected.row());
-    if(dlg.exec())
-    {
-        dlg.saveCurrentRow();
-    }
+    dlg.exec();
 }
 
 void AddressBookDialog::on_newAddressButton_clicked()
@@ -133,10 +129,7 @@ void AddressBookDialog::on_newAddressButton_clicked()
             EditAddressDialog::NewSendingAddress :
             EditAddressDialog::NewReceivingAddress);
     dlg.setModel(model);
-    if(dlg.exec())
-    {
-        dlg.saveCurrentRow();
-    }
+    dlg.exec();
 }
 
 void AddressBookDialog::on_tabWidget_currentChanged(int index)
index ca60524..6829fea 100644 (file)
@@ -263,3 +263,10 @@ void AddressTableModel::update()
 {
 
 }
+
+bool AddressTableModel::validateAddress(const QString &address)
+{
+    uint160 hash160 = 0;
+
+    return AddressToHash160(address.toStdString(), hash160);
+}
index 3ababfc..b509481 100644 (file)
@@ -44,6 +44,10 @@ public:
      */
     void updateList();
 
+    /* Check address for validity
+     */
+    bool validateAddress(const QString &address);
+
 private:
     CWallet *wallet;
     AddressTablePriv *priv;
index 8ffabf4..7ea5638 100644 (file)
@@ -65,12 +65,6 @@ QString EditAddressDialog::saveCurrentRow()
                 mode == NewSendingAddress ? AddressTableModel::Send : AddressTableModel::Receive,
                 ui->labelEdit->text(),
                 ui->addressEdit->text());
-        if(address.isEmpty())
-        {
-            QMessageBox::warning(this, windowTitle(),
-                tr("The address %1 is already in the address book.").arg(ui->addressEdit->text()),
-                QMessageBox::Ok, QMessageBox::Ok);
-        }
         break;
     case EditReceivingAddress:
     case EditSendingAddress:
@@ -82,3 +76,28 @@ QString EditAddressDialog::saveCurrentRow()
     }
     return address;
 }
+
+void EditAddressDialog::accept()
+{
+    if(mode == NewSendingAddress || mode == EditSendingAddress)
+    {
+        // For sending addresses, check validity
+        // Not needed for receiving addresses, as those are generated
+        if(!model->validateAddress(ui->addressEdit->text()))
+        {
+            QMessageBox::warning(this, windowTitle(),
+                tr("The entered address \"%1\" is not a valid bitcoin address.").arg(ui->addressEdit->text()),
+                QMessageBox::Ok, QMessageBox::Ok);
+            return;
+        }
+    }
+    if(saveCurrentRow().isEmpty())
+    {
+        QMessageBox::warning(this, windowTitle(),
+            tr("The entered address \"%1\" is already in the address book.").arg(ui->addressEdit->text()),
+            QMessageBox::Ok, QMessageBox::Ok);
+        return;
+    }
+    QDialog::accept();
+}
+
index 6f396d0..6219961 100644 (file)
@@ -29,9 +29,12 @@ public:
 
     void setModel(AddressTableModel *model);
     void loadRow(int row);
-    QString saveCurrentRow();
+
+    void accept();
 
 private:
+    QString saveCurrentRow();
+
     Ui::EditAddressDialog *ui;
     QDataWidgetMapper *mapper;
     Mode mode;