Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[gui] Make proxy icon from statusbar clickable #13248

Merged
merged 1 commit into from Aug 20, 2018
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file or symbol
Failed to load files and symbols.

Always

Just for now

@@ -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)
@@ -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 @@ class BitcoinGUI : public QMainWindow
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 @@ class BitcoinGUI : public QMainWindow

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();
};

@@ -170,6 +170,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;

This comment has been minimized.

Copy link
@promag

promag Jul 24, 2018

Member

Suggestion:

if (tab == OptionsDialog::Tab::TAB_NETWORK) {
    ui->tabWidget->setCurrentWidget(ui->tabNetwork);
} else {
    ui->tabWidget->setCurrentWidget(ui->tabMain);
}
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 */
@@ -40,8 +40,14 @@ class OptionsDialog : public QDialog
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) */
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.