X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Feditaddressdialog.cpp;h=de5b2c1d2c6e678945e5540e33ddc03c6423ce8d;hb=7ac0ffc894b6a23aa2e3a1e0939a15fe95fe9eca;hp=7ea5638b4be0ee4ace8bf2e64a2f1e252ff4bdf2;hpb=669b0a5835500c41b15501c5b9eb60ba1a2c7735;p=novacoin.git diff --git a/src/qt/editaddressdialog.cpp b/src/qt/editaddressdialog.cpp index 7ea5638..de5b2c1 100644 --- a/src/qt/editaddressdialog.cpp +++ b/src/qt/editaddressdialog.cpp @@ -1,13 +1,15 @@ #include "editaddressdialog.h" #include "ui_editaddressdialog.h" #include "addresstablemodel.h" +#include "dialogwindowflags.h" +#include "guiconstants.h" #include "guiutil.h" #include #include EditAddressDialog::EditAddressDialog(Mode mode, QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::EditAddressDialog), mapper(0), mode(mode), model(0) { ui->setupUi(this); @@ -25,7 +27,7 @@ EditAddressDialog::EditAddressDialog(Mode mode, QWidget *parent) : break; case EditReceivingAddress: setWindowTitle(tr("Edit receiving address")); - ui->addressEdit->setDisabled(true); + ui->addressEdit->setEnabled(false); break; case EditSendingAddress: setWindowTitle(tr("Edit sending address")); @@ -44,6 +46,9 @@ EditAddressDialog::~EditAddressDialog() void EditAddressDialog::setModel(AddressTableModel *model) { this->model = model; + if(!model) + return; + mapper->setModel(model); mapper->addMapping(ui->labelEdit, AddressTableModel::Label); mapper->addMapping(ui->addressEdit, AddressTableModel::Address); @@ -54,9 +59,11 @@ void EditAddressDialog::loadRow(int row) mapper->setCurrentIndex(row); } -QString EditAddressDialog::saveCurrentRow() +bool EditAddressDialog::saveCurrentRow() { - QString address; + if(!model) + return false; + switch(mode) { case NewReceivingAddress: @@ -74,30 +81,58 @@ QString EditAddressDialog::saveCurrentRow() } break; } - return address; + return !address.isEmpty(); } void EditAddressDialog::accept() { - if(mode == NewSendingAddress || mode == EditSendingAddress) + if(!model) + return; + + if(!saveCurrentRow()) { - // For sending addresses, check validity - // Not needed for receiving addresses, as those are generated - if(!model->validateAddress(ui->addressEdit->text())) + switch(model->getEditStatus()) { + case AddressTableModel::OK: + // Failed with unknown reason. Just reject. + break; + case AddressTableModel::NO_CHANGES: + // No changes were made during edit operation. Just reject. + break; + case AddressTableModel::INVALID_ADDRESS: QMessageBox::warning(this, windowTitle(), - tr("The entered address \"%1\" is not a valid bitcoin address.").arg(ui->addressEdit->text()), + tr("The entered address \"%1\" is not a valid NovaCoin address.").arg(ui->addressEdit->text()), + QMessageBox::Ok, QMessageBox::Ok); + break; + case AddressTableModel::DUPLICATE_ADDRESS: + QMessageBox::warning(this, windowTitle(), + tr("The entered address \"%1\" is already in the address book.").arg(ui->addressEdit->text()), + QMessageBox::Ok, QMessageBox::Ok); + break; + case AddressTableModel::WALLET_UNLOCK_FAILURE: + QMessageBox::critical(this, windowTitle(), + tr("Could not unlock wallet."), QMessageBox::Ok, QMessageBox::Ok); - return; + break; + case AddressTableModel::KEY_GENERATION_FAILURE: + QMessageBox::critical(this, windowTitle(), + tr("New key generation failed."), + QMessageBox::Ok, QMessageBox::Ok); + break; + } - } - 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(); } +QString EditAddressDialog::getAddress() const +{ + return address; +} + +void EditAddressDialog::setAddress(const QString &address) +{ + this->address = address; + ui->addressEdit->setText(address); +}