refactor: use QPushButtons and fake toolbutton style without using a style sheet
This commit is contained in:
parent
697cd57adb
commit
6b05c2abc0
5 changed files with 26 additions and 33 deletions
|
|
@ -48,7 +48,6 @@
|
||||||
#include <QRegularExpressionValidator>
|
#include <QRegularExpressionValidator>
|
||||||
#include <QScreen>
|
#include <QScreen>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QToolButton>
|
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
|
@ -74,7 +73,7 @@ MainWindow::MainWindow()
|
||||||
m_logDock{new LogDock(this)},
|
m_logDock{new LogDock(this)},
|
||||||
m_lblSecurityStatus{new QLabel(this)},
|
m_lblSecurityStatus{new QLabel(this)},
|
||||||
m_lblStatus{new QLabel(this)},
|
m_lblStatus{new QLabel(this)},
|
||||||
m_btnFingerprint{new QToolButton(this)},
|
m_btnFingerprint{new QPushButton(this)},
|
||||||
m_btnUpdate{new QPushButton(this)},
|
m_btnUpdate{new QPushButton(this)},
|
||||||
m_actionAbout{new QAction(this)},
|
m_actionAbout{new QAction(this)},
|
||||||
m_actionClearSettings{new QAction(tr("Clear settings"), this)},
|
m_actionClearSettings{new QAction(tr("Clear settings"), this)},
|
||||||
|
|
@ -236,30 +235,31 @@ void MainWindow::setupControls()
|
||||||
ui->btnSaveServerConfig->setIconSize(QSize(22, 22));
|
ui->btnSaveServerConfig->setIconSize(QSize(22, 22));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const auto trayItemSize = QSize(24, 24);
|
static const auto btnHeight = ui->statusBar->height() - 2;
|
||||||
m_btnFingerprint->setStyleSheet(kStyleFlatButtonHoverable);
|
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->setIcon(QIcon::fromTheme(QStringLiteral("fingerprint")));
|
||||||
m_btnFingerprint->setFixedSize(trayItemSize);
|
m_btnFingerprint->setFixedSize(btnSize);
|
||||||
m_btnFingerprint->setIconSize(trayItemSize);
|
m_btnFingerprint->setIconSize(iconSize);
|
||||||
m_btnFingerprint->setAutoRaise(true);
|
|
||||||
m_btnFingerprint->setToolTip(tr("View local fingerprint"));
|
m_btnFingerprint->setToolTip(tr("View local fingerprint"));
|
||||||
ui->statusBar->insertPermanentWidget(0, m_btnFingerprint);
|
ui->statusBar->insertPermanentWidget(0, m_btnFingerprint);
|
||||||
|
|
||||||
m_lblSecurityStatus->setVisible(false);
|
m_lblSecurityStatus->setVisible(false);
|
||||||
m_lblSecurityStatus->setFixedSize(trayItemSize);
|
m_lblSecurityStatus->setFixedSize(iconSize);
|
||||||
m_lblSecurityStatus->setScaledContents(true);
|
m_lblSecurityStatus->setScaledContents(true);
|
||||||
ui->statusBar->insertPermanentWidget(1, m_lblSecurityStatus);
|
ui->statusBar->insertPermanentWidget(1, m_lblSecurityStatus);
|
||||||
|
|
||||||
ui->statusBar->insertPermanentWidget(2, m_lblStatus, 1);
|
ui->statusBar->insertPermanentWidget(2, m_lblStatus, 1);
|
||||||
|
|
||||||
m_btnUpdate->setVisible(false);
|
m_btnUpdate->setVisible(false);
|
||||||
m_btnUpdate->setStyleSheet(kStyleFlatButtonHoverable);
|
|
||||||
m_btnUpdate->setFlat(true);
|
m_btnUpdate->setFlat(true);
|
||||||
m_btnUpdate->setText(tr("Update available"));
|
m_btnUpdate->setText(tr("Update available"));
|
||||||
m_btnUpdate->setLayoutDirection(Qt::RightToLeft);
|
m_btnUpdate->setLayoutDirection(Qt::RightToLeft);
|
||||||
m_btnUpdate->setIcon(QIcon::fromTheme(QStringLiteral("software-updates-release")));
|
m_btnUpdate->setIcon(QIcon::fromTheme(QStringLiteral("software-updates-release")));
|
||||||
m_btnUpdate->setFixedHeight(24);
|
m_btnUpdate->setFixedHeight(btnHeight);
|
||||||
m_btnUpdate->setIconSize(trayItemSize);
|
m_btnUpdate->setIconSize(iconSize);
|
||||||
ui->statusBar->insertPermanentWidget(3, m_btnUpdate);
|
ui->statusBar->insertPermanentWidget(3, m_btnUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -322,7 +322,7 @@ void MainWindow::connectSlots()
|
||||||
connect(ui->btnSaveServerConfig, &QPushButton::clicked, this, &MainWindow::saveServerConfig);
|
connect(ui->btnSaveServerConfig, &QPushButton::clicked, this, &MainWindow::saveServerConfig);
|
||||||
connect(ui->btnConfigureServer, &QPushButton::clicked, this, [this] { showConfigureServer(""); });
|
connect(ui->btnConfigureServer, &QPushButton::clicked, this, [this] { showConfigureServer(""); });
|
||||||
connect(ui->lblComputerName, &QLabel::linkActivated, this, &MainWindow::openSettings);
|
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->rbModeServer, &QRadioButton::toggled, this, &MainWindow::coreModeToggled);
|
||||||
connect(ui->rbModeClient, &QRadioButton::toggled, this, &MainWindow::coreModeToggled);
|
connect(ui->rbModeClient, &QRadioButton::toggled, this, &MainWindow::coreModeToggled);
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,6 @@ class QPushButton;
|
||||||
class QTextEdit;
|
class QTextEdit;
|
||||||
class QComboBox;
|
class QComboBox;
|
||||||
class QTabWidget;
|
class QTabWidget;
|
||||||
class QToolButton;
|
|
||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
class QRadioButton;
|
class QRadioButton;
|
||||||
class QMessageBox;
|
class QMessageBox;
|
||||||
|
|
@ -187,7 +186,7 @@ private:
|
||||||
LogDock *m_logDock;
|
LogDock *m_logDock;
|
||||||
QLabel *m_lblSecurityStatus = nullptr;
|
QLabel *m_lblSecurityStatus = nullptr;
|
||||||
QLabel *m_lblStatus = nullptr;
|
QLabel *m_lblStatus = nullptr;
|
||||||
QToolButton *m_btnFingerprint = nullptr;
|
QPushButton *m_btnFingerprint = nullptr;
|
||||||
QPushButton *m_btnUpdate = nullptr;
|
QPushButton *m_btnUpdate = nullptr;
|
||||||
|
|
||||||
// Window Actions
|
// Window Actions
|
||||||
|
|
|
||||||
|
|
@ -34,13 +34,4 @@ const auto kStyleErrorInactiveLabel = //
|
||||||
"background-color: none"
|
"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
|
} // namespace deskflow::gui
|
||||||
|
|
|
||||||
|
|
@ -11,30 +11,33 @@
|
||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QToolButton>
|
#include <QPushButton>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
LogDock::LogDock(QWidget *parent)
|
LogDock::LogDock(QWidget *parent)
|
||||||
: QDockWidget(tr("Log"), parent),
|
: QDockWidget(tr("Log"), parent),
|
||||||
m_textLog{new LogWidget(this)},
|
m_textLog{new LogWidget(this)},
|
||||||
m_btnClose{new QToolButton(this)},
|
m_btnClose{new QPushButton(this)},
|
||||||
m_btnFloat{new QToolButton(this)},
|
m_btnFloat{new QPushButton(this)},
|
||||||
m_lblTitle{new QLabel(tr("Log"), this)}
|
m_lblTitle{new QLabel(tr("Log"), this)}
|
||||||
{
|
{
|
||||||
const auto iconSize = QSize(fontMetrics().height() - 2, fontMetrics().height() - 2);
|
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->setCheckable(true);
|
||||||
|
m_btnFloat->setFlat(true);
|
||||||
m_btnFloat->setIcon(QIcon::fromTheme(QStringLiteral("window-minimize-pip")));
|
m_btnFloat->setIcon(QIcon::fromTheme(QStringLiteral("window-minimize-pip")));
|
||||||
m_btnFloat->setIconSize(iconSize);
|
m_btnFloat->setIconSize(iconSize);
|
||||||
m_btnFloat->setToolTip(tr("Detach from window"));
|
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->setIcon(QIcon::fromTheme(QStringLiteral("view-close")));
|
||||||
m_btnClose->setIconSize(iconSize);
|
m_btnClose->setIconSize(iconSize);
|
||||||
m_btnClose->setToolTip(tr("Close Log"));
|
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);
|
auto titleWidget = new QWidget(this);
|
||||||
titleWidget->installEventFilter(this);
|
titleWidget->installEventFilter(this);
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
class LogWidget;
|
class LogWidget;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
class QToolButton;
|
class QPushButton;
|
||||||
|
|
||||||
class LogDock : public QDockWidget
|
class LogDock : public QDockWidget
|
||||||
{
|
{
|
||||||
|
|
@ -25,7 +25,7 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LogWidget *m_textLog = nullptr;
|
LogWidget *m_textLog = nullptr;
|
||||||
QToolButton *m_btnClose = nullptr;
|
QPushButton *m_btnClose = nullptr;
|
||||||
QToolButton *m_btnFloat = nullptr;
|
QPushButton *m_btnFloat = nullptr;
|
||||||
QLabel *m_lblTitle = nullptr;
|
QLabel *m_lblTitle = nullptr;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue