summaryrefslogtreecommitdiff
path: root/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modals/Changelog/ChangelogModal.qml
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modals/Changelog/ChangelogModal.qml')
-rw-r--r--raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modals/Changelog/ChangelogModal.qml156
1 files changed, 156 insertions, 0 deletions
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modals/Changelog/ChangelogModal.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modals/Changelog/ChangelogModal.qml
new file mode 100644
index 0000000..524298b
--- /dev/null
+++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/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;
+ }
+}