aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2018-08-20 13:11:56 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2018-08-20 13:40:11 +0200
commit2a583406c00761c0ac1d162531256b401d5b16c3 (patch)
tree4ba9d362ddc754f1f32ca06dcdcd9edf38290159
parentdf660aa7717a6f4784e90535a13a95d82244565a (diff)
parent6d5fcad576962e5950641f7e7b113a6ac6f397e5 (diff)
downloadbitcoin-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
-rw-r--r--src/qt/bitcoingui.cpp32
-rw-r--r--src/qt/bitcoingui.h16
-rw-r--r--src/qt/optionsdialog.cpp10
-rw-r--r--src/qt/optionsdialog.h6
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) */