From: Wladimir J. van der Laan Date: Tue, 26 Jul 2011 11:11:28 +0000 (+0200) Subject: refuse to format nor parse invalid units X-Git-Tag: v0.4.0-unstable~226^2~57^2~97 X-Git-Url: https://git.novaco.in/?a=commitdiff_plain;h=f2b10f6469dd53bbd51f045b1ae88dfb392fcd13;p=novacoin.git refuse to format nor parse invalid units --- diff --git a/src/qt/bitcoinunits.cpp b/src/qt/bitcoinunits.cpp index 8414a75..7cd5023 100644 --- a/src/qt/bitcoinunits.cpp +++ b/src/qt/bitcoinunits.cpp @@ -17,6 +17,19 @@ QList BitcoinUnits::availableUnits() return unitlist; } +bool BitcoinUnits::valid(int unit) +{ + switch(unit) + { + case BTC: + case mBTC: + case uBTC: + return true; + default: + return false; + } +} + QString BitcoinUnits::name(int unit) { switch(unit) @@ -54,7 +67,7 @@ int BitcoinUnits::amountDigits(int unit) { switch(unit) { - case BTC: return 8; // 21,000,000 + case BTC: return 8; // 21,000,000 (# digits, without commas) case mBTC: return 11; // 21,000,000,000 case uBTC: return 14; // 21,000,000,000,000 default: return 0; @@ -76,6 +89,8 @@ QString BitcoinUnits::format(int unit, qint64 n, bool fPlus) { // Note: not using straight sprintf here because we do NOT want // localized number formatting. + if(!valid(unit)) + return QString(); // Refuse to format invalid unit qint64 coin = factor(unit); int num_decimals = decimals(unit); qint64 n_abs = (n > 0 ? n : -n); @@ -104,6 +119,8 @@ QString BitcoinUnits::formatWithUnit(int unit, qint64 amount, bool plussign) bool BitcoinUnits::parse(int unit, const QString &value, qint64 *val_out) { + if(!valid(unit)) + return false; // Refuse to parse invalid unit int num_decimals = decimals(unit); QStringList parts = value.split("."); if(parts.size() != 2 || parts.at(1).size() > num_decimals) diff --git a/src/qt/bitcoinunits.h b/src/qt/bitcoinunits.h index 18b6235..4dfdbea 100644 --- a/src/qt/bitcoinunits.h +++ b/src/qt/bitcoinunits.h @@ -22,6 +22,8 @@ public: /// Static API // Get list of units, for dropdown box static QList availableUnits(); + // Is unit ID valid? + static bool valid(int unit); // Short name static QString name(int unit); // Longer description