diff options
| author | Freya Murphy <freya@freyacat.org> | 2026-01-22 09:02:54 -0500 |
|---|---|---|
| committer | Freya Murphy <freya@freyacat.org> | 2026-01-22 09:02:54 -0500 |
| commit | 25039abf05be0f1381fa74eb0a05032b1d636126 (patch) | |
| tree | 70b4b545756a2535e9bb2230376ff93945aab0df /modules/utilities | |
| parent | remove lockscreen (diff) | |
| download | caelestia-shell-25039abf05be0f1381fa74eb0a05032b1d636126.tar.gz caelestia-shell-25039abf05be0f1381fa74eb0a05032b1d636126.tar.bz2 caelestia-shell-25039abf05be0f1381fa74eb0a05032b1d636126.zip | |
fix rebase
Diffstat (limited to 'modules/utilities')
| -rw-r--r-- | modules/utilities/RecordingDeleteModal.qml | 207 | ||||
| -rw-r--r-- | modules/utilities/cards/RecordingList.qml | 241 |
2 files changed, 0 insertions, 448 deletions
diff --git a/modules/utilities/RecordingDeleteModal.qml b/modules/utilities/RecordingDeleteModal.qml deleted file mode 100644 index 127afe9..0000000 --- a/modules/utilities/RecordingDeleteModal.qml +++ /dev/null @@ -1,207 +0,0 @@ -pragma ComponentBehavior: Bound - -import qs.components -import qs.components.controls -import qs.components.effects -import qs.services -import qs.config -import Caelestia -import QtQuick -import QtQuick.Layouts -import QtQuick.Shapes - -Loader { - id: root - - required property var props - - anchors.fill: parent - - opacity: root.props.recordingConfirmDelete ? 1 : 0 - active: opacity > 0 - - sourceComponent: MouseArea { - id: deleteConfirmation - - property string path - - Component.onCompleted: path = root.props.recordingConfirmDelete - - hoverEnabled: true - onClicked: root.props.recordingConfirmDelete = "" - - Item { - anchors.fill: parent - anchors.margins: -Appearance.padding.large - anchors.rightMargin: -Appearance.padding.large - Config.border.thickness - anchors.bottomMargin: -Appearance.padding.large - Config.border.thickness - opacity: 0.5 - - StyledRect { - anchors.fill: parent - topLeftRadius: Config.border.rounding - color: Colours.palette.m3scrim - } - - Shape { - id: shape - - anchors.fill: parent - preferredRendererType: Shape.CurveRenderer - asynchronous: true - - ShapePath { - startX: -Config.border.rounding * 2 - startY: shape.height - Config.border.thickness - strokeWidth: 0 - fillGradient: LinearGradient { - orientation: LinearGradient.Horizontal - x1: -Config.border.rounding * 2 - - GradientStop { - position: 0 - color: Qt.alpha(Colours.palette.m3scrim, 0) - } - GradientStop { - position: 1 - color: Colours.palette.m3scrim - } - } - - PathLine { - relativeX: Config.border.rounding - relativeY: 0 - } - PathArc { - relativeY: -Config.border.rounding - radiusX: Config.border.rounding - radiusY: Config.border.rounding - direction: PathArc.Counterclockwise - } - PathLine { - relativeX: 0 - relativeY: Config.border.rounding + Config.border.thickness - } - PathLine { - relativeX: -Config.border.rounding * 2 - relativeY: 0 - } - } - - ShapePath { - startX: shape.width - Config.border.rounding - Config.border.thickness - strokeWidth: 0 - fillGradient: LinearGradient { - orientation: LinearGradient.Vertical - y1: -Config.border.rounding * 2 - - GradientStop { - position: 0 - color: Qt.alpha(Colours.palette.m3scrim, 0) - } - GradientStop { - position: 1 - color: Colours.palette.m3scrim - } - } - - PathArc { - relativeX: Config.border.rounding - relativeY: -Config.border.rounding - radiusX: Config.border.rounding - radiusY: Config.border.rounding - direction: PathArc.Counterclockwise - } - PathLine { - relativeX: 0 - relativeY: -Config.border.rounding - } - PathLine { - relativeX: Config.border.thickness - relativeY: 0 - } - PathLine { - relativeX: 0 - } - } - } - } - - StyledRect { - anchors.centerIn: parent - radius: Appearance.rounding.large - color: Colours.palette.m3surfaceContainerHigh - - scale: 0 - Component.onCompleted: scale = Qt.binding(() => root.props.recordingConfirmDelete ? 1 : 0) - - width: Math.min(parent.width - Appearance.padding.large * 2, implicitWidth) - implicitWidth: deleteConfirmationLayout.implicitWidth + Appearance.padding.large * 3 - implicitHeight: deleteConfirmationLayout.implicitHeight + Appearance.padding.large * 3 - - MouseArea { - anchors.fill: parent - } - - Elevation { - anchors.fill: parent - radius: parent.radius - z: -1 - level: 3 - } - - ColumnLayout { - id: deleteConfirmationLayout - - anchors.fill: parent - anchors.margins: Appearance.padding.large * 1.5 - spacing: Appearance.spacing.normal - - StyledText { - text: qsTr("Delete recording?") - font.pointSize: Appearance.font.size.large - } - - StyledText { - Layout.fillWidth: true - text: qsTr("Recording '%1' will be permanently deleted.").arg(deleteConfirmation.path) - color: Colours.palette.m3onSurfaceVariant - font.pointSize: Appearance.font.size.small - wrapMode: Text.WrapAtWordBoundaryOrAnywhere - } - - RowLayout { - Layout.topMargin: Appearance.spacing.normal - Layout.alignment: Qt.AlignRight - spacing: Appearance.spacing.normal - - TextButton { - text: qsTr("Cancel") - type: TextButton.Text - onClicked: root.props.recordingConfirmDelete = "" - } - - TextButton { - text: qsTr("Delete") - type: TextButton.Text - onClicked: { - CUtils.deleteFile(Qt.resolvedUrl(root.props.recordingConfirmDelete)); - root.props.recordingConfirmDelete = ""; - } - } - } - } - - Behavior on scale { - Anim { - duration: Appearance.anim.durations.expressiveDefaultSpatial - easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial - } - } - } - } - - Behavior on opacity { - Anim {} - } -} diff --git a/modules/utilities/cards/RecordingList.qml b/modules/utilities/cards/RecordingList.qml deleted file mode 100644 index b9d757a..0000000 --- a/modules/utilities/cards/RecordingList.qml +++ /dev/null @@ -1,241 +0,0 @@ -pragma ComponentBehavior: Bound - -import qs.components -import qs.components.controls -import qs.components.containers -import qs.services -import qs.config -import qs.utils -import Caelestia -import Caelestia.Models -import Quickshell -import Quickshell.Widgets -import QtQuick -import QtQuick.Layouts - -ColumnLayout { - id: root - - required property var props - required property var visibilities - - spacing: 0 - - WrapperMouseArea { - Layout.fillWidth: true - - cursorShape: Qt.PointingHandCursor - onClicked: root.props.recordingListExpanded = !root.props.recordingListExpanded - - RowLayout { - spacing: Appearance.spacing.smaller - - MaterialIcon { - Layout.alignment: Qt.AlignVCenter - text: "list" - font.pointSize: Appearance.font.size.large - } - - StyledText { - Layout.alignment: Qt.AlignVCenter - Layout.fillWidth: true - text: qsTr("Recordings") - font.pointSize: Appearance.font.size.normal - } - - IconButton { - icon: root.props.recordingListExpanded ? "unfold_less" : "unfold_more" - type: IconButton.Text - label.animate: true - onClicked: root.props.recordingListExpanded = !root.props.recordingListExpanded - } - } - } - - StyledListView { - id: list - - model: FileSystemModel { - path: Paths.recsdir - nameFilters: ["recording_*.mp4"] - sortReverse: true - } - - Layout.fillWidth: true - Layout.rightMargin: -Appearance.spacing.small - implicitHeight: (Appearance.font.size.larger + Appearance.padding.small) * (root.props.recordingListExpanded ? 10 : 3) - clip: true - - StyledScrollBar.vertical: StyledScrollBar { - flickable: list - } - - delegate: RowLayout { - id: recording - - required property FileSystemEntry modelData - property string baseName - - anchors.left: list.contentItem.left - anchors.right: list.contentItem.right - anchors.rightMargin: Appearance.spacing.small - spacing: Appearance.spacing.small / 2 - - Component.onCompleted: baseName = modelData.baseName - - StyledText { - Layout.fillWidth: true - Layout.rightMargin: Appearance.spacing.small / 2 - text: { - const time = recording.baseName; - const matches = time.match(/^recording_(\d{4})(\d{2})(\d{2})_(\d{2})-(\d{2})-(\d{2})/); - if (!matches) - return time; - const date = new Date(...matches.slice(1)); - date.setMonth(date.getMonth() - 1); // Woe (months start from 0) - return qsTr("Recording at %1").arg(Qt.formatDateTime(date, Qt.locale())); - } - color: Colours.palette.m3onSurfaceVariant - elide: Text.ElideRight - } - - IconButton { - icon: "play_arrow" - type: IconButton.Text - onClicked: { - root.visibilities.utilities = false; - root.visibilities.sidebar = false; - Quickshell.execDetached(["app2unit", "--", ...Config.general.apps.playback, recording.modelData.path]); - } - } - - IconButton { - icon: "folder" - type: IconButton.Text - onClicked: { - root.visibilities.utilities = false; - root.visibilities.sidebar = false; - Quickshell.execDetached(["app2unit", "--", ...Config.general.apps.explorer, recording.modelData.path]); - } - } - - IconButton { - icon: "delete_forever" - type: IconButton.Text - label.color: Colours.palette.m3error - stateLayer.color: Colours.palette.m3error - onClicked: root.props.recordingConfirmDelete = recording.modelData.path - } - } - - add: Transition { - Anim { - property: "opacity" - from: 0 - to: 1 - } - Anim { - property: "scale" - from: 0.5 - to: 1 - } - } - - remove: Transition { - Anim { - property: "opacity" - to: 0 - } - Anim { - property: "scale" - to: 0.5 - } - } - - displaced: Transition { - Anim { - properties: "opacity,scale" - to: 1 - } - Anim { - property: "y" - } - } - - Loader { - anchors.centerIn: parent - - opacity: list.count === 0 ? 1 : 0 - active: opacity > 0 - - sourceComponent: ColumnLayout { - spacing: Appearance.spacing.small - - MaterialIcon { - Layout.alignment: Qt.AlignHCenter - text: "scan_delete" - color: Colours.palette.m3outline - font.pointSize: Appearance.font.size.extraLarge - - opacity: root.props.recordingListExpanded ? 1 : 0 - scale: root.props.recordingListExpanded ? 1 : 0 - Layout.preferredHeight: root.props.recordingListExpanded ? implicitHeight : 0 - - Behavior on opacity { - Anim {} - } - - Behavior on scale { - Anim {} - } - - Behavior on Layout.preferredHeight { - Anim {} - } - } - - RowLayout { - spacing: Appearance.spacing.smaller - - MaterialIcon { - Layout.alignment: Qt.AlignHCenter - text: "scan_delete" - color: Colours.palette.m3outline - - opacity: !root.props.recordingListExpanded ? 1 : 0 - scale: !root.props.recordingListExpanded ? 1 : 0 - Layout.preferredWidth: !root.props.recordingListExpanded ? implicitWidth : 0 - - Behavior on opacity { - Anim {} - } - - Behavior on scale { - Anim {} - } - - Behavior on Layout.preferredWidth { - Anim {} - } - } - - StyledText { - text: qsTr("No recordings found") - color: Colours.palette.m3outline - } - } - } - - Behavior on opacity { - Anim {} - } - } - - Behavior on implicitHeight { - Anim { - duration: Appearance.anim.durations.expressiveDefaultSpatial - easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial - } - } - } -} |