Mercurial > hg > bitcoin
annotate src/qt/sendcoinsdialog.cpp @ 1271:052a2a34f756 draft
Wallet encryption part 2: ask passphrase when needed, add menu options
author | Wladimir J. van der Laan <laanwj@gmail.com> |
---|---|
date | Wed, 24 Aug 2011 22:07:26 +0200 (2011-08-24) |
parents | d0d7e33253e5 |
children | 310e1e69448b |
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" |
1257
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
8 #include "guiutil.h" |
1271
052a2a34f756
Wallet encryption part 2: ask passphrase when needed, add menu options
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1258
diff
changeset
|
9 #include "askpassphrasedialog.h" |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
10 |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
11 #include <QMessageBox> |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
12 #include <QLocale> |
1238
cba27e4719cf
Properly html-escape labels
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1225
diff
changeset
|
13 #include <QTextDocument> |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
14 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
15 SendCoinsDialog::SendCoinsDialog(QWidget *parent) : |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
16 QDialog(parent), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
17 ui(new Ui::SendCoinsDialog), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
18 model(0) |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
19 { |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
20 ui->setupUi(this); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
21 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
22 addEntry(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
23 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
24 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
|
25 } |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
26 |
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
|
27 void SendCoinsDialog::setModel(WalletModel *model) |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
28 { |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
29 this->model = model; |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
30 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
31 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
|
32 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
33 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
|
34 if(entry) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
35 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
36 entry->setModel(model); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
37 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
38 } |
1049
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 |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
41 SendCoinsDialog::~SendCoinsDialog() |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
42 { |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
43 delete ui; |
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 |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
46 void SendCoinsDialog::on_sendButton_clicked() |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
47 { |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
48 QList<SendCoinsRecipient> recipients; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
49 bool valid = true; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
50 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
|
51 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
52 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
|
53 if(entry) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
54 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
55 if(entry->validate()) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
56 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
57 recipients.append(entry->getValue()); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
58 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
59 else |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
60 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
61 valid = false; |
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 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
64 } |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
65 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
66 if(!valid || recipients.isEmpty()) |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
67 { |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
68 return; |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
69 } |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
70 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
71 // Format confirmation message |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
72 QStringList formatted; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
73 foreach(const SendCoinsRecipient &rcp, recipients) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
74 { |
1238
cba27e4719cf
Properly html-escape labels
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1225
diff
changeset
|
75 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
|
76 } |
1099
843ca2ecfffa
allow adding address to address book in send dialog
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1086
diff
changeset
|
77 |
1151
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
78 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
|
79 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
|
80 QMessageBox::Yes|QMessageBox::Cancel, |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
81 QMessageBox::Cancel); |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
82 |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
83 if(retval != QMessageBox::Yes) |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
84 { |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
85 return; |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
86 } |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
87 |
1271
052a2a34f756
Wallet encryption part 2: ask passphrase when needed, add menu options
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1258
diff
changeset
|
88 WalletModel::UnlockContext ctx(model->requestUnlock()); |
052a2a34f756
Wallet encryption part 2: ask passphrase when needed, add menu options
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1258
diff
changeset
|
89 if(!ctx.isValid()) |
052a2a34f756
Wallet encryption part 2: ask passphrase when needed, add menu options
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1258
diff
changeset
|
90 { |
052a2a34f756
Wallet encryption part 2: ask passphrase when needed, add menu options
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1258
diff
changeset
|
91 // Unlock wallet was cancelled |
052a2a34f756
Wallet encryption part 2: ask passphrase when needed, add menu options
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1258
diff
changeset
|
92 return; |
052a2a34f756
Wallet encryption part 2: ask passphrase when needed, add menu options
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1258
diff
changeset
|
93 } |
052a2a34f756
Wallet encryption part 2: ask passphrase when needed, add menu options
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1258
diff
changeset
|
94 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
95 WalletModel::SendCoinsReturn sendstatus = model->sendCoins(recipients); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
96 switch(sendstatus.status) |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
97 { |
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
|
98 case WalletModel::InvalidAddress: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
99 QMessageBox::warning(this, tr("Send Coins"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
100 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
|
101 QMessageBox::Ok, QMessageBox::Ok); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
102 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
|
103 case WalletModel::InvalidAmount: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
104 QMessageBox::warning(this, tr("Send Coins"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
105 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
|
106 QMessageBox::Ok, QMessageBox::Ok); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
107 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
|
108 case WalletModel::AmountExceedsBalance: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
109 QMessageBox::warning(this, tr("Send Coins"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
110 tr("Amount exceeds your balance"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
111 QMessageBox::Ok, QMessageBox::Ok); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
112 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
|
113 case WalletModel::AmountWithFeeExceedsBalance: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
114 QMessageBox::warning(this, tr("Send Coins"), |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
115 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
|
116 arg(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, sendstatus.fee)), |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
117 QMessageBox::Ok, QMessageBox::Ok); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
118 break; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
119 case WalletModel::DuplicateAddress: |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
120 QMessageBox::warning(this, tr("Send Coins"), |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
121 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
|
122 QMessageBox::Ok, QMessageBox::Ok); |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
123 break; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
124 case WalletModel::TransactionCreationFailed: |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
125 QMessageBox::warning(this, tr("Send Coins"), |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
126 tr("Error: Transaction creation failed "), |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
127 QMessageBox::Ok, QMessageBox::Ok); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
128 break; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
129 case WalletModel::TransactionCommitFailed: |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
130 QMessageBox::warning(this, tr("Send Coins"), |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
131 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
|
132 QMessageBox::Ok, QMessageBox::Ok); |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
133 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
|
134 case WalletModel::OK: |
1049
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
135 accept(); |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
136 break; |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
137 } |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
138 } |
e5518d9b9f05
move back to original directory structure
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
139 |
1151
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
140 void SendCoinsDialog::clear() |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
141 { |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
142 // Remove entries until only one left |
1257
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
143 while(ui->entries->count()) |
1187
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 delete ui->entries->takeAt(0)->widget(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
146 } |
1257
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
147 addEntry(); |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
148 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
149 updateRemoveEnabled(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
150 |
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
|
151 ui->sendButton->setDefault(true); |
1151
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 |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
154 void SendCoinsDialog::reject() |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
155 { |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
156 clear(); |
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 |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
159 void SendCoinsDialog::accept() |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
160 { |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
161 clear(); |
3d30ee709c6b
convert to full tab-based ui
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1135
diff
changeset
|
162 } |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
163 |
1257
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
164 SendCoinsEntry *SendCoinsDialog::addEntry() |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
165 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
166 SendCoinsEntry *entry = new SendCoinsEntry(this); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
167 entry->setModel(model); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
168 ui->entries->addWidget(entry); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
169 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
|
170 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
171 updateRemoveEnabled(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
172 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
173 // 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
|
174 entry->clear(); |
1257
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
175 return entry; |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
176 } |
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 void SendCoinsDialog::updateRemoveEnabled() |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
179 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
180 // 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
|
181 bool enabled = (ui->entries->count() > 1); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
182 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
|
183 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
184 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
|
185 if(entry) |
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 entry->setRemoveEnabled(enabled); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
188 } |
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 setupTabChain(0); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
191 } |
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 void SendCoinsDialog::removeEntry(SendCoinsEntry* entry) |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
194 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
195 delete entry; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
196 updateRemoveEnabled(); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
197 } |
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 QWidget *SendCoinsDialog::setupTabChain(QWidget *prev) |
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 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
|
202 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
203 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
|
204 if(entry) |
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 prev = entry->setupTabChain(prev); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
207 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
208 } |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
209 QWidget::setTabOrder(prev, ui->addButton); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
210 QWidget::setTabOrder(ui->addButton, ui->sendButton); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
211 return ui->sendButton; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
212 } |
1257
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
213 |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
214 void SendCoinsDialog::pasteEntry(const SendCoinsRecipient &rv) |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
215 { |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
216 SendCoinsEntry *entry = 0; |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
217 // Replace the first entry if it is still unused |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
218 if(ui->entries->count() == 1) |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
219 { |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
220 SendCoinsEntry *first = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(0)->widget()); |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
221 if(first->isClear()) |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
222 { |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
223 entry = first; |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
224 } |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
225 } |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
226 if(!entry) |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
227 { |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
228 entry = addEntry(); |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
229 } |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
230 |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
231 entry->setValue(rv); |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
232 } |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
233 |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
234 |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
235 void SendCoinsDialog::handleURL(const QUrl *url) |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
236 { |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
237 SendCoinsRecipient rv; |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
238 if(!GUIUtil::parseBitcoinURL(url, &rv)) |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
239 { |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
240 return; |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
241 } |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
242 pasteEntry(rv); |
3f0305184c57
Accept "bitcoin:" URL drops from browsers
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1238
diff
changeset
|
243 } |