quickshell/modules/notifications/NotificationCard.qml

85 lines
2.2 KiB
QML
Raw Normal View History

2026-01-18 18:26:49 +01:00
import QtQuick
2026-01-23 18:29:59 +01:00
import qs.settings
2026-01-18 18:26:49 +01:00
import QtQuick.Layouts
import qs
2026-01-19 18:57:19 +01:00
import qs.modules.bar
import qs.reusables
2026-01-18 18:26:49 +01:00
import Quickshell.Widgets
Rectangle {
id: notifyItem
required property var modelData
implicitWidth: ListView.view ? ListView.view.width : 300
implicitHeight: fullLayout.implicitHeight + 20
2026-02-16 23:32:00 +01:00
color: dismissArea.containsMouse ? Colors.primaryContainer : Colors.surfaceContainer
2026-01-19 18:57:19 +01:00
radius: 22
2026-02-16 23:32:00 +01:00
border.width: 1
border.color: Colors.outline
2026-01-18 18:26:49 +01:00
Timer {
id: dismissTimer
interval: 5000
running: true
2026-01-24 14:12:02 +01:00
onTriggered: {
parent.modelData.expire();
}
2026-01-18 18:26:49 +01:00
}
RowLayout {
id: fullLayout
anchors.margins: 10
anchors.fill: parent
spacing: 10
ClippingWrapperRectangle {
id: notiIcon
radius: notifyItem.radius - notifyItem.radius / 3
implicitWidth: 64
2026-02-03 23:59:00 +01:00
color: "transparent"
2026-01-18 18:26:49 +01:00
implicitHeight: 64
visible: notifyItem.modelData.image !== ""
IconImage {
source: notifyItem.modelData.image
visible: notifyItem.modelData.image !== ""
implicitSize: 64
2026-01-18 18:26:49 +01:00
asynchronous: true
}
}
ColumnLayout {
id: textLayout
Layout.fillWidth: true
Layout.alignment: Qt.AlignTop
spacing: 2
CustomText {
id: summary
text: notifyItem.modelData.summary
font.bold: true
elide: Text.ElideRight
Layout.fillWidth: true
onTextChanged: {
dismissTimer.restart();
}
}
CustomText {
text: notifyItem.modelData.body
2026-01-23 18:29:59 +01:00
font.pixelSize: Settings.config.fontSize - 2
2026-01-18 18:26:49 +01:00
maximumLineCount: 2
wrapMode: Text.WordWrap
elide: Text.ElideRight
Layout.fillWidth: true
}
}
}
MouseArea {
id: dismissArea
anchors.fill: parent
acceptedButtons: Qt.LeftButton
onClicked: notifyItem.modelData.dismiss()
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
}
}