public override DataTemplate SelectTemplate(object item, DependencyObject container) { FrameworkElement element = container as FrameworkElement; if (element != null && item != null) { if (item.GetType() == typeof(PlaylistVM)) { return(element.FindResource("Playlist_PlaylistTemplate") as DataTemplate); } if (item.GetType() == typeof(PlaylistItemVM)) { PlaylistItemVM pli = item as PlaylistItemVM; if (pli.ItemType == PlaylistItemType.AnimeSeries) { return(element.FindResource("Playlist_AnimeSeriesTemplate") as DataTemplate); } if (pli.ItemType == PlaylistItemType.Episode) { return(element.FindResource("Playlist_AnimeEpisodeTemplate") as DataTemplate); } } /*if (item.GetType() == typeof(AnimeSeriesVM)) * { * return element.FindResource("Playlist_AnimeSeriesTemplate") as DataTemplate; * } * * if (item.GetType() == typeof(AnimeEpisodeVM)) * { * return element.FindResource("Playlist_AnimeEpisodeTemplate") as DataTemplate; * }*/ } return(null); }
/// <summary> /// This event bubbles up from PlayEpisodeControl /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CommandBinding_ToggleWatchedStatus(object sender, ExecutedRoutedEventArgs e) { object obj = e.Parameter; if (obj == null) { return; } this.Cursor = Cursors.Wait; try { Window parentWindow = Window.GetWindow(this); AnimeSeriesVM serTemp = null; bool newStatus = false; if (obj.GetType() == typeof(VideoDetailedVM)) { VideoDetailedVM vid = obj as VideoDetailedVM; newStatus = !vid.Watched; JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnVideo(vid.VideoLocalID, newStatus, JMMServerVM.Instance.CurrentUser.JMMUserID.Value); MainListHelperVM.Instance.UpdateHeirarchy(vid); serTemp = MainListHelperVM.Instance.GetSeriesForVideo(vid.VideoLocalID); } if (obj.GetType() == typeof(AnimeEpisodeVM)) { AnimeEpisodeVM ep = obj as AnimeEpisodeVM; newStatus = !ep.Watched; JMMServerBinary.Contract_ToggleWatchedStatusOnEpisode_Response response = JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnEpisode(ep.AnimeEpisodeID, newStatus, JMMServerVM.Instance.CurrentUser.JMMUserID.Value); if (!string.IsNullOrEmpty(response.ErrorMessage)) { MessageBox.Show(response.ErrorMessage, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); return; } MainListHelperVM.Instance.UpdateHeirarchy(response.AnimeEpisode); serTemp = MainListHelperVM.Instance.GetSeriesForEpisode(ep); } if (obj.GetType() == typeof(PlaylistItemVM)) { PlaylistItemVM pli = obj as PlaylistItemVM; AnimeEpisodeVM ep = pli.PlaylistItem as AnimeEpisodeVM; newStatus = !ep.Watched; JMMServerBinary.Contract_ToggleWatchedStatusOnEpisode_Response response = JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnEpisode(ep.AnimeEpisodeID, newStatus, JMMServerVM.Instance.CurrentUser.JMMUserID.Value); if (!string.IsNullOrEmpty(response.ErrorMessage)) { MessageBox.Show(response.ErrorMessage, Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); return; } MainListHelperVM.Instance.UpdateHeirarchy(response.AnimeEpisode); serTemp = MainListHelperVM.Instance.GetSeriesForEpisode(ep); } PlaylistVM pl = this.DataContext as PlaylistVM; if (pl == null) { return; } pl.PopulatePlaylistObjects(); ShowNextEpisode(); if (newStatus == true && serTemp != null) { Utils.PromptToRateSeries(serTemp, parentWindow); } } catch (Exception ex) { Utils.ShowErrorMessage(ex); } finally { this.Cursor = Cursors.Arrow; } }
private void CommandBinding_PlayEpisode(object sender, ExecutedRoutedEventArgs e) { Window parentWindow = Window.GetWindow(this); object obj = e.Parameter; if (obj == null) { return; } try { if (obj.GetType() == typeof(PlaylistItemVM)) { PlaylistItemVM pli = obj as PlaylistItemVM; AnimeEpisodeVM ep = null; if (pli.ItemType == JMMClient.PlaylistItemType.Episode) { ep = pli.PlaylistItem as AnimeEpisodeVM; } if (pli.ItemType == JMMClient.PlaylistItemType.AnimeSeries) { AnimeSeriesVM ser = pli.PlaylistItem as AnimeSeriesVM; if (ser == null) { return; } JMMServerBinary.Contract_AnimeEpisode contract = JMMServerVM.Instance.clientBinaryHTTP.GetNextUnwatchedEpisode(ser.AnimeSeriesID.Value, JMMServerVM.Instance.CurrentUser.JMMUserID.Value); if (contract != null) { ep = new AnimeEpisodeVM(contract); } } if (ep == null) { return; } ep.SetTvDBInfo(); if (ep.FilesForEpisode.Count == 1) { MainWindow.videoHandler.PlayVideo(ep.FilesForEpisode[0]); } else if (ep.FilesForEpisode.Count > 1) { if (AppSettings.AutoFileSingleEpisode) { VideoDetailedVM vid = MainWindow.videoHandler.GetAutoFileForEpisode(ep); if (vid != null) { MainWindow.videoHandler.PlayVideo(vid); } } else { PlayVideosForEpisodeForm frm = new PlayVideosForEpisodeForm(); frm.Owner = parentWindow; frm.Init(ep); frm.ShowDialog(); } } } } catch (Exception ex) { Utils.ShowErrorMessage(ex); } }