diff options
Diffstat (limited to 'home-configuration/config/quickshell/shell.qml')
| -rw-r--r-- | home-configuration/config/quickshell/shell.qml | 127 |
1 files changed, 86 insertions, 41 deletions
diff --git a/home-configuration/config/quickshell/shell.qml b/home-configuration/config/quickshell/shell.qml index a1356b1..c9425cd 100644 --- a/home-configuration/config/quickshell/shell.qml +++ b/home-configuration/config/quickshell/shell.qml @@ -22,7 +22,7 @@ Scope { PanelWindow { anchors { top: true; right: true } - margins { top: 56; right: 12 } + margins { top: 12; right: 12 } implicitWidth: 380 implicitHeight: Math.max(1, column.implicitHeight) @@ -41,19 +41,24 @@ Scope { id: card required property var modelData + Layout.fillWidth: true + implicitHeight: cardLayout.implicitHeight + 20 + + radius: 12 + color: Config.colors.bgDark + border.color: hoverArea.containsMouse ? Config.colors.purple : "transparent" + border.width: 1 + + Behavior on border.color { ColorAnimation { duration: 150 } } + Timer { - running: card.modelData.urgency !== NotificationUrgency.Critical + id: dismissTimer + running: card.modelData.urgency !== NotificationUrgency.Critical && !hoverArea.containsMouse interval: Config.notifications.timeout repeat: false onTriggered: card.modelData.dismiss() } - Layout.fillWidth: true - implicitHeight: layout.implicitHeight + 20 - - radius: 12 - color: Config.colors.bgDark - Rectangle { anchors.left: parent.left anchors.top: parent.top @@ -65,57 +70,97 @@ Scope { : Config.colors.purple } - RowLayout { - id: layout + ColumnLayout { + id: cardLayout anchors.fill: parent anchors.margins: 10 anchors.leftMargin: 18 - spacing: 10 - - Image { - Layout.preferredWidth: 36 - Layout.preferredHeight: 36 - Layout.alignment: Qt.AlignTop - fillMode: Image.PreserveAspectFit - visible: source.toString() !== "" - source: card.modelData.image || card.modelData.appIcon || "" - } + spacing: 8 - ColumnLayout { + RowLayout { Layout.fillWidth: true - spacing: 2 - - Text { - Layout.fillWidth: true - text: card.modelData.summary - color: Config.colors.cyan - - font.family: Config.bar.fontFamily - font.pixelSize: Config.bar.fontSize - font.bold: true - - elide: Text.ElideRight + spacing: 10 + + Image { + Layout.preferredWidth: 36 + Layout.preferredHeight: 36 + Layout.alignment: Qt.AlignTop + fillMode: Image.PreserveAspectFit + visible: source.toString() !== "" + source: card.modelData.image || card.modelData.appIcon || "" } - Text { + ColumnLayout { Layout.fillWidth: true - visible: text !== "" - text: card.modelData.body - color: Config.colors.fg - - font.family: Config.bar.fontFamily - font.pixelSize: Config.bar.fontSize - 1 + spacing: 2 + + Text { + Layout.fillWidth: true + text: card.modelData.summary + color: Config.colors.cyan + font.family: Config.bar.fontFamily + font.pixelSize: Config.bar.fontSize + font.bold: true + elide: Text.ElideRight + } + + Text { + Layout.fillWidth: true + visible: text !== "" + text: card.modelData.body + color: Config.colors.fg + font.family: Config.bar.fontFamily + font.pixelSize: Config.bar.fontSize - 1 + wrapMode: Text.WordWrap + maximumLineCount: 4 + elide: Text.ElideRight + } + } + } - wrapMode: Text.WordWrap + RowLayout { + Layout.fillWidth: true + visible: card.modelData.actions.length > 0 + spacing: 8 + + Repeater { + model: card.modelData.actions + + delegate: Rectangle { + required property var modelData + + Layout.fillWidth: true + Layout.preferredHeight: 26 + radius: 6 + color: actionArea.containsMouse ? Config.colors.purple : Qt.rgba(1, 1, 1, 0.05) + + Text { + anchors.centerIn: parent + text: parent.modelData.text + color: Config.colors.fg + font.family: Config.bar.fontFamily + font.pixelSize: Config.bar.fontSize - 2 + } + + MouseArea { + id: actionArea + anchors.fill: parent + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + onClicked: card.modelData.invokeAction(parent.modelData.identifier) + } + } } } } MouseArea { + id: hoverArea anchors.fill: parent hoverEnabled: true cursorShape: Qt.PointingHandCursor onClicked: card.modelData.dismiss() + z: -1 } } } |
