aboutsummaryrefslogtreecommitdiff
path: root/src/qt/sendcoinsdialog.cpp
diff options
context:
space:
mode:
authorPhilip Kaufmann <phil.kaufmann@t-online.de>2013-12-11 15:12:13 +0100
committerPhilip Kaufmann <phil.kaufmann@t-online.de>2013-12-20 15:50:21 +0100
commit3380713af5f47efba48fcbd153013e57c9004ded (patch)
treeb303762c2889ce901e9edf6be279a3240e7d8f96 /src/qt/sendcoinsdialog.cpp
parentf498d43ee2ebc1507ca0d649af6bffd1b3182646 (diff)
downloadbitcoin-3380713af5f47efba48fcbd153013e57c9004ded.tar.xz
[Qt] coin control change address handling update
- re-work change address handling so that default is CNoDestination(), until a verified and known change address was entered (easier code flow) - add a missing NULL pointer check for adresstablemodel - add a missing text when opening coin control address selection for priority and ensure the label is black - add a missing . at the end of a sentence
Diffstat (limited to 'src/qt/sendcoinsdialog.cpp')
-rw-r--r--src/qt/sendcoinsdialog.cpp57
1 files changed, 29 insertions, 28 deletions
diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp
index 4bf5c3c479..92be835c56 100644
--- a/src/qt/sendcoinsdialog.cpp
+++ b/src/qt/sendcoinsdialog.cpp
@@ -546,44 +546,45 @@ void SendCoinsDialog::coinControlChangeChecked(int state)
// Coin Control: custom change address changed
void SendCoinsDialog::coinControlChangeEdited(const QString& text)
{
- if (model)
+ if (model && model->getAddressTableModel())
{
- CoinControlDialog::coinControl->destChange = CBitcoinAddress(text.toStdString()).Get();
+ // Default to no change address until verified
+ CoinControlDialog::coinControl->destChange = CNoDestination();
+ ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}");
+
+ CBitcoinAddress addr = CBitcoinAddress(text.toStdString());
- // label for the change address
- ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:black;}");
- if (text.isEmpty())
+ if (text.isEmpty()) // Nothing entered
+ {
ui->labelCoinControlChangeLabel->setText("");
- else if (!CBitcoinAddress(text.toStdString()).IsValid())
+ }
+ else if (!addr.IsValid()) // Invalid address
{
- // invalid change address
- CoinControlDialog::coinControl->destChange = CNoDestination();
-
ui->lineEditCoinControlChange->setValid(false);
- ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}");
ui->labelCoinControlChangeLabel->setText(tr("Warning: Invalid Bitcoin address"));
}
- else
+ else // Valid address
{
- QString associatedLabel = model->getAddressTableModel()->labelForAddress(text);
- if (!associatedLabel.isEmpty())
- ui->labelCoinControlChangeLabel->setText(associatedLabel);
- else
+ CPubKey pubkey;
+ CKeyID keyid;
+ addr.GetKeyID(keyid);
+ if (!model->getPubKey(keyid, pubkey)) // Unknown change address
{
- CPubKey pubkey;
- CKeyID keyid;
- CBitcoinAddress(text.toStdString()).GetKeyID(keyid);
- if (model->getPubKey(keyid, pubkey))
- ui->labelCoinControlChangeLabel->setText(tr("(no label)"));
+ ui->lineEditCoinControlChange->setValid(false);
+ ui->labelCoinControlChangeLabel->setText(tr("Warning: Unknown change address"));
+ }
+ else // Known change address
+ {
+ ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:black;}");
+
+ // Query label
+ QString associatedLabel = model->getAddressTableModel()->labelForAddress(text);
+ if (!associatedLabel.isEmpty())
+ ui->labelCoinControlChangeLabel->setText(associatedLabel);
else
- {
- // unknown change address
- CoinControlDialog::coinControl->destChange = CNoDestination();
-
- ui->lineEditCoinControlChange->setValid(false);
- ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}");
- ui->labelCoinControlChangeLabel->setText(tr("Warning: Unknown change address"));
- }
+ ui->labelCoinControlChangeLabel->setText(tr("(no label)"));
+
+ CoinControlDialog::coinControl->destChange = addr.Get();
}
}
}