diff options
author | Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> | 2021-05-01 22:50:56 +0300 |
---|---|---|
committer | Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> | 2021-05-08 09:51:07 +0300 |
commit | d29ea72393ac1d9b32a6976062e9c9fb75876295 (patch) | |
tree | 4e0d4afd098cde7f00a2e39da93add396cfba8fe | |
parent | d22e7ee93313b13365bd14a5fffeb055cff4dcd2 (diff) | |
download | bitcoin-d29ea72393ac1d9b32a6976062e9c9fb75876295.tar.xz |
gui: Add access to the Peers tab from the network icon
-rw-r--r-- | src/qt/bitcoingui.cpp | 36 | ||||
-rw-r--r-- | src/qt/bitcoingui.h | 6 |
2 files changed, 32 insertions, 10 deletions
diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 3e29d8e132..45807a2098 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -43,6 +43,7 @@ #include <QAction> #include <QApplication> #include <QComboBox> +#include <QCursor> #include <QDateTime> #include <QDragEnterEvent> #include <QListWidget> @@ -199,9 +200,6 @@ BitcoinGUI::BitcoinGUI(interfaces::Node& node, const PlatformStyle *_platformSty // Subscribe to notifications from core subscribeToCoreSignals(); - connect(connectionsControl, &GUIUtil::ClickableLabel::clicked, [this] { - m_node.setNetworkActive(!m_node.getNetworkActive()); - }); connect(labelProxyIcon, &GUIUtil::ClickableLabel::clicked, [this] { openOptionsDialogWithTab(OptionsDialog::TAB_NETWORK); }); @@ -586,7 +584,10 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel, interfaces::BlockAndH createTrayIconMenu(); // Keep up to date with client - updateNetworkState(); + setNetworkActive(m_node.getNetworkActive()); + connect(connectionsControl, &GUIUtil::ClickableLabel::clicked, [this] { + GUIUtil::PopupMenu(m_network_context_menu, QCursor::pos()); + }); connect(_clientModel, &ClientModel::numConnectionsChanged, this, &BitcoinGUI::setNumConnections); connect(_clientModel, &ClientModel::networkActiveChanged, this, &BitcoinGUI::setNetworkActive); @@ -915,14 +916,18 @@ void BitcoinGUI::updateNetworkState() QString tooltip; if (m_node.getNetworkActive()) { - tooltip = tr("%n active connection(s) to Bitcoin network", "", count) + QString(".<br>") + tr("Click to disable network activity."); + //: A substring of the tooltip. + tooltip = tr("%n active connection(s) to Bitcoin network.", "", count); } else { - tooltip = tr("Network activity disabled.") + QString("<br>") + tr("Click to enable network activity again."); + //: A substring of the tooltip. + tooltip = tr("Network activity disabled."); icon = ":/icons/network_disabled"; } // Don't word-wrap this (fixed-width) tooltip - tooltip = QString("<nobr>") + tooltip + QString("</nobr>"); + tooltip = QLatin1String("<nobr>") + tooltip + QLatin1String("<br>") + + //: A substring of the tooltip. "More actions" are available via the context menu. + tr("Click for more actions.") + QLatin1String("</nobr>"); connectionsControl->setToolTip(tooltip); connectionsControl->setPixmap(platformStyle->SingleColorIcon(icon).pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); @@ -933,9 +938,24 @@ void BitcoinGUI::setNumConnections(int count) updateNetworkState(); } -void BitcoinGUI::setNetworkActive(bool networkActive) +void BitcoinGUI::setNetworkActive(bool network_active) { updateNetworkState(); + m_network_context_menu->clear(); + m_network_context_menu->addAction( + //: A context menu item. The "Peers tab" is an element of the "Node window". + tr("Show Peers tab"), + [this] { + rpcConsole->setTabFocus(RPCConsole::TabTypes::PEERS); + showDebugWindow(); + }); + m_network_context_menu->addAction( + network_active ? + //: A context menu item. + tr("Disable network activity") : + //: A context menu item. The network activity was disabled previously. + tr("Enable network activity"), + [this, new_state = !network_active] { m_node.setNetworkActive(new_state); }); } void BitcoinGUI::updateHeadersSyncProgressLabel() diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 147f19e68d..332f6dc65c 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -16,6 +16,7 @@ #include <QLabel> #include <QMainWindow> #include <QMap> +#include <QMenu> #include <QPoint> #include <QSystemTrayIcon> @@ -50,7 +51,6 @@ QT_BEGIN_NAMESPACE class QAction; class QComboBox; class QDateTime; -class QMenu; class QProgressBar; class QProgressDialog; QT_END_NAMESPACE @@ -174,6 +174,8 @@ private: HelpMessageDialog* helpMessageDialog = nullptr; ModalOverlay* modalOverlay = nullptr; + QMenu* m_network_context_menu = new QMenu(this); + #ifdef Q_OS_MAC CAppNapInhibitor* m_app_nap_inhibitor = nullptr; #endif @@ -221,7 +223,7 @@ public Q_SLOTS: /** Set number of connections shown in the UI */ void setNumConnections(int count); /** Set network state shown in the UI */ - void setNetworkActive(bool networkActive); + void setNetworkActive(bool network_active); /** Set number of blocks and last block date shown in the UI */ void setNumBlocks(int count, const QDateTime& blockDate, double nVerificationProgress, bool headers, SynchronizationState sync_state); |