MediaChangedEvent now hooked up to player component.
This commit is contained in:
		| @@ -14,7 +14,7 @@ | ||||
|             <StackLayout | ||||
|                  Grid.Column="0"> | ||||
|                 <Label | ||||
|                      Text="{Binding SongName}"/> | ||||
|                      Text="{Binding SongTitle}"/> | ||||
|                 <Label | ||||
|                      Text="{Binding ArtistName}"/> | ||||
|             </StackLayout> | ||||
|   | ||||
| @@ -2,16 +2,20 @@ | ||||
| using Xamarin.Forms; | ||||
| using Aurora.Frontend.Views; | ||||
| using Aurora.Backend.Services.PlayerService; | ||||
| using Aurora.Backend.Models.Media; | ||||
|  | ||||
| namespace Aurora.Frontend.Components.MediaPlayer | ||||
| { | ||||
|     public class PlayerViewModel : BaseViewModel | ||||
|     { | ||||
|         PlayerService _playerService; | ||||
|         BaseMetadata _metadata; | ||||
|  | ||||
|         public PlayerViewModel() | ||||
|         { | ||||
|             _playerService = PlayerService.Instance; | ||||
|             _playerService.PlaybackStateChanged += OnPlaybackStateChanged; | ||||
|             _playerService.MediaChanged += OnMediaChanged; | ||||
|  | ||||
|             PlayCommand = new Command(OnPlayExecute, CanPlayExecute); | ||||
|             PreviousCommand = new Command(OnPreviousExecute, CanPreviousExecute); | ||||
| @@ -20,6 +24,7 @@ namespace Aurora.Frontend.Components.MediaPlayer | ||||
|  | ||||
|         ~PlayerViewModel() | ||||
|         { | ||||
|             _playerService.PlaybackStateChanged -= OnPlaybackStateChanged; | ||||
|  | ||||
|         } | ||||
|  | ||||
| @@ -28,10 +33,43 @@ namespace Aurora.Frontend.Components.MediaPlayer | ||||
|         public Command NextCommand { get; private set; } | ||||
|         public Command PreviousCommand { get; private set; } | ||||
|  | ||||
|  | ||||
|         public string PlayButtonText | ||||
|         { | ||||
|             get { return PlayerService.Instance.PlaybackState == PlaybackState.Buffering ? "Play" : "Pause"; } | ||||
|             get { return _playerService.PlaybackState == PlaybackState.Buffering ? "Play" : "Pause"; } | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// TODO keep player view generic between audio and video. | ||||
|         /// </summary> | ||||
|         /// <value></value> | ||||
|         public string ArtistName | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 if (_metadata == null) | ||||
|                 { | ||||
|                     return ""; | ||||
|                 } | ||||
|                 AudioMetadata metadata = _metadata as AudioMetadata; | ||||
|                 return metadata.Artist; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// TODO keep player view generic between audio and video. | ||||
|         /// </summary> | ||||
|         /// <value></value> | ||||
|         public string SongTitle | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 if (_metadata == null) | ||||
|                 { | ||||
|                     return ""; | ||||
|                 } | ||||
|                 AudioMetadata metadata = _metadata as AudioMetadata; | ||||
|                 return metadata.Title; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         #endregion Public Properties | ||||
| @@ -96,6 +134,11 @@ namespace Aurora.Frontend.Components.MediaPlayer | ||||
|         #endregion public Methods | ||||
|  | ||||
|         #region EventHandlers | ||||
|         /// <summary> | ||||
|         /// PlayerService playback state changed event handler. | ||||
|         /// </summary> | ||||
|         /// <param name="sender">The sending object.</param> | ||||
|         /// <param name="args">Event arguments.</param> | ||||
|         public void OnPlaybackStateChanged(object sender, PlaybackStateChangedEventArgs args) | ||||
|         { | ||||
|             OnPropertyChanged("PlayButtonText"); | ||||
| @@ -103,6 +146,18 @@ namespace Aurora.Frontend.Components.MediaPlayer | ||||
|             NextCommand.ChangeCanExecute(); | ||||
|             PreviousCommand.ChangeCanExecute(); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// PlayerService media changed event handler. | ||||
|         /// </summary> | ||||
|         /// <param name="sender">The sending object.</param> | ||||
|         /// <param name="args">Event arguments.</param> | ||||
|         public void OnMediaChanged(object sender, MediaChangedEventArgs args) | ||||
|         { | ||||
|             _metadata = args.NewMetadata; | ||||
|             OnPropertyChanged("ArtistName"); | ||||
|             OnPropertyChanged("SongTitle"); | ||||
|         } | ||||
|         #endregion EventHandlers | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user