From 4e7058084d51193e3c975bcddbe749e7fd29e356 Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周日, 19 5月 2024 23:29:49 +0800 Subject: [PATCH] Add check of maximum button hint --- examples/qml/main.qml | 156 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 148 insertions(+), 8 deletions(-) diff --git a/examples/qml/main.qml b/examples/qml/main.qml index 8f1f15a..e27239c 100644 --- a/examples/qml/main.qml +++ b/examples/qml/main.qml @@ -1,42 +1,82 @@ import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15 +import Qt.labs.platform 1.1 import QWindowKit 1.0 Window { id: window width: 800 height: 600 - color: "#f0f0f0" + color: darkStyle.windowBackgroundColor title: qsTr("Hello, world!") Component.onCompleted: { windowAgent.setup(window) window.visible = true } + QtObject { + id: lightStyle + } + + QtObject { + id: darkStyle + readonly property color windowBackgroundColor: "#1E1E1E" + } + + Timer { + interval: 100 + running: true + repeat: true + onTriggered: timeLabel.text = Qt.formatTime(new Date(), "hh:mm:ss") + } + WindowAgent { id: windowAgent + } + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.RightButton + onClicked: contextMenu.open() } Rectangle { id: titleBar anchors { top: parent.top - topMargin: 1 left: parent.left right: parent.right } height: 32 - color: "white" + color: window.active ? "#3C3C3C" : "#505050" Component.onCompleted: windowAgent.setTitleBar(titleBar) + Image { + id: iconButton + anchors { + verticalCenter: parent.verticalCenter + left: parent.left + leftMargin: 10 + } + width: 18 + height: 18 + mipmap: true + source: "qrc:///app/example.png" + Component.onCompleted: windowAgent.setSystemButton(WindowAgent.WindowIcon, iconButton) + } + Text { - anchors.centerIn: parent + anchors { + verticalCenter: parent.verticalCenter + left: iconButton.right + leftMargin: 10 + } horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter text: window.title font.pixelSize: 14 - color: window.active ? "black" : "gray" + color: "#ECECEC" } Row { @@ -51,7 +91,7 @@ height: parent.height source: "qrc:///window-bar/minimize.svg" onClicked: window.showMinimized() - Component.onCompleted: windowAgent.setHitTestVisible(minButton) + Component.onCompleted: windowAgent.setSystemButton(WindowAgent.Minimize, minButton) } QWKButton { @@ -65,15 +105,115 @@ window.showMaximized() } } - Component.onCompleted: windowAgent.setHitTestVisible(maxButton) + Component.onCompleted: windowAgent.setSystemButton(WindowAgent.Maximize, maxButton) } QWKButton { id: closeButton height: parent.height source: "qrc:///window-bar/close.svg" + background: Rectangle { + color: { + if (!closeButton.enabled) { + return "gray"; + } + if (closeButton.pressed) { + return "#e81123"; + } + if (closeButton.hovered) { + return "#e81123"; + } + return "transparent"; + } + } onClicked: window.close() - Component.onCompleted: windowAgent.setHitTestVisible(closeButton) + Component.onCompleted: windowAgent.setSystemButton(WindowAgent.Close, closeButton) + } + } + } + + Label { + id: timeLabel + anchors.centerIn: parent + font { + pointSize: 75 + bold: true + } + color: "#FEFEFE" + } + + Menu { + id: contextMenu + + Menu { + id: themeMenu + title: qsTr("Theme") + + MenuItemGroup { + id: themeMenuGroup + items: themeMenu.items + } + + MenuItem { + text: qsTr("Light") + checkable: true + onTriggered: windowAgent.setWindowAttribute("dark-mode", false) + } + + MenuItem { + text: qsTr("Dark") + checkable: true + onTriggered: windowAgent.setWindowAttribute("dark-mode", true) + } + } + + Menu { + id: specialEffectMenu + title: qsTr("Special effect") + + MenuItemGroup { + id: specialEffectMenuGroup + items: specialEffectMenu.items + } + + MenuItem { + enabled: Qt.platform.os === "windows" + text: qsTr("DWM blur") + checkable: true + onTriggered: { + window.color = checked ? "transparent" : darkStyle.windowBackgroundColor + windowAgent.setWindowAttribute("dwm-blur", checked) + } + } + + MenuItem { + enabled: Qt.platform.os === "windows" + text: qsTr("Acrylic material") + checkable: true + onTriggered: { + window.color = checked ? "transparent" : darkStyle.windowBackgroundColor + windowAgent.setWindowAttribute("acrylic-material", checked) + } + } + + MenuItem { + enabled: Qt.platform.os === "windows" + text: qsTr("Mica") + checkable: true + onTriggered: { + window.color = checked ? "transparent" : darkStyle.windowBackgroundColor + windowAgent.setWindowAttribute("mica", checked) + } + } + + MenuItem { + enabled: Qt.platform.os === "windows" + text: qsTr("Mica Alt") + checkable: true + onTriggered: { + window.color = checked ? "transparent" : darkStyle.windowBackgroundColor + windowAgent.setWindowAttribute("mica-alt", checked) + } } } } -- Gitblit v1.9.1