diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/PlaybackService.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/PlaybackService.cs index 07dbcdf..be0fdd5 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/PlaybackService.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/PlaybackService.cs @@ -112,9 +112,8 @@ namespace BetterLyrics.WinUI3.Services _dispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low, () => { - PositionChanged?.Invoke(this, new PositionChangedEventArgs(timelineProperties.Position)); - } - ); + PositionChanged?.Invoke(this, new PositionChangedEventArgs(timelineProperties.Position)); + }); } private void MediaManager_OnAnyPlaybackStateChanged(MediaManager.MediaSession mediaSession, GlobalSystemMediaTransportControlsSessionPlaybackInfo playbackInfo) @@ -130,8 +129,8 @@ namespace BetterLyrics.WinUI3.Services _dispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low, () => { - IsPlayingChanged?.Invoke(this, new IsPlayingChangedEventArgs(_cachedIsPlaying)); - } + IsPlayingChanged?.Invoke(this, new IsPlayingChangedEventArgs(_cachedIsPlaying)); + } ); } diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/MusicGalleryViewModel.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/MusicGalleryViewModel.cs index 6c4c064..7f15771 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/MusicGalleryViewModel.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/MusicGalleryViewModel.cs @@ -26,6 +26,7 @@ namespace BetterLyrics.WinUI3.ViewModels { private readonly ILibWatcherService _libWatcherService; private readonly MediaPlayer _mediaPlayer = new(); + private readonly MediaTimelineController _timelineController = new(); private readonly SystemMediaTransportControls _smtc; [ObservableProperty] @@ -36,6 +37,9 @@ namespace BetterLyrics.WinUI3.ViewModels public MusicGalleryViewModel(ISettingsService settingsService, ILibWatcherService libWatcherService) : base(settingsService) { + _mediaPlayer.MediaOpened += MediaPlayer_MediaOpened; + _timelineController = _mediaPlayer.TimelineController = new(); + _timelineController.PositionChanged += TimelineController_PositionChanged; _smtc = _mediaPlayer.SystemMediaTransportControls; _mediaPlayer.CommandManager.IsEnabled = false; _smtc.IsEnabled = true; @@ -44,15 +48,23 @@ namespace BetterLyrics.WinUI3.ViewModels _smtc.IsNextEnabled = true; _smtc.IsPreviousEnabled = true; _smtc.ButtonPressed += Smtc_ButtonPressed; - _smtc.PlaybackPositionChangeRequested += Smtc_PlaybackPositionChangeRequested; _libWatcherService = libWatcherService; _libWatcherService.MusicLibraryFilesChanged += LibWatcherService_MusicLibraryFilesChanged; } - private void Smtc_PlaybackPositionChangeRequested(SystemMediaTransportControls sender, PlaybackPositionChangeRequestedEventArgs args) + private void MediaPlayer_MediaOpened(MediaPlayer sender, object args) { - _mediaPlayer.TimelineController.Position = args.RequestedPlaybackPosition; + throw new NotImplementedException(); + } + + private void TimelineController_PositionChanged(MediaTimelineController sender, object args) + { + _smtc.UpdateTimelineProperties(new SystemMediaTransportControlsTimelineProperties() + { + Position = sender.Position, + EndTime = sender.Duration ?? TimeSpan.Zero + }); } private void Smtc_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args) @@ -128,8 +140,9 @@ namespace BetterLyrics.WinUI3.ViewModels { updater.Thumbnail = ImageHelper.ByteArrayToRandomAccessStreamReference(pictureData); } + _timelineController.Duration = TimeSpan.FromSeconds(track.Duration); + _timelineController.Start(); updater.Update(); - _mediaPlayer.Play(); _smtc.PlaybackStatus = MediaPlaybackStatus.Playing; } } diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/LyricsWindow.xaml b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/LyricsWindow.xaml index a86a458..9d2b98d 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/LyricsWindow.xaml +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/LyricsWindow.xaml @@ -45,10 +45,7 @@ -