diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -83,6 +83,8 @@ // Declare meta types used for QMetaObject::invokeMethod Q_DECLARE_METATYPE(bool *) Q_DECLARE_METATYPE(CAmount) +Q_DECLARE_METATYPE(Amount) + // Config is non-copyable so we can only register pointers to it Q_DECLARE_METATYPE(Config *) diff --git a/src/qt/bitcoinamountfield.h b/src/qt/bitcoinamountfield.h --- a/src/qt/bitcoinamountfield.h +++ b/src/qt/bitcoinamountfield.h @@ -20,20 +20,17 @@ class BitcoinAmountField : public QWidget { Q_OBJECT - // ugly hack: for some unknown reason CAmount (instead of qint64) does not - // work here as expected - // discussion: https://github.com/bitcoin/bitcoin/pull/5117 Q_PROPERTY( - qint64 value READ value WRITE setValue NOTIFY valueChanged USER true) + Amount value READ value WRITE setValue NOTIFY valueChanged USER true) public: explicit BitcoinAmountField(QWidget *parent = 0); - CAmount value(bool *value = 0) const; - void setValue(const CAmount &value); + Amount value(bool *value = 0) const; + void setValue(const Amount value); /** Set single step in satoshis **/ - void setSingleStep(const CAmount &step); + void setSingleStep(const Amount step); /** Make read-only **/ void setReadOnly(bool fReadOnly); diff --git a/src/qt/bitcoinamountfield.cpp b/src/qt/bitcoinamountfield.cpp --- a/src/qt/bitcoinamountfield.cpp +++ b/src/qt/bitcoinamountfield.cpp @@ -44,7 +44,7 @@ void fixup(QString &input) const override { bool valid = false; - CAmount val = parse(input, &valid); + Amount val = parse(input, &valid); if (valid) { input = BitcoinUnits::format(currentUnit, val, false, BitcoinUnits::separatorAlways); @@ -52,11 +52,9 @@ } } - CAmount value(bool *valid_out = 0) const { - return parse(text(), valid_out); - } + Amount value(bool *valid_out = 0) const { return parse(text(), valid_out); } - void setValue(const CAmount &value) { + void setValue(const Amount value) { lineEdit()->setText(BitcoinUnits::format( currentUnit, value, false, BitcoinUnits::separatorAlways)); Q_EMIT valueChanged(); @@ -64,16 +62,15 @@ void stepBy(int steps) override { bool valid = false; - Amount val(value(&valid)); + Amount val = value(&valid); val = val + steps * singleStep; val = qMin(qMax(val, Amount(0)), BitcoinUnits::maxMoney()); - setValue(val.GetSatoshis()); + setValue(val); } void setDisplayUnit(int unit) { bool valid = false; Amount val(value(&valid)); - currentUnit = unit; if (valid) { @@ -83,7 +80,7 @@ } } - void setSingleStep(const CAmount &step) { singleStep = step; } + void setSingleStep(const Amount step) { singleStep = step; } QSize minimumSizeHint() const override { if (cachedMinimumSizeHint.isEmpty()) { @@ -129,7 +126,7 @@ private: int currentUnit; - CAmount singleStep; + Amount singleStep; mutable QSize cachedMinimumSizeHint; /** @@ -137,7 +134,7 @@ * return validity. * @note Must return 0 if !valid. */ - CAmount parse(const QString &text, bool *valid_out = 0) const { + Amount parse(const QString &text, bool *valid_out = 0) const { Amount val = 0; bool valid = BitcoinUnits::parse(currentUnit, text, &val); if (valid) { @@ -179,7 +176,7 @@ StepEnabled rv = 0; bool valid = false; - CAmount val = value(&valid); + Amount val = value(&valid); if (valid) { if (val > 0) { rv |= StepDownEnabled; @@ -265,11 +262,11 @@ return unit; } -CAmount BitcoinAmountField::value(bool *valid_out) const { +Amount BitcoinAmountField::value(bool *valid_out) const { return amount->value(valid_out); } -void BitcoinAmountField::setValue(const CAmount &value) { +void BitcoinAmountField::setValue(const Amount value) { amount->setValue(value); } @@ -291,6 +288,6 @@ unit->setValue(newUnit); } -void BitcoinAmountField::setSingleStep(const CAmount &step) { +void BitcoinAmountField::setSingleStep(const Amount step) { amount->setSingleStep(step); } diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp --- a/src/qt/receivecoinsdialog.cpp +++ b/src/qt/receivecoinsdialog.cpp @@ -157,7 +157,8 @@ address = model->getAddressTableModel()->addRow( AddressTableModel::Receive, label, ""); } - SendCoinsRecipient info(address, label, ui->reqAmount->value(), + SendCoinsRecipient info(address, label, + ui->reqAmount->value().GetSatoshis(), ui->reqMessage->text()); ReceiveRequestDialog *dialog = new ReceiveRequestDialog(cfg, this); dialog->setAttribute(Qt::WA_DeleteOnClose); diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -244,7 +244,8 @@ settings.setValue("nFeeRadio", ui->groupFee->checkedId()); settings.setValue("nCustomFeeRadio", ui->groupCustomFee->checkedId()); settings.setValue("nSmartFeeSliderPosition", ui->sliderSmartFee->value()); - settings.setValue("nTransactionFee", (qint64)ui->customFee->value()); + settings.setValue("nTransactionFee", + (qint64)ui->customFee->value().GetSatoshis()); settings.setValue("fPayOnlyMinFee", ui->checkBoxMinimumFee->isChecked()); delete ui; diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -161,7 +161,7 @@ // Normal payment recipient.address = ui->payTo->text(); recipient.label = ui->addAsLabel->text(); - recipient.amount = ui->payAmount->value(); + recipient.amount = ui->payAmount->value().GetSatoshis(); recipient.message = ui->messageTextLabel->text(); recipient.fSubtractFeeFromAmount = (ui->checkboxSubtractFeeFromAmount->checkState() == Qt::Checked);