Changeset View
Changeset View
Standalone View
Standalone View
src/qt/bitcoinamountfield.cpp
Show First 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | public: | ||||
void setValue(const CAmount &value) { | void setValue(const CAmount &value) { | ||||
lineEdit()->setText(BitcoinUnits::format( | lineEdit()->setText(BitcoinUnits::format( | ||||
currentUnit, value, false, BitcoinUnits::separatorAlways)); | currentUnit, value, false, BitcoinUnits::separatorAlways)); | ||||
Q_EMIT valueChanged(); | Q_EMIT valueChanged(); | ||||
} | } | ||||
void stepBy(int steps) { | void stepBy(int steps) { | ||||
bool valid = false; | bool valid = false; | ||||
CAmount val = value(&valid); | Amount val(value(&valid)); | ||||
val = val + steps * singleStep; | val = val + steps * singleStep; | ||||
val = qMin(qMax(val, CAmount(0)), BitcoinUnits::maxMoney()); | val = qMin(qMax(val, Amount(0)), BitcoinUnits::maxMoney()); | ||||
setValue(val); | setValue(val.GetSatoshis()); | ||||
} | } | ||||
void setDisplayUnit(int unit) { | void setDisplayUnit(int unit) { | ||||
bool valid = false; | bool valid = false; | ||||
CAmount val = value(&valid); | Amount val(value(&valid)); | ||||
currentUnit = unit; | currentUnit = unit; | ||||
if (valid) | if (valid) | ||||
setValue(val); | setValue(val.GetSatoshis()); | ||||
else | else | ||||
clear(); | clear(); | ||||
} | } | ||||
void setSingleStep(const CAmount &step) { singleStep = step; } | void setSingleStep(const CAmount &step) { singleStep = step; } | ||||
QSize minimumSizeHint() const { | QSize minimumSizeHint() const { | ||||
if (cachedMinimumSizeHint.isEmpty()) { | if (cachedMinimumSizeHint.isEmpty()) { | ||||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | private: | ||||
mutable QSize cachedMinimumSizeHint; | mutable QSize cachedMinimumSizeHint; | ||||
/** | /** | ||||
* Parse a string into a number of base monetary units and | * Parse a string into a number of base monetary units and | ||||
* return validity. | * return validity. | ||||
* @note Must return 0 if !valid. | * @note Must return 0 if !valid. | ||||
*/ | */ | ||||
CAmount parse(const QString &text, bool *valid_out = 0) const { | CAmount parse(const QString &text, bool *valid_out = 0) const { | ||||
CAmount val = 0; | Amount val = 0; | ||||
bool valid = BitcoinUnits::parse(currentUnit, text, &val); | bool valid = BitcoinUnits::parse(currentUnit, text, &val); | ||||
if (valid) { | if (valid) { | ||||
if (val < 0 || val > BitcoinUnits::maxMoney()) { | if (val < Amount(0) || val > BitcoinUnits::maxMoney()) { | ||||
valid = false; | valid = false; | ||||
} | } | ||||
} | } | ||||
if (valid_out) { | if (valid_out) { | ||||
*valid_out = valid; | *valid_out = valid; | ||||
} | } | ||||
return valid ? val : 0; | return valid ? val.GetSatoshis() : 0; | ||||
} | } | ||||
protected: | protected: | ||||
bool event(QEvent *event) { | bool event(QEvent *event) { | ||||
if (event->type() == QEvent::KeyPress || | if (event->type() == QEvent::KeyPress || | ||||
event->type() == QEvent::KeyRelease) { | event->type() == QEvent::KeyRelease) { | ||||
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); | QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); | ||||
if (keyEvent->key() == Qt::Key_Comma) { | if (keyEvent->key() == Qt::Key_Comma) { | ||||
▲ Show 20 Lines • Show All 137 Lines • Show Last 20 Lines |