From 04fe2be715db5b581a27b45f5eae7db9e098b7ec Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 18 Nov 2019 20:24:32 +0100 Subject: [PATCH] Add suport for CNY,RUB,CAD,SGD,CHF,INR,GBP,AUD --- src/camount.cpp | 116 +++++++++++++++++++++++++++++- src/camount.h | 17 +++++ src/controller.cpp | 175 +++++++++++++++++++++++++++++++++++++++++---- src/controller.h | 9 +++ src/recurring.cpp | 53 ++++++++++++++ src/sendtab.cpp | 140 +++++++++++++++++++++++++++++++++++- src/settings.cpp | 24 +++++++ src/settings.h | 24 +++++++ src/settings.ui | 34 ++++++++- 9 files changed, 575 insertions(+), 17 deletions(-) diff --git a/src/camount.cpp b/src/camount.cpp index d214c07..f811d1c 100644 --- a/src/camount.cpp +++ b/src/camount.cpp @@ -44,7 +44,7 @@ QString CAmount::toDecimalEURString() const { double dblAmount = static_cast(this->amount) / COIN; double price = Settings::getInstance()->getEURPrice(); - return QLocale(QLocale::German).toString(dblAmount*price, 'f', 2) + " €"; + return QLocale(QLocale::English).toString(dblAmount*price, 'f', 2) + " €"; } QString CAmount::toDecimalBTCString() const { double dblAmount = static_cast(this->amount) / COIN; @@ -52,6 +52,55 @@ QString CAmount::toDecimalBTCString() const { return "BTC " + QLocale(QLocale::English).toString(dblAmount*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::toDecimalRUBString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getRUBPrice(); + + return "₽ " + QLocale(QLocale::English).toString(dblAmount*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::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::toDecimalCHFString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getCHFPrice(); + + return "CHF " + QLocale(QLocale::English).toString(dblAmount*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::toDecimalGBPString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getGBPPrice(); + + return "£ " + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} +QString CAmount::toDecimalAUDString() const { + double dblAmount = static_cast(this->amount) / COIN; + double price = Settings::getInstance()->getAUDPrice(); + + return " $" + QLocale(QLocale::English).toString(dblAmount*price, 'f', 2); +} + QString CAmount::toDecimalhushString() const { return this->toDecimalString() % " " % Settings::getTokenName(); } @@ -81,6 +130,71 @@ QString CAmount::toDecimalhushBTCString() const { return this->toDecimalhushString(); } +QString CAmount::toDecimalhushCNYString() const { + auto cnyString = this->toDecimalCNYString(); + if (!cnyString.isEmpty()) + return this->toDecimalhushString() % " (" % cnyString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushRUBString() const { + auto rubString = this->toDecimalRUBString(); + if (!rubString.isEmpty()) + return this->toDecimalhushString() % " (" % rubString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushCADString() const { + auto cadString = this->toDecimalCADString(); + if (!cadString.isEmpty()) + return this->toDecimalhushString() % " (" % cadString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushSGDString() const { + auto sgdString = this->toDecimalSGDString(); + if (!sgdString.isEmpty()) + return this->toDecimalhushString() % " (" % sgdString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushCHFString() const { + auto chfString = this->toDecimalCHFString(); + if (!chfString.isEmpty()) + return this->toDecimalhushString() % " (" % chfString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushINRString() const { + auto inrString = this->toDecimalINRString(); + if (!inrString.isEmpty()) + return this->toDecimalhushString() % " (" % inrString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushGBPString() const { + auto gbpString = this->toDecimalGBPString(); + if (!gbpString.isEmpty()) + return this->toDecimalhushString() % " (" % gbpString % ")"; + else + return this->toDecimalhushString(); +} + +QString CAmount::toDecimalhushAUDString() const { + auto audString = this->toDecimalAUDString(); + if (!audString.isEmpty()) + return this->toDecimalhushString() % " (" % audString % ")"; + else + return this->toDecimalhushString(); +} + + CAmount CAmount::fromDecimalString(QString decimalString) { auto amtParts = decimalString.split("."); qint64 r = amtParts[0].toULongLong() * COIN; diff --git a/src/camount.h b/src/camount.h index 3f8dacd..b5d88b9 100644 --- a/src/camount.h +++ b/src/camount.h @@ -29,10 +29,27 @@ public: QString toDecimalUSDString() const; QString toDecimalEURString() const; QString toDecimalBTCString() const; + QString toDecimalCNYString() const; + QString toDecimalRUBString() const; + QString toDecimalCADString() const; + QString toDecimalSGDString() const; + QString toDecimalCHFString() const; + QString toDecimalINRString() const; + QString toDecimalGBPString() const; + QString toDecimalAUDString() const; QString toDecimalhushString() const; QString toDecimalhushUSDString() const; QString toDecimalhushEURString() const; QString toDecimalhushBTCString() const; + QString toDecimalhushCNYString() const; + QString toDecimalhushRUBString() const; + QString toDecimalhushCADString() const; + QString toDecimalhushSGDString() const; + QString toDecimalhushCHFString() const; + QString toDecimalhushINRString() const; + QString toDecimalhushGBPString() const; + QString toDecimalhushAUDString() const; + qint64 toqint64() const { return amount; }; CAmount operator+ (const CAmount& other) const { diff --git a/src/controller.cpp b/src/controller.cpp index 6b4ed65..dea37d7 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -173,6 +173,23 @@ void Controller::getInfoThenRefresh(bool force) { main->statusLabel->setText(" HUSH/EUR=€ " + QString::number( (double) Settings::getInstance()->getEURPrice() ,'f',2)); } else if (Settings::getInstance()->get_currency_name() == "BTC") { main->statusLabel->setText(" HUSH/BTC=BTC " + QString::number((double) Settings::getInstance()->getBTCPrice() ,'f',8)); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + main->statusLabel->setText(" HUSH/CNY=¥ /元 " + QString::number( (double) Settings::getInstance()->getCNYPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + main->statusLabel->setText(" HUSH/RUB=₽ " + QString::number((double) Settings::getInstance()->getRUBPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + main->statusLabel->setText(" HUSH/CAD=$ " + QString::number( (double) Settings::getInstance()->getCADPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + main->statusLabel->setText(" HUSH/SGD=$ " + QString::number((double) Settings::getInstance()->getSGDPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + main->statusLabel->setText(" HUSH/CHF=CHF " + QString::number((double) Settings::getInstance()->getCHFPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + main->statusLabel->setText(" HUSH/INR=₹ " + QString::number( (double) Settings::getInstance()->getINRPrice() ,'f',2)); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + main->statusLabel->setText(" HUSH/GBP=£ " + QString::number((double) Settings::getInstance()->getGBPPrice() ,'f',2)); + }else if (Settings::getInstance()->get_currency_name() == "AUD") { + main->statusLabel->setText(" HUSH/AUD=$ " + QString::number((double) Settings::getInstance()->getAUDPrice() ,'f',2)); + } else { main->statusLabel->setText(" error Input" + QString::number(Settings::getInstance()->getEURPrice() )); } @@ -320,6 +337,54 @@ void Controller::updateUIBalances() { ui->balVerified ->setToolTip(balVerified.toDecimalBTCString()); ui->balTransparent->setToolTip(balT.toDecimalBTCString()); ui->balTotal ->setToolTip(balTotal.toDecimalBTCString()); + + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui->balSheilded ->setToolTip(balZ.toDecimalCNYString()); + ui->balVerified ->setToolTip(balVerified.toDecimalCNYString()); + ui->balTransparent->setToolTip(balT.toDecimalCNYString()); + ui->balTotal ->setToolTip(balTotal.toDecimalCNYString()); + + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui->balSheilded ->setToolTip(balZ.toDecimalRUBString()); + ui->balVerified ->setToolTip(balVerified.toDecimalRUBString()); + ui->balTransparent->setToolTip(balT.toDecimalRUBString()); + ui->balTotal ->setToolTip(balTotal.toDecimalRUBString()); + + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + ui->balSheilded ->setToolTip(balZ.toDecimalCADString()); + ui->balVerified ->setToolTip(balVerified.toDecimalCADString()); + ui->balTransparent->setToolTip(balT.toDecimalCADString()); + ui->balTotal ->setToolTip(balTotal.toDecimalCADString()); + + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui->balSheilded ->setToolTip(balZ.toDecimalSGDString()); + ui->balVerified ->setToolTip(balVerified.toDecimalSGDString()); + ui->balTransparent->setToolTip(balT.toDecimalSGDString()); + ui->balTotal ->setToolTip(balTotal.toDecimalSGDString()); + + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + ui->balSheilded ->setToolTip(balZ.toDecimalCHFString()); + ui->balVerified ->setToolTip(balVerified.toDecimalCHFString()); + ui->balTransparent->setToolTip(balT.toDecimalCHFString()); + ui->balTotal ->setToolTip(balTotal.toDecimalCHFString()); + + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui->balSheilded ->setToolTip(balZ.toDecimalINRString()); + ui->balVerified ->setToolTip(balVerified.toDecimalINRString()); + ui->balTransparent->setToolTip(balT.toDecimalINRString()); + ui->balTotal ->setToolTip(balTotal.toDecimalINRString()); + + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui->balSheilded ->setToolTip(balZ.toDecimalGBPString()); + ui->balVerified ->setToolTip(balVerified.toDecimalGBPString()); + ui->balTransparent->setToolTip(balT.toDecimalGBPString()); + ui->balTotal ->setToolTip(balTotal.toDecimalGBPString()); + + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui->balSheilded ->setToolTip(balZ.toDecimalAUDString()); + ui->balVerified ->setToolTip(balVerified.toDecimalAUDString()); + ui->balTransparent->setToolTip(balT.toDecimalAUDString()); + ui->balTotal ->setToolTip(balTotal.toDecimalAUDString()); } // Send tab ui->txtAvailablehush->setText(balAvailable.toDecimalhushString()); @@ -330,8 +395,23 @@ void Controller::updateUIBalances() { ui->txtAvailableUSD->setText(balAvailable.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { ui->txtAvailableUSD->setText(balAvailable.toDecimalBTCString()); - } else - ui->txtAvailableUSD->setText(balAvailable.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui->txtAvailableUSD->setText(balAvailable.toDecimalAUDString()); + } } void Controller::refreshBalances() { @@ -648,7 +728,7 @@ void Controller::refreshZECPrice() { return noConnection(); // TODO: use/render all this data - QUrl cmcURL("https://api.coingecko.com/api/v3/simple/price?ids=hush&vs_currencies=btc%2Cusd%2Ceur&include_market_cap=true&include_24hr_vol=true&include_24hr_change=true"); + QUrl cmcURL("https://api.coingecko.com/api/v3/simple/price?ids=hush&vs_currencies=btc%2Cusd%2Ceur%2Ceth%2Cgbp%2Ccny%2Cjpy%2Crub%2Ccad%2Csgd%2Cchf%2Cinr%2Caud%2Cinr&include_market_cap=true&include_24hr_vol=true&include_24hr_change=true"); QNetworkRequest req; req.setUrl(cmcURL); @@ -671,6 +751,15 @@ void Controller::refreshZECPrice() { Settings::getInstance()->setZECPrice(0); Settings::getInstance()->setEURPrice(0); Settings::getInstance()->setBTCPrice(0); + Settings::getInstance()->setCNYPrice(0); + Settings::getInstance()->setRUBPrice(0); + Settings::getInstance()->setCADPrice(0); + Settings::getInstance()->setSGDPrice(0); + Settings::getInstance()->setCHFPrice(0); + Settings::getInstance()->setGBPPrice(0); + Settings::getInstance()->setAUDPrice(0); + Settings::getInstance()->setINRPrice(0); + return; } @@ -682,6 +771,14 @@ void Controller::refreshZECPrice() { Settings::getInstance()->setZECPrice(0); Settings::getInstance()->setEURPrice(0); Settings::getInstance()->setBTCPrice(0); + Settings::getInstance()->setCNYPrice(0); + Settings::getInstance()->setRUBPrice(0); + Settings::getInstance()->setCADPrice(0); + Settings::getInstance()->setSGDPrice(0); + Settings::getInstance()->setCHFPrice(0); + Settings::getInstance()->setGBPPrice(0); + Settings::getInstance()->setAUDPrice(0); + Settings::getInstance()->setINRPrice(0); return; } @@ -692,25 +789,71 @@ void Controller::refreshZECPrice() { if (hush["usd"] >= 0) { qDebug() << "Found hush key in price json"; - // TODO: support BTC/EUR prices as well - //QString price = QString::fromStdString(hush["usd"].get()); + qDebug() << "HUSH = $" << QString::number((double)hush["usd"]); Settings::getInstance()->setZECPrice( hush["usd"] ); } if (hush["eur"] >= 0) { - // TODO: support BTC/EUR prices as well - //QString price = QString::fromStdString(hush["usd"].get()); + qDebug() << "HUSH = €" << QString::number((double)hush["eur"]); Settings::getInstance()->setEURPrice(hush["eur"]); } if (hush["btc"] >= 0) { - // TODO: support BTC/EUR prices as well - //QString price = QString::fromStdString(hush["usd"].get()); + qDebug() << "HUSH = BTC" << QString::number((double)hush["btc"]); Settings::getInstance()->setBTCPrice( hush["btc"]); } + if (hush["cny"] >= 0) + + { + qDebug() << "HUSH = CNY" << QString::number((double)hush["cny"]); + Settings::getInstance()->setCNYPrice( hush["cny"]); + } + if (hush["rub"] >= 0) + { + qDebug() << "HUSH = RUB" << QString::number((double)hush["rub"]); + Settings::getInstance()->setRUBPrice( hush["rub"]); + } + if (hush["cad"] >= 0) + + { + qDebug() << "HUSH = CAD" << QString::number((double)hush["cad"]); + Settings::getInstance()->setCADPrice( hush["cad"]); + } + if (hush["sgd"] >= 0) + { + + qDebug() << "HUSH = SGD" << QString::number((double)hush["sgd"]); + Settings::getInstance()->setSGDPrice( hush["sgd"]); + } + if (hush["chf"] >= 0) + { + + qDebug() << "HUSH = CHF" << QString::number((double)hush["chf"]); + Settings::getInstance()->setCADPrice( hush["chf"]); + } + if (hush["inr"] >= 0) + { + + qDebug() << "HUSH = INR" << QString::number((double)hush["inr"]); + Settings::getInstance()->setINRPrice( hush["inr"]); + } + if (hush["gbp"] >= 0) + { + + qDebug() << "HUSH = GBP" << QString::number((double)hush["gbp"]); + Settings::getInstance()->setGBPPrice( hush["gbp"]); + } + if (hush["aud"] >= 0) + { + + qDebug() << "HUSH = AUD" << QString::number((double)hush["aud"]); + Settings::getInstance()->setAUDPrice( hush["aud"]); + } + + return; } catch (const std::exception& e) { // If anything at all goes wrong, just set the price to 0 and move on. @@ -718,9 +861,17 @@ void Controller::refreshZECPrice() { } // If nothing, then set the price to 0; - Settings::getInstance()->setZECPrice(0); - Settings::getInstance()->setEURPrice(0); - Settings::getInstance()->setBTCPrice(0); + Settings::getInstance()->setZECPrice(0); + Settings::getInstance()->setEURPrice(0); + Settings::getInstance()->setBTCPrice(0); + Settings::getInstance()->setCNYPrice(0); + Settings::getInstance()->setRUBPrice(0); + Settings::getInstance()->setCADPrice(0); + Settings::getInstance()->setSGDPrice(0); + Settings::getInstance()->setCHFPrice(0); + Settings::getInstance()->setGBPPrice(0); + Settings::getInstance()->setAUDPrice(0); + Settings::getInstance()->setINRPrice(0); }); } diff --git a/src/controller.h b/src/controller.h index d7b96c2..30208de 100644 --- a/src/controller.h +++ b/src/controller.h @@ -39,6 +39,15 @@ public: void refreshZECPrice(); void refreshEURPrice(); void refreshBTCPrice(); + void refreshCNYPrice(); + void refreshRUBPrice(); + void refreshCADPrice(); + void refreshSGDPrice(); + void refreshCHFPrice(); + void refreshINRPrice(); + void refreshGBPPrice(); + void refreshAUDPrice(); + void executeStandardUITransaction(Tx tx); diff --git a/src/recurring.cpp b/src/recurring.cpp index 93032b2..74a2f40 100644 --- a/src/recurring.cpp +++ b/src/recurring.cpp @@ -89,6 +89,22 @@ QString RecurringPaymentInfo::getAmountPretty() const { return currency == "EUR" ? amount.toDecimalEURString() : amount.toDecimalhushString(); } else if (Settings::getInstance()->get_currency_name() == "BTC") { return currency == "BTC" ? amount.toDecimalBTCString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + return currency == "EUR" ? amount.toDecimalCNYString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + return currency == "BTC" ? amount.toDecimalRUBString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + return currency == "EUR" ? amount.toDecimalCADString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + return currency == "BTC" ? amount.toDecimalSGDString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + return currency == "EUR" ? amount.toDecimalCHFString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + return currency == "BTC" ? amount.toDecimalINRString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + return currency == "EUR" ? amount.toDecimalGBPString() : amount.toDecimalhushString(); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + return currency == "BTC" ? amount.toDecimalAUDString() : amount.toDecimalhushString(); } } @@ -149,6 +165,23 @@ RecurringPaymentInfo* Recurring::getNewRecurringFromTx(QWidget* parent, MainWind ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalAUDString()); + } ui.txtMemo->setPlainText(tx.toAddrs[0].memo); @@ -167,6 +200,26 @@ RecurringPaymentInfo* Recurring::getNewRecurringFromTx(QWidget* parent, MainWind } else if (c == "BTC") { ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalBTCString()); + } else if (c == "CNY") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCNYString()); + } else if + (c == "RUB") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalRUBString()); + } else if (c == "CAD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCADString()); + } else if + (c == "SGD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalSGDString()); + } else if (c == "CHF") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalCHFString()); + } else if + (c == "INR") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalINRString()); + } else if (c == "GBP") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalGBPString()); + } else if + (c == "AUD") { + ui.lblAmt->setText(tx.toAddrs[0].amount.toDecimalAUDString()); } else { diff --git a/src/sendtab.cpp b/src/sendtab.cpp index 5c5e992..83e1a99 100644 --- a/src/sendtab.cpp +++ b/src/sendtab.cpp @@ -65,6 +65,22 @@ void MainWindow::setupSendTab() { ui->lblMinerFeeUSD->setText(fee.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { ui->lblMinerFeeUSD->setText(fee.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + ui->lblMinerFeeUSD->setText(fee.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + ui->lblMinerFeeUSD->setText(fee.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + ui->lblMinerFeeUSD->setText(fee.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + ui->lblMinerFeeUSD->setText(fee.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + ui->lblMinerFeeUSD->setText(fee.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + ui->lblMinerFeeUSD->setText(fee.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + ui->lblMinerFeeUSD->setText(fee.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + ui->lblMinerFeeUSD->setText(fee.toDecimalAUDString()); } }); ui->minerFeeAmt->setText(Settings::getMinerFee().toDecimalString()); @@ -82,6 +98,30 @@ void MainWindow::setupSendTab() { } else if (Settings::getInstance()->get_currency_name() == "BTC") { QString feeUSD = CAmount::fromDecimalString(txt).toDecimalEURString(); ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalCNYString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalRUBString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalCADString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalSGDString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalCHFString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalINRString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalGBPString(); + ui->lblMinerFeeUSD->setText(feeUSD); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + QString feeUSD = CAmount::fromDecimalString(txt).toDecimalAUDString(); + ui->lblMinerFeeUSD->setText(feeUSD); } } @@ -298,6 +338,22 @@ void MainWindow::amountChanged(int item, const QString& text) { usd->setText(amt.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { usd->setText(amt.toDecimalBTCString()); + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + usd->setText(amt.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + usd->setText(amt.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + usd->setText(amt.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + usd->setText(amt.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + usd->setText(amt.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + usd->setText(amt.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + usd->setText(amt.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + usd->setText(amt.toDecimalAUDString()); } // If there is a recurring payment, update the info there as well @@ -573,12 +629,76 @@ bool MainWindow::confirmTx(Tx tx, RecurringPaymentInfo* rpi) { AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); - // Amount (EUR) + // Amount (BTC) } else if (Settings::getInstance()->get_currency_name() == "BTC") { auto AmtUSD = new QLabel(confirm.sendToAddrs); AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); AmtUSD->setText(toAddr.amount.toDecimalBTCString()); AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (CNY) + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalCNYString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (RUB) + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalRUBString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (CAD) + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalCADString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (SGD) + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalSGDString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (CHF) + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalCHFString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (INR) + } else if (Settings::getInstance()->get_currency_name() == "INR") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalINRString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (GBP) + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalGBPString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); + confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); + + // Amount (AUD) + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + auto AmtUSD = new QLabel(confirm.sendToAddrs); + AmtUSD->setObjectName(QString("AmtUSD") % QString::number(i + 1)); + AmtUSD->setText(toAddr.amount.toDecimalAUDString()); + AmtUSD->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); confirm.gridLayout->addWidget(AmtUSD, row, 2, 1, 1); } // Memo @@ -634,7 +754,23 @@ bool MainWindow::confirmTx(Tx tx, RecurringPaymentInfo* rpi) { minerFeeUSD->setText(tx.fee.toDecimalEURString()); } else if (Settings::getInstance()->get_currency_name() == "BTC") { minerFeeUSD->setText(tx.fee.toDecimalBTCString()); - } + } else if (Settings::getInstance()->get_currency_name() == "CNY") { + minerFeeUSD->setText(tx.fee.toDecimalCNYString()); + } else if (Settings::getInstance()->get_currency_name() == "RUB") { + minerFeeUSD->setText(tx.fee.toDecimalRUBString()); + } else if (Settings::getInstance()->get_currency_name() == "CAD") { + minerFeeUSD->setText(tx.fee.toDecimalCADString()); + } else if (Settings::getInstance()->get_currency_name() == "SGD") { + minerFeeUSD->setText(tx.fee.toDecimalSGDString()); + } else if (Settings::getInstance()->get_currency_name() == "CHF") { + minerFeeUSD->setText(tx.fee.toDecimalCHFString()); + } else if (Settings::getInstance()->get_currency_name() == "INR") { + minerFeeUSD->setText(tx.fee.toDecimalINRString()); + } else if (Settings::getInstance()->get_currency_name() == "GBP") { + minerFeeUSD->setText(tx.fee.toDecimalGBPString()); + } else if (Settings::getInstance()->get_currency_name() == "AUD") { + minerFeeUSD->setText(tx.fee.toDecimalAUDString()); + } } // Recurring payment info, show only if there is exactly one destination address diff --git a/src/settings.cpp b/src/settings.cpp index 17689c9..279693e 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -111,6 +111,30 @@ double Settings::getEURPrice() { double Settings::getBTCPrice() { return BTCPrice; } +double Settings::getCNYPrice() { + return CNYPrice; +} +double Settings::getRUBPrice() { + return RUBPrice; +} +double Settings::getCADPrice() { + return CADPrice; +} +double Settings::getSGDPrice() { + return SGDPrice; +} +double Settings::getCHFPrice() { + return CHFPrice; +} +double Settings::getINRPrice() { + return INRPrice; +} +double Settings::getGBPPrice() { + return GBPPrice; +} +double Settings::getAUDPrice() { + return AUDPrice; +} bool Settings::getCheckForUpdates() { return QSettings().value("options/allowcheckupdates", true).toBool(); diff --git a/src/settings.h b/src/settings.h index d07c5fe..a385ce4 100644 --- a/src/settings.h +++ b/src/settings.h @@ -72,9 +72,25 @@ public: void setZECPrice(double p) { ZECPrice = p; } void setEURPrice(double p) { EURPrice = p; } void setBTCPrice(double p) { BTCPrice = p; } + void setCNYPrice(double p) { CNYPrice = p; } + void setRUBPrice(double p) { RUBPrice = p; } + void setCADPrice(double p) { CADPrice = p; } + void setSGDPrice(double p) { SGDPrice = p; } + void setCHFPrice(double p) { CHFPrice = p; } + void setINRPrice(double p) { INRPrice = p; } + void setGBPPrice(double p) { GBPPrice = p; } + void setAUDPrice(double p) { AUDPrice = p; } double getZECPrice(); double getEURPrice(); double getBTCPrice(); + double getCNYPrice(); + double getRUBPrice(); + double getCADPrice(); + double getSGDPrice(); + double getCHFPrice(); + double getINRPrice(); + double getGBPPrice(); + double getAUDPrice(); // Static stuff static const QString txidStatusMessage; @@ -129,6 +145,14 @@ private: double ZECPrice = 0.0; double BTCPrice = 0.0; double EURPrice = 0.0; + double CNYPrice = 0.0; + double RUBPrice = 0.0; + double CADPrice = 0.0; + double SGDPrice = 0.0; + double CHFPrice = 0.0; + double INRPrice = 0.0; + double GBPPrice = 0.0; + double AUDPrice = 0.0; }; diff --git a/src/settings.ui b/src/settings.ui index a51bd9c..65c3dd3 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -253,7 +253,27 @@ - USD + AUD + + + + + BTC + + + + + CAD + + + + + CHF + + + + + CNY @@ -263,7 +283,17 @@ - BTC + GBP + + + + + INR + + + + + USD