allow adding address to address book in send dialog
authorWladimir J. van der Laan <laanwj@gmail.com>
Sat, 25 Jun 2011 17:32:36 +0000 (19:32 +0200)
committerWladimir J. van der Laan <laanwj@gmail.com>
Sat, 25 Jun 2011 17:32:36 +0000 (19:32 +0200)
src/qt/clientmodel.cpp
src/qt/clientmodel.h
src/qt/forms/sendcoinsdialog.ui
src/qt/sendcoinsdialog.cpp
src/qt/sendcoinsdialog.h

index 4e6a34c..e39bb7e 100644 (file)
@@ -60,7 +60,7 @@ void ClientModel::update()
     addressTableModel->update();
 }
 
-ClientModel::StatusCode ClientModel::sendCoins(const QString &payTo, qint64 payAmount)
+ClientModel::StatusCode ClientModel::sendCoins(const QString &payTo, qint64 payAmount, const QString &addToAddressBookAs)
 {
     uint160 hash160 = 0;
     bool valid = false;
@@ -95,7 +95,7 @@ ClientModel::StatusCode ClientModel::sendCoins(const QString &payTo, qint64 payA
         std::string strError = SendMoney(scriptPubKey, payAmount, wtx, true);
         if (strError == "")
         {
-            return OK;
+            // OK
         }
         else if (strError == "ABORTED")
         {
@@ -107,11 +107,12 @@ ClientModel::StatusCode ClientModel::sendCoins(const QString &payTo, qint64 payA
             return MiscError;
         }
     }
+
     // Add addresses that we've sent to to the address book
     std::string strAddress = payTo.toStdString();
     CRITICAL_BLOCK(cs_mapAddressBook)
         if (!mapAddressBook.count(strAddress))
-            SetAddressBookName(strAddress, "");
+            SetAddressBookName(strAddress, addToAddressBookAs.toStdString());
 
     return OK;
 }
index 169ed8c..da3e52e 100644 (file)
@@ -39,7 +39,7 @@ public:
     int getTotalBlocksEstimate() const;
 
     /* Send coins */
-    StatusCode sendCoins(const QString &payTo, qint64 payAmount);
+    StatusCode sendCoins(const QString &payTo, qint64 payAmount, const QString &addToAddressBookAs=QString());
 private:
     OptionsModel *optionsModel;
     AddressTableModel *addressTableModel;
index b88839a..46c7145 100644 (file)
@@ -16,7 +16,7 @@
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <layout class="QGridLayout" name="gridLayout">
-     <item row="4" column="0">
+     <item row="5" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>&amp;Amount:</string>
        </property>
       </widget>
      </item>
-     <item row="4" column="1">
+     <item row="5" column="1">
       <widget class="BitcoinAmountField" name="payAmount" native="true"/>
      </item>
+     <item row="4" column="1">
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <item>
+        <widget class="QCheckBox" name="addToAddressBook">
+         <property name="toolTip">
+          <string>Add specified destination address to address book</string>
+         </property>
+         <property name="text">
+          <string>Add to address book as</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="addAsLabel">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="toolTip">
+          <string>Label to add address as</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
     </layout>
    </item>
    <item>
  </customwidgets>
  <tabstops>
   <tabstop>payTo</tabstop>
+  <tabstop>addToAddressBook</tabstop>
+  <tabstop>addAsLabel</tabstop>
   <tabstop>payAmount</tabstop>
   <tabstop>pasteButton</tabstop>
   <tabstop>addressBookButton</tabstop>
index 5f9ee18..67c270e 100644 (file)
@@ -46,6 +46,7 @@ void SendCoinsDialog::on_sendButton_clicked()
 {
     bool valid;
     QString payAmount = ui->payAmount->text();
+    QString label;
     qint64 payAmountParsed;
 
     valid = ParseMoney(payAmount.toStdString(), payAmountParsed);
@@ -58,7 +59,13 @@ void SendCoinsDialog::on_sendButton_clicked()
         return;
     }
 
-    switch(model->sendCoins(ui->payTo->text(), payAmountParsed))
+    if(ui->addToAddressBook->isChecked())
+    {
+        // Add address to address book under label, if specified
+        label = ui->addAsLabel->text();
+    }
+
+    switch(model->sendCoins(ui->payTo->text(), payAmountParsed, label))
     {
     case ClientModel::InvalidAddress:
         QMessageBox::warning(this, tr("Send Coins"),
@@ -110,3 +117,8 @@ void SendCoinsDialog::on_buttonBox_rejected()
 {
     reject();
 }
+
+void SendCoinsDialog::on_addToAddressBook_toggled(bool checked)
+{
+    ui->addAsLabel->setEnabled(checked);
+}
index f73c38d..206a854 100644 (file)
@@ -23,6 +23,7 @@ private:
     ClientModel *model;
 
 private slots:
+    void on_addToAddressBook_toggled(bool checked);
     void on_buttonBox_rejected();
     void on_addressBookButton_clicked();
     void on_pasteButton_clicked();