Add qml/XmbRoot.qml
This commit is contained in:
parent
5a3c298225
commit
9ee1838d35
118
qml/XmbRoot.qml
Normal file
118
qml/XmbRoot.qml
Normal file
@ -0,0 +1,118 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import XMB 1.0
|
||||
|
||||
Item {
|
||||
id: root
|
||||
focus: true
|
||||
|
||||
property int catIndex: 0
|
||||
property int itemIndex: 0
|
||||
|
||||
Sounds { id: sounds }
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: "#071022"
|
||||
}
|
||||
|
||||
// Hintergrund-Glow (dezent)
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
opacity: 0.20
|
||||
gradient: Gradient {
|
||||
GradientStop { position: 0.0; color: "#10284a" }
|
||||
GradientStop { position: 1.0; color: "#071022" }
|
||||
}
|
||||
}
|
||||
|
||||
CategoryStrip {
|
||||
id: strip
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 80
|
||||
height: 130
|
||||
|
||||
model: XmbModel.categories
|
||||
currentIndex: root.catIndex
|
||||
onActivated: (idx) => {
|
||||
root.catIndex = idx
|
||||
root.itemIndex = 0
|
||||
sounds.move()
|
||||
}
|
||||
}
|
||||
|
||||
VerticalList {
|
||||
id: vlist
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: strip.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.topMargin: 20
|
||||
anchors.bottomMargin: 40
|
||||
|
||||
itemsModel: XmbModel.itemsForCategory(root.catIndex)
|
||||
currentIndex: root.itemIndex
|
||||
|
||||
onActivated: (idx) => {
|
||||
root.itemIndex = idx
|
||||
sounds.move()
|
||||
}
|
||||
|
||||
onTriggered: (entryObj) => {
|
||||
sounds.select()
|
||||
Launcher.launch(entryObj)
|
||||
}
|
||||
}
|
||||
|
||||
// Controller / Keyboard input
|
||||
Keys.onPressed: (e) => {
|
||||
if (e.isAutoRepeat) return
|
||||
|
||||
switch (e.key) {
|
||||
case Qt.Key_Left:
|
||||
root.catIndex = Math.max(0, root.catIndex - 1)
|
||||
root.itemIndex = 0
|
||||
strip.positionViewAtIndex(root.catIndex, ListView.Visible)
|
||||
sounds.move()
|
||||
e.accepted = true
|
||||
break
|
||||
case Qt.Key_Right:
|
||||
root.catIndex = Math.min(XmbModel.categoryCount - 1, root.catIndex + 1)
|
||||
root.itemIndex = 0
|
||||
strip.positionViewAtIndex(root.catIndex, ListView.Visible)
|
||||
sounds.move()
|
||||
e.accepted = true
|
||||
break
|
||||
case Qt.Key_Up:
|
||||
root.itemIndex = Math.max(0, root.itemIndex - 1)
|
||||
vlist.positionViewAtIndex(root.itemIndex, ListView.Visible)
|
||||
sounds.move()
|
||||
e.accepted = true
|
||||
break
|
||||
case Qt.Key_Down:
|
||||
root.itemIndex = Math.min(vlist.count - 1, root.itemIndex + 1)
|
||||
vlist.positionViewAtIndex(root.itemIndex, ListView.Visible)
|
||||
sounds.move()
|
||||
e.accepted = true
|
||||
break
|
||||
case Qt.Key_Return:
|
||||
case Qt.Key_Enter:
|
||||
case Qt.Key_Space:
|
||||
vlist.triggerCurrent()
|
||||
e.accepted = true
|
||||
break
|
||||
case Qt.Key_Escape:
|
||||
case Qt.Key_Backspace:
|
||||
sounds.back()
|
||||
// optional: zurück in Kategorie-Root
|
||||
root.itemIndex = 0
|
||||
e.accepted = true
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user