| | |
| | | #include <QtWidgets/QApplication> |
| | | #include <QtWidgets/QStyle> |
| | | #include <QtWidgets/QPushButton> |
| | | #include <QtWidgets/QActionGroup> |
| | | #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) |
| | | # include <QtGui/QActionGroup> |
| | | #else |
| | | # include <QtWidgets/QActionGroup> |
| | | #endif |
| | | |
| | | #include <QWKCore/styleagent.h> |
| | | #include <QWKWidgets/widgetwindowagent.h> |
| | | #include <QWKStyleSupport/styleagent.h> |
| | | |
| | | #include <widgetframe/windowbar.h> |
| | | #include <widgetframe/windowbutton.h> |
| | |
| | | |
| | | MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { |
| | | installWindowAgent(); |
| | | |
| | | styleAgent = new QWK::StyleAgent(this); |
| | | installStyleAgent(); |
| | | |
| | | auto clockWidget = new ClockWidget(); |
| | | clockWidget->setObjectName(QStringLiteral("clock-widget")); |
| | |
| | | #ifdef Q_OS_WIN |
| | | auto dwmBlurAction = new QAction(tr("Enable DWM blur"), menuBar); |
| | | dwmBlurAction->setCheckable(true); |
| | | connect(dwmBlurAction, &QAction::triggered, this, [this](bool checked){ |
| | | QWindow *w = windowHandle(); |
| | | styleAgent->setWindowAttribute(w, QStringLiteral("dwm-blur"), checked); |
| | | connect(dwmBlurAction, &QAction::triggered, this, [this](bool checked) { |
| | | if (!windowAgent->setWindowAttribute(QStringLiteral("dwm-blur"), checked)) { |
| | | return; |
| | | } |
| | | setProperty("custom-style", checked); |
| | | style()->polish(this); |
| | | }); |
| | | |
| | | auto acrylicAction = new QAction(tr("Enable acrylic material"), menuBar); |
| | | acrylicAction->setCheckable(true); |
| | | connect(acrylicAction, &QAction::triggered, this, [this](bool checked){ |
| | | QWindow *w = windowHandle(); |
| | | styleAgent->setWindowAttribute(w, QStringLiteral("acrylic-material"), QColor()); |
| | | connect(acrylicAction, &QAction::triggered, this, [this](bool checked) { |
| | | if (!windowAgent->setWindowAttribute(QStringLiteral("acrylic-material"), |
| | | QColor::fromRgbF(1.f, 1.f, 1.f, 0.6f))) { |
| | | return; |
| | | } |
| | | setProperty("custom-style", checked); |
| | | style()->polish(this); |
| | | }); |
| | | |
| | | auto micaAction = new QAction(tr("Enable mica"), menuBar); |
| | | micaAction->setCheckable(true); |
| | | connect(micaAction, &QAction::triggered, this, [this](bool checked){ |
| | | QWindow *w = windowHandle(); |
| | | styleAgent->setWindowAttribute(w, QStringLiteral("mica"), checked); |
| | | connect(micaAction, &QAction::triggered, this, [this](bool checked) { |
| | | if (!windowAgent->setWindowAttribute(QStringLiteral("mica"), checked)) { |
| | | return; |
| | | } |
| | | setProperty("custom-style", checked); |
| | | style()->polish(this); |
| | | }); |
| | | |
| | | auto micaAltAction = new QAction(tr("Enable mica alt"), menuBar); |
| | | micaAltAction->setCheckable(true); |
| | | connect(micaAltAction, &QAction::triggered, this, [this](bool checked){ |
| | | QWindow *w = windowHandle(); |
| | | styleAgent->setWindowAttribute(w, QStringLiteral("mica-alt"), checked); |
| | | connect(micaAltAction, &QAction::triggered, this, [this](bool checked) { |
| | | if (!windowAgent->setWindowAttribute(QStringLiteral("mica-alt"), checked)) { |
| | | return; |
| | | } |
| | | setProperty("custom-style", checked); |
| | | style()->polish(this); |
| | | }); |
| | |
| | | #endif |
| | | } |
| | | |
| | | void MainWindow::installStyleAgent() { |
| | | styleAgent = new QWK::StyleAgent(this); |
| | | } |
| | | |
| | | void MainWindow::loadStyleSheet(Theme theme) { |
| | | if (!styleSheet().isEmpty() && theme == currentTheme) |
| | | return; |
| | | currentTheme = theme; |
| | | |
| | | #ifdef Q_OS_WIN |
| | | windowAgent->setWindowAttribute(QStringLiteral("dark-mode"), currentTheme == Dark); |
| | | #endif |
| | | |
| | | if (QFile qss(theme == Dark ? QStringLiteral(":/dark-style.qss") |
| | | : QStringLiteral(":/light-style.qss")); |
| | | qss.open(QIODevice::ReadOnly | QIODevice::Text)) { |