refactor: use QPushButtons and fake toolbutton style without using a style sheet

This commit is contained in:
sithlord48
2025-10-19 19:42:22 -04:00
committed by Chris Rizzitello
parent 697cd57adb
commit 6b05c2abc0
5 changed files with 26 additions and 33 deletions

View File

@ -48,7 +48,6 @@
#include <QRegularExpressionValidator>
#include <QScreen>
#include <QScrollBar>
#include <QToolButton>
#include <memory>
@ -74,7 +73,7 @@ MainWindow::MainWindow()
m_logDock{new LogDock(this)},
m_lblSecurityStatus{new QLabel(this)},
m_lblStatus{new QLabel(this)},
m_btnFingerprint{new QToolButton(this)},
m_btnFingerprint{new QPushButton(this)},
m_btnUpdate{new QPushButton(this)},
m_actionAbout{new QAction(this)},
m_actionClearSettings{new QAction(tr("Clear settings"), this)},
@ -236,30 +235,31 @@ void MainWindow::setupControls()
ui->btnSaveServerConfig->setIconSize(QSize(22, 22));
#endif
const auto trayItemSize = QSize(24, 24);
m_btnFingerprint->setStyleSheet(kStyleFlatButtonHoverable);
static const auto btnHeight = ui->statusBar->height() - 2;
static const auto btnSize = QSize(btnHeight, btnHeight);
static const auto iconSize = QSize(fontMetrics().height() + 2, fontMetrics().height() + 2);
m_btnFingerprint->setFlat(true);
m_btnFingerprint->setIcon(QIcon::fromTheme(QStringLiteral("fingerprint")));
m_btnFingerprint->setFixedSize(trayItemSize);
m_btnFingerprint->setIconSize(trayItemSize);
m_btnFingerprint->setAutoRaise(true);
m_btnFingerprint->setFixedSize(btnSize);
m_btnFingerprint->setIconSize(iconSize);
m_btnFingerprint->setToolTip(tr("View local fingerprint"));
ui->statusBar->insertPermanentWidget(0, m_btnFingerprint);
m_lblSecurityStatus->setVisible(false);
m_lblSecurityStatus->setFixedSize(trayItemSize);
m_lblSecurityStatus->setFixedSize(iconSize);
m_lblSecurityStatus->setScaledContents(true);
ui->statusBar->insertPermanentWidget(1, m_lblSecurityStatus);
ui->statusBar->insertPermanentWidget(2, m_lblStatus, 1);
m_btnUpdate->setVisible(false);
m_btnUpdate->setStyleSheet(kStyleFlatButtonHoverable);
m_btnUpdate->setFlat(true);
m_btnUpdate->setText(tr("Update available"));
m_btnUpdate->setLayoutDirection(Qt::RightToLeft);
m_btnUpdate->setIcon(QIcon::fromTheme(QStringLiteral("software-updates-release")));
m_btnUpdate->setFixedHeight(24);
m_btnUpdate->setIconSize(trayItemSize);
m_btnUpdate->setFixedHeight(btnHeight);
m_btnUpdate->setIconSize(iconSize);
ui->statusBar->insertPermanentWidget(3, m_btnUpdate);
}
@ -322,7 +322,7 @@ void MainWindow::connectSlots()
connect(ui->btnSaveServerConfig, &QPushButton::clicked, this, &MainWindow::saveServerConfig);
connect(ui->btnConfigureServer, &QPushButton::clicked, this, [this] { showConfigureServer(""); });
connect(ui->lblComputerName, &QLabel::linkActivated, this, &MainWindow::openSettings);
connect(m_btnFingerprint, &QToolButton::clicked, this, &MainWindow::showMyFingerprint);
connect(m_btnFingerprint, &QPushButton::clicked, this, &MainWindow::showMyFingerprint);
connect(ui->rbModeServer, &QRadioButton::toggled, this, &MainWindow::coreModeToggled);
connect(ui->rbModeClient, &QRadioButton::toggled, this, &MainWindow::coreModeToggled);

View File

@ -38,7 +38,6 @@ class QPushButton;
class QTextEdit;
class QComboBox;
class QTabWidget;
class QToolButton;
class QCheckBox;
class QRadioButton;
class QMessageBox;
@ -187,7 +186,7 @@ private:
LogDock *m_logDock;
QLabel *m_lblSecurityStatus = nullptr;
QLabel *m_lblStatus = nullptr;
QToolButton *m_btnFingerprint = nullptr;
QPushButton *m_btnFingerprint = nullptr;
QPushButton *m_btnUpdate = nullptr;
// Window Actions

View File

@ -34,13 +34,4 @@ const auto kStyleErrorInactiveLabel = //
"background-color: none"
);
const auto kStyleFlatButton = QStringLiteral("QAbstractButton{background-color: none; border: none;}");
const auto kStyleFlatButtonHoverable = QStringLiteral(
"%1\n"
"QAbstractButton:hover{border: 1px solid palette(highlight);"
" border-radius: 6px}"
)
.arg(kStyleFlatButton);
} // namespace deskflow::gui

View File

@ -11,30 +11,33 @@
#include <QEvent>
#include <QHBoxLayout>
#include <QLabel>
#include <QToolButton>
#include <QPushButton>
#include <QVBoxLayout>
LogDock::LogDock(QWidget *parent)
: QDockWidget(tr("Log"), parent),
m_textLog{new LogWidget(this)},
m_btnClose{new QToolButton(this)},
m_btnFloat{new QToolButton(this)},
m_btnClose{new QPushButton(this)},
m_btnFloat{new QPushButton(this)},
m_lblTitle{new QLabel(tr("Log"), this)}
{
const auto iconSize = QSize(fontMetrics().height() - 2, fontMetrics().height() - 2);
const auto maxBtnSize = QSize(fontMetrics().height() + 2, fontMetrics().height() + 2);
m_btnFloat->setStyleSheet(deskflow::gui::kStyleFlatButtonHoverable);
m_btnFloat->setFixedSize(maxBtnSize);
m_btnFloat->setCheckable(true);
m_btnFloat->setFlat(true);
m_btnFloat->setIcon(QIcon::fromTheme(QStringLiteral("window-minimize-pip")));
m_btnFloat->setIconSize(iconSize);
m_btnFloat->setToolTip(tr("Detach from window"));
connect(m_btnFloat, &QToolButton::toggled, this, &LogDock::setFloating);
connect(m_btnFloat, &QPushButton::toggled, this, &LogDock::setFloating);
m_btnClose->setStyleSheet(deskflow::gui::kStyleFlatButtonHoverable);
m_btnClose->setFixedSize(maxBtnSize);
m_btnClose->setFlat(true);
m_btnClose->setIcon(QIcon::fromTheme(QStringLiteral("view-close")));
m_btnClose->setIconSize(iconSize);
m_btnClose->setToolTip(tr("Close Log"));
connect(m_btnClose, &QToolButton::clicked, this, &QDockWidget::hide);
connect(m_btnClose, &QPushButton::clicked, this, &QDockWidget::hide);
auto titleWidget = new QWidget(this);
titleWidget->installEventFilter(this);

View File

@ -10,7 +10,7 @@
class LogWidget;
class QLabel;
class QToolButton;
class QPushButton;
class LogDock : public QDockWidget
{
@ -25,7 +25,7 @@ protected:
private:
LogWidget *m_textLog = nullptr;
QToolButton *m_btnClose = nullptr;
QToolButton *m_btnFloat = nullptr;
QPushButton *m_btnClose = nullptr;
QPushButton *m_btnFloat = nullptr;
QLabel *m_lblTitle = nullptr;
};