simplify tray item

This commit is contained in:
Benjamin Palko 2025-10-27 19:32:07 -04:00
parent fe8261f7af
commit 3c3fe368bc
5 changed files with 52 additions and 55 deletions

View file

@ -10,7 +10,7 @@ RowLayout {
spacing: 4
Repeater {
model: SystemTray.items
model: SystemTray.items.values
Loader {
id: loader

View file

@ -5,12 +5,11 @@ import QtQuick
import Quickshell
import Quickshell.Services.SystemTray
import Quickshell.Widgets
import "menu/"
StyledIconButton {
id: root
property SystemTrayItem trayItem
required property SystemTrayItem trayItem
onClicked: menu.toggle()
@ -28,7 +27,7 @@ StyledIconButton {
}
}
Menu {
TrayMenu {
id: menu
anchor.item: root

View file

@ -0,0 +1,49 @@
pragma ComponentBehavior: Bound
import qs.components
import qs.config
import QtQuick
import QtQuick.Layouts
import Quickshell
import Quickshell.Widgets
StyledPopupWindow {
id: window
required property QsMenuOpener menuOpener
content: ColumnLayout {
spacing: 4
Repeater {
model: window.menuOpener.children.values
delegate: Loader {
id: loader
required property QsMenuEntry modelData
active: true
Component.onCompleted: {
console.log(modelData.text);
}
Layout.fillWidth: true
Layout.minimumWidth: 160
sourceComponent: modelData.isSeparator ? menuSeperator : menuItem
property Component menuSeperator: WrapperItem {
margin: 4
Rectangle {
implicitHeight: 2
color: Styling.theme.base200
}
}
property Component menuItem: StyledButton {
text: loader.modelData.text
onClicked: loader.modelData.triggered()
}
}
}
}
}

View file

@ -1,39 +0,0 @@
pragma ComponentBehavior: Bound
import qs.components
import qs.config
import QtQuick
import QtQuick.Layouts
import Quickshell
StyledPopupWindow {
id: window
property QsMenuOpener menuOpener
content: ColumnLayout {
spacing: 8
Repeater {
model: window.menuOpener.children
delegate: Loader {
id: loader
required property QsMenuEntry modelData
active: true
Layout.fillWidth: true
Layout.minimumWidth: 160
sourceComponent: modelData.isSeparator ? menuSeperator : menuItem
property Component menuSeperator: Rectangle {
implicitHeight: 2
color: Styling.theme.base100
}
property Component menuItem: MenuItem {
menuEntry: loader.modelData
}
}
}
}
}

View file

@ -1,12 +0,0 @@
import qs.components
import Quickshell
StyledButton {
id: root
property QsMenuEntry menuEntry
text: root.menuEntry.text
onClicked: menuEntry.triggered()
}