zach's nutty qmlformat
This commit is contained in:
@@ -1,167 +1,183 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Hyprland
|
||||
import qs.Modules
|
||||
|
||||
PanelWindow {
|
||||
id: mainWindow
|
||||
WlrLayershell.namespace: "I-DeskPet"
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
||||
surfaceFormat.opaque: false
|
||||
color: "transparent"
|
||||
|
||||
property bool onTop: true
|
||||
property list<Item> repeaterItems: []
|
||||
|
||||
anchors {
|
||||
left: true
|
||||
bottom: true
|
||||
right: true
|
||||
top: true
|
||||
}
|
||||
|
||||
margins {
|
||||
left: 0
|
||||
bottom: 0
|
||||
right: 0
|
||||
top: 0
|
||||
}
|
||||
|
||||
GetGifs {
|
||||
id: getGifs
|
||||
gifFolder: ConfigLoader.gifFolder
|
||||
}
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
GifsLoader {
|
||||
id: gifLoader
|
||||
gifsModel: getGifs.gifsModel
|
||||
onItemAdded: function( index, item ) {
|
||||
mainWindow.repeaterItems = Array.from( { length: gifLoader.count }, (_, i) => gifLoader.itemAt(i) ).filter( v => v !== null )
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Hyprland
|
||||
import qs.Modules
|
||||
|
||||
PanelWindow {
|
||||
id: mainWindow
|
||||
|
||||
property var noMove: Region {
|
||||
}
|
||||
property bool onTop: true
|
||||
property var petMove: Region {
|
||||
id: pets
|
||||
|
||||
height: Screen.height
|
||||
intersection: Intersection.Xor
|
||||
regions: maskVariants.instances
|
||||
width: Screen.width
|
||||
}
|
||||
property list<Item> repeaterItems: []
|
||||
property bool setMask: true
|
||||
|
||||
function petRegion(itemObject) {
|
||||
let newregion = regionComponent.createObject(pets, {
|
||||
"item": itemObject
|
||||
});
|
||||
pets.regions.push(newregion);
|
||||
}
|
||||
|
||||
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
WlrLayershell.namespace: "I-DeskPet"
|
||||
color: "transparent"
|
||||
surfaceFormat.opaque: false
|
||||
|
||||
mask: Region {
|
||||
height: Screen.height
|
||||
intersection: Intersection.Xor
|
||||
regions: maskVariants.instances
|
||||
width: Screen.width
|
||||
}
|
||||
|
||||
anchors {
|
||||
bottom: true
|
||||
left: true
|
||||
right: true
|
||||
top: true
|
||||
}
|
||||
|
||||
margins {
|
||||
bottom: 0
|
||||
left: 0
|
||||
right: 0
|
||||
top: 0
|
||||
}
|
||||
|
||||
GetGifs {
|
||||
id: getGifs
|
||||
|
||||
gifFolder: ConfigLoader.gifFolder
|
||||
}
|
||||
|
||||
GifsLoader {
|
||||
id: gifLoader
|
||||
|
||||
gifsModel: getGifs.gifsModel
|
||||
|
||||
onItemAdded: function (index, item) {
|
||||
mainWindow.repeaterItems = Array.from({
|
||||
length: gifLoader.count
|
||||
}, (_, i) => gifLoader.itemAt(i)).filter(v => v !== null);
|
||||
}
|
||||
onItemRemoved: function( index, item ) {
|
||||
mainWindow.repeaterItems = Array.from( { length: gifLoader.count }, (_, i) => gifLoader.itemAt(i) ).filter( v => v !== null )
|
||||
onItemRemoved: function (index, item) {
|
||||
mainWindow.repeaterItems = Array.from({
|
||||
length: gifLoader.count
|
||||
}, (_, i) => gifLoader.itemAt(i)).filter(v => v !== null);
|
||||
}
|
||||
}
|
||||
|
||||
Variants {
|
||||
id: maskVariants
|
||||
|
||||
model: [ ...mainWindow.repeaterItems ]
|
||||
|
||||
Region {
|
||||
required property Item modelData
|
||||
|
||||
Component.onCompleted: {
|
||||
console.log(modelData)
|
||||
}
|
||||
|
||||
x: modelData.x
|
||||
y: modelData.y
|
||||
width: modelData.width
|
||||
height: modelData.height
|
||||
intersection: Intersection.Subtract
|
||||
}
|
||||
}
|
||||
|
||||
function petRegion( itemObject ) {
|
||||
let newregion = regionComponent.createObject( pets, { "item": itemObject })
|
||||
pets.regions.push( newregion )
|
||||
}
|
||||
|
||||
Component {
|
||||
id: regionComponent
|
||||
Region { }
|
||||
}
|
||||
|
||||
mask: Region {
|
||||
width: Screen.width
|
||||
height: Screen.height
|
||||
intersection: Intersection.Xor
|
||||
regions: maskVariants.instances
|
||||
}
|
||||
|
||||
property var petMove: Region { id: pets
|
||||
width: Screen.width
|
||||
height: Screen.height
|
||||
intersection: Intersection.Xor
|
||||
regions: maskVariants.instances
|
||||
}
|
||||
|
||||
property var noMove: Region {}
|
||||
|
||||
property bool setMask: true
|
||||
|
||||
GlobalShortcut {
|
||||
appid: "I-DeskPet"
|
||||
name: "toggle-Layer"
|
||||
onPressed: {
|
||||
if (!mainWindow.onTop) {
|
||||
mainWindow.WlrLayershell.layer = WlrLayer.Overlay
|
||||
mainWindow.onTop = true
|
||||
} else {
|
||||
mainWindow.WlrLayershell.layer = WlrLayer.Bottom
|
||||
mainWindow.onTop = 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
|
||||
Variants {
|
||||
id: maskVariants
|
||||
|
||||
// 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
|
||||
model: [...mainWindow.repeaterItems]
|
||||
|
||||
let currentZ = hovered.zIndex
|
||||
let maxZ = items.length - 1
|
||||
Region {
|
||||
required property Item modelData
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
height: modelData.height
|
||||
intersection: Intersection.Subtract
|
||||
width: modelData.width
|
||||
x: modelData.x
|
||||
y: modelData.y
|
||||
|
||||
Component.onCompleted: {
|
||||
console.log(modelData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: regionComponent
|
||||
|
||||
Region {
|
||||
}
|
||||
}
|
||||
|
||||
GlobalShortcut {
|
||||
appid: "I-DeskPet"
|
||||
name: "toggle-Layer"
|
||||
|
||||
onPressed: {
|
||||
if (!mainWindow.onTop) {
|
||||
mainWindow.WlrLayershell.layer = WlrLayer.Overlay;
|
||||
mainWindow.onTop = true;
|
||||
} else {
|
||||
mainWindow.WlrLayershell.layer = WlrLayer.Bottom;
|
||||
mainWindow.onTop = 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user