expose repeat mode through MPRIS

This commit is contained in:
Drew Weymouth
2023-07-13 13:12:57 -07:00
parent 41053a22a8
commit a12b6dd276
4 changed files with 61 additions and 10 deletions
+27 -2
View File
@@ -15,8 +15,9 @@ import (
const dbusTrackIDPrefix = "/Supersonic/Track/"
var (
_ types.OrgMprisMediaPlayer2Adapter = (*MPRISHandler)(nil)
_ types.OrgMprisMediaPlayer2PlayerAdapter = (*MPRISHandler)(nil)
_ types.OrgMprisMediaPlayer2Adapter = (*MPRISHandler)(nil)
_ types.OrgMprisMediaPlayer2PlayerAdapter = (*MPRISHandler)(nil)
_ types.OrgMprisMediaPlayer2PlayerAdapterLoopStatus = (*MPRISHandler)(nil)
)
var (
@@ -186,6 +187,30 @@ func (m *MPRISHandler) PlaybackStatus() (types.PlaybackStatus, error) {
return "", errors.New("unknown playback status")
}
func (m *MPRISHandler) LoopStatus() (types.LoopStatus, error) {
switch m.pm.LoopMode() {
case LoopModeAll:
return types.LoopStatusPlaylist, nil
case LoopModeOne:
return types.LoopStatusTrack, nil
case LoopModeNone:
return types.LoopStatusNone, nil
}
return "", errors.New("unknown loop status")
}
func (m *MPRISHandler) SetLoopStatus(status types.LoopStatus) error {
switch status {
case types.LoopStatusPlaylist:
return m.pm.SetLoopMode(LoopModeAll)
case types.LoopStatusTrack:
return m.pm.SetLoopMode(LoopModeOne)
case types.LoopStatusNone:
return m.pm.SetLoopMode(LoopModeNone)
}
return errors.New("unknown loop status")
}
func (m *MPRISHandler) Rate() (float64, error) {
return 1, nil
}