mirror of
https://git.srhtnin.garden/sarah/SaraTune.git
synced 2026-10-14 18:18:11 +02:00
Media controls (MPRIS, Windows SMTC); stop old tracks when switching
This commit is contained in:
1 parent
e2d7515e08
commit
d7f5eba1c2
14 files changed
+799
-26
No files matched your search
+9
-2
@@ -11,7 +11,7 @@ import flet as ft
|
||||
|
||||
from Core import AudioExtensions, DisplayPath, Home, IsAudioFile, Note, Palette
|
||||
from Covers import CoverFor
|
||||
from Metadata import ReadDetails, ReadTrack
|
||||
from Metadata import ReadDetails, ReadTrack, Track
|
||||
from Player import Player
|
||||
from Transport import CoverImage, Transport
|
||||
from Widgets import App, EmptyState, InfoTable
|
||||
@@ -36,6 +36,7 @@ class AudioMode(ft.Column):
|
||||
self.Rows: dict[str, ft.Container] = {}
|
||||
self.Current: Optional[str] = None
|
||||
self.AutoAdvance = TheApp.Config.AudioAutoAdvance
|
||||
self.NowPlaying: Optional[Track] = None # for the system media controls
|
||||
|
||||
ThePlayer.OnEnded = lambda: TheApp.Page.run_task(self._Ended)
|
||||
ThePlayer.OnChanged = lambda: self.Bar.Refresh()
|
||||
@@ -193,7 +194,9 @@ class AudioMode(ft.Column):
|
||||
self.TheApp.Notify(f"{Path(FilePath).name} is gone.", "error")
|
||||
return
|
||||
self.Current = FilePath
|
||||
self.NowPlaying = Info
|
||||
await self.ThePlayer.Load(FilePath, Duration=Info.Duration) # errors arrive through OnError
|
||||
self.TheApp.MediaChanged()
|
||||
self._Highlight()
|
||||
self._Show(self.List)
|
||||
self._ScrollTo(FilePath)
|
||||
@@ -265,9 +268,13 @@ class AudioMode(ft.Column):
|
||||
self.Bar.Refresh()
|
||||
|
||||
def _ToggleLoop(self, e) -> None:
|
||||
self.ThePlayer.Loop = not self.ThePlayer.Loop
|
||||
self.SetLoop(not self.ThePlayer.Loop)
|
||||
|
||||
def SetLoop(self, Enabled: bool) -> None:
|
||||
self.ThePlayer.Loop = Enabled
|
||||
self.LoopButton.icon_color = Palette.Mauve if self.ThePlayer.Loop else Palette.Overlay0
|
||||
self._Show(self.LoopButton)
|
||||
self.TheApp.MediaModesChanged()
|
||||
|
||||
def _ToggleAdvance(self, e) -> None:
|
||||
self.AutoAdvance = not self.AutoAdvance
|
||||
|
||||
Reference in new issue
Block a user