220 lines
6.2 KiB
QML
220 lines
6.2 KiB
QML
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: 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: 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"
|
|
}
|
|
|
|
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"
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |