summaryrefslogtreecommitdiff
path: root/modules/launcher/ActionItem.qml
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-03 14:32:53 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-05-03 14:32:53 +1000
commit5978db658c541d4acf4de4a14139232f4a57284c (patch)
tree754eeff62e09569ead024f89cc638a002a12c923 /modules/launcher/ActionItem.qml
parentlauncher: fix scrollbar (diff)
downloadcaelestia-shell-5978db658c541d4acf4de4a14139232f4a57284c.tar.gz
caelestia-shell-5978db658c541d4acf4de4a14139232f4a57284c.tar.bz2
caelestia-shell-5978db658c541d4acf4de4a14139232f4a57284c.zip
feat: launcher actions
Diffstat (limited to 'modules/launcher/ActionItem.qml')
-rw-r--r--modules/launcher/ActionItem.qml59
1 files changed, 59 insertions, 0 deletions
diff --git a/modules/launcher/ActionItem.qml b/modules/launcher/ActionItem.qml
new file mode 100644
index 0000000..06a9342
--- /dev/null
+++ b/modules/launcher/ActionItem.qml
@@ -0,0 +1,59 @@
+import "root:/widgets"
+import "root:/config"
+import Quickshell
+import QtQuick
+
+PaddedRect {
+ id: root
+
+ required property Actions.Action modelData
+ required property var list
+
+ implicitWidth: ListView.view.width
+ implicitHeight: LauncherConfig.sizes.itemHeight
+ padding: [Appearance.padding.smaller, Appearance.padding.larger]
+
+ StateLayer {
+ radius: Appearance.rounding.normal
+
+ function onClicked(): void {
+ root.modelData.onClicked(root.list);
+ }
+ }
+
+ MaterialIcon {
+ id: icon
+
+ text: root.modelData.icon
+ font.pointSize: Appearance.font.size.extraLarge
+
+ anchors.verticalCenter: parent.verticalCenter
+ }
+
+ Item {
+ anchors.left: icon.right
+ anchors.leftMargin: Appearance.spacing.larger
+ anchors.verticalCenter: icon.verticalCenter
+
+ implicitWidth: parent.width - icon.width
+ implicitHeight: childrenRect.height
+
+ StyledText {
+ id: name
+
+ text: root.modelData.name
+ font.pointSize: Appearance.font.size.normal
+ }
+
+ StyledText {
+ text: root.modelData.desc
+ font.pointSize: Appearance.font.size.small
+ color: Appearance.alpha(Appearance.colours.m3outline, true)
+
+ elide: Text.ElideRight
+ width: root.width - icon.width - Appearance.rounding.normal * 2
+
+ anchors.top: name.bottom
+ }
+ }
+}