1 #include "sendcoinsdialog.h"
2 #include "ui_sendcoinsdialog.h"
3 #include "walletmodel.h"
6 #include "addressbookdialog.h"
7 #include "optionsmodel.h"
9 #include <QApplication>
11 #include <QMessageBox>
15 SendCoinsDialog::SendCoinsDialog(QWidget *parent, const QString &address) :
17 ui(new Ui::SendCoinsDialog),
22 GUIUtil::setupAddressWidget(ui->payTo, this);
24 // Set initial send-to address if provided
25 if(!address.isEmpty())
27 ui->payTo->setText(address);
28 ui->payAmount->setFocus();
32 void SendCoinsDialog::setModel(WalletModel *model)
37 SendCoinsDialog::~SendCoinsDialog()
42 void SendCoinsDialog::on_sendButton_clicked()
45 QString payAmount = ui->payAmount->text();
47 qint64 payAmountParsed;
49 valid = GUIUtil::parseMoney(payAmount, &payAmountParsed);
51 if(!valid || payAmount.isEmpty())
53 QMessageBox::warning(this, tr("Send Coins"),
54 tr("Must fill in an amount to pay."),
55 QMessageBox::Ok, QMessageBox::Ok);
59 // Add address to address book under label, if specified
60 label = ui->addAsLabel->text();
62 switch(model->sendCoins(ui->payTo->text(), payAmountParsed, label))
64 case WalletModel::InvalidAddress:
65 QMessageBox::warning(this, tr("Send Coins"),
66 tr("The recepient address is not valid, please recheck."),
67 QMessageBox::Ok, QMessageBox::Ok);
68 ui->payTo->setFocus();
70 case WalletModel::InvalidAmount:
71 QMessageBox::warning(this, tr("Send Coins"),
72 tr("The amount to pay must be larger than 0."),
73 QMessageBox::Ok, QMessageBox::Ok);
74 ui->payAmount->setFocus();
76 case WalletModel::AmountExceedsBalance:
77 QMessageBox::warning(this, tr("Send Coins"),
78 tr("Amount exceeds your balance"),
79 QMessageBox::Ok, QMessageBox::Ok);
80 ui->payAmount->setFocus();
82 case WalletModel::AmountWithFeeExceedsBalance:
83 QMessageBox::warning(this, tr("Send Coins"),
84 tr("Total exceeds your balance when the %1 transaction fee is included").
85 arg(GUIUtil::formatMoney(model->getOptionsModel()->getTransactionFee())),
86 QMessageBox::Ok, QMessageBox::Ok);
87 ui->payAmount->setFocus();
95 void SendCoinsDialog::on_pasteButton_clicked()
97 // Paste text from clipboard into recipient field
98 ui->payTo->setText(QApplication::clipboard()->text());
101 void SendCoinsDialog::on_addressBookButton_clicked()
103 AddressBookDialog dlg(AddressBookDialog::ForSending);
104 dlg.setModel(model->getAddressTableModel());
105 dlg.setTab(AddressBookDialog::SendingTab);
107 ui->payTo->setText(dlg.getReturnValue());
108 ui->payAmount->setFocus();
111 void SendCoinsDialog::on_buttonBox_rejected()
116 void SendCoinsDialog::on_payTo_textChanged(const QString &address)
118 ui->addAsLabel->setText(model->labelForAddress(address));