updates popout

This commit is contained in:
Zacharias-Brohn
2026-03-17 18:45:08 +01:00
parent 46a1af82f5
commit 152b363da2
10 changed files with 234 additions and 442 deletions
+130
View File
@@ -0,0 +1,130 @@
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import Quickshell
import qs.Config
import qs.Components
import qs.Modules
import qs.Helpers
Item {
id: root
required property var wrapper
implicitHeight: profiles.implicitHeight + Appearance.padding.small
implicitWidth: profiles.implicitWidth + Appearance.padding.small * 2
CustomRect {
id: profiles
anchors.horizontalCenter: parent.horizontalCenter
color: DynamicColors.tPalette.m3surfaceContainer
implicitHeight: updatesList.contentHeight + Appearance.padding.small * 2
implicitWidth: updatesList.contentWidth + Appearance.padding.small * 2
radius: Appearance.rounding.small
CustomListView {
id: updatesList
anchors.centerIn: parent
contentHeight: childrenRect.height
contentWidth: 600
implicitHeight: contentHeight
implicitWidth: contentWidth
spacing: Appearance.spacing.normal
delegate: CustomRect {
id: update
required property var modelData
readonly property list<string> sections: modelData.update.split(" ")
anchors.left: parent.left
anchors.right: parent.right
color: DynamicColors.tPalette.m3surfaceContainer
implicitHeight: 50 + Appearance.padding.smaller * 2
radius: Appearance.rounding.small - Appearance.padding.small
RowLayout {
anchors.fill: parent
anchors.leftMargin: Appearance.padding.smaller
anchors.rightMargin: Appearance.padding.smaller
MaterialIcon {
font.pointSize: Appearance.font.size.large * 2
text: "package_2"
}
ColumnLayout {
Layout.fillWidth: true
CustomText {
Layout.fillWidth: true
Layout.preferredHeight: 25
elide: Text.ElideRight
font.pointSize: Appearance.font.size.large
text: update.sections[0]
}
CustomText {
Layout.fillWidth: true
color: DynamicColors.palette.m3onSurfaceVariant
text: Updates.formatUpdateTime(update.modelData.timestamp)
}
}
RowLayout {
Layout.fillHeight: true
Layout.preferredWidth: 300
CustomText {
id: versionFrom
Layout.fillHeight: true
Layout.preferredWidth: 125
color: DynamicColors.palette.m3tertiary
elide: Text.ElideRight
font.pointSize: Appearance.font.size.large
horizontalAlignment: Text.AlignHCenter
text: update.sections[1]
verticalAlignment: Text.AlignVCenter
}
MaterialIcon {
Layout.fillHeight: true
color: DynamicColors.palette.m3secondary
font.pointSize: Appearance.font.size.extraLarge
horizontalAlignment: Text.AlignHCenter
text: "arrow_right_alt"
verticalAlignment: Text.AlignVCenter
}
CustomText {
id: versionTo
Layout.fillHeight: true
Layout.preferredWidth: 120
color: DynamicColors.palette.m3primary
elide: Text.ElideRight
font.pointSize: Appearance.font.size.large
horizontalAlignment: Text.AlignHCenter
text: update.sections[3]
verticalAlignment: Text.AlignVCenter
}
}
}
}
model: ScriptModel {
id: script
objectProp: "update"
values: Object.entries(Updates.updates).sort((a, b) => b[1] - a[1]).map(([update, timestamp]) => ({
update,
timestamp
}))
}
}
}
}
+36
View File
@@ -0,0 +1,36 @@
import QtQuick
import QtQuick.Layouts
import qs.Components
import qs.Modules
import qs.Helpers
import qs.Config
CustomRect {
id: root
property int countUpdates: Updates.availableUpdates
property color textColor: DynamicColors.palette.m3onSurface
color: DynamicColors.tPalette.m3surfaceContainer
implicitHeight: Config.barConfig.height + Appearance.padding.smallest * 2
implicitWidth: contentRow.implicitWidth + Appearance.spacing.smaller
radius: height / 2
RowLayout {
id: contentRow
anchors.centerIn: parent
spacing: Appearance.spacing.small
MaterialIcon {
font.pointSize: Appearance.font.size.larger
text: "package_2"
}
CustomText {
color: root.textColor
font.pointSize: Appearance.font.size.normal
text: root.countUpdates
}
}
}