diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Modals/Changelog')
4 files changed, 511 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogContent.qml b/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogContent.qml new file mode 100644 index 0000000..8fd3129 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogContent.qml @@ -0,0 +1,250 @@ +import QtQuick +import QtQuick.Effects +import qs.Common +import qs.Services +import qs.Widgets + +Column { + id: root + + readonly property real logoSize: Math.round(Theme.iconSize * 2.8) + readonly property real badgeHeight: Math.round(Theme.fontSizeSmall * 1.7) + + topPadding: Theme.spacingL + spacing: Theme.spacingL + + Column { + width: parent.width + spacing: Theme.spacingM + + Row { + anchors.horizontalCenter: parent.horizontalCenter + spacing: Theme.spacingM + + Image { + width: root.logoSize + height: width * (569.94629 / 506.50931) + anchors.verticalCenter: parent.verticalCenter + fillMode: Image.PreserveAspectFit + smooth: true + mipmap: true + asynchronous: true + source: "file://" + Theme.shellDir + "/assets/danklogonormal.svg" + layer.enabled: true + layer.smooth: true + layer.mipmap: true + layer.effect: MultiEffect { + saturation: 0 + colorization: 1 + colorizationColor: Theme.primary + } + } + + Column { + anchors.verticalCenter: parent.verticalCenter + spacing: Theme.spacingXS + + Row { + spacing: Theme.spacingS + + StyledText { + text: "DMS " + ChangelogService.currentVersion + font.pixelSize: Theme.fontSizeXLarge + 2 + font.weight: Font.Bold + color: Theme.surfaceText + anchors.verticalCenter: parent.verticalCenter + } + + Rectangle { + width: codenameText.implicitWidth + Theme.spacingM * 2 + height: root.badgeHeight + radius: root.badgeHeight / 2 + color: Theme.primaryContainer + anchors.verticalCenter: parent.verticalCenter + + StyledText { + id: codenameText + anchors.centerIn: parent + text: "Saffron Bloom" + font.pixelSize: Theme.fontSizeSmall + font.weight: Font.Medium + color: Theme.primary + } + } + } + + StyledText { + text: "New launcher, enhanced plugin system, KDE Connect, & more" + font.pixelSize: Theme.fontSizeMedium + color: Theme.surfaceVariantText + } + } + } + } + + Rectangle { + width: parent.width + height: 1 + color: Theme.outlineMedium + opacity: 0.3 + } + + Column { + width: parent.width + spacing: Theme.spacingM + + StyledText { + text: "What's New" + font.pixelSize: Theme.fontSizeMedium + font.weight: Font.Medium + color: Theme.surfaceText + } + + Grid { + width: parent.width + columns: 2 + rowSpacing: Theme.spacingS + columnSpacing: Theme.spacingS + + ChangelogFeatureCard { + width: (parent.width - Theme.spacingS) / 2 + iconName: "space_dashboard" + title: "Dank Launcher V2" + description: "New capabilities & plugins" + onClicked: PopoutService.openDankLauncherV2() + } + + ChangelogFeatureCard { + width: (parent.width - Theme.spacingS) / 2 + iconName: "smartphone" + title: "Phone Connect" + description: "KDE Connect & Valent" + onClicked: Qt.openUrlExternally("https://github.com/AvengeMedia/dms-plugins/tree/master/DankKDEConnect") + } + + ChangelogFeatureCard { + width: (parent.width - Theme.spacingS) / 2 + iconName: "monitor_heart" + title: "System Monitor" + description: "Redesigned process list" + onClicked: PopoutService.showProcessListModal() + } + + ChangelogFeatureCard { + width: (parent.width - Theme.spacingS) / 2 + iconName: "window" + title: "Window Rules" + description: "niri window rule manager" + visible: CompositorService.isNiri + onClicked: PopoutService.openSettingsWithTab("window_rules") + } + + ChangelogFeatureCard { + width: (parent.width - Theme.spacingS) / 2 + iconName: "notifications_active" + title: "Enhanced Notifications" + description: "Configurable rules & styling" + visible: !CompositorService.isNiri + onClicked: PopoutService.openSettingsWithTab("notifications") + } + + ChangelogFeatureCard { + width: (parent.width - Theme.spacingS) / 2 + iconName: "dock_to_bottom" + title: "Dock Enhancements" + description: "Bar dock widget & more" + onClicked: PopoutService.openSettingsWithTab("dock") + } + + ChangelogFeatureCard { + width: (parent.width - Theme.spacingS) / 2 + iconName: "volume_up" + title: "Audio Aliases" + description: "Custom device names" + onClicked: PopoutService.openSettingsWithTab("audio") + } + + ChangelogFeatureCard { + width: (parent.width - Theme.spacingS) / 2 + iconName: "extension" + title: "Enhanced Plugin System" + description: "Enables new types of plugins" + onClicked: PopoutService.openSettingsWithTab("plugins") + } + + ChangelogFeatureCard { + width: (parent.width - Theme.spacingS) / 2 + iconName: "light_mode" + title: "Auto Light/Dark" + description: "Automatic mode switching" + onClicked: PopoutService.openSettingsWithTab("theme") + } + } + } + + Rectangle { + width: parent.width + height: 1 + color: Theme.outlineMedium + opacity: 0.3 + } + + Column { + width: parent.width + spacing: Theme.spacingS + + Row { + spacing: Theme.spacingS + + DankIcon { + name: "warning" + size: Theme.iconSizeSmall + color: Theme.warning + anchors.verticalCenter: parent.verticalCenter + } + + StyledText { + text: "Upgrade Notes" + font.pixelSize: Theme.fontSizeMedium + font.weight: Font.Medium + color: Theme.surfaceText + anchors.verticalCenter: parent.verticalCenter + } + } + + Rectangle { + width: parent.width + height: upgradeNotesColumn.height + Theme.spacingM * 2 + radius: Theme.cornerRadius + color: Theme.withAlpha(Theme.warning, 0.08) + border.width: 1 + border.color: Theme.withAlpha(Theme.warning, 0.2) + + Column { + id: upgradeNotesColumn + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.margins: Theme.spacingM + spacing: Theme.spacingS + + ChangelogUpgradeNote { + width: parent.width + text: "Spotlight replaced by Dank Launcher V2 — check settings for new options" + } + + ChangelogUpgradeNote { + width: parent.width + text: "Plugin API updated — third-party plugins may need updates" + } + } + } + + // StyledText { + // text: "See full release notes for migration steps" + // font.pixelSize: Theme.fontSizeSmall + // color: Theme.surfaceVariantText + // width: parent.width + // } + } +} diff --git a/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogFeatureCard.qml b/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogFeatureCard.qml new file mode 100644 index 0000000..eab4f70 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogFeatureCard.qml @@ -0,0 +1,78 @@ +import QtQuick +import qs.Common +import qs.Widgets + +Rectangle { + id: root + + property string iconName: "" + property string title: "" + property string description: "" + + signal clicked + + readonly property real iconContainerSize: Math.round(Theme.iconSize * 1.3) + + height: Math.round(Theme.fontSizeMedium * 4.2) + radius: Theme.cornerRadius + color: Theme.surfaceContainerHigh + + Rectangle { + anchors.fill: parent + radius: parent.radius + color: Theme.primary + opacity: mouseArea.containsMouse ? 0.12 : 0 + } + + Row { + anchors.left: parent.left + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + anchors.margins: Theme.spacingM + spacing: Theme.spacingS + + Rectangle { + width: root.iconContainerSize + height: root.iconContainerSize + radius: Math.round(root.iconContainerSize * 0.28) + color: Theme.primaryContainer + anchors.verticalCenter: parent.verticalCenter + + DankIcon { + anchors.centerIn: parent + name: root.iconName + size: Theme.iconSize - 6 + color: Theme.primary + } + } + + Column { + anchors.verticalCenter: parent.verticalCenter + spacing: 2 + width: parent.width - root.iconContainerSize - Theme.spacingS + + StyledText { + text: root.title + font.pixelSize: Theme.fontSizeSmall + font.weight: Font.Medium + color: Theme.surfaceText + } + + StyledText { + text: root.description + font.pixelSize: Theme.fontSizeSmall - 1 + color: Theme.surfaceVariantText + width: parent.width + elide: Text.ElideRight + } + } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + onClicked: root.clicked() + } +} diff --git a/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogModal.qml b/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogModal.qml new file mode 100644 index 0000000..524298b --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogModal.qml @@ -0,0 +1,156 @@ +import QtQuick +import Quickshell +import qs.Common +import qs.Services +import qs.Widgets + +FloatingWindow { + id: root + + property bool disablePopupTransparency: true + readonly property int modalWidth: 680 + readonly property int modalHeight: screen ? Math.min(720, screen.height - 80) : 720 + + signal changelogDismissed + + function show() { + visible = true; + } + + objectName: "changelogModal" + title: i18n("What's New") + minimumSize: Qt.size(modalWidth, modalHeight) + maximumSize: Qt.size(modalWidth, modalHeight) + color: Theme.surfaceContainer + visible: false + + FocusScope { + id: contentFocusScope + anchors.fill: parent + focus: true + + Keys.onEscapePressed: event => { + root.dismiss(); + event.accepted = true; + } + + Keys.onPressed: event => { + switch (event.key) { + case Qt.Key_Return: + case Qt.Key_Enter: + root.dismiss(); + event.accepted = true; + break; + } + } + + MouseArea { + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + height: headerRow.height + Theme.spacingM + onPressed: windowControls.tryStartMove() + onDoubleClicked: windowControls.tryToggleMaximize() + } + + Item { + id: headerRow + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.margins: Theme.spacingM + height: Math.round(Theme.fontSizeMedium * 2.85) + + Row { + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + spacing: Theme.spacingXS + + DankActionButton { + visible: windowControls.supported && windowControls.canMaximize + iconName: root.maximized ? "fullscreen_exit" : "fullscreen" + iconSize: Theme.iconSize - 4 + iconColor: Theme.surfaceText + onClicked: windowControls.tryToggleMaximize() + } + + DankActionButton { + iconName: "close" + iconSize: Theme.iconSize - 4 + iconColor: Theme.surfaceText + onClicked: root.dismiss() + + DankTooltip { + text: i18n("Close") + } + } + } + } + + DankFlickable { + anchors.left: parent.left + anchors.right: parent.right + anchors.top: headerRow.bottom + anchors.bottom: footerRow.top + anchors.topMargin: Theme.spacingS + clip: true + contentHeight: mainColumn.height + Theme.spacingL * 2 + contentWidth: width + + ChangelogContent { + id: mainColumn + anchors.horizontalCenter: parent.horizontalCenter + width: Math.min(600, parent.width - Theme.spacingXL * 2) + } + } + + Rectangle { + id: footerRow + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + height: Math.round(Theme.fontSizeMedium * 4.5) + color: Theme.surfaceContainerHigh + + Rectangle { + anchors.top: parent.top + width: parent.width + height: 1 + color: Theme.outlineMedium + opacity: 0.5 + } + + Row { + anchors.centerIn: parent + spacing: Theme.spacingM + + DankButton { + text: i18n("Read Full Release Notes") + iconName: "open_in_new" + backgroundColor: Theme.surfaceContainerHighest + textColor: Theme.surfaceText + onClicked: Qt.openUrlExternally("https://danklinux.com/blog/v1-4-release") + } + + DankButton { + text: i18n("Got It") + iconName: "check" + backgroundColor: Theme.primary + textColor: Theme.primaryText + onClicked: root.dismiss() + } + } + } + } + + FloatingWindowControls { + id: windowControls + targetWindow: root + } + + function dismiss() { + ChangelogService.dismissChangelog(); + changelogDismissed(); + visible = false; + } +} diff --git a/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogUpgradeNote.qml b/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogUpgradeNote.qml new file mode 100644 index 0000000..545eb9a --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Modals/Changelog/ChangelogUpgradeNote.qml @@ -0,0 +1,27 @@ +import QtQuick +import qs.Common +import qs.Widgets + +Row { + id: root + + property alias text: noteText.text + + spacing: Theme.spacingS + + DankIcon { + name: "arrow_right" + size: Theme.iconSizeSmall - 2 + color: Theme.surfaceVariantText + anchors.top: parent.top + anchors.topMargin: 2 + } + + StyledText { + id: noteText + width: root.width - Theme.iconSizeSmall - Theme.spacingS + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceText + wrapMode: Text.WordWrap + } +} |