Qt 5 compatibility
[novacoin.git] / src / qt / editaddressdialog.cpp
index 7ea5638..de5b2c1 100644 (file)
@@ -1,13 +1,15 @@
 #include "editaddressdialog.h"
 #include "ui_editaddressdialog.h"
 #include "addresstablemodel.h"
+#include "dialogwindowflags.h"
+#include "guiconstants.h"
 #include "guiutil.h"
 
 #include <QDataWidgetMapper>
 #include <QMessageBox>
 
 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);
+}