[Qt] don't allow amount changes when AmountSpinBox is read-only

- before it was possible to use the steps to change e.g. amouns of
  authenticated or unauthenticated payment requests (AmountSpinBox is
  already set to read-only here) - this is now fixed
- also move the reimplemented stepEnabled() function to the
  protected section of our class, where it belongs (see Qt doc)
This commit is contained in:
Philip Kaufmann 2015-01-10 15:02:12 +01:00
parent 4f73a8f64d
commit 0fd9e2bf43

View file

@ -20,6 +20,7 @@
class AmountSpinBox: public QAbstractSpinBox class AmountSpinBox: public QAbstractSpinBox
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit AmountSpinBox(QWidget *parent): explicit AmountSpinBox(QWidget *parent):
QAbstractSpinBox(parent), QAbstractSpinBox(parent),
@ -72,23 +73,6 @@ public:
setValue(val); setValue(val);
} }
StepEnabled stepEnabled() const
{
StepEnabled rv = 0;
if(text().isEmpty()) // Allow step-up with empty field
return StepUpEnabled;
bool valid = false;
CAmount val = value(&valid);
if(valid)
{
if(val > 0)
rv |= StepDownEnabled;
if(val < BitcoinUnits::maxMoney())
rv |= StepUpEnabled;
}
return rv;
}
void setDisplayUnit(int unit) void setDisplayUnit(int unit)
{ {
bool valid = false; bool valid = false;
@ -139,6 +123,7 @@ public:
} }
return cachedMinimumSizeHint; return cachedMinimumSizeHint;
} }
private: private:
int currentUnit; int currentUnit;
CAmount singleStep; CAmount singleStep;
@ -179,6 +164,25 @@ protected:
return QAbstractSpinBox::event(event); return QAbstractSpinBox::event(event);
} }
StepEnabled stepEnabled() const
{
StepEnabled rv = 0;
if (isReadOnly()) // Disable steps when AmountSpinBox is read-only
return StepNone;
if(text().isEmpty()) // Allow step-up with empty field
return StepUpEnabled;
bool valid = false;
CAmount val = value(&valid);
if(valid)
{
if(val > 0)
rv |= StepDownEnabled;
if(val < BitcoinUnits::maxMoney())
rv |= StepUpEnabled;
}
return rv;
}
signals: signals:
void valueChanged(); void valueChanged();
}; };