summaryrefslogtreecommitdiff
path: root/modules/launcher/AppList.qml
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-02 23:20:56 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-02 23:20:56 +1000
commit6b848b0f56b7c801763c7b5c1f16ad6ec8b2fba4 (patch)
treeb11e454c9c7aa474ccc5396393ff83b54c1b1077 /modules/launcher/AppList.qml
parentfeat: launcher empty placeholder (diff)
downloadcaelestia-shell-6b848b0f56b7c801763c7b5c1f16ad6ec8b2fba4.tar.gz
caelestia-shell-6b848b0f56b7c801763c7b5c1f16ad6ec8b2fba4.tar.bz2
caelestia-shell-6b848b0f56b7c801763c7b5c1f16ad6ec8b2fba4.zip
refactor: move launcher app list into separate file
Diffstat (limited to 'modules/launcher/AppList.qml')
-rw-r--r--modules/launcher/AppList.qml89
1 files changed, 89 insertions, 0 deletions
diff --git a/modules/launcher/AppList.qml b/modules/launcher/AppList.qml
new file mode 100644
index 0000000..d5724f8
--- /dev/null
+++ b/modules/launcher/AppList.qml
@@ -0,0 +1,89 @@
+import "root:/widgets"
+import "root:/services"
+import "root:/config"
+import Quickshell
+import QtQuick
+import QtQuick.Controls
+
+ListView {
+ id: root
+
+ required property int padding
+ required property string search
+
+ model: ScriptModel {
+ values: Apps.fuzzyQuery(root.search)
+ onValuesChanged: root.currentIndex = 0
+ }
+
+ clip: true
+ spacing: Appearance.spacing.small
+ orientation: Qt.Vertical
+ implicitHeight: ((currentItem?.height ?? 1) + spacing) * Math.min(LauncherConfig.maxShown, count) - spacing
+
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ anchors.margins: root.padding
+
+ delegate: AppItem {
+ launcher: root.launcher
+ }
+ // TODO highlight
+
+ ScrollBar.vertical: StyledScrollBar {
+ // Move half out
+ parent: root.parent
+ anchors.top: root.top
+ anchors.bottom: root.bottom
+ anchors.right: root.right
+ anchors.topMargin: root.padding / 2
+ anchors.bottomMargin: root.padding / 2
+ anchors.rightMargin: -root.padding / 2
+ }
+
+ add: Transition {
+ Anim {
+ properties: "opacity,scale"
+ from: 0
+ to: 1
+ }
+ }
+
+ remove: Transition {
+ Anim {
+ properties: "opacity,scale"
+ from: 1
+ to: 0
+ }
+ }
+
+ move: Transition {
+ Anim {
+ property: "y"
+ }
+ }
+
+ addDisplaced: Transition {
+ Anim {
+ property: "y"
+ duration: Appearance.anim.durations.small
+ }
+ }
+
+ displaced: Transition {
+ Anim {
+ property: "y"
+ }
+ }
+
+ Behavior on implicitHeight {
+ Anim {}
+ }
+
+ component Anim: NumberAnimation {
+ duration: Appearance.anim.durations.normal
+ easing.type: Easing.BezierSpline
+ easing.bezierCurve: Appearance.anim.curves.standard
+ }
+}