93 lines
3.4 KiB
QML
93 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)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|