Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 1 addition & 21 deletions src/qt/bitcoingui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1154,10 +1154,10 @@ void BitcoinGUI::updatePrivateSendVisibility()
if (appToolBar != nullptr) {
appToolBar->actions()[2]->setVisible(fEnabled);
privateSendCoinsButton->setVisible(fEnabled);
GUIUtil::updateButtonGroupShortcuts(tabGroup);
}
privateSendCoinsMenuAction->setVisible(fEnabled);
showPrivateSendHelpAction->setVisible(fEnabled);
updateToolBarShortcuts();
updateWidth();
}

Expand Down Expand Up @@ -1186,26 +1186,6 @@ void BitcoinGUI::updateWidth()
resize(nWidth, height());
}

void BitcoinGUI::updateToolBarShortcuts()
{
if (walletFrame == nullptr) {
return;
}
#ifdef Q_OS_MAC
auto modifier = Qt::CTRL;
#else
auto modifier = Qt::ALT;
#endif
int nKey = 0;
for (auto button : tabGroup->buttons()) {
if (button->isVisible()) {
button->setShortcut(QKeySequence(modifier + Qt::Key_1 + nKey++));
} else {
button->setShortcut(QKeySequence());
}
}
}

void BitcoinGUI::setNumBlocks(int count, const QDateTime& blockDate, const QString& blockHash, double nVerificationProgress, bool header)
{
#ifdef Q_OS_MAC
Expand Down
3 changes: 1 addition & 2 deletions src/qt/bitcoingui.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class Node;

QT_BEGIN_NAMESPACE
class QAction;
class QButtonGroup;
class QComboBox;
class QProgressBar;
class QProgressDialog;
Expand Down Expand Up @@ -208,8 +209,6 @@ class BitcoinGUI : public QMainWindow

void updateProgressBarVisibility();

void updateToolBarShortcuts();

Q_SIGNALS:
/** Signal raised when a URI was entered or dragged to the GUI */
void receivedURI(const QString &uri);
Expand Down
21 changes: 21 additions & 0 deletions src/qt/guiutil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
#include <QAbstractButton>
#include <QAbstractItemView>
#include <QApplication>
#include <QButtonGroup>
#include <QClipboard>
#include <QDateTime>
#include <QDebug>
Expand Down Expand Up @@ -1790,6 +1791,26 @@ void updateMacFocusRects()
#endif
}

void updateButtonGroupShortcuts(QButtonGroup* buttonGroup)
{
if (buttonGroup == nullptr) {
return;
}
#ifdef Q_OS_MAC
auto modifier = Qt::CTRL;
#else
auto modifier = Qt::ALT;
#endif
int nKey = 0;
for (auto button : buttonGroup->buttons()) {
if (button->isVisible()) {
button->setShortcut(QKeySequence(modifier + Qt::Key_1 + nKey++));
} else {
button->setShortcut(QKeySequence());
}
}
}

void setClipboard(const QString& str)
{
QApplication::clipboard()->setText(str, QClipboard::Clipboard);
Expand Down
4 changes: 4 additions & 0 deletions src/qt/guiutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class Node;
QT_BEGIN_NAMESPACE
class QAbstractButton;
class QAbstractItemView;
class QButtonGroup;
class QDateTime;
class QFont;
class QLineEdit;
Expand Down Expand Up @@ -375,6 +376,9 @@ namespace GUIUtil
/** Enable/Disable the macOS focus rects depending on the current theme. */
void updateMacFocusRects();

/** Update shortcuts for individual buttons in QButtonGroup based on their visibility. */
void updateButtonGroupShortcuts(QButtonGroup* buttonGroup);

/* Convert QString to OS specific boost path through UTF-8 */
fs::path qstringToBoostPath(const QString &path);

Expand Down
28 changes: 17 additions & 11 deletions src/qt/optionsdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <netbase.h>
#include <txdb.h> // for -dbcache defaults

#include <QButtonGroup>
#include <QDataWidgetMapper>
#include <QDir>
#include <QIntValidator>
Expand All @@ -33,7 +34,8 @@ OptionsDialog::OptionsDialog(QWidget *parent, bool enableWallet) :
QDialog(parent),
ui(new Ui::OptionsDialog),
model(0),
mapper(0)
mapper(0),
pageButtons(0)
{
ui->setupUi(this);

Expand Down Expand Up @@ -77,22 +79,23 @@ OptionsDialog::OptionsDialog(QWidget *parent, bool enableWallet) :
connect(ui->connectSocksTor, SIGNAL(toggled(bool)), ui->proxyPortTor, SLOT(setEnabled(bool)));
connect(ui->connectSocksTor, SIGNAL(toggled(bool)), this, SLOT(updateProxyValidationState()));

pageButtons.addButton(ui->btnMain, pageButtons.buttons().size());
pageButtons = new QButtonGroup(this);
pageButtons->addButton(ui->btnMain, pageButtons->buttons().size());
/* Remove Wallet/PrivateSend tabs in case of -disablewallet */
if (!enableWallet) {
ui->stackedWidgetOptions->removeWidget(ui->pageWallet);
ui->btnWallet->hide();
ui->stackedWidgetOptions->removeWidget(ui->pagePrivateSend);
ui->btnPrivateSend->hide();
} else {
pageButtons.addButton(ui->btnWallet, pageButtons.buttons().size());
pageButtons.addButton(ui->btnPrivateSend, pageButtons.buttons().size());
pageButtons->addButton(ui->btnWallet, pageButtons->buttons().size());
pageButtons->addButton(ui->btnPrivateSend, pageButtons->buttons().size());
}
pageButtons.addButton(ui->btnNetwork, pageButtons.buttons().size());
pageButtons.addButton(ui->btnDisplay, pageButtons.buttons().size());
pageButtons.addButton(ui->btnAppearance, pageButtons.buttons().size());
pageButtons->addButton(ui->btnNetwork, pageButtons->buttons().size());
pageButtons->addButton(ui->btnDisplay, pageButtons->buttons().size());
pageButtons->addButton(ui->btnAppearance, pageButtons->buttons().size());

connect(&pageButtons, SIGNAL(buttonClicked(int)), this, SLOT(showPage(int)));
connect(pageButtons, SIGNAL(buttonClicked(int)), this, SLOT(showPage(int)));

showPage(0);

Expand Down Expand Up @@ -164,6 +167,7 @@ OptionsDialog::OptionsDialog(QWidget *parent, bool enableWallet) :

OptionsDialog::~OptionsDialog()
{
delete pageButtons;
delete ui;
}

Expand Down Expand Up @@ -294,8 +298,8 @@ void OptionsDialog::setMapper()
void OptionsDialog::showPage(int index)
{
std::vector<QWidget*> vecNormal;
QAbstractButton* btnActive = pageButtons.button(index);
for (QAbstractButton* button : pageButtons.buttons()) {
QAbstractButton* btnActive = pageButtons->button(index);
for (QAbstractButton* button : pageButtons->buttons()) {
if (button != btnActive) {
vecNormal.push_back(button);
}
Expand Down Expand Up @@ -437,13 +441,14 @@ void OptionsDialog::updatePrivateSendVisibility()
bool fEnabled = false;
#endif
ui->btnPrivateSend->setVisible(fEnabled);
GUIUtil::updateButtonGroupShortcuts(pageButtons);
}

void OptionsDialog::updateWidth()
{
int nWidthWidestButton{0};
int nButtonsVisible{0};
for (QAbstractButton* button : pageButtons.buttons()) {
for (QAbstractButton* button : pageButtons->buttons()) {
if (!button->isVisible()) {
continue;
}
Expand All @@ -461,6 +466,7 @@ void OptionsDialog::showEvent(QShowEvent* event)
{
if (!event->spontaneous()) {
updateWidth();
GUIUtil::updateButtonGroupShortcuts(pageButtons);
}
QDialog::showEvent(event);
}
Expand Down
4 changes: 2 additions & 2 deletions src/qt/optionsdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#ifndef BITCOIN_QT_OPTIONSDIALOG_H
#define BITCOIN_QT_OPTIONSDIALOG_H

#include <QButtonGroup>
#include <QDialog>
#include <QValidator>

Expand All @@ -14,6 +13,7 @@ class OptionsModel;
class QValidatedLineEdit;

QT_BEGIN_NAMESPACE
class QButtonGroup;
class QDataWidgetMapper;
QT_END_NAMESPACE

Expand Down Expand Up @@ -74,7 +74,7 @@ private Q_SLOTS:
Ui::OptionsDialog *ui;
OptionsModel *model;
QDataWidgetMapper *mapper;
QButtonGroup pageButtons;
QButtonGroup* pageButtons;
QString previousTheme;
AppearanceWidget* appearance;
bool fPrivateSendEnabledPrev{false};
Expand Down
24 changes: 15 additions & 9 deletions src/qt/rpcconsole.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <db_cxx.h>
#endif

#include <QButtonGroup>
#include <QDir>
#include <QDesktopWidget>
#include <QKeyEvent>
Expand Down Expand Up @@ -453,7 +454,8 @@ RPCConsole::RPCConsole(interfaces::Node& node, QWidget* parent, Qt::WindowFlags
historyPtr(0),
peersTableContextMenu(0),
banTableContextMenu(0),
consoleFontSize(0)
consoleFontSize(0),
pageButtons(0)
{
ui->setupUi(this);

Expand Down Expand Up @@ -525,12 +527,13 @@ RPCConsole::RPCConsole(interfaces::Node& node, QWidget* parent, Qt::WindowFlags

consoleFontSize = settings.value(fontSizeSettingsKey, QFontInfo(GUIUtil::getFontNormal()).pointSize()).toInt();

pageButtons.addButton(ui->btnInfo, pageButtons.buttons().size());
pageButtons.addButton(ui->btnConsole, pageButtons.buttons().size());
pageButtons.addButton(ui->btnNetTraffic, pageButtons.buttons().size());
pageButtons.addButton(ui->btnPeers, pageButtons.buttons().size());
pageButtons.addButton(ui->btnRepair, pageButtons.buttons().size());
connect(&pageButtons, SIGNAL(buttonClicked(int)), this, SLOT(showPage(int)));
pageButtons = new QButtonGroup(this);
pageButtons->addButton(ui->btnInfo, pageButtons->buttons().size());
pageButtons->addButton(ui->btnConsole, pageButtons->buttons().size());
pageButtons->addButton(ui->btnNetTraffic, pageButtons->buttons().size());
pageButtons->addButton(ui->btnPeers, pageButtons->buttons().size());
pageButtons->addButton(ui->btnRepair, pageButtons->buttons().size());
connect(pageButtons, SIGNAL(buttonClicked(int)), this, SLOT(showPage(int)));

showPage(TAB_INFO);

Expand All @@ -543,6 +546,7 @@ RPCConsole::~RPCConsole()
settings.setValue("RPCConsoleWindowGeometry", saveGeometry());
m_node.rpcUnsetTimerInterface(rpcTimerInterface);
delete rpcTimerInterface;
delete pageButtons;
delete ui;
}

Expand Down Expand Up @@ -978,8 +982,8 @@ void RPCConsole::setInstantSendLockCount(size_t count)
void RPCConsole::showPage(int index)
{
std::vector<QWidget*> vecNormal;
QAbstractButton* btnActive = pageButtons.button(index);
for (QAbstractButton* button : pageButtons.buttons()) {
QAbstractButton* btnActive = pageButtons->button(index);
for (QAbstractButton* button : pageButtons->buttons()) {
if (button != btnActive) {
vecNormal.push_back(button);
}
Expand Down Expand Up @@ -1267,6 +1271,8 @@ void RPCConsole::showEvent(QShowEvent *event)
{
QWidget::showEvent(event);

GUIUtil::updateButtonGroupShortcuts(pageButtons);

if (!clientModel || !clientModel->getPeerTableModel())
return;

Expand Down
4 changes: 2 additions & 2 deletions src/qt/rpcconsole.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@

#include <net.h>

#include <QButtonGroup>
#include <QWidget>
#include <QCompleter>
#include <QThread>
Expand All @@ -29,6 +28,7 @@ namespace Ui {
}

QT_BEGIN_NAMESPACE
class QButtonGroup;
class QMenu;
class QItemSelection;
QT_END_NAMESPACE
Expand Down Expand Up @@ -168,7 +168,7 @@ public Q_SLOTS:

interfaces::Node& m_node;
Ui::RPCConsole *ui;
QButtonGroup pageButtons;
QButtonGroup* pageButtons;
ClientModel *clientModel;
QStringList history;
int historyPtr;
Expand Down
24 changes: 18 additions & 6 deletions src/qt/signverifymessagedialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,21 @@
#include <string>
#include <vector>

#include <QButtonGroup>
#include <QClipboard>

SignVerifyMessageDialog::SignVerifyMessageDialog(QWidget* parent) :
QDialog(parent),
ui(new Ui::SignVerifyMessageDialog),
model(0)
model(0),
pageButtons(0)
{
ui->setupUi(this);

pageButtons.addButton(ui->btnSignMessage, pageButtons.buttons().size());
pageButtons.addButton(ui->btnVerifyMessage, pageButtons.buttons().size());
connect(&pageButtons, SIGNAL(buttonClicked(int)), this, SLOT(showPage(int)));
pageButtons = new QButtonGroup(this);
pageButtons->addButton(ui->btnSignMessage, pageButtons->buttons().size());
pageButtons->addButton(ui->btnVerifyMessage, pageButtons->buttons().size());
connect(pageButtons, SIGNAL(buttonClicked(int)), this, SLOT(showPage(int)));

ui->messageIn_SM->setPlaceholderText(tr("Enter a message to be signed"));
ui->signatureOut_SM->setPlaceholderText(tr("Click \"Sign Message\" to generate signature"));
Expand Down Expand Up @@ -64,6 +67,7 @@ SignVerifyMessageDialog::SignVerifyMessageDialog(QWidget* parent) :

SignVerifyMessageDialog::~SignVerifyMessageDialog()
{
delete pageButtons;
delete ui;
}

Expand Down Expand Up @@ -101,8 +105,8 @@ void SignVerifyMessageDialog::showTab_VM(bool fShow)
void SignVerifyMessageDialog::showPage(int index)
{
std::vector<QWidget*> vecNormal;
QAbstractButton* btnActive = pageButtons.button(index);
for (QAbstractButton* button : pageButtons.buttons()) {
QAbstractButton* btnActive = pageButtons->button(index);
for (QAbstractButton* button : pageButtons->buttons()) {
if (button != btnActive) {
vecNormal.push_back(button);
}
Expand Down Expand Up @@ -298,3 +302,11 @@ bool SignVerifyMessageDialog::eventFilter(QObject *object, QEvent *event)
}
return QDialog::eventFilter(object, event);
}

void SignVerifyMessageDialog::showEvent(QShowEvent* event)
{
if (!event->spontaneous()) {
GUIUtil::updateButtonGroupShortcuts(pageButtons);
}
QDialog::showEvent(event);
}
Loading