From b282c63a5ef3f0b3acbd236dc5995620e227b951 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 5 Dec 2019 03:15:36 -0800 Subject: [PATCH] it compiles --- src/mainwindow.cpp | 14 ++++++++++---- src/mainwindow.h | 2 +- src/rpc.cpp | 48 +++++++++++++++++++++++++++------------------- src/rpc.h | 2 +- src/settings.cpp | 12 ++++++++++-- src/settings.h | 6 ++++-- 6 files changed, 54 insertions(+), 30 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 744fc11..d59ec9b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -120,8 +120,8 @@ MainWindow::MainWindow(QWidget *parent) : setupTransactionsTab(); setupReceiveTab(); setupBalancesTab(); - setupHushTab(); setupMarketTab(); + setupHushTab(); rpc = new RPC(this); qDebug() << "Created RPC"; @@ -267,7 +267,7 @@ void MainWindow::setupSettingsModal() { Settings::getInstance()->setSaveZtxs(checked); }); - QString currency_name; + std::string currency_name; try { currency_name = Settings::getInstance()->get_currency_name(); } catch (...) { @@ -939,6 +939,12 @@ void MainWindow::setupHushTab() { void MainWindow::setupMarketTab() { qDebug() << "Setting up market tab"; + auto s = Settings::getInstance(); + auto ticker = s->get_currency_name(); + + ui->volumeExchange->setText(QString::number((double) s->getVolume("HUSH") ,'f',8) + " HUSH"); + ui->volumeExchangeLocal->setText(QString::number((double) s->getVolume(ticker) ,'f',8) + " " + ticker); + ui->volumeExchangeBTC->setText(QString::number((double) s->getVolume("BTC") ,'f',8) + " BTC"); } void MainWindow::setupTransactionsTab() { @@ -1302,12 +1308,12 @@ void MainWindow::updateLabels() { updateLabelsAutoComplete(); } -void MainWindow::slot_change_currency(const QString& currency_name) +void MainWindow::slot_change_currency(const std::string& currency_name) { Settings::getInstance()->set_currency_name(currency_name); // Include currency - QString saved_currency_name; + std::string saved_currency_name; try { saved_currency_name = Settings::getInstance()->get_currency_name(); } catch (const std::exception& e) { diff --git a/src/mainwindow.h b/src/mainwindow.h index 3dd792a..5531e97 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -84,7 +84,7 @@ private: void setupMarketTab(); void slot_change_theme(const QString& themeName); - void slot_change_currency(const QString& currencyName); + void slot_change_currency(std::string& currencyName); void setupTurnstileDialog(); void setupSettingsModal(); void setupStatusBar(); diff --git a/src/rpc.cpp b/src/rpc.cpp index cbea74c..2d1b6f9 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -30,7 +30,7 @@ RPC::RPC(MainWindow* main) { // Set up timer to refresh Price priceTimer = new QTimer(main); QObject::connect(priceTimer, &QTimer::timeout, [=]() { - refreshZECPrice(); + refreshPrice(); }); priceTimer->start(Settings::priceRefreshSpeed); // Every hour @@ -93,7 +93,7 @@ void RPC::setConnection(Connection* c) { Settings::removeFromZcashConf(zcashConfLocation, "reindex"); // Refresh the UI - refreshZECPrice(); + refreshPrice(); checkForUpdate(); // Force update, because this might be coming from a settings update @@ -526,7 +526,7 @@ void RPC::refreshReceivedZTrans(QList zaddrs) { ); } -/// This will refresh all the balance data from zcashd +/// This will refresh all the balance data from hushd void RPC::refresh(bool force) { if (conn == nullptr) return noConnection(); @@ -536,9 +536,7 @@ void RPC::refresh(bool force) { void RPC::getInfoThenRefresh(bool force) { - //qDebug() << "getinfo"; - if (conn == nullptr) return noConnection(); @@ -551,6 +549,7 @@ void RPC::getInfoThenRefresh(bool force) { Settings::getInstance()->setTestnet(reply["testnet"].get()); }; + // TODO: checkmark only when getinfo.synced == true! // Connected, so display checkmark. QIcon i(":/icons/res/connected.gif"); main->statusIcon->setPixmap(i.pixmap(16, 16)); @@ -648,7 +647,7 @@ void RPC::getInfoThenRefresh(bool force) { conn->doRPCIgnoreError(payload, [=](const json& reply) { auto progress = reply["verificationprogress"].get(); - // TODO: use getinfo.synced + // TODO: use getinfo.synced bool isSyncing = progress < 0.9999; // 99.99% int blockNumber = reply["blocks"].get(); @@ -657,10 +656,12 @@ void RPC::getInfoThenRefresh(bool force) { estimatedheight = reply["estimatedheight"].get(); } - Settings::getInstance()->setSyncing(isSyncing); - Settings::getInstance()->setBlockNumber(blockNumber); + auto s = Settings::getInstance(); + s->setSyncing(isSyncing); + s->setBlockNumber(blockNumber); + std::string ticker = s->get_currency_name(); - // Update zcashd tab if it exists + // Update hushd tab if (isSyncing) { QString txt = QString::number(blockNumber); if (estimatedheight > 0) { @@ -677,17 +678,18 @@ void RPC::getInfoThenRefresh(bool force) { ui->heightLabel->setText(QObject::tr("Block height")); } + // Update the status bar QString statusText = QString() % (isSyncing ? QObject::tr("Syncing") : QObject::tr("Connected")) % " (" % - (Settings::getInstance()->isTestnet() ? QObject::tr("testnet:") : "") % + (s->isTestnet() ? QObject::tr("testnet:") : "") % QString::number(blockNumber) % (isSyncing ? ("/" % QString::number(progress*100, 'f', 2) % "%") : QString()) % ") " % " Lag: " % QString::number(blockNumber - notarized) % - " HUSH/USD=$" % QString::number( (double) Settings::getInstance()->getZECPrice() ) % - " " % QString::number( Settings::getInstance()->getBTCPrice() ) % "sat"; + ", " % "HUSH" % "/" % QString::fromStdString(ticker) % "=" % QString::number( (double) s->get_price(ticker) ) % " " % QString::fromStdString(ticker) % + " " % QString::number( s->getBTCPrice() ) % "sat"; main->statusLabel->setText(statusText); auto zecPrice = Settings::getUSDFormat(1); @@ -698,7 +700,7 @@ void RPC::getInfoThenRefresh(bool force) { else { tooltip = QObject::tr("hushd has no peer connections! Network issues?"); } - tooltip = tooltip % "(v " % QString::number(Settings::getInstance()->getZcashdVersion()) % ")"; + tooltip = tooltip % "(v" % QString::number(Settings::getInstance()->getZcashdVersion()) % ")"; if (!zecPrice.isEmpty()) { tooltip = "1 HUSH = " % zecPrice % "\n" % tooltip; @@ -1085,7 +1087,7 @@ void RPC::checkForUpdate(bool silent) { } // Get the HUSH prices -void RPC::refreshZECPrice() { +void RPC::refreshPrice() { if (conn == nullptr) return noConnection(); @@ -1095,6 +1097,7 @@ void RPC::refreshZECPrice() { QNetworkRequest req; req.setUrl(cmcURL); QNetworkReply *reply = conn->restclient->get(req); + auto s = Settings::getInstance(); QObject::connect(reply, &QNetworkReply::finished, [=] { reply->deleteLater(); @@ -1107,8 +1110,8 @@ void RPC::refreshZECPrice() { } else { qDebug() << reply->errorString(); } - Settings::getInstance()->setZECPrice(0); - Settings::getInstance()->setBTCPrice(0); + s->setZECPrice(0); + s->setBTCPrice(0); return; } @@ -1116,8 +1119,8 @@ void RPC::refreshZECPrice() { auto all = reply->readAll(); auto parsed = json::parse(all, nullptr, false); if (parsed.is_discarded()) { - Settings::getInstance()->setZECPrice(0); - Settings::getInstance()->setBTCPrice(0); + s->setZECPrice(0); + s->setBTCPrice(0); return; } @@ -1125,6 +1128,7 @@ void RPC::refreshZECPrice() { const json& item = parsed.get(); const json& hush = item["hush"].get(); + auto ticker = s->get_currency_name(); if (hush["usd"] >= 0) { qDebug() << "Found hush key in price json"; @@ -1134,8 +1138,12 @@ void RPC::refreshZECPrice() { qDebug() << "HUSH = " << QString::number((double)hush["eur"]) << " EUR"; qDebug() << "HUSH = " << QString::number((int) 100000000 * (double) hush["btc"]) << " sat "; //TODO: based on current fiat selection, store that fiat price - Settings::getInstance()->setZECPrice( hush["usd"] ); - Settings::getInstance()->setBTCPrice( (unsigned int) 100000000 * (double)hush["btc"] ); + s->setZECPrice( hush["usd"] ); + s->setBTCPrice( (unsigned int) 100000000 * (double)hush["btc"] ); + + // convert ticker to upper case + //std::for_each(ticker.begin(), ticker.end(), [](char & c){ c = ::toupper(c); }); + s->set_price(ticker, hush[ticker]); return; } else { diff --git a/src/rpc.h b/src/rpc.h index 7521345..a32b63d 100644 --- a/src/rpc.h +++ b/src/rpc.h @@ -46,7 +46,7 @@ public: void refreshAddresses(); void checkForUpdate(bool silent = true); - void refreshZECPrice(); + void refreshPrice(); void getZboardTopics(std::function)> cb); void executeTransaction(Tx tx, diff --git a/src/settings.cpp b/src/settings.cpp index 18f24b0..0b38f41 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -164,12 +164,16 @@ double Settings::getZECPrice() { double Settings::get_price(std::string currency) { auto search = prices.find(currency); if (search != prices.end()) { + qDebug() << "Found price of " << currency << " = " << search->second; return search->second; } else { return -1.0; } } +void Settings::set_price(std::string ticker, double price) { +} + unsigned int Settings::getBTCPrice() { // in satoshis return btcPrice; @@ -294,8 +298,12 @@ QString Settings::get_currency_name() { return QSettings().value("options/currency_name", false).toString(); } -void Settings::set_currency_name(QString currency_name) { - QSettings().setValue("options/currency_name", currency_name); +void Settings::set_currency_name(std::string currency_name) { + QSettings().setValue("options/currency_name", QString::fromStdString(currency_name)); +} + +double Settings::getVolume(QString ticker) { + return 0.0; } bool Settings::removeFromZcashConf(QString confLocation, QString option) { diff --git a/src/settings.h b/src/settings.h index 48e05bf..a231a2b 100644 --- a/src/settings.h +++ b/src/settings.h @@ -85,8 +85,8 @@ public: QString get_theme_name(); void set_theme_name(QString theme_name); - QString get_currency_name(); - void set_currency_name(QString currency_name); + std::string get_currency_name(); + void set_currency_name(std::string currency_name); void setUsingZcashConf(QString confLocation); const QString& getZcashdConfLocation() { return _confLocation; } @@ -98,6 +98,8 @@ public: double get_fiat_price(); unsigned int getBTCPrice(); double get_price(std::string currency); + void set_price(std::string currency, double price); + double getVolume(QString ticker); void setPeers(int peers); int getPeers();