94 lines
3.4 KiB
QML
94 lines
3.4 KiB
QML
|
import QtQuick 2.12
|
|||
|
import QtQuick.Controls 2.12
|
|||
|
import QtQuick.Layouts 1.12
|
|||
|
import QtGraphicalEffects 1.0
|
|||
|
|
|||
|
import Cyber.Dock 1.0
|
|||
|
import MeuiKit 1.0 as Meui
|
|||
|
|
|||
|
StandardItem {
|
|||
|
id: controlItem
|
|||
|
|
|||
|
Layout.preferredWidth: isHorizontal ? controlLayout.implicitWidth + Meui.Units.largeSpacing * 2 : mainLayout.width * 0.7
|
|||
|
Layout.preferredHeight: isHorizontal ? mainLayout.height * 0.7 : controlLayout.implicitHeight + Meui.Units.largeSpacing * 2
|
|||
|
Layout.rightMargin: isHorizontal ? root.windowRadius / 2 : 0
|
|||
|
Layout.bottomMargin: isHorizontal ? 0 : root.windowRadius / 2
|
|||
|
Layout.alignment: Qt.AlignCenter
|
|||
|
|
|||
|
onClicked: {
|
|||
|
if (controlCenter.visible)
|
|||
|
controlCenter.visible = false
|
|||
|
else {
|
|||
|
// 先初始化,用户可能会通过Alt鼠标左键移动位置
|
|||
|
controlCenter.position = Qt.point(0, 0)
|
|||
|
|
|||
|
controlCenter.visible = true
|
|||
|
controlCenter.position = Qt.point(mapToGlobal(0, 0).x, mapToGlobal(0, 0).y)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
GridLayout {
|
|||
|
id: controlLayout
|
|||
|
anchors.fill: parent
|
|||
|
anchors.leftMargin: isHorizontal ? Meui.Units.smallSpacing : 0
|
|||
|
anchors.rightMargin: isHorizontal ? Meui.Units.smallSpacing : 0
|
|||
|
anchors.topMargin: isHorizontal ? Meui.Units.smallSpacing : 0
|
|||
|
anchors.bottomMargin: isHorizontal ? Meui.Units.smallSpacing : 0
|
|||
|
columnSpacing: isHorizontal ? Meui.Units.largeSpacing + Meui.Units.smallSpacing : 0
|
|||
|
rowSpacing: isHorizontal ? 0 : Meui.Units.largeSpacing + Meui.Units.smallSpacing
|
|||
|
flow: isHorizontal ? Grid.LeftToRight : Grid.TopToBottom
|
|||
|
|
|||
|
Image {
|
|||
|
id: wirelessIcon
|
|||
|
width: root.trayItemSize
|
|||
|
height: width
|
|||
|
sourceSize: Qt.size(width, height)
|
|||
|
source: network.wirelessIconName ? "qrc:/svg/" + (Meui.Theme.darkMode ? "dark/" : "light/") + network.wirelessIconName + ".svg" : ""
|
|||
|
asynchronous: true
|
|||
|
Layout.alignment: Qt.AlignCenter
|
|||
|
visible: network.enabled &&
|
|||
|
network.wirelessEnabled &&
|
|||
|
network.wirelessConnectionName !== "" &&
|
|||
|
wirelessIcon.status === Image.Ready
|
|||
|
}
|
|||
|
|
|||
|
Image {
|
|||
|
id: batteryIcon
|
|||
|
visible: battery.available && status === Image.Ready
|
|||
|
height: root.trayItemSize
|
|||
|
width: height + 6
|
|||
|
sourceSize: Qt.size(width, height)
|
|||
|
source: "qrc:/svg/" + (Meui.Theme.darkMode ? "dark/" : "light/") + battery.iconSource
|
|||
|
asynchronous: true
|
|||
|
Layout.alignment: Qt.AlignCenter
|
|||
|
}
|
|||
|
|
|||
|
Image {
|
|||
|
id: volumeIcon
|
|||
|
visible: volume.isValid && status === Image.Ready
|
|||
|
source: "qrc:/svg/" + (Meui.Theme.darkMode ? "dark/" : "light/") + volume.iconName + ".svg"
|
|||
|
width: root.trayItemSize
|
|||
|
height: width
|
|||
|
sourceSize: Qt.size(width, height)
|
|||
|
asynchronous: true
|
|||
|
Layout.alignment: Qt.AlignCenter
|
|||
|
}
|
|||
|
|
|||
|
Label {
|
|||
|
id: timeLabel
|
|||
|
Layout.alignment: Qt.AlignCenter
|
|||
|
font.pixelSize: isHorizontal ? controlLayout.height / 3 : controlLayout.width / 5
|
|||
|
|
|||
|
Timer {
|
|||
|
interval: 1000
|
|||
|
repeat: true
|
|||
|
running: true
|
|||
|
triggeredOnStart: true
|
|||
|
onTriggered: {
|
|||
|
timeLabel.text = new Date().toLocaleTimeString(Qt.locale(), Locale.ShortFormat)
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|