Wallet encryption part 2: ask passphrase when needed, add menu options
[novacoin.git] / src / qt / editaddressdialog.cpp
index 58ecb49..06e74db 100644 (file)
@@ -19,19 +19,16 @@ EditAddressDialog::EditAddressDialog(Mode mode, QWidget *parent) :
     case NewReceivingAddress:
         setWindowTitle(tr("New receiving address"));
         ui->addressEdit->setEnabled(false);
-        ui->setAsDefault->setChecked(true);
         break;
     case NewSendingAddress:
         setWindowTitle(tr("New sending address"));
-        ui->setAsDefault->setVisible(false);
         break;
     case EditReceivingAddress:
         setWindowTitle(tr("Edit receiving address"));
-        ui->addressEdit->setReadOnly(true);
+        ui->addressEdit->setDisabled(true);
         break;
     case EditSendingAddress:
         setWindowTitle(tr("Edit sending address"));
-        ui->setAsDefault->setVisible(false);
         break;
     }
 
@@ -50,7 +47,6 @@ void EditAddressDialog::setModel(AddressTableModel *model)
     mapper->setModel(model);
     mapper->addMapping(ui->labelEdit, AddressTableModel::Label);
     mapper->addMapping(ui->addressEdit, AddressTableModel::Address);
-    mapper->addMapping(ui->setAsDefault, AddressTableModel::IsDefaultAddress);
 }
 
 void EditAddressDialog::loadRow(int row)
@@ -58,9 +54,8 @@ void EditAddressDialog::loadRow(int row)
     mapper->setCurrentIndex(row);
 }
 
-QString EditAddressDialog::saveCurrentRow()
+bool EditAddressDialog::saveCurrentRow()
 {
-    QString address;
     switch(mode)
     {
     case NewReceivingAddress:
@@ -68,14 +63,7 @@ QString EditAddressDialog::saveCurrentRow()
         address = model->addRow(
                 mode == NewSendingAddress ? AddressTableModel::Send : AddressTableModel::Receive,
                 ui->labelEdit->text(),
-                ui->addressEdit->text(),
-                ui->setAsDefault->isChecked());
-        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);
-        }
+                ui->addressEdit->text());
         break;
     case EditReceivingAddress:
     case EditSendingAddress:
@@ -85,5 +73,38 @@ QString EditAddressDialog::saveCurrentRow()
         }
         break;
     }
+    return !address.isEmpty();
+}
+
+void EditAddressDialog::accept()
+{
+    if(!saveCurrentRow())
+    {
+        switch(model->getEditStatus())
+        {
+        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::INVALID_ADDRESS:
+            QMessageBox::warning(this, windowTitle(),
+                tr("The entered address \"%1\" is not a valid bitcoin address.").arg(ui->addressEdit->text()),
+                QMessageBox::Ok, QMessageBox::Ok);
+            return;
+        case AddressTableModel::WALLET_UNLOCK_FAILURE:
+            QMessageBox::critical(this, windowTitle(),
+                tr("Could not unlock wallet."),
+                QMessageBox::Ok, QMessageBox::Ok);
+            return;
+        }
+
+        return;
+    }
+    QDialog::accept();
+}
+
+QString EditAddressDialog::getAddress() const
+{
     return address;
 }