select new address immediately after creation
authorWladimir J. van der Laan <laanwj@gmail.com>
Thu, 4 Aug 2011 19:31:47 +0000 (21:31 +0200)
committerWladimir J. van der Laan <laanwj@gmail.com>
Thu, 4 Aug 2011 19:36:14 +0000 (21:36 +0200)
src/qt/addressbookpage.cpp
src/qt/editaddressdialog.cpp
src/qt/editaddressdialog.h

index 063e510..a8ca635 100644 (file)
@@ -116,7 +116,19 @@ void AddressBookPage::on_newAddressButton_clicked()
             EditAddressDialog::NewSendingAddress :
             EditAddressDialog::NewReceivingAddress);
     dlg.setModel(model);
-    dlg.exec();
+    if(dlg.exec())
+    {
+        // Select row for newly created address
+        QString address = dlg.getAddress();
+        QModelIndexList lst = proxyModel->match(proxyModel->index(0,
+                          AddressTableModel::Address, QModelIndex()),
+                          Qt::EditRole, address, 1, Qt::MatchExactly);
+        if(!lst.isEmpty())
+        {
+            ui->tableView->setFocus();
+            ui->tableView->selectRow(lst.at(0).row());
+        }
+    }
 }
 
 void AddressBookPage::on_deleteButton_clicked()
index a0b27e8..2b3d9bf 100644 (file)
@@ -54,9 +54,8 @@ void EditAddressDialog::loadRow(int row)
     mapper->setCurrentIndex(row);
 }
 
-QString EditAddressDialog::saveCurrentRow()
+bool EditAddressDialog::saveCurrentRow()
 {
-    QString address;
     switch(mode)
     {
     case NewReceivingAddress:
@@ -74,12 +73,12 @@ QString EditAddressDialog::saveCurrentRow()
         }
         break;
     }
-    return address;
+    return !address.isEmpty();
 }
 
 void EditAddressDialog::accept()
 {
-    if(saveCurrentRow().isEmpty())
+    if(!saveCurrentRow())
     {
         switch(model->getEditStatus())
         {
@@ -100,3 +99,7 @@ void EditAddressDialog::accept()
     QDialog::accept();
 }
 
+QString EditAddressDialog::getAddress() const
+{
+    return address;
+}
index 6219961..81086a4 100644 (file)
@@ -32,13 +32,16 @@ public:
 
     void accept();
 
+    QString getAddress() const;
 private:
-    QString saveCurrentRow();
+    bool saveCurrentRow();
 
     Ui::EditAddressDialog *ui;
     QDataWidgetMapper *mapper;
     Mode mode;
     AddressTableModel *model;
+
+    QString address;
 };
 
 #endif // EDITADDRESSDIALOG_H