diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2018-08-20 13:11:56 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2018-08-20 13:40:11 +0200 |
commit | 2a583406c00761c0ac1d162531256b401d5b16c3 (patch) | |
tree | 4ba9d362ddc754f1f32ca06dcdcd9edf38290159 /src/qt | |
parent | df660aa7717a6f4784e90535a13a95d82244565a (diff) | |
parent | 6d5fcad576962e5950641f7e7b113a6ac6f397e5 (diff) | |
download | bitcoin-2a583406c00761c0ac1d162531256b401d5b16c3.tar.xz |
Merge #13248: [gui] Make proxy icon from statusbar clickable
6d5fcad576962e5950641f7e7b113a6ac6f397e5 [gui] Make proxy icon from statusbar clickable (Cristian Mircea Messel)
Pull request description:
Clicking on the proxy icon will open settings showing the network tab
https://github.com/bitcoin/bitcoin/pull/11491#issuecomment-336685303
Tree-SHA512: c3549749296918818694a371326d1a3b1075478918aaee940b5c7119a7e2cb991dcfda78f20d44d6d001157b9b82951f0d5157b17f4f0d1a0a242795efade036
Diffstat (limited to 'src/qt')
-rw-r--r-- | src/qt/bitcoingui.cpp | 32 | ||||
-rw-r--r-- | src/qt/bitcoingui.h | 16 | ||||
-rw-r--r-- | src/qt/optionsdialog.cpp | 10 | ||||
-rw-r--r-- | src/qt/optionsdialog.h | 6 |
4 files changed, 46 insertions, 18 deletions
diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index e2488092e2..ff0641dcf5 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -146,7 +146,7 @@ BitcoinGUI::BitcoinGUI(interfaces::Node& node, const PlatformStyle *_platformSty unitDisplayControl = new UnitDisplayStatusBarControl(platformStyle); labelWalletEncryptionIcon = new QLabel(); labelWalletHDStatusIcon = new QLabel(); - labelProxyIcon = new QLabel(); + labelProxyIcon = new GUIUtil::ClickableLabel(); connectionsControl = new GUIUtil::ClickableLabel(); labelBlocksIcon = new GUIUtil::ClickableLabel(); if(enableWallet) @@ -193,7 +193,12 @@ BitcoinGUI::BitcoinGUI(interfaces::Node& node, const PlatformStyle *_platformSty // Subscribe to notifications from core subscribeToCoreSignals(); - connect(connectionsControl, SIGNAL(clicked(QPoint)), this, SLOT(toggleNetworkActive())); + connect(connectionsControl, &GUIUtil::ClickableLabel::clicked, [this] { + m_node.setNetworkActive(!m_node.getNetworkActive()); + }); + connect(labelProxyIcon, &GUIUtil::ClickableLabel::clicked, [this] { + openOptionsDialogWithTab(OptionsDialog::TAB_NETWORK); + }); modalOverlay = new ModalOverlay(this->centralWidget()); #ifdef ENABLE_WALLET @@ -635,12 +640,7 @@ void BitcoinGUI::trayIconActivated(QSystemTrayIcon::ActivationReason reason) void BitcoinGUI::optionsClicked() { - if(!clientModel || !clientModel->getOptionsModel()) - return; - - OptionsDialog dlg(this, enableWallet); - dlg.setModel(clientModel->getOptionsModel()); - dlg.exec(); + openOptionsDialogWithTab(OptionsDialog::TAB_MAIN); } void BitcoinGUI::aboutClicked() @@ -764,6 +764,17 @@ void BitcoinGUI::updateHeadersSyncProgressLabel() progressBarLabel->setText(tr("Syncing Headers (%1%)...").arg(QString::number(100.0 / (headersTipHeight+estHeadersLeft)*headersTipHeight, 'f', 1))); } +void BitcoinGUI::openOptionsDialogWithTab(OptionsDialog::Tab tab) +{ + if (!clientModel || !clientModel->getOptionsModel()) + return; + + OptionsDialog dlg(this, enableWallet); + dlg.setCurrentTab(tab); + dlg.setModel(clientModel->getOptionsModel()); + dlg.exec(); +} + void BitcoinGUI::setNumBlocks(int count, const QDateTime& blockDate, double nVerificationProgress, bool header) { if (modalOverlay) @@ -1231,11 +1242,6 @@ void BitcoinGUI::unsubscribeFromCoreSignals() m_handler_question->disconnect(); } -void BitcoinGUI::toggleNetworkActive() -{ - m_node.setNetworkActive(!m_node.getNetworkActive()); -} - UnitDisplayStatusBarControl::UnitDisplayStatusBarControl(const PlatformStyle *platformStyle) : optionsModel(0), menu(0) diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index c14265cc9c..3a8ef3ad8c 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -9,6 +9,8 @@ #include <config/bitcoin-config.h> #endif +#include <qt/optionsdialog.h> + #include <amount.h> #include <QLabel> @@ -45,6 +47,10 @@ class QProgressBar; class QProgressDialog; QT_END_NAMESPACE +namespace GUIUtil { +class ClickableLabel; +} + /** Bitcoin GUI main class. This class represents the main window of the Bitcoin UI. It communicates with both the client and wallet models to give the user an up-to-date view of the current core state. @@ -93,8 +99,8 @@ private: UnitDisplayStatusBarControl* unitDisplayControl = nullptr; QLabel* labelWalletEncryptionIcon = nullptr; QLabel* labelWalletHDStatusIcon = nullptr; - QLabel* labelProxyIcon = nullptr; - QLabel* connectionsControl = nullptr; + GUIUtil::ClickableLabel* labelProxyIcon = nullptr; + GUIUtil::ClickableLabel* connectionsControl = nullptr; QLabel* labelBlocksIcon = nullptr; QLabel* progressBarLabel = nullptr; QProgressBar* progressBar = nullptr; @@ -166,6 +172,9 @@ private: void updateHeadersSyncProgressLabel(); + /** Open the OptionsDialog on the specified tab index */ + void openOptionsDialogWithTab(OptionsDialog::Tab tab); + Q_SIGNALS: /** Signal raised when a URI was entered or dragged to the GUI */ void receivedURI(const QString &uri); @@ -266,9 +275,6 @@ private Q_SLOTS: /** When hideTrayIcon setting is changed in OptionsModel hide or show the icon accordingly. */ void setTrayIconVisible(bool); - /** Toggle networking */ - void toggleNetworkActive(); - void showModalOverlay(); }; diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index fd3b13276c..d1477d362d 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -174,6 +174,16 @@ void OptionsDialog::setModel(OptionsModel *_model) connect(ui->thirdPartyTxUrls, SIGNAL(textChanged(const QString &)), this, SLOT(showRestartWarning())); } +void OptionsDialog::setCurrentTab(OptionsDialog::Tab tab) +{ + QWidget *tab_widget = nullptr; + if (tab == OptionsDialog::Tab::TAB_NETWORK) tab_widget = ui->tabNetwork; + if (tab == OptionsDialog::Tab::TAB_MAIN) tab_widget = ui->tabMain; + if (tab_widget && ui->tabWidget->currentWidget() != tab_widget) { + ui->tabWidget->setCurrentWidget(tab_widget); + } +} + void OptionsDialog::setMapper() { /* Main */ diff --git a/src/qt/optionsdialog.h b/src/qt/optionsdialog.h index 63f758c52b..9bc1c8ae4f 100644 --- a/src/qt/optionsdialog.h +++ b/src/qt/optionsdialog.h @@ -40,8 +40,14 @@ public: explicit OptionsDialog(QWidget *parent, bool enableWallet); ~OptionsDialog(); + enum Tab { + TAB_MAIN, + TAB_NETWORK, + }; + void setModel(OptionsModel *model); void setMapper(); + void setCurrentTab(OptionsDialog::Tab tab); private Q_SLOTS: /* set OK button state (enabled / disabled) */ |