Skip to content

Commit 3fe6d77

Browse files
committed
feat: right click on Desktop to change/play/pause/mute video
refs: #72
1 parent b87f408 commit 3fe6d77

File tree

2 files changed

+74
-1
lines changed

2 files changed

+74
-1
lines changed

package/contents/ui/code/enum.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const PlaybackOverride = {
2+
Play: 0,
3+
Pause: 1,
4+
Default: 2,
5+
};
6+
7+
const MuteOverride = {
8+
Mute: 0,
9+
Unmute: 1,
10+
Default: 2,
11+
};

package/contents/ui/main.qml

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@
2020

2121
import QtQuick
2222
import QtMultimedia
23+
import org.kde.plasma.core as PlasmaCore
2324
import org.kde.plasma.plasma5support as P5Support
2425
import org.kde.plasma.plasmoid
2526
import Qt5Compat.GraphicalEffects
2627
import org.kde.plasma.extras as PlasmaExtras
2728
import org.kde.kirigami as Kirigami
2829
import "code/utils.js" as Utils
30+
import "code/enum.js" as Enum
2931

3032
WallpaperItem {
3133
anchors.fill: parent
@@ -40,6 +42,13 @@ WallpaperItem {
4042
if (lockScreenMode) {
4143
return true
4244
}
45+
46+
if (playbackOverride === Enum.PlaybackOverride.Play) {
47+
return true
48+
} else if (playbackOverride === Enum.PlaybackOverride.Pause) {
49+
return false
50+
}
51+
4352
let play = false
4453
switch(main.configuration.PauseMode) {
4554
case 0:
@@ -56,7 +65,9 @@ WallpaperItem {
5665
}
5766
return play
5867
}
59-
property bool playing: (shouldPlay && !batteryPausesVideo && !screenLocked && !screenIsOff && !effectPauseVideo) || effectPlayVideo
68+
property bool playing: {
69+
return (shouldPlay && !batteryPausesVideo && !screenLocked && !screenIsOff && !effectPauseVideo) || effectPlayVideo
70+
}
6071
property bool shouldBlur: {
6172
let blur = false
6273
switch(main.configuration.BlurMode) {
@@ -116,6 +127,13 @@ WallpaperItem {
116127
property int lastVideoPosition: main.configuration.LastVideoPosition
117128
property bool restoreLastPosition: true
118129
property bool muteAudio: {
130+
131+
if (muteOverride === Enum.MuteOverride.Mute) {
132+
return true
133+
} else if (muteOverride === Enum.MuteOverride.Unmute) {
134+
return false
135+
}
136+
119137
let mute = false
120138
switch(main.configuration.MuteMode) {
121139
case 0:
@@ -479,4 +497,48 @@ WallpaperItem {
479497
main.lockScreenMode = "source" in window && window.source.toString().endsWith("LockScreen.qml")
480498
}
481499
}
500+
501+
property int playbackOverride: Enum.PlaybackOverride.Default
502+
property int muteOverride: Enum.MuteOverride.Default
503+
504+
contextualActions: [
505+
PlasmaCore.Action {
506+
text: i18n("Next Video")
507+
icon.name: "media-skip-forward"
508+
onTriggered: {
509+
nextVideo()
510+
tick = true
511+
player2.pause()
512+
videoOutput.opacity = 1
513+
player1.source = currentSource
514+
player1.play()
515+
}
516+
},
517+
PlasmaCore.Action {
518+
text: {
519+
if (main.playbackOverride === Enum.PlaybackOverride.Play) {
520+
return i18n("Pause")
521+
} else if (main.playbackOverride === Enum.PlaybackOverride.Pause) {
522+
return i18n("Default")
523+
} else {
524+
return i18n("Play")
525+
}
526+
}
527+
icon.name: main.playing ? "media-playback-start" : "media-playback-pause"
528+
onTriggered: main.playbackOverride = (main.playbackOverride + 1) % 3
529+
},
530+
PlasmaCore.Action {
531+
text: {
532+
if (main.muteOverride === Enum.MuteOverride.Mute) {
533+
return i18n("Unmute")
534+
} else if (main.muteOverride === Enum.MuteOverride.Unmute) {
535+
return i18n("Default")
536+
} else {
537+
return i18n("Mute")
538+
}
539+
}
540+
icon.name: main.muteAudio ? "audio-volume-muted" : "audio-volume-high"
541+
onTriggered: main.muteOverride = (main.muteOverride + 1) % 3
542+
}
543+
]
482544
}

0 commit comments

Comments
 (0)