diff options
| -rw-r--r-- | modules/launcher/AppList.qml | 89 | ||||
| -rw-r--r-- | modules/launcher/Content.qml | 79 |
2 files changed, 92 insertions, 76 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 + } +} diff --git a/modules/launcher/Content.qml b/modules/launcher/Content.qml index d994ee6..81222b7 100644 --- a/modules/launcher/Content.qml +++ b/modules/launcher/Content.qml @@ -32,78 +32,11 @@ Item { anchors.bottomMargin: root.spacing anchors.margins: root.padding - ListView { + AppList { id: list - model: ScriptModel { - values: Apps.fuzzyQuery(search.text) - onValuesChanged: list.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: list.parent - anchors.top: list.top - anchors.bottom: list.bottom - anchors.right: list.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 {} - } + padding: root.padding + search: search.text } EmptyIndicator { @@ -153,10 +86,4 @@ Item { } } } - - component Anim: NumberAnimation { - duration: Appearance.anim.durations.normal - easing.type: Easing.BezierSpline - easing.bezierCurve: Appearance.anim.curves.standard - } } |