mirror of
https://github.com/danbulant/dots-hyprland
synced 2026-05-24 12:22:09 +00:00
83 lines
2.2 KiB
QML
83 lines
2.2 KiB
QML
pragma Singleton
|
|
pragma ComponentBehavior: Bound
|
|
|
|
import Quickshell;
|
|
import Quickshell.Io;
|
|
import Quickshell.Services.Pipewire;
|
|
import Qt.labs.platform
|
|
import QtQuick;
|
|
|
|
Singleton {
|
|
id: root
|
|
property var filePath: `${StandardPaths.standardLocations(StandardPaths.StateLocation)[0]}/user/todo.json`
|
|
property var list: []
|
|
|
|
function addItem(item) {
|
|
list.push(item)
|
|
// Reassign to trigger onListChanged
|
|
root.list = list.slice(0)
|
|
todoFileView.setText(JSON.stringify(root.list))
|
|
}
|
|
|
|
function addTask(desc) {
|
|
const item = {
|
|
"content": desc,
|
|
"done": false,
|
|
}
|
|
addItem(item)
|
|
}
|
|
|
|
function markDone(index) {
|
|
if (index >= 0 && index < list.length) {
|
|
list[index].done = true
|
|
// Reassign to trigger onListChanged
|
|
root.list = list.slice(0)
|
|
todoFileView.setText(JSON.stringify(root.list))
|
|
}
|
|
}
|
|
|
|
function markUnfinished(index) {
|
|
if (index >= 0 && index < list.length) {
|
|
list[index].done = false
|
|
// Reassign to trigger onListChanged
|
|
root.list = list.slice(0)
|
|
todoFileView.setText(JSON.stringify(root.list))
|
|
}
|
|
}
|
|
|
|
function deleteItem(index) {
|
|
if (index >= 0 && index < list.length) {
|
|
list.splice(index, 1)
|
|
// Reassign to trigger onListChanged
|
|
root.list = list.slice(0)
|
|
todoFileView.setText(JSON.stringify(root.list))
|
|
}
|
|
}
|
|
|
|
function refresh() {
|
|
todoFileView.reload()
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
refresh()
|
|
}
|
|
|
|
FileView {
|
|
id: todoFileView
|
|
path: filePath
|
|
onLoaded: {
|
|
const fileContents = todoFileView.text()
|
|
root.list = JSON.parse(fileContents)
|
|
}
|
|
onLoadFailed: (error) => {
|
|
if(error == FileViewError.FileNotFound) {
|
|
console.log("[To Do] File not found, creating new file.")
|
|
root.list = []
|
|
todoFileView.setText(JSON.stringify(root.list))
|
|
} else {
|
|
console.log("[To Do] Error loading file: " + error)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|