diff --git a/src/camount.cpp b/src/camount.cpp index 9e78381..28823e4 100644 --- a/src/camount.cpp +++ b/src/camount.cpp @@ -1,204 +1,230 @@ #include "camount.h" #include "settings.h" - #include "precompiled.h" const int NUMPLACES = 8; const qint64 COIN = 100000000; -double CAmount::toDecimalDouble() const { +double CAmount::toDecimalDouble() const +{ return static_cast(this->amount) / COIN; } -QString CAmount::toDecimalString() const { - if (amount < 0) { +QString CAmount::toDecimalString() const +{ + if (amount < 0) + { CAmount negative(-1 * this->amount); return "-" + negative.toDecimalString(); } int wholePart = amount / COIN; int decimalPart = amount % COIN; - QString r = QString::number(wholePart); - if (decimalPart > 0) { + if (decimalPart > 0) + { QString decimalPartStr = QString::number(decimalPart); r = r + "." + decimalPartStr.rightJustified(NUMPLACES, '0'); - // Trim tailing 0s - while (r.right(1) == "0") { + while (r.right(1) == "0") r = r.left(r.length() - 1); - } + } return r; } -QString CAmount::toDecimalUSDString() const { - double dblAmount = static_cast(this->amount) / COIN; - double price = Settings::getInstance()->getZECPrice(); +double CAmount::getDblAmount() const +{ + return static_cast(this->amount) / COIN; +} - return "$ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +QString CAmount::toDecimalUSDString() const +{ + double price = Settings::getInstance()->getZECPrice(); + return "$ " + QLocale(QLocale::English).toString(this->getDblAmount() * price, 'f', 2); } -QString CAmount::toDecimalEURString() const { - double dblAmount = static_cast(this->amount) / COIN; +QString CAmount::toDecimalEURString() const +{ double price = Settings::getInstance()->getEURPrice(); - - return QLocale(QLocale::German).toString(dblAmount*price, 'f', 2) + " €"; + return QLocale(QLocale::German).toString(this->getDblAmount() * price, 'f', 2) + " €"; } -QString CAmount::toDecimalBTCString() const { - double dblAmount = static_cast(this->amount) / COIN; - double price = Settings::getInstance()->getBTCPrice(); - return "BTC " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 9); +QString CAmount::toDecimalBTCString() const +{ + double price = Settings::getInstance()->getBTCPrice(); + return "BTC " + QLocale(QLocale::English).toString(this->getDblAmount() * price, 'f', 9); } -QString CAmount::toDecimalCNYString() const { - double dblAmount = static_cast(this->amount) / COIN; - double price = Settings::getInstance()->getCNYPrice(); - return "¥ /元 " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +QString CAmount::toDecimalCNYString() const +{ + double price = Settings::getInstance()->getCNYPrice(); + return "¥ /元 " + QLocale(QLocale::English).toString(this->getDblAmount() * price, 'f', 2); } -QString CAmount::toDecimalRUBString() const { - double dblAmount = static_cast(this->amount) / COIN; +QString CAmount::toDecimalRUBString() const +{ double price = Settings::getInstance()->getRUBPrice(); - - return "₽ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); + return "₽ " + QLocale(QLocale::English).toString(this->getDblAmount() * price, 'f', 2); } -QString CAmount::toDecimalCADString() const { - double dblAmount = static_cast(this->amount) / COIN; - double price = Settings::getInstance()->getCADPrice(); - return "$ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +QString CAmount::toDecimalCADString() const +{ + double price = Settings::getInstance()->getCADPrice(); + return "$ " + QLocale(QLocale::English).toString(this->getDblAmount() * price, 'f', 2); } -QString CAmount::toDecimalSGDString() const { - double dblAmount = static_cast(this->amount) / COIN; - double price = Settings::getInstance()->getSGDPrice(); - return "$ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +QString CAmount::toDecimalSGDString() const +{ + double price = Settings::getInstance()->getSGDPrice(); + return "$ " + QLocale(QLocale::English).toString(this->getDblAmount() * price, 'f', 2); } -QString CAmount::toDecimalCHFString() const { - double dblAmount = static_cast(this->amount) / COIN; - double price = Settings::getInstance()->getCHFPrice(); - return "CHF " + QLocale(QLocale::German).toString(dblAmount*price, 'f', 2); +QString CAmount::toDecimalCHFString() const +{ + double price = Settings::getInstance()->getCHFPrice(); + return "CHF " + QLocale(QLocale::German).toString(this->getDblAmount() * price, 'f', 2); } -QString CAmount::toDecimalINRString() const { - double dblAmount = static_cast(this->amount) / COIN; - double price = Settings::getInstance()->getINRPrice(); - return "₹ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +QString CAmount::toDecimalINRString() const +{ + double price = Settings::getInstance()->getINRPrice(); + return "₹ " + QLocale(QLocale::English).toString(this->getDblAmount() * price, 'f', 2); } -QString CAmount::toDecimalGBPString() const { - double dblAmount = static_cast(this->amount) / COIN; +QString CAmount::toDecimalGBPString() const +{ double price = Settings::getInstance()->getGBPPrice(); - - return "£ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); + return "£ " + QLocale(QLocale::English).toString(this->getDblAmount() * price, 'f', 2); } -QString CAmount::toDecimalAUDString() const { - double dblAmount = static_cast(this->amount) / COIN; +QString CAmount::toDecimalAUDString() const +{ double price = Settings::getInstance()->getAUDPrice(); - - return " $" + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); + return " $" + QLocale(QLocale::English).toString(this->getDblAmount() * price, 'f', 2); } -QString CAmount::toDecimalhushString() const { +QString CAmount::toDecimalhushString() const +{ return this->toDecimalString() % " " % Settings::getTokenName(); } -QString CAmount::toDecimalhushUSDString() const { +QString CAmount::toDecimalhushUSDString() const +{ auto usdString = this->toDecimalUSDString(); if (!usdString.isEmpty()) return this->toDecimalhushString() % " (" % usdString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushEURString() const { +QString CAmount::toDecimalhushEURString() const +{ auto eurString = this->toDecimalEURString(); if (!eurString.isEmpty()) return this->toDecimalhushString() % " (" % eurString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushBTCString() const { +QString CAmount::toDecimalhushBTCString() const +{ auto btcString = this->toDecimalBTCString(); if (!btcString.isEmpty()) return this->toDecimalhushString() % " (" % btcString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushCNYString() const { +QString CAmount::toDecimalhushCNYString() const +{ auto cnyString = this->toDecimalCNYString(); if (!cnyString.isEmpty()) return this->toDecimalhushString() % " (" % cnyString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushRUBString() const { +QString CAmount::toDecimalhushRUBString() const +{ auto rubString = this->toDecimalRUBString(); if (!rubString.isEmpty()) return this->toDecimalhushString() % " (" % rubString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushCADString() const { +QString CAmount::toDecimalhushCADString() const +{ auto cadString = this->toDecimalCADString(); if (!cadString.isEmpty()) return this->toDecimalhushString() % " (" % cadString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushSGDString() const { +QString CAmount::toDecimalhushSGDString() const +{ auto sgdString = this->toDecimalSGDString(); if (!sgdString.isEmpty()) return this->toDecimalhushString() % " (" % sgdString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushCHFString() const { +QString CAmount::toDecimalhushCHFString() const +{ auto chfString = this->toDecimalCHFString(); if (!chfString.isEmpty()) return this->toDecimalhushString() % " (" % chfString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushINRString() const { +QString CAmount::toDecimalhushINRString() const +{ auto inrString = this->toDecimalINRString(); if (!inrString.isEmpty()) return this->toDecimalhushString() % " (" % inrString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushGBPString() const { +QString CAmount::toDecimalhushGBPString() const +{ auto gbpString = this->toDecimalGBPString(); if (!gbpString.isEmpty()) return this->toDecimalhushString() % " (" % gbpString % ")"; + else return this->toDecimalhushString(); } -QString CAmount::toDecimalhushAUDString() const { +QString CAmount::toDecimalhushAUDString() const +{ auto audString = this->toDecimalAUDString(); if (!audString.isEmpty()) return this->toDecimalhushString() % " (" % audString % ")"; + else return this->toDecimalhushString(); } -CAmount CAmount::fromDecimalString(QString decimalString) { +CAmount CAmount::fromDecimalString(QString decimalString) +{ auto amtParts = decimalString.split("."); qint64 r = amtParts[0].toULongLong() * COIN; - if (amtParts.length() == 2) { + if (amtParts.length() == 2) + { auto trailingZeros = QString("0").repeated(NUMPLACES - amtParts[1].length()); r += QString(amtParts[1] + trailingZeros).toULongLong(); } diff --git a/src/camount.h b/src/camount.h index 2063903..7319849 100644 --- a/src/camount.h +++ b/src/camount.h @@ -26,6 +26,7 @@ public: double toDecimalDouble() const; QString toDecimalString() const; + double getDblAmount() const; QString toDecimalUSDString() const; QString toDecimalEURString() const; QString toDecimalBTCString() const;