private void InitializeCommands() { PrepareCommand = new Command(async () => { try { await MediaPlayer.PrepareAsync(); // Calculates seek unit based on duration. _seekUnit = Math.Max(1000, MediaPlayer.Duration / 20); } catch (Exception e) { ErrorText = e.Message; } }); PlayCommand = new Command(() => { if (PlayerState == MediaPlayerState.Ready) { MediaPlayer.Start(); IsSeekable = true; } else { MediaPlayer.Stop(); } }); PauseCommand = new Command(async () => { if (PlayerState == MediaPlayerState.Playing) { MediaPlayer.Pause(); _subtitleDelayCancelSource.Cancel(); } else { MediaPlayer.Start(); await ResumeSubtitleAsync(); } }); StreamInfoCommand = new Command(() => { Properties = Properties == null ? MediaPlayer.GetStreamInfo() : null; }); SubtitleCommand = new NavigationCommand<ListPage>(() => new SubtitleListPageViewModel()); SeekBackwardCommand = new Command(async () => await Seek(-_seekUnit)); SeekForwardCommand = new Command(async () => await Seek(_seekUnit)); }
public MainPageViewModel() { FileCommand = new NavigationCommand <ListPage>(() => new MediaListPageViewModel()); StreamCommand = new NavigationCommand <InputUrlPage>(); }
public InputUrlPageViewModel() { OpenCommand = new NavigationCommand <PlayPage>(() => new PlayPageViewModel(UrlText), () => !string.IsNullOrEmpty(UrlText)); }