Files
illogical-impulse/dots/.config/quickshell/ii/modules/waffle/startMenu/startPage/AllAppsGrid.qml
T
2025-12-06 23:14:08 +01:00

85 lines
2.5 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import Quickshell
import qs
import qs.services
import qs.modules.common
import qs.modules.common.functions
import qs.modules.common.widgets
import qs.modules.waffle.looks
GridLayout {
id: root
columns: 4
Component {
id: aggAppCatComp
AggregatedAppCategoryModel {}
}
property list<AggregatedAppCategoryModel> aggregatedCategories: [
aggAppCatComp.createObject(null, {
name: Translation.tr("Productivity"),
categories: ["Development", "Education", "Network", "Office"]
}), aggAppCatComp.createObject(null, {
name: Translation.tr("Utilities & Tools"),
categories: ["Utility", "Science"]
}), aggAppCatComp.createObject(null, {
name: Translation.tr("Creativity"),
categories: ["AudioVideo", "Graphics"]
}), aggAppCatComp.createObject(null, {
name: Translation.tr("Other"),
categories: ["Game"]
}), aggAppCatComp.createObject(null, {
name: Translation.tr("System"),
categories: ["Settings", "System"]
})
]
Repeater {
model: root.aggregatedCategories
delegate: AppCategory {
required property var modelData
aggregatedCategory: modelData
}
}
columnSpacing: 27
rowSpacing: 12
component AppCategory: Item {
id: categoryItem
property AggregatedAppCategoryModel aggregatedCategory
implicitWidth: categoryLayout.implicitWidth
implicitHeight: categoryLayout.implicitHeight
ColumnLayout {
id: categoryLayout
anchors.fill: parent
spacing: 4
AppCategoryGrid {
id: categoryGrid
Layout.fillWidth: true
aggregatedCategory: categoryItem.aggregatedCategory
}
WButton {
id: categoryButton
Layout.fillWidth: true
implicitHeight: 32
contentItem: WText {
id: categoryButtonText
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
elide: Text.ElideRight
text: categoryItem.aggregatedCategory.name
}
onClicked: {
categoryGrid.openCategoryFolder();
}
}
}
}
}