aboutsummaryrefslogtreecommitdiff
path: root/src/qt/receivecoinsdialog.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-10-16 15:14:26 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2013-10-23 09:15:24 +0200
commit74fb765e29ed2b85ee7f6e61d16876c03b4abe9b (patch)
tree85f5c13d4a147c8deec135aa5eb576fb90c2fc1b /src/qt/receivecoinsdialog.cpp
parent58daa0162cb97209d87f3034a9351688a4631eac (diff)
downloadbitcoin-74fb765e29ed2b85ee7f6e61d16876c03b4abe9b.tar.xz
qt: rework "receive coins" workflow
Diffstat (limited to 'src/qt/receivecoinsdialog.cpp')
-rw-r--r--src/qt/receivecoinsdialog.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp
new file mode 100644
index 0000000000..9e81c2cf7b
--- /dev/null
+++ b/src/qt/receivecoinsdialog.cpp
@@ -0,0 +1,105 @@
+#include "receivecoinsdialog.h"
+#include "ui_receivecoinsdialog.h"
+
+#include "walletmodel.h"
+#include "bitcoinunits.h"
+#include "addressbookpage.h"
+#include "optionsmodel.h"
+#include "guiutil.h"
+#include "receiverequestdialog.h"
+#include "addresstablemodel.h"
+
+#include <QMessageBox>
+#include <QTextDocument>
+#include <QScrollBar>
+
+ReceiveCoinsDialog::ReceiveCoinsDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::ReceiveCoinsDialog),
+ model(0)
+{
+ ui->setupUi(this);
+
+#ifdef Q_OS_MAC // Icons on push buttons are very uncommon on Mac
+ ui->clearButton->setIcon(QIcon());
+ ui->receiveButton->setIcon(QIcon());
+#endif
+ connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clear()));
+}
+
+void ReceiveCoinsDialog::setModel(WalletModel *model)
+{
+ this->model = model;
+
+ if(model && model->getOptionsModel())
+ {
+ connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit()));
+ updateDisplayUnit();
+ }
+}
+
+ReceiveCoinsDialog::~ReceiveCoinsDialog()
+{
+ delete ui;
+}
+
+void ReceiveCoinsDialog::clear()
+{
+ ui->reqAmount->clear();
+ ui->reqLabel->setText("");
+ ui->reqMessage->setText("");
+ ui->reuseAddress->setChecked(false);
+ updateDisplayUnit();
+}
+
+void ReceiveCoinsDialog::reject()
+{
+ clear();
+}
+
+void ReceiveCoinsDialog::accept()
+{
+ clear();
+}
+
+void ReceiveCoinsDialog::updateDisplayUnit()
+{
+ if(model && model->getOptionsModel())
+ {
+ ui->reqAmount->setDisplayUnit(model->getOptionsModel()->getDisplayUnit());
+ }
+}
+
+void ReceiveCoinsDialog::on_receiveButton_clicked()
+{
+ if(!model || !model->getOptionsModel() || !model->getAddressTableModel())
+ return;
+
+ QString address;
+ QString label = ui->reqLabel->text();
+ if(ui->reuseAddress->isChecked())
+ {
+ /* Choose existing receiving address */
+ AddressBookPage dlg(AddressBookPage::ForSelection, AddressBookPage::ReceivingTab, this);
+ dlg.setModel(model->getAddressTableModel());
+ if(dlg.exec())
+ {
+ address = dlg.getReturnValue();
+ if(label.isEmpty()) /* If no label provided, use the previously used label */
+ {
+ label = model->getAddressTableModel()->labelForAddress(address);
+ }
+ } else {
+ return;
+ }
+ } else {
+ /* Generate new receiving address */
+ address = model->getAddressTableModel()->addRow(AddressTableModel::Receive, label, "");
+ }
+ ReceiveRequestDialog *dialog = new ReceiveRequestDialog(address, label,
+ ui->reqAmount->value(), ui->reqMessage->text(), this);
+ dialog->setModel(model->getOptionsModel());
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ dialog->show();
+ clear();
+}