aboutsummaryrefslogtreecommitdiff
path: root/src/qt/receivecoinsdialog.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-10-25 04:27:05 -0700
committerWladimir J. van der Laan <laanwj@gmail.com>2013-10-25 04:27:05 -0700
commit081c0cdeb2b8c1e8db449f3b38837c4ca3b4ba73 (patch)
tree21559f88288cda3543659d5c06622613284dfa3f /src/qt/receivecoinsdialog.cpp
parent48cc4fc326fa916954967580ca49c24044d55754 (diff)
parent70b14636cd60529c87b2cc61516f5d1bf49299a5 (diff)
downloadbitcoin-081c0cdeb2b8c1e8db449f3b38837c4ca3b4ba73.tar.xz
Merge pull request #3099 from laanwj/2013_10_new_receive_flow
qt: improve "receive coins" workflow
Diffstat (limited to 'src/qt/receivecoinsdialog.cpp')
-rw-r--r--src/qt/receivecoinsdialog.cpp107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp
new file mode 100644
index 0000000000..f3ab343fea
--- /dev/null
+++ b/src/qt/receivecoinsdialog.cpp
@@ -0,0 +1,107 @@
+#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, "");
+ }
+ SendCoinsRecipient info(address, label,
+ ui->reqAmount->value(), ui->reqMessage->text());
+ ReceiveRequestDialog *dialog = new ReceiveRequestDialog(this);
+ dialog->setModel(model->getOptionsModel());
+ dialog->setInfo(info);
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ dialog->show();
+ clear();
+}