From 0bf48a68d689208527adce7881476ab47a02cc60 Mon Sep 17 00:00:00 2001 From: wagerr-builder <104495875+wagerr-builder@users.noreply.github.com> Date: Tue, 14 Feb 2023 09:08:56 +0000 Subject: [PATCH] Add icon for Tor status (#27) -Use on-off icon -Add icons to qt res folder --- src/Makefile.qt.include | 2 ++ src/netaddress.cpp | 4 ++++ src/netaddress.h | 1 + src/qt/bitcoingui.cpp | 42 +++++++++++++++++++++++++++++++++++++- src/qt/bitcoingui.h | 2 ++ src/qt/res/icons/tor.png | Bin 0 -> 16371 bytes src/qt/res/icons/tor2.png | Bin 0 -> 16371 bytes src/qt/wagerr.qrc | 2 ++ 8 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 src/qt/res/icons/tor.png create mode 100644 src/qt/res/icons/tor2.png diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index c3266a5d78fb0..49225f0f30d28 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -180,6 +180,8 @@ RES_ICONS = \ qt/res/icons/transaction5.png \ qt/res/icons/transaction_abandoned.png \ qt/res/icons/transaction_locked.png \ + qt/res/icons/tor.png \ + qt/res/icons/tor2.png \ qt/res/icons/connect1_16.png \ qt/res/icons/connect2_16.png \ qt/res/icons/connect3_16.png \ diff --git a/src/netaddress.cpp b/src/netaddress.cpp index 701f0286ad437..edb608a18424a 100644 --- a/src/netaddress.cpp +++ b/src/netaddress.cpp @@ -113,6 +113,8 @@ bool CNetAddr::SetNetFromBIP155Network(uint8_t possible_bip155_net, size_t addre bool fAllowPrivateNet = DEFAULT_ALLOWPRIVATENET; +bool fTorEnabled = false; + /** * Construct an unspecified IPv6 network address (::/128). * @@ -250,6 +252,7 @@ bool CNetAddr::SetSpecial(const std::string& str) case ADDR_TORV2_SIZE: m_net = NET_ONION; m_addr.assign(input.begin(), input.end()); + fTorEnabled = true; return true; case torv3::TOTAL_LEN: { Span input_pubkey{input.data(), ADDR_TORV3_SIZE}; @@ -268,6 +271,7 @@ bool CNetAddr::SetSpecial(const std::string& str) } m_net = NET_ONION; + fTorEnabled = true; m_addr.assign(input_pubkey.begin(), input_pubkey.end()); return true; } diff --git a/src/netaddress.h b/src/netaddress.h index c6eba8d5c9f9e..d5cb72877e793 100644 --- a/src/netaddress.h +++ b/src/netaddress.h @@ -24,6 +24,7 @@ #include extern bool fAllowPrivateNet; +extern bool fTorEnabled; /** * A flag that is ORed into the protocol version to designate that addresses diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index b0a360da4fd55..ea26e1bdca591 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -67,7 +68,6 @@ #include #include - const std::string BitcoinGUI::DEFAULT_UIPLATFORM = #if defined(Q_OS_MAC) "macosx" @@ -154,6 +154,7 @@ BitcoinGUI::BitcoinGUI(interfaces::Node& node, const NetworkStyle* networkStyle, labelConnectionsIcon = new GUIUtil::ClickableLabel(); labelProxyIcon = new GUIUtil::ClickableLabel(); labelBlocksIcon = new GUIUtil::ClickableLabel(); + labelOnionIcon = new QLabel(); if(enableWallet) { frameBlocksLayout->addStretch(); @@ -166,6 +167,8 @@ BitcoinGUI::BitcoinGUI(interfaces::Node& node, const NetworkStyle* networkStyle, frameBlocksLayout->addStretch(); frameBlocksLayout->addWidget(labelConnectionsIcon); frameBlocksLayout->addStretch(); + frameBlocksLayout->addWidget(labelOnionIcon); + frameBlocksLayout->addStretch(); frameBlocksLayout->addWidget(labelBlocksIcon); frameBlocksLayout->addStretch(); @@ -173,6 +176,13 @@ BitcoinGUI::BitcoinGUI(interfaces::Node& node, const NetworkStyle* networkStyle, // that the spinner starts before we have any connections labelBlocksIcon->hide(); + // TOR icon + QTimer *timerOnionIcon = new QTimer(labelOnionIcon); + connect(timerOnionIcon, SIGNAL(timeout()), this, SLOT(updateOnionIcon())); + //QTimer::singleShot(1000, this, SLOT(updateOnionIcon())); + timerOnionIcon->start(1000); + updateOnionIcon(); + // Progress bar and label for blocks download progressBarLabel = new QLabel(); progressBarLabel->setVisible(true); @@ -820,6 +830,7 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel, interfaces::BlockAndH rpcConsole->setClientModel(_clientModel, tip_info->block_height, tip_info->block_time, tip_info->block_hash, tip_info->verification_progress); updateProxyIcon(); + updateOnionIcon(); #ifdef ENABLE_WALLET if(walletFrame) @@ -1211,6 +1222,7 @@ void BitcoinGUI::updateNetworkState() case 6: case 7: icon = "connect_3"; break; default: icon = "connect_4"; color = GUIUtil::ThemedColor::GREEN; break; } + updateOnionIcon(); labelBlocksIcon->setVisible(count > 0); updateProgressBarVisibility(); @@ -1257,6 +1269,33 @@ void BitcoinGUI::updateNetworkState() } } +void BitcoinGUI::updateOnionIcon() +{ + // fTorEnabled is an extern defined in netaddress.h + bool onion_enabled = fTorEnabled; + + std::string ipAddress; + + LOCK(cs_mapLocalHost); + for (const std::pair &item : mapLocalHost) + { + ipAddress = item.first.ToString(); + } + QString ipAddress_q = QString::fromStdString(ipAddress); + if (ipAddress.empty() || ipAddress.substr(ipAddress.length() - 6, 6).compare(".onion") != 0) + { + onion_enabled = false; + } + if (!onion_enabled) { + labelOnionIcon->setPixmap(GUIUtil::getIcon("tor2", GUIUtil::ThemedColor::RED).pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); + labelOnionIcon->setToolTip(tr("Tor is disabled")); + } else { + labelOnionIcon->setPixmap(GUIUtil::getIcon("tor", GUIUtil::ThemedColor::GREEN).pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); + labelOnionIcon->setToolTip(tr("Tor is enabled: %1").arg(ipAddress_q)); + } + labelOnionIcon->show(); +} + void BitcoinGUI::setNumConnections(int count) { updateNetworkState(); @@ -1265,6 +1304,7 @@ void BitcoinGUI::setNumConnections(int count) void BitcoinGUI::setNetworkActive(bool networkActive) { updateNetworkState(); + updateOnionIcon(); } void BitcoinGUI::updateHeadersSyncProgressLabel() diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index f50f78a77c805..972993db8892a 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -123,6 +123,7 @@ class BitcoinGUI : public QMainWindow GUIUtil::ClickableLabel* labelConnectionsIcon = nullptr; GUIUtil::ClickableLabel* labelProxyIcon = nullptr; GUIUtil::ClickableLabel* labelBlocksIcon = nullptr; + QLabel* labelOnionIcon = nullptr; QLabel* progressBarLabel = nullptr; GUIUtil::ClickableProgressBar* progressBar = nullptr; QProgressDialog* progressDialog = nullptr; @@ -380,6 +381,7 @@ public Q_SLOTS: /** When hideTrayIcon setting is changed in OptionsModel hide or show the icon accordingly. */ void setTrayIconVisible(bool); + void updateOnionIcon(); void showModalOverlay(); void updateCoinJoinVisibility(); diff --git a/src/qt/res/icons/tor.png b/src/qt/res/icons/tor.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec9f869f7b50bc53f17aab5bd0ad5e04a8a7962 GIT binary patch literal 16371 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 Wx*WriQ|13#zMa)-%M$Y~yZ#sTB30x7 literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/tor2.png b/src/qt/res/icons/tor2.png new file mode 100644 index 0000000000000000000000000000000000000000..eb99b332e630b39dfa4be14d63b135e5bfd50a21 GIT binary patch literal 16371 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/icons/transaction5.png res/icons/transaction_abandoned.png res/icons/transaction_locked.png + res/icons/tor.png + res/icons/tor2.png res/icons/eye.png res/icons/eye_minus.png res/icons/eye_plus.png