public override DataTemplate SelectTemplate(object item, DependencyObject container) { FrameworkElement element = container as FrameworkElement; if (element != null && item != null) { if (item.GetType() == typeof(AnimeEpisodeDisplayVM)) { AnimeEpisodeDisplayVM ep = item as AnimeEpisodeDisplayVM; if (ep.EpisodeOrder == 0) { return(element.FindResource("AnimeEpisodePrevious") as DataTemplate); } if (ep.EpisodeOrder == 1) { return(element.FindResource("AnimeEpisodeCurrent") as DataTemplate); } return(element.FindResource("AnimeEpisodeOther") as DataTemplate); } } return(null); }
void episodesWorker_DoWork(object sender, DoWorkEventArgs e) { try { AnimeSeriesVM ser = e.Argument as AnimeSeriesVM; List <JMMServerBinary.Contract_AnimeEpisode> rawEps = JMMServerVM.Instance.clientBinaryHTTP.GetAllUnwatchedEpisodes(ser.AnimeSeriesID.Value, JMMServerVM.Instance.CurrentUser.JMMUserID.Value); // find the last watched episode JMMServerBinary.Contract_AnimeEpisode rawLastEp = JMMServerVM.Instance.clientBinaryHTTP.GetLastWatchedEpisodeForSeries(ser.AnimeSeriesID.Value, JMMServerVM.Instance.CurrentUser.JMMUserID.Value); if (rawLastEp != null) { AnimeEpisodeDisplayVM ep = new AnimeEpisodeDisplayVM(rawLastEp); ep.SetTvDBInfo(); //if (JMMServerVM.Instance.Trakt_IsEnabled) // ep.SetTraktInfo(); ep.EpisodeOrder = 0; System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { UnwatchedEpisodes.Add(ep); }); } int i = 0; foreach (JMMServerBinary.Contract_AnimeEpisode raw in rawEps) { i++; AnimeEpisodeDisplayVM ep = new AnimeEpisodeDisplayVM(raw); ep.SetTvDBInfo(); //if (i == 1 && JMMServerVM.Instance.Trakt_IsEnabled) ep.SetTraktInfo(); ep.EpisodeOrder = i; System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { UnwatchedEpisodes.Add(ep); }); if (i == 5) { break; } } } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } }
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(AnimeEpisodeDisplayVM)) { AnimeEpisodeDisplayVM ep = obj as AnimeEpisodeDisplayVM; 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); bool?result = frm.ShowDialog(); } } } } catch (Exception ex) { Utils.ShowErrorMessage(ex); } }
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 ser = 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); ser = MainListHelperVM.Instance.GetSeriesForVideo(vid.VideoLocalID); } if (obj.GetType() == typeof(AnimeEpisodeDisplayVM)) { AnimeEpisodeDisplayVM ep = obj as AnimeEpisodeDisplayVM; 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); ser = MainListHelperVM.Instance.GetSeriesForEpisode(ep); } RefreshData(); if (newStatus == true && ser != null) { Utils.PromptToRateSeries(ser, parentWindow); } } catch (Exception ex) { Utils.ShowErrorMessage(ex); } finally { this.Cursor = Cursors.Arrow; } }