summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-07-31 21:29:59 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-07-31 21:29:59 +1000
commit7ef94120dfa7944dd948535b56526cc62ed79333 (patch)
tree0e18ba212a4e7012a6929494a594c307b7ba93bf /modules
parentconfig: respect user locale for twelve hour clock & temperature (#290) (diff)
downloadcaelestia-shell-7ef94120dfa7944dd948535b56526cc62ed79333.tar.gz
caelestia-shell-7ef94120dfa7944dd948535b56526cc62ed79333.tar.bz2
caelestia-shell-7ef94120dfa7944dd948535b56526cc62ed79333.zip
dashboard: better play button
Diffstat (limited to 'modules')
-rw-r--r--modules/dashboard/Media.qml90
1 files changed, 63 insertions, 27 deletions
diff --git a/modules/dashboard/Media.qml b/modules/dashboard/Media.qml
index ba0c8f3..ef856b0 100644
--- a/modules/dashboard/Media.qml
+++ b/modules/dashboard/Media.qml
@@ -40,10 +40,8 @@ Item {
implicitHeight: Math.max(cover.implicitHeight + Config.dashboard.sizes.mediaVisualiserSize * 2, details.implicitHeight, bongocat.implicitHeight) + Appearance.padding.large * 2
Behavior on playerProgress {
- NumberAnimation {
+ Anim {
duration: Appearance.anim.durations.large
- easing.type: Easing.BezierSpline
- easing.bezierCurve: Appearance.anim.curves.standard
}
}
@@ -191,7 +189,7 @@ Item {
spacing: Appearance.spacing.small
- Control {
+ PlayerControl {
icon: "skip_previous"
canUse: Players.active?.canGoPrevious ?? false
@@ -200,17 +198,59 @@ Item {
}
}
- Control {
- icon: Players.active?.isPlaying ? "pause" : "play_arrow"
- canUse: Players.active?.canTogglePlaying ?? false
- primary: true
+ StyledRect {
+ id: playBtn
+ property int fontSize: Appearance.font.size.extraLarge
+ property int padding
+ property bool fill: true
+ property bool primary
function onClicked(): void {
- Players.active?.togglePlaying();
+ }
+
+ implicitWidth: Math.max(playIcon.implicitWidth, playIcon.implicitHeight) + padding * 2
+ implicitHeight: implicitWidth
+
+ radius: Players.active?.isPlaying ? Appearance.rounding.small : implicitHeight / 2
+ color: {
+ if (!Players.active?.canTogglePlaying)
+ return Qt.alpha(Colours.palette.m3onSurface, 0.1);
+ return Players.active?.isPlaying ? Colours.palette.m3primary : Colours.palette.m3primaryContainer;
+ }
+
+ StateLayer {
+ disabled: !Players.active?.canTogglePlaying
+ color: Players.active?.isPlaying ? Colours.palette.m3onPrimary : Colours.palette.m3onPrimaryContainer
+
+ function onClicked(): void {
+ Players.active?.togglePlaying();
+ }
+ }
+
+ MaterialIcon {
+ id: playIcon
+
+ anchors.centerIn: parent
+ anchors.horizontalCenterOffset: -font.pointSize * 0.02
+ anchors.verticalCenterOffset: font.pointSize * 0.02
+
+ animate: true
+ fill: 1
+ text: Players.active?.isPlaying ? "pause" : "play_arrow"
+ color: {
+ if (!Players.active?.canTogglePlaying)
+ return Qt.alpha(Colours.palette.m3onSurface, 0.38);
+ return Players.active?.isPlaying ? Colours.palette.m3onPrimary : Colours.palette.m3onPrimaryContainer;
+ }
+ font.pointSize: Appearance.font.size.extraLarge
+ }
+
+ Behavior on radius {
+ Anim {}
}
}
- Control {
+ PlayerControl {
icon: "skip_next"
canUse: Players.active?.canGoNext ?? false
@@ -313,7 +353,7 @@ Item {
Layout.alignment: Qt.AlignHCenter
spacing: Appearance.spacing.small
- Control {
+ PlayerControl {
icon: "flip_to_front"
canUse: Players.active?.canRaise ?? false
fontSize: Appearance.font.size.larger
@@ -350,11 +390,7 @@ Item {
spread: 0
Behavior on opacity {
- NumberAnimation {
- duration: Appearance.anim.durations.normal
- easing.type: Easing.BezierSpline
- easing.bezierCurve: Appearance.anim.curves.standard
- }
+ Anim {}
}
}
@@ -485,9 +521,7 @@ Item {
}
Behavior on implicitHeight {
- NumberAnimation {
- duration: Appearance.anim.durations.normal
- easing.type: Easing.BezierSpline
+ Anim {
easing.bezierCurve: Appearance.anim.curves.emphasized
}
}
@@ -495,7 +529,7 @@ Item {
}
}
- Control {
+ PlayerControl {
icon: "delete"
canUse: Players.active?.canQuit ?? false
fontSize: Appearance.font.size.larger
@@ -555,7 +589,7 @@ Item {
}
}
- component Control: StyledRect {
+ component PlayerControl: StyledRect {
id: control
required property string icon
@@ -563,20 +597,16 @@ Item {
property int fontSize: Appearance.font.size.extraLarge
property int padding
property bool fill: true
- property bool primary
function onClicked(): void {
}
implicitWidth: Math.max(icon.implicitWidth, icon.implicitHeight) + padding * 2
implicitHeight: implicitWidth
-
radius: Appearance.rounding.full
- color: primary && canUse ? Colours.palette.m3primary : "transparent"
StateLayer {
disabled: !control.canUse
- radius: parent.radius
- color: control.primary ? Colours.palette.m3onPrimary : Colours.palette.m3onSurface
+ color: Colours.palette.m3onSurface
function onClicked(): void {
control.onClicked();
@@ -593,8 +623,14 @@ Item {
animate: true
fill: control.fill ? 1 : 0
text: control.icon
- color: control.canUse ? control.primary ? Colours.palette.m3onPrimary : Colours.palette.m3onSurface : Colours.palette.m3outline
+ color: control.canUse ? Colours.palette.m3onSurface : Colours.palette.m3outline
font.pointSize: control.fontSize
}
}
+
+ component Anim: NumberAnimation {
+ duration: Appearance.anim.durations.normal
+ easing.type: Easing.BezierSpline
+ easing.bezierCurve: Appearance.anim.curves.standard
+ }
}