annotate src/qt/sendcoinsdialog.cpp @ 1238:cba27e4719cf draft

Properly html-escape labels
author Wladimir J. van der Laan <laanwj@gmail.com>
date Sun, 31 Jul 2011 12:56:46 +0200
parents 6f35013311c1
children 3f0305184c57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
1 #include "sendcoinsdialog.h"
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
2 #include "ui_sendcoinsdialog.h"
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
3 #include "walletmodel.h"
1213
b76439e5e887 preparations for multiple unit (uBTC, mBTC, BTC) support, fix amount entry issue
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1187
diff changeset
4 #include "bitcoinunits.h"
1151
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
5 #include "addressbookpage.h"
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
6 #include "optionsmodel.h"
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
7 #include "sendcoinsentry.h"
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
8
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
9
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
10 #include <QMessageBox>
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
11 #include <QLocale>
1238
cba27e4719cf Properly html-escape labels
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1225
diff changeset
12 #include <QTextDocument>
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
13
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
14 SendCoinsDialog::SendCoinsDialog(QWidget *parent) :
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
15 QDialog(parent),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
16 ui(new Ui::SendCoinsDialog),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
17 model(0)
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
18 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
19 ui->setupUi(this);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
20
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
21 addEntry();
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
22
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
23 connect(ui->addButton, SIGNAL(clicked()), this, SLOT(addEntry()));
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
24 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
25
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
26 void SendCoinsDialog::setModel(WalletModel *model)
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
27 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
28 this->model = model;
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
29
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
30 for(int i = 0; i < ui->entries->count(); ++i)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
31 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
32 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget());
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
33 if(entry)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
34 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
35 entry->setModel(model);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
36 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
37 }
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
38 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
39
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
40 SendCoinsDialog::~SendCoinsDialog()
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
41 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
42 delete ui;
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
43 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
44
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
45 void SendCoinsDialog::on_sendButton_clicked()
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
46 {
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
47 QList<SendCoinsRecipient> recipients;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
48 bool valid = true;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
49 for(int i = 0; i < ui->entries->count(); ++i)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
50 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
51 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget());
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
52 if(entry)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
53 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
54 if(entry->validate())
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
55 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
56 recipients.append(entry->getValue());
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
57 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
58 else
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
59 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
60 valid = false;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
61 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
62 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
63 }
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
64
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
65 if(!valid || recipients.isEmpty())
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
66 {
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
67 return;
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
68 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
69
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
70 // Format confirmation message
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
71 QStringList formatted;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
72 foreach(const SendCoinsRecipient &rcp, recipients)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
73 {
1238
cba27e4719cf Properly html-escape labels
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1225
diff changeset
74 formatted.append(tr("<b>%1</b> to %2 (%3)").arg(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, rcp.amount), Qt::escape(rcp.label), rcp.address));
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
75 }
1099
843ca2ecfffa allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1086
diff changeset
76
1151
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
77 QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm send coins"),
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
78 tr("Are you sure you want to send %1?").arg(formatted.join(tr(" and "))),
1151
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
79 QMessageBox::Yes|QMessageBox::Cancel,
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
80 QMessageBox::Cancel);
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
81
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
82 if(retval != QMessageBox::Yes)
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
83 {
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
84 return;
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
85 }
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
86
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
87 WalletModel::SendCoinsReturn sendstatus = model->sendCoins(recipients);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
88 switch(sendstatus.status)
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
89 {
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
90 case WalletModel::InvalidAddress:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
91 QMessageBox::warning(this, tr("Send Coins"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
92 tr("The recepient address is not valid, please recheck."),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
93 QMessageBox::Ok, QMessageBox::Ok);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
94 break;
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
95 case WalletModel::InvalidAmount:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
96 QMessageBox::warning(this, tr("Send Coins"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
97 tr("The amount to pay must be larger than 0."),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
98 QMessageBox::Ok, QMessageBox::Ok);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
99 break;
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
100 case WalletModel::AmountExceedsBalance:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
101 QMessageBox::warning(this, tr("Send Coins"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
102 tr("Amount exceeds your balance"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
103 QMessageBox::Ok, QMessageBox::Ok);
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
104 break;
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
105 case WalletModel::AmountWithFeeExceedsBalance:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
106 QMessageBox::warning(this, tr("Send Coins"),
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
107 tr("Total exceeds your balance when the %1 transaction fee is included").
1213
b76439e5e887 preparations for multiple unit (uBTC, mBTC, BTC) support, fix amount entry issue
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1187
diff changeset
108 arg(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, sendstatus.fee)),
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
109 QMessageBox::Ok, QMessageBox::Ok);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
110 break;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
111 case WalletModel::DuplicateAddress:
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
112 QMessageBox::warning(this, tr("Send Coins"),
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
113 tr("Duplicate address found, can only send to each address once in one send operation"),
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
114 QMessageBox::Ok, QMessageBox::Ok);
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
115 break;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
116 case WalletModel::TransactionCreationFailed:
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
117 QMessageBox::warning(this, tr("Send Coins"),
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
118 tr("Error: Transaction creation failed "),
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
119 QMessageBox::Ok, QMessageBox::Ok);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
120 break;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
121 break;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
122 case WalletModel::TransactionCommitFailed:
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
123 QMessageBox::warning(this, tr("Send Coins"),
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
124 tr("Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here."),
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
125 QMessageBox::Ok, QMessageBox::Ok);
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
126 break;
1113
fed522d006eb Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1112
diff changeset
127 case WalletModel::OK:
1049
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
128 accept();
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
129 break;
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
130 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
131 }
e5518d9b9f05 move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff changeset
132
1151
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
133 void SendCoinsDialog::clear()
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
134 {
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
135 // Remove entries until only one left
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
136 while(ui->entries->count() > 1)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
137 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
138 delete ui->entries->takeAt(0)->widget();
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
139 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
140
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
141 // Reset the entry that is left to empty
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
142 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(0)->widget());
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
143 if(entry)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
144 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
145 entry->clear();
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
146 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
147
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
148 updateRemoveEnabled();
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
149
1161
43ca4b501ae7 send coins dialog: make sure send button remain default button (triggered with enter)
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1160
diff changeset
150 ui->sendButton->setDefault(true);
1151
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
151 }
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
152
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
153 void SendCoinsDialog::reject()
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
154 {
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
155 clear();
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
156 }
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
157
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
158 void SendCoinsDialog::accept()
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
159 {
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
160 clear();
3d30ee709c6b convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1135
diff changeset
161 }
1187
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
162
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
163 void SendCoinsDialog::addEntry()
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
164 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
165 SendCoinsEntry *entry = new SendCoinsEntry(this);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
166 entry->setModel(model);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
167 ui->entries->addWidget(entry);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
168 connect(entry, SIGNAL(removeEntry(SendCoinsEntry*)), this, SLOT(removeEntry(SendCoinsEntry*)));
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
169
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
170 updateRemoveEnabled();
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
171
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
172 // Focus the field, so that entry can start immediately
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
173 entry->clear();
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
174 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
175
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
176 void SendCoinsDialog::updateRemoveEnabled()
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
177 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
178 // Remove buttons are enabled as soon as there is more than one send-entry
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
179 bool enabled = (ui->entries->count() > 1);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
180 for(int i = 0; i < ui->entries->count(); ++i)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
181 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
182 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget());
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
183 if(entry)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
184 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
185 entry->setRemoveEnabled(enabled);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
186 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
187 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
188 setupTabChain(0);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
189 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
190
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
191 void SendCoinsDialog::removeEntry(SendCoinsEntry* entry)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
192 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
193 delete entry;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
194 updateRemoveEnabled();
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
195 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
196
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
197 QWidget *SendCoinsDialog::setupTabChain(QWidget *prev)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
198 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
199 for(int i = 0; i < ui->entries->count(); ++i)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
200 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
201 SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget());
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
202 if(entry)
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
203 {
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
204 prev = entry->setupTabChain(prev);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
205 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
206 }
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
207 QWidget::setTabOrder(prev, ui->addButton);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
208 QWidget::setTabOrder(ui->addButton, ui->sendButton);
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
209 return ui->sendButton;
5c41b03dc484 add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents: 1176
diff changeset
210 }