diff --git a/Assets/evernight.gif b/Assets/Evernight.gif similarity index 100% rename from Assets/evernight.gif rename to Assets/Evernight.gif diff --git a/Modules/GifsLoader.qml b/Modules/GifsLoader.qml index 48e7874..c4925d5 100644 --- a/Modules/GifsLoader.qml +++ b/Modules/GifsLoader.qml @@ -16,8 +16,12 @@ Repeater { required property url fileUrl required property string fileBaseName + required property int index property bool loaded: false + property alias hovered: mouse.containsMouse + property alias zIndex: gifSaved.zIndex + z: gifSaved.zIndex visible: gifItem.loaded onXChanged: if ( gifItem.loaded ) gifSaved.positionX = gifItem.x onYChanged: if ( gifItem.loaded ) gifSaved.positionY = gifItem.y @@ -32,6 +36,7 @@ Repeater { } Mouse { + id: mouse onWheel: (wheel)=> { gifSaved.scaling = Math.max( 1, ( gifSaved.scaling + 0.1 * ( wheel.angleDelta.y / 120 ) ) ) } @@ -48,12 +53,14 @@ Repeater { property string configPath: configDir + name onLoaded: { + if ( gifSaved.zIndex === -1 ) gifSaved.zIndex = gifItem.index gifItem.x = gifSaved.positionX gifItem.y = gifSaved.positionY gifItem.loaded = true } onLoadFailed: { + gifSaved.zIndex = gifItem.index writeAdapter() gifItem.loaded = true } @@ -70,6 +77,7 @@ Repeater { property real scaling: 1 property int positionX: 0 property int positionY: 0 + property int zIndex: -1 } } } diff --git a/Modules/Mouse.qml b/Modules/Mouse.qml index 352fb10..39d5ad8 100644 --- a/Modules/Mouse.qml +++ b/Modules/Mouse.qml @@ -3,6 +3,7 @@ import QtQuick MouseArea { anchors.fill: parent acceptedButtons: Qt.LeftButton + hoverEnabled: true drag.target: parent drag.axis: Drag.XAndYAxis drag.minimumX: 0 diff --git a/README.md b/README.md index 01c8ded..ec1738f 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,16 @@

Pet March (Evernight)

My selfmade desktop pet using QT

- +
## Feature list + - [x] Hyprland keybind support - - [x] Swap Overlay <> Bottom - - [x] Swap Mouse area targetted -/+ + - [x] Swap Overlay <> Bottom + - [x] Swap Mouse area targetted -/+ - [x] Dynamic pets - [x] Multiple pets - [x] Config location ~/.config/I-DeskPet/config.json - {"gifFolder": "PATH"} + {"gifFolder": "PATH"} - [x] Evernight base gif img - -## To-Do list -- [] Setting more json settings -- [] Clear up code -- [] Auto update gifs modeldata diff --git a/shell.qml b/shell.qml index 3a24133..de78f62 100644 --- a/shell.qml +++ b/shell.qml @@ -9,7 +9,7 @@ import qs.Modules PanelWindow { id: mainWindow - WlrLayershell.namespace: "IDeskPet-Pet" + WlrLayershell.namespace: "I-DeskPet" WlrLayershell.layer: WlrLayer.Overlay WlrLayershell.exclusionMode: ExclusionMode.Ignore surfaceFormat.opaque: false @@ -110,17 +110,58 @@ PanelWindow { } } - GlobalShortcut { - appid: "I-DeskPet" - name: "toggle-Region" - onPressed: { - if ( !mainWindow.setMask ) { - mainWindow.mask = mainWindow.petMove - mainWindow.setMask = true - } else { - mainWindow.mask = mainWindow.noMove - mainWindow.setMask = false - } - } - } -} + GlobalShortcut { + appid: "I-DeskPet" + name: "toggle-Region" + onPressed: { + if ( !mainWindow.setMask ) { + mainWindow.mask = mainWindow.petMove + mainWindow.setMask = true + } else { + mainWindow.mask = mainWindow.noMove + mainWindow.setMask = false + } + } + } + + GlobalShortcut { + appid: "I-DeskPet" + name: "cycle-zIndex" + onPressed: { + let items = mainWindow.repeaterItems + if ( items.length < 2 ) return + + // Find the hovered GIF + let hovered = null + for ( let i = 0; i < items.length; i++ ) { + if ( items[i].hovered ) { + hovered = items[i] + break + } + } + if ( !hovered ) return + + let currentZ = hovered.zIndex + let maxZ = items.length - 1 + + if ( currentZ >= maxZ ) { + // Already on top, wrap to bottom: shift everyone else up by 1 + for ( let i = 0; i < items.length; i++ ) { + if ( items[i] !== hovered ) { + items[i].zIndex += 1 + } + } + hovered.zIndex = 0 + } else { + // Swap with the item directly above + for ( let i = 0; i < items.length; i++ ) { + if ( items[i] !== hovered && items[i].zIndex === currentZ + 1 ) { + items[i].zIndex = currentZ + break + } + } + hovered.zIndex = currentZ + 1 + } + } + } +}