Address book: select action (edit/select) based on context
authorWladimir J. van der Laan <laanwj@gmail.com>
Mon, 13 Jun 2011 10:07:32 +0000 (12:07 +0200)
committerWladimir J. van der Laan <laanwj@gmail.com>
Mon, 13 Jun 2011 10:07:32 +0000 (12:07 +0200)
src/qt/addressbookdialog.cpp
src/qt/addressbookdialog.h
src/qt/bitcoingui.cpp
src/qt/forms/addressbookdialog.ui
src/qt/sendcoinsdialog.cpp

index 90950a6..c716cd3 100644 (file)
@@ -8,12 +8,24 @@
 #include <QClipboard>
 #include <QDebug>
 
-AddressBookDialog::AddressBookDialog(QWidget *parent) :
+AddressBookDialog::AddressBookDialog(Mode mode, QWidget *parent) :
     QDialog(parent),
     ui(new Ui::AddressBookDialog),
     model(0)
 {
     ui->setupUi(this);
+
+    switch(mode)
+    {
+    case ForSending:
+        connect(ui->receiveTableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_buttonBox_accepted()));
+        connect(ui->sendTableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_buttonBox_accepted()));
+        break;
+    case ForEditing:
+        connect(ui->receiveTableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_editButton_clicked()));
+        connect(ui->sendTableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_editButton_clicked()));
+        break;
+    }
 }
 
 AddressBookDialog::~AddressBookDialog()
@@ -126,6 +138,7 @@ void AddressBookDialog::on_newAddressButton_clicked()
 
 void AddressBookDialog::on_tabWidget_currentChanged(int index)
 {
+    // Enable/disable buttons based on selected tab
     switch(index)
     {
     case SendingTab:
@@ -166,3 +179,4 @@ void AddressBookDialog::on_buttonBox_accepted()
         reject();
     }
 }
+
index bf7c2a6..25b8839 100644 (file)
@@ -17,13 +17,18 @@ class AddressBookDialog : public QDialog
     Q_OBJECT
 
 public:
-    explicit AddressBookDialog(QWidget *parent = 0);
-    ~AddressBookDialog();
-
-    enum {
+    enum Tabs {
         SendingTab = 0,
         ReceivingTab = 1
-    } Tabs;
+    };
+
+    enum Mode {
+        ForSending, // Pick address for sending
+        ForEditing  // Open address book for editing
+    };
+
+    explicit AddressBookDialog(Mode mode, QWidget *parent = 0);
+    ~AddressBookDialog();
 
     void setModel(AddressTableModel *model);
     void setTab(int tab);
index 3a24c76..05ac66f 100644 (file)
@@ -285,7 +285,7 @@ void BitcoinGUI::sendcoinsClicked()
 
 void BitcoinGUI::addressbookClicked()
 {
-    AddressBookDialog dlg;
+    AddressBookDialog dlg(AddressBookDialog::ForEditing);
     dlg.setModel(model->getAddressTableModel());
     dlg.setTab(AddressBookDialog::SendingTab);
     dlg.exec();
@@ -293,7 +293,7 @@ void BitcoinGUI::addressbookClicked()
 
 void BitcoinGUI::receivingAddressesClicked()
 {
-    AddressBookDialog dlg;
+    AddressBookDialog dlg(AddressBookDialog::ForEditing);
     dlg.setModel(model->getAddressTableModel());
     dlg.setTab(AddressBookDialog::ReceivingTab);
     dlg.exec();
index 2b3c69f..2fc6ca7 100644 (file)
@@ -17,7 +17,7 @@
    <item>
     <widget class="QTabWidget" name="tabWidget">
      <property name="currentIndex">
-      <number>0</number>
+      <number>1</number>
      </property>
      <widget class="QWidget" name="sendTab">
       <property name="toolTip">
   </layout>
  </widget>
  <resources/>
- <connections>
-  <connection>
-   <sender>receiveTableView</sender>
-   <signal>doubleClicked(QModelIndex)</signal>
-   <receiver>editButton</receiver>
-   <slot>click()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>334</x>
-     <y>249</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>333</x>
-     <y>326</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>sendTableView</sender>
-   <signal>doubleClicked(QModelIndex)</signal>
-   <receiver>editButton</receiver>
-   <slot>click()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>329</x>
-     <y>261</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>332</x>
-     <y>326</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
+ <connections/>
 </ui>
index 721ab14..1c11944 100644 (file)
@@ -100,7 +100,7 @@ void SendCoinsDialog::on_pasteButton_clicked()
 
 void SendCoinsDialog::on_addressBookButton_clicked()
 {
-    AddressBookDialog dlg;
+    AddressBookDialog dlg(AddressBookDialog::ForSending);
     dlg.setModel(model->getAddressTableModel());
     dlg.setTab(AddressBookDialog::SendingTab);
     dlg.exec();