Check addresses in address book for validity

This commit is contained in:
Wladimir J. van der Laan 2011-07-02 15:09:53 +02:00
parent ebff5c40a2
commit 669b0a5835
5 changed files with 42 additions and 16 deletions

View 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)

View File

@ -263,3 +263,10 @@ void AddressTableModel::update()
{
}
bool AddressTableModel::validateAddress(const QString &address)
{
uint160 hash160 = 0;
return AddressToHash160(address.toStdString(), hash160);
}

View File

@ -44,6 +44,10 @@ public:
*/
void updateList();
/* Check address for validity
*/
bool validateAddress(const QString &address);
private:
CWallet *wallet;
AddressTablePriv *priv;

View 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();
}

View 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;