| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- 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 {
- property bool showWhenReady: true
- id: window
- width: 800
- height: 600
- color: darkStyle.windowBackgroundColor
- title: qsTr("QWindowKit QtQuick Demo")
- Component.onCompleted: {
- windowAgent.setup(window)
- windowAgent.setWindowAttribute("dark-mode", true)
- if (window.showWhenReady) {
- 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
- }
- TapHandler {
- acceptedButtons: Qt.RightButton
- onTapped: contextMenu.open()
- }
- Rectangle {
- id: titleBar
- anchors {
- top: parent.top
- left: parent.left
- right: parent.right
- }
- height: 32
- //color: window.active ? "#3C3C3C" : "#505050"
- color: "transparent"
- 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"
- fillMode: Image.PreserveAspectFit
- Component.onCompleted: windowAgent.setSystemButton(WindowAgent.WindowIcon, iconButton)
- }
- Text {
- anchors {
- verticalCenter: parent.verticalCenter
- left: iconButton.right
- leftMargin: 10
- }
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- text: window.title
- font.pixelSize: 14
- color: "#ECECEC"
- }
- Row {
- anchors {
- top: parent.top
- right: parent.right
- }
- height: parent.height
- QWKButton {
- id: minButton
- height: parent.height
- source: "qrc:///window-bar/minimize.svg"
- onClicked: window.showMinimized()
- Component.onCompleted: windowAgent.setSystemButton(WindowAgent.Minimize, minButton)
- }
- QWKButton {
- id: maxButton
- height: parent.height
- source: window.visibility === Window.Maximized ? "qrc:///window-bar/restore.svg" : "qrc:///window-bar/maximize.svg"
- onClicked: {
- if (window.visibility === Window.Maximized) {
- window.showNormal()
- } else {
- window.showMaximized()
- }
- }
- 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.setSystemButton(WindowAgent.Close, closeButton)
- }
- }
- }
- Label {
- id: timeLabel
- anchors.centerIn: parent
- font {
- pointSize: 75
- bold: true
- }
- color: "#FEFEFE"
- Component.onCompleted: {
- if ($curveRenderingAvailable) {
- console.log("Curve rendering for text is available.")
- timeLabel.renderType = Text.CurveRendering
- }
- }
- }
- 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
- checked: 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("None")
- checkable: true
- checked: true
- onTriggered: {
- window.color = darkStyle.windowBackgroundColor
- windowAgent.setWindowAttribute("dwm-blur", false)
- windowAgent.setWindowAttribute("acrylic-material", false)
- windowAgent.setWindowAttribute("mica", false)
- windowAgent.setWindowAttribute("mica-alt", false)
- }
- }
- MenuItem {
- enabled: Qt.platform.os === "windows"
- text: qsTr("DWM blur")
- checkable: true
- onTriggered: {
- window.color = "transparent"
- windowAgent.setWindowAttribute("acrylic-material", false)
- windowAgent.setWindowAttribute("mica", false)
- windowAgent.setWindowAttribute("mica-alt", false)
- windowAgent.setWindowAttribute("dwm-blur", true)
- }
- }
- MenuItem {
- enabled: Qt.platform.os === "windows"
- text: qsTr("Acrylic material")
- checkable: true
- onTriggered: {
- window.color = "transparent"
- windowAgent.setWindowAttribute("dwm-blur", false)
- windowAgent.setWindowAttribute("mica", false)
- windowAgent.setWindowAttribute("mica-alt", false)
- windowAgent.setWindowAttribute("acrylic-material", true)
- }
- }
- MenuItem {
- enabled: Qt.platform.os === "windows"
- text: qsTr("Mica")
- checkable: true
- onTriggered: {
- window.color = "transparent"
- windowAgent.setWindowAttribute("dwm-blur", false)
- windowAgent.setWindowAttribute("acrylic-material", false)
- windowAgent.setWindowAttribute("mica-alt", false)
- windowAgent.setWindowAttribute("mica", true)
- }
- }
- MenuItem {
- enabled: Qt.platform.os === "windows"
- text: qsTr("Mica Alt")
- checkable: true
- onTriggered: {
- window.color = "transparent"
- windowAgent.setWindowAttribute("dwm-blur", false)
- windowAgent.setWindowAttribute("acrylic-material", false)
- windowAgent.setWindowAttribute("mica", false)
- windowAgent.setWindowAttribute("mica-alt", true)
- }
- }
- }
- }
- }
|