128 lines
2.4 KiB
QML
128 lines
2.4 KiB
QML
import Quickshell
|
|
import QtQuick
|
|
import QtQuick.Layouts
|
|
import QtQuick.Controls
|
|
import Quickshell.Wayland
|
|
import Quickshell.Io
|
|
import "root:/singeltons"
|
|
|
|
PanelWindow {
|
|
id: root
|
|
|
|
property bool show: false
|
|
property int selectedIndex: 0
|
|
property int buttonCount: 4
|
|
|
|
|
|
implicitWidth: 600
|
|
implicitHeight: 400
|
|
visible: show
|
|
focusable: true
|
|
color: "transparent"
|
|
|
|
WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive
|
|
WlrLayershell.layer: WlrLayer.Top
|
|
|
|
IpcHandler {
|
|
target: "powermenu"
|
|
|
|
function open(): void {
|
|
root.selectedIndex = 0
|
|
root.show = true
|
|
}
|
|
|
|
function close(): void {
|
|
root.show = false
|
|
}
|
|
}
|
|
|
|
function executeButton(index){
|
|
switch (index){
|
|
case 0:
|
|
console.log("0")
|
|
break
|
|
case 1:
|
|
console.log("1")
|
|
break
|
|
case 2:
|
|
console.log("2")
|
|
break
|
|
case 3:
|
|
console.log("3")
|
|
break
|
|
}
|
|
}
|
|
|
|
// Main window
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
anchors.centerIn: parent
|
|
|
|
|
|
focus: true
|
|
|
|
color: "#363a4f"
|
|
border.color: Qt.hsla(0, 0, 1, 0.2)
|
|
border.width: 2
|
|
radius: 12
|
|
|
|
Keys.onPressed: (event) => {
|
|
switch (event.key){
|
|
case (Qt.Key_Escape):
|
|
root.show = false
|
|
event.accepted = true
|
|
break
|
|
case (Qt.Key_Return):
|
|
case (Qt.Key_Enter):
|
|
root.show = false
|
|
executeButton(root.selectedIndex)
|
|
event.accepted = true
|
|
break
|
|
case (Qt.Key_Tab):
|
|
case (Qt.Key_Right):
|
|
root.selectedIndex = (root.selectedIndex + 1) % root.buttonCount
|
|
event.accepted = true
|
|
break
|
|
case (Qt.Key_Left):
|
|
root.selectedIndex = (root.selectedIndex - 1 + root.buttonCount) % root.buttonCount
|
|
event.accepted = true
|
|
break
|
|
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
anchors.fill: parent
|
|
anchors.margins: 20
|
|
|
|
PowermenuButton {
|
|
active: root.selectedIndex == 0
|
|
icon: "⏻"
|
|
}
|
|
|
|
Item { Layout.fillWidth: true } // spacer
|
|
|
|
PowermenuButton {
|
|
active: root.selectedIndex == 1
|
|
icon: ""
|
|
|
|
}
|
|
|
|
Item { Layout.fillWidth: true } // spacer
|
|
|
|
PowermenuButton {
|
|
active: root.selectedIndex == 2
|
|
icon: ""
|
|
}
|
|
|
|
Item { Layout.fillWidth: true } // spacer
|
|
|
|
PowermenuButton {
|
|
active: root.selectedIndex == 3
|
|
icon: ""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|