From dddf96c011723a12b11acc2980c10eb370961021 Mon Sep 17 00:00:00 2001
From: Zhao Yuhang <2546789017@qq.com>
Date: 周五, 15 12月 2023 21:35:17 +0800
Subject: [PATCH] add qt impl

---
 examples/mainwindow/mainwindow.cpp |   51 +++++++++++++++++++++++++--------------------------
 1 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/examples/mainwindow/mainwindow.cpp b/examples/mainwindow/mainwindow.cpp
index 882dc9b..80a4c3a 100644
--- a/examples/mainwindow/mainwindow.cpp
+++ b/examples/mainwindow/mainwindow.cpp
@@ -32,15 +32,15 @@
     installWindowAgent();
 
     auto clockWidget = new ClockWidget();
-    clockWidget->setObjectName("clock-widget");
+    clockWidget->setObjectName(QStringLiteral("clock-widget"));
     clockWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
     setCentralWidget(clockWidget);
 
-    if (QFile qss(":/dark-style.qss"); qss.open(QIODevice::ReadOnly | QIODevice::Text)) {
+    if (QFile qss(QStringLiteral(":/dark-style.qss")); qss.open(QIODevice::ReadOnly | QIODevice::Text)) {
         setStyleSheet(QString::fromUtf8(qss.readAll()));
     }
 
-    setWindowTitle("Example MainWindow");
+    setWindowTitle(tr("Example MainWindow"));
     resize(640, 480);
 }
 
@@ -80,8 +80,7 @@
     });
 }
 
-MainWindow::~MainWindow() {
-}
+MainWindow::~MainWindow() = default;
 
 bool MainWindow::event(QEvent *event) {
     switch (event->type()) {
@@ -108,46 +107,46 @@
 void MainWindow::installWindowAgent() {
     auto agent = new QWK::WidgetWindowAgent(this);
     if (!agent->setup(this)) {
-        qFatal("Frameless handle failed to initialize.");
+        qFatal("QWK failed to initialize.");
     }
 
     auto menuBar = []() {
         auto menuBar = new QMenuBar();
-        auto file = new QMenu("File(&F)", menuBar);
-        file->addAction(new QAction("New(&N)", menuBar));
-        file->addAction(new QAction("Open(&O)", menuBar));
+        auto file = new QMenu(tr("File(&F)"), menuBar);
+        file->addAction(new QAction(tr("New(&N)"), menuBar));
+        file->addAction(new QAction(tr("Open(&O)"), menuBar));
 
-        auto edit = new QMenu("Edit(&E)", menuBar);
-        edit->addAction(new QAction("Undo(&U)", menuBar));
-        edit->addAction(new QAction("Redo(&R)", menuBar));
+        auto edit = new QMenu(tr("Edit(&E)"), menuBar);
+        edit->addAction(new QAction(tr("Undo(&U)"), menuBar));
+        edit->addAction(new QAction(tr("Redo(&R)"), menuBar));
 
         menuBar->addMenu(file);
         menuBar->addMenu(edit);
         return menuBar;
     }();
-    menuBar->setObjectName("win-menu-bar");
+    menuBar->setObjectName(QStringLiteral("win-menu-bar"));
 
     auto titleLabel = new QLabel();
     titleLabel->setAlignment(Qt::AlignCenter);
-    titleLabel->setObjectName("win-title-label");
+    titleLabel->setObjectName(QStringLiteral("win-title-label"));
 
     auto iconButton = new QWK::WindowButton();
-    iconButton->setObjectName("icon-button");
+    iconButton->setObjectName(QStringLiteral("icon-button"));
     iconButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
 
     auto minButton = new QWK::WindowButton();
-    minButton->setObjectName("min-button");
+    minButton->setObjectName(QStringLiteral("min-button"));
     minButton->setProperty("system-button", true);
     minButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
 
     auto maxButton = new QWK::WindowButton();
     maxButton->setCheckable(true);
-    maxButton->setObjectName("max-button");
+    maxButton->setObjectName(QStringLiteral("max-button"));
     maxButton->setProperty("system-button", true);
     maxButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
 
     auto closeButton = new QWK::WindowButton();
-    closeButton->setObjectName("close-button");
+    closeButton->setObjectName(QStringLiteral("close-button"));
     closeButton->setProperty("system-button", true);
     closeButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
 
@@ -169,18 +168,18 @@
 
 #ifdef Q_OS_WINDOWS
     // Emulate Window system menu button behaviors
-    connect(iconButton, &QAbstractButton::clicked, agent, [this, iconButton, agent] {
-        setProperty("double-click-close", false);
+    connect(iconButton, &QAbstractButton::clicked, this, [iconButton, agent] {
+        iconButton->setProperty("double-click-close", false);
 
         // Pick a suitable time threshold
-        QTimer::singleShot(75, this, [this, iconButton, agent]() {
-            if (property("double-click-close").toBool())
+        QTimer::singleShot(75, [iconButton, agent]() {
+            if (iconButton->property("double-click-close").toBool())
                 return;
-            agent->showSystemMenu(iconButton->mapToGlobal({0, iconButton->height()}));
+            agent->showSystemMenu(iconButton->mapToGlobal(QPoint{0, iconButton->height()}));
         });
     });
-    connect(iconButton, &QWK::WindowButton::doubleClicked, this, [this]() {
-        setProperty("double-click-close", true);
+    connect(iconButton, &QWK::WindowButton::doubleClicked, this, [iconButton, this]() {
+        iconButton->setProperty("double-click-close", true);
         close();
     });
 #endif
@@ -195,7 +194,7 @@
 
         // It's a Qt issue that if a QAbstractButton::clicked triggers a window's maximization,
         // the button remains to be hovered until the mouse move. As a result, we need to
-        // manully send leave events to the button.
+        // manually send leave events to the button.
         emulateLeaveEvent(maxButton);
     });
     connect(windowBar, &QWK::WindowBar::closeRequested, this, &QWidget::close);

--
Gitblit v1.9.1