It's poppin'
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 294 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 647 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 344 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 298 KiB After Width: | Height: | Size: 294 KiB |
@@ -11,8 +11,6 @@ Singleton {
|
||||
property string configDir: Quickshell.env("HOME") + "/.config/I-DeskPet"
|
||||
property string configPath: configDir + "/config.json"
|
||||
|
||||
signal folderChanged()
|
||||
|
||||
Process {
|
||||
id: dirCheck
|
||||
running: true
|
||||
@@ -23,10 +21,6 @@ Singleton {
|
||||
console.log( "creating dir" )
|
||||
dirCreate.running = true
|
||||
}
|
||||
if ( exitCode !== 1 ) {
|
||||
console.log( "creating config" )
|
||||
configCheck.running = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+13
-14
@@ -1,20 +1,19 @@
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
import Qt.labs.folderlistmodel
|
||||
|
||||
Process {
|
||||
id: getGifsProcess
|
||||
Item {
|
||||
id: root
|
||||
required property string gifFolder
|
||||
property list<string> gifsList: []
|
||||
|
||||
command: ["find", gifFolder, "-type", "f", "-name", "*.gif"]
|
||||
property alias gifsModel: folderModel
|
||||
property alias count: folderModel.count
|
||||
|
||||
stdout: StdioCollector {
|
||||
onStreamFinished: {
|
||||
var gifs = this.text.trim().split("\n")
|
||||
if (gifs.length > 0 && gifs[0] !== "") {
|
||||
getGifsProcess.gifsList = gifs
|
||||
} else {
|
||||
getGifsProcess.gifsList = []
|
||||
}
|
||||
}
|
||||
FolderListModel {
|
||||
id: folderModel
|
||||
folder: "file://" + root.gifFolder
|
||||
nameFilters: [ "*.gif" ]
|
||||
showDirs: false
|
||||
showHidden: false
|
||||
sortField: FolderListModel.Name
|
||||
}
|
||||
}
|
||||
|
||||
+18
-11
@@ -3,28 +3,30 @@ pragma ComponentBehavior: Bound
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import Qt.labs.folderlistmodel
|
||||
import qs.Modules
|
||||
|
||||
Repeater {
|
||||
id: gifRepeater
|
||||
required property list<string> gifsList
|
||||
required property FolderListModel gifsModel
|
||||
|
||||
model: gifsList
|
||||
model: gifsModel
|
||||
Item {
|
||||
id: gifItem
|
||||
|
||||
required property int index
|
||||
required property string modelData
|
||||
property int high: ( screen.height - gifItem.height )
|
||||
required property url fileUrl
|
||||
required property string fileBaseName
|
||||
property bool loaded: false
|
||||
|
||||
onXChanged: gifSaved.positionX = gifItem.x
|
||||
onYChanged: gifSaved.positionY = gifItem.y
|
||||
visible: gifItem.loaded
|
||||
onXChanged: if ( gifItem.loaded ) gifSaved.positionX = gifItem.x
|
||||
onYChanged: if ( gifItem.loaded ) gifSaved.positionY = gifItem.y
|
||||
width: Math.floor( gif.sourceSize.width / gifSaved.scaling )
|
||||
height: Math.floor( gif.sourceSize.height / gifSaved.scaling )
|
||||
|
||||
AnimatedImage {
|
||||
id: gif
|
||||
source: gifItem.modelData
|
||||
source: gifItem.fileUrl
|
||||
fillMode: Image.PreserveAspectFit
|
||||
anchors.fill: parent
|
||||
}
|
||||
@@ -34,21 +36,26 @@ Repeater {
|
||||
gifSaved.scaling = Math.max( 1, ( gifSaved.scaling + 0.1 * ( wheel.angleDelta.y / 120 ) ) )
|
||||
}
|
||||
|
||||
onClicked: gifSaved.scaling = 1
|
||||
onDoubleClicked: gifSaved.scaling = 1
|
||||
}
|
||||
|
||||
FileView {
|
||||
id: watcher
|
||||
path: configPath
|
||||
|
||||
property list<string> gifNames: gifItem.modelData.split("/")
|
||||
property string name: gifNames[gifNames.length - 1].split(".")[0] + ".json"
|
||||
property string name: gifItem.fileBaseName + ".json"
|
||||
property string configDir: Quickshell.env("HOME") + "/.config/I-DeskPet/"
|
||||
property string configPath: configDir + name
|
||||
|
||||
onLoaded: {
|
||||
gifItem.x = gifSaved.positionX
|
||||
gifItem.y = gifSaved.positionY
|
||||
gifItem.loaded = true
|
||||
}
|
||||
|
||||
onLoadFailed: {
|
||||
writeAdapter()
|
||||
gifItem.loaded = true
|
||||
}
|
||||
|
||||
watchChanges: true
|
||||
|
||||
@@ -32,19 +32,21 @@ PanelWindow {
|
||||
top: 0
|
||||
}
|
||||
|
||||
GetGifs {
|
||||
id: getGifs
|
||||
gifFolder: ConfigLoader.gifFolder
|
||||
running: true
|
||||
}
|
||||
|
||||
GifsLoader {
|
||||
id: gifLoader
|
||||
gifsList: getGifs.gifsList
|
||||
onItemAdded: function( index, item ) {
|
||||
mainWindow.repeaterItems.push( item )
|
||||
}
|
||||
}
|
||||
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 )
|
||||
}
|
||||
}
|
||||
|
||||
Variants {
|
||||
id: maskVariants
|
||||
|
||||
Reference in New Issue
Block a user