From: Wladimir J. van der Laan Date: Sat, 2 Jul 2011 13:09:53 +0000 (+0200) Subject: Check addresses in address book for validity X-Git-Tag: v0.4.0-unstable~226^2~57^2~175 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=669b0a5835500c41b15501c5b9eb60ba1a2c7735 Check addresses in address book for validity --- diff --git a/src/qt/addressbookdialog.cpp b/src/qt/addressbookdialog.cpp index ce9c6a5..5eb60b7 100644 --- a/src/qt/addressbookdialog.cpp +++ b/src/qt/addressbookdialog.cpp @@ -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) diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp index ca60524..6829fea 100644 --- a/src/qt/addresstablemodel.cpp +++ b/src/qt/addresstablemodel.cpp @@ -263,3 +263,10 @@ void AddressTableModel::update() { } + +bool AddressTableModel::validateAddress(const QString &address) +{ + uint160 hash160 = 0; + + return AddressToHash160(address.toStdString(), hash160); +} diff --git a/src/qt/addresstablemodel.h b/src/qt/addresstablemodel.h index 3ababfc..b509481 100644 --- a/src/qt/addresstablemodel.h +++ b/src/qt/addresstablemodel.h @@ -44,6 +44,10 @@ public: */ void updateList(); + /* Check address for validity + */ + bool validateAddress(const QString &address); + private: CWallet *wallet; AddressTablePriv *priv; diff --git a/src/qt/editaddressdialog.cpp b/src/qt/editaddressdialog.cpp index 8ffabf4..7ea5638 100644 --- a/src/qt/editaddressdialog.cpp +++ b/src/qt/editaddressdialog.cpp @@ -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(); +} + diff --git a/src/qt/editaddressdialog.h b/src/qt/editaddressdialog.h index 6f396d0..6219961 100644 --- a/src/qt/editaddressdialog.h +++ b/src/qt/editaddressdialog.h @@ -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;