diff --git a/TODO b/TODO
index dceee9b24..3136696ff 100644
--- a/TODO
+++ b/TODO
@@ -92,3 +92,7 @@ Todo:
- Check windows support / cross platform
+Check send dialog:
+ 1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt
+
+
diff --git a/gui/forms/sendcoinsdialog.ui b/gui/forms/sendcoinsdialog.ui
index 31a0b99e2..ce4edde4e 100644
--- a/gui/forms/sendcoinsdialog.ui
+++ b/gui/forms/sendcoinsdialog.ui
@@ -64,6 +64,9 @@
&Paste
+
+ false
+
-
@@ -71,6 +74,9 @@
Address &Book...
+
+ false
+
-
@@ -124,6 +130,9 @@
:/icons/send:/icons/send
+
+ true
+
-
@@ -146,22 +155,5 @@
-
-
- payAmount
- returnPressed()
- sendButton
- click()
-
-
- 191
- 65
-
-
- 570
- 121
-
-
-
-
+
diff --git a/gui/include/sendcoinsdialog.h b/gui/include/sendcoinsdialog.h
index a2fcdd076..95dd34b1e 100644
--- a/gui/include/sendcoinsdialog.h
+++ b/gui/include/sendcoinsdialog.h
@@ -12,7 +12,7 @@ class SendCoinsDialog : public QDialog
Q_OBJECT
public:
- explicit SendCoinsDialog(QWidget *parent = 0);
+ explicit SendCoinsDialog(QWidget *parent = 0, const QString &address = "");
~SendCoinsDialog();
private:
diff --git a/gui/src/addressbookdialog.cpp b/gui/src/addressbookdialog.cpp
index 71543f11a..9ad18f1cd 100644
--- a/gui/src/addressbookdialog.cpp
+++ b/gui/src/addressbookdialog.cpp
@@ -127,6 +127,12 @@ void AddressBookDialog::on_buttonBox_accepted()
QVariant address = table->model()->data(index);
returnValue = address.toString();
}
-
- accept();
+ if(!returnValue.isEmpty())
+ {
+ accept();
+ }
+ else
+ {
+ reject();
+ }
}
diff --git a/gui/src/bitcoingui.cpp b/gui/src/bitcoingui.cpp
index 4af703cf8..760789a01 100644
--- a/gui/src/bitcoingui.cpp
+++ b/gui/src/bitcoingui.cpp
@@ -211,7 +211,12 @@ void BitcoinGUI::addressbookClicked()
qDebug() << "Address book clicked";
AddressBookDialog dlg;
dlg.setTab(AddressBookDialog::SendingTab);
- dlg.exec();
+ /* if an address accepted, do a 'send' to specified address */
+ if(dlg.exec())
+ {
+ SendCoinsDialog send(0, dlg.getReturnValue());
+ send.exec();
+ }
}
void BitcoinGUI::receivingAddressesClicked()
diff --git a/gui/src/sendcoinsdialog.cpp b/gui/src/sendcoinsdialog.cpp
index ce95244dc..3907b4bc5 100644
--- a/gui/src/sendcoinsdialog.cpp
+++ b/gui/src/sendcoinsdialog.cpp
@@ -6,17 +6,31 @@
#include
#include
+#include
+#include
#include "base58.h"
-SendCoinsDialog::SendCoinsDialog(QWidget *parent) :
+SendCoinsDialog::SendCoinsDialog(QWidget *parent, const QString &address) :
QDialog(parent),
ui(new Ui::SendCoinsDialog)
{
ui->setupUi(this);
+
+ /* Set up validators */
ui->payTo->setMaxLength(BitcoinAddressValidator::MaxAddressLength);
ui->payTo->setValidator(new BitcoinAddressValidator(this));
- ui->payAmount->setValidator(new QDoubleValidator(this));
+ QDoubleValidator *amountValidator = new QDoubleValidator(this);
+ amountValidator->setDecimals(8);
+ amountValidator->setBottom(0.0);
+ ui->payAmount->setValidator(amountValidator);
+
+ /* Set initial address if provided */
+ if(!address.isEmpty())
+ {
+ ui->payTo->setText(address);
+ ui->payAmount->setFocus();
+ }
}
SendCoinsDialog::~SendCoinsDialog()
@@ -28,14 +42,31 @@ void SendCoinsDialog::on_sendButton_clicked()
{
QByteArray payTo = ui->payTo->text().toUtf8();
uint160 payToHash = 0;
- if(AddressToHash160(payTo.constData(), payToHash))
- {
- accept();
- }
- else
- {
+ double payAmount = 0.0;
+ bool valid = false;
+ if(!AddressToHash160(payTo.constData(), payToHash))
+ {
+ QMessageBox::warning(this, tr("Warning"),
+ tr("The recepient address is not valid, please recheck."),
+ QMessageBox::Ok,
+ QMessageBox::Ok);
+ ui->payTo->setFocus();
+ return;
}
+ payAmount = QLocale::system().toDouble(ui->payAmount->text(), &valid);
+ if(!valid || payAmount <= 0.0)
+ {
+ QMessageBox::warning(this, tr("Warning"),
+ tr("The amount to pay must be a valid number larger than 0."),
+ QMessageBox::Ok,
+ QMessageBox::Ok);
+ ui->payAmount->setFocus();
+ return;
+ }
+
+ /* TODO: send command to core, once this succeeds do accept() */
+ accept();
}
void SendCoinsDialog::on_pasteButton_clicked()