Add minimum constraint on custom fees field

This commit is contained in:
J Ross Nicoll 2015-10-10 20:51:00 +01:00
parent 61b4078a6a
commit 4775f3c752
3 changed files with 40 additions and 3 deletions

View file

@ -28,6 +28,7 @@ public:
singleStep(COIN) // koinu
{
setAlignment(Qt::AlignRight);
min = CAmount(0);
connect(lineEdit(), SIGNAL(textEdited(QString)), this, SIGNAL(valueChanged()));
}
@ -64,12 +65,27 @@ public:
emit valueChanged();
}
void setMinimum(const int min)
{
this->min = min * COIN;
bool valid = false;
CAmount val = value(&valid);
if (val < this->min) {
setValue(this->min);
}
}
int minimum()
{
return min / COIN;
}
void stepBy(int steps)
{
bool valid = false;
CAmount val = value(&valid);
val = val + steps * singleStep;
val = qMin(qMax(val, CAmount(0)), BitcoinUnits::maxMoney());
val = qMin(qMax(val, min), BitcoinUnits::maxMoney());
setValue(val);
}
@ -126,6 +142,7 @@ public:
private:
int currentUnit;
CAmount min;
CAmount singleStep;
mutable QSize cachedMinimumSizeHint;
@ -140,7 +157,7 @@ private:
bool valid = BitcoinUnits::parse(currentUnit, text, &val);
if(valid)
{
if(val < 0 || val > BitcoinUnits::maxMoney())
if(val < min || val > BitcoinUnits::maxMoney())
valid = false;
}
if(valid_out)
@ -227,6 +244,16 @@ void BitcoinAmountField::setText(const QString &text)
amount->setValue(QLocale().toDouble(text));
}
void BitcoinAmountField::setMinimum(const int min)
{
amount->setMinimum(min);
}
int BitcoinAmountField::minimum()
{
return amount->minimum();
}
void BitcoinAmountField::clear()
{
amount->clear();

View file

@ -33,6 +33,9 @@ public:
CAmount value(bool *value=0) const;
void setValue(const CAmount& value);
void setMinimum(const int min);
int minimum();
/** Set single step in satoshis **/
void setSingleStep(const CAmount& step);

View file

@ -882,7 +882,14 @@
</widget>
</item>
<item>
<widget class="BitcoinAmountField" name="customFee"/>
<widget class="BitcoinAmountField" name="customFee">
<property name="minimum">
<number>1</number>
</property>
<property name="value">
<number>1</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">