コード例 #1
0
ファイル: MainListHelperVM.cs プロジェクト: RickDB/jmmclient
 private void UpdateGroupAndSeriesForEpisode(AnimeEpisodeVM ep)
 {
     try
     {
         // update the attached series
         JMMServerBinary.Contract_AnimeSeries serContract = JMMServerVM.Instance.clientBinaryHTTP.GetSeries(ep.AnimeSeriesID, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
         AnimeSeriesVM ser = AllSeriesDictionary.SureGet(serContract.AnimeSeriesID);
         if (ser != null)
         {
             ser.Populate(serContract);
             // TODO update the episode list
         }
         List <JMMServerBinary.Contract_AnimeGroup> grps = JMMServerVM.Instance.clientBinaryHTTP.GetAllGroupsAboveSeries(ep.AnimeSeriesID, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
         foreach (JMMServerBinary.Contract_AnimeGroup grpContract in grps)
         {
             AnimeGroupVM agrp = AllGroupsDictionary.SureGet(grpContract.AnimeGroupID);
             agrp?.Populate(grpContract);
             agrp?.PopulateSerieInfo(AllGroupsDictionary, AllSeriesDictionary);
         }
     }
     catch (Exception ex)
     {
         Utils.ShowErrorMessage(ex);
     }
 }
コード例 #2
0
ファイル: AnimeSeriesVM.cs プロジェクト: Zhardas/jmmclient
        public AnimeSeriesVM(JMMServerBinary.Contract_AnimeSeries contract)
        {
            CrossRef_AniDB_TvDBV2 = new List <CrossRef_AniDB_TvDBVMV2>();
            TvDBSeriesV2          = new List <TvDB_SeriesVM>();

            Populate(contract);
        }
コード例 #3
0
ファイル: AnimeSeriesVM.cs プロジェクト: Zhardas/jmmclient
 public void RefreshBase()
 {
     JMMServerBinary.Contract_AnimeSeries contract = JMMServerVM.Instance.clientBinaryHTTP.GetSeries(AnimeSeriesID.Value,
                                                                                                     JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
     Populate(contract);
     allEpisodes = null;
 }
コード例 #4
0
        public void ToggleWatchedStatus(bool watched, bool promptForRating)
        {
            bool currentStatus = IsWatched == 1;

            if (currentStatus == watched)
            {
                return;
            }

            JMMServerBinary.Contract_ToggleWatchedStatusOnEpisode_Response response = JMMServerVM.Instance.clientBinaryHTTP.ToggleWatchedStatusOnEpisode(AnimeEpisodeID, watched,
                                                                                                                                                         JMMServerVM.Instance.CurrentUser.JMMUserID);
            if (!string.IsNullOrEmpty(response.ErrorMessage))
            {
                BaseConfig.MyAnimeLog.Write("Error in ToggleWatchedStatus: " + response.ErrorMessage);
                return;
            }

            if (promptForRating && BaseConfig.Settings.DisplayRatingDialogOnCompletion)
            {
                JMMServerBinary.Contract_AnimeSeries contract = JMMServerVM.Instance.clientBinaryHTTP.GetSeries(response.AnimeEpisode.AnimeSeriesID,
                                                                                                                JMMServerVM.Instance.CurrentUser.JMMUserID);
                if (contract != null)
                {
                    AnimeSeriesVM ser = new AnimeSeriesVM(contract);
                    Utils.PromptToRateSeriesOnCompletion(ser);
                }
            }
        }
コード例 #5
0
        public void PopulateSeries(JMMServerBinary.Contract_AnimeSeries seriesContract)
        {
            if (seriesContract != null)
            {
                AnimeSeries = new AnimeSeriesVM(seriesContract);
            }

            EvaluateProperties();
        }
コード例 #6
0
ファイル: PlaylistVM.cs プロジェクト: ewelike23/jmm
        public void PopulatePlaylistObjects()
        {
            PlaylistObjects.Clear();

            if (string.IsNullOrEmpty(this.PlaylistItems))
            {
                return;
            }

            string[] items = this.PlaylistItems.Split('|');
            foreach (string pitem in items)
            {
                string[] parms = pitem.Split(';');
                if (parms.Length != 2)
                {
                    continue;
                }

                int objType = -1;
                int objID   = -1;

                if (!int.TryParse(parms[0], out objType))
                {
                    continue;
                }
                if (!int.TryParse(parms[1], out objID))
                {
                    continue;
                }

                if ((PlaylistItemType)objType == PlaylistItemType.AnimeSeries)
                {
                    // get the series
                    JMMServerBinary.Contract_AnimeSeries serContract = JMMServerVM.Instance.clientBinaryHTTP.GetSeries(objID,
                                                                                                                       JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
                    if (serContract != null)
                    {
                        AnimeSeriesVM ser = new AnimeSeriesVM(serContract);
                        PlaylistObjects.Add(new PlaylistItemVM(this.PlaylistID.Value, PlaylistItemType.AnimeSeries, ser));
                    }
                }
                else
                {
                    // get the episode
                    JMMServerBinary.Contract_AnimeEpisode epContract = JMMServerVM.Instance.clientBinaryHTTP.GetEpisode(objID,
                                                                                                                        JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
                    if (epContract != null)
                    {
                        AnimeEpisodeVM ep = new AnimeEpisodeVM(epContract);
                        //ep.SetTvDBInfo();
                        PlaylistObjects.Add(new PlaylistItemVM(this.PlaylistID.Value, PlaylistItemType.Episode, ep));
                    }
                }
            }

            SetDependendProperties();
        }
コード例 #7
0
ファイル: JMMServerHelper.cs プロジェクト: ewelike23/jmm
        public static AnimeSeriesVM GetSeriesForAnime(int animeID)
        {
            try
            {
                JMMServerBinary.Contract_AnimeSeries rawSeries = JMMServerVM.Instance.clientBinaryHTTP.GetSeriesForAnime(animeID, JMMServerVM.Instance.CurrentUser.JMMUserID);
                if (rawSeries == null)
                {
                    return(null);
                }

                return(new AnimeSeriesVM(rawSeries));
            }
            catch (Exception ex)
            {
                BaseConfig.MyAnimeLog.Write(ex.ToString());
            }
            return(null);
        }
コード例 #8
0
ファイル: MainListHelperVM.cs プロジェクト: ewelike23/jmm
        private void UpdateGroupAndSeriesForEpisode(AnimeEpisodeVM ep)
        {
            try
            {
                // update the attached series
                JMMServerBinary.Contract_AnimeSeries serContract = JMMServerVM.Instance.clientBinaryHTTP.GetSeries(ep.AnimeSeriesID,
                                                                                                                   JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
                foreach (AnimeSeriesVM ser in MainListHelperVM.Instance.AllSeries)
                {
                    if (ser.AnimeSeriesID == serContract.AnimeSeriesID)
                    {
                        ser.Populate(serContract);

                        // TODO update the episode list
                        break;
                    }
                }

                List <JMMServerBinary.Contract_AnimeGroup> grps = JMMServerVM.Instance.clientBinaryHTTP.GetAllGroupsAboveSeries(ep.AnimeSeriesID,
                                                                                                                                JMMServerVM.Instance.CurrentUser.JMMUserID.Value);
                foreach (AnimeGroupVM grp in MainListHelperVM.Instance.AllGroups)
                {
                    foreach (JMMServerBinary.Contract_AnimeGroup grpContract in grps)
                    {
                        if (grp.AnimeGroupID.Value == grpContract.AnimeGroupID)
                        {
                            grp.Populate(grpContract);
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
コード例 #9
0
ファイル: AnimeSeriesVM.cs プロジェクト: Zhardas/jmmclient
        public void Populate(JMMServerBinary.Contract_AnimeSeries contract)
        {
            AniDB_Anime = new AniDB_AnimeVM(contract.AniDBAnime);
            NotifyPropertyChanged("AniDB_Anime");

            MainListHelperVM.Instance.AllAnimeDictionary[AniDB_Anime.AnimeID] = AniDB_Anime;


            if (contract.CrossRefAniDBTvDBV2 != null)
            {
                foreach (JMMClient.JMMServerBinary.Contract_CrossRef_AniDB_TvDBV2 contractTV in contract.CrossRefAniDBTvDBV2)
                {
                    CrossRef_AniDB_TvDBV2.Add(new CrossRef_AniDB_TvDBVMV2(contractTV));
                }
            }

            if (contract.TvDB_Series != null)
            {
                foreach (JMMClient.JMMServerBinary.Contract_TvDB_Series contractSer in contract.TvDB_Series)
                {
                    TvDBSeriesV2.Add(new TvDB_SeriesVM(contractSer));
                }
            }

            if (contract.CrossRefAniDBMovieDB != null)
            {
                CrossRef_AniDB_MovieDB = new CrossRef_AniDB_OtherVM(contract.CrossRefAniDBMovieDB);
            }
            else
            {
                CrossRef_AniDB_MovieDB = null;
            }

            if (contract.CrossRefAniDBMAL != null)
            {
                CrossRef_AniDB_MAL = new List <CrossRef_AniDB_MALVM>();
                foreach (JMMServerBinary.Contract_CrossRef_AniDB_MAL contractTemp in contract.CrossRefAniDBMAL)
                {
                    CrossRef_AniDB_MAL.Add(new CrossRef_AniDB_MALVM(contractTemp));
                }
            }
            else
            {
                CrossRef_AniDB_MAL = null;
            }


            this.AniDB_ID                = contract.AniDB_ID;
            this.AnimeGroupID            = contract.AnimeGroupID;
            this.AnimeSeriesID           = contract.AnimeSeriesID;
            this.DateTimeUpdated         = contract.DateTimeUpdated;
            this.DateTimeCreated         = contract.DateTimeCreated;
            this.DefaultAudioLanguage    = contract.DefaultAudioLanguage;
            this.DefaultSubtitleLanguage = contract.DefaultSubtitleLanguage;
            this.SeriesNameOverride      = contract.SeriesNameOverride;
            this.DefaultFolder           = contract.DefaultFolder;

            IsSeriesNameOverridden    = !string.IsNullOrEmpty(SeriesNameOverride);
            IsSeriesNameNotOverridden = string.IsNullOrEmpty(SeriesNameOverride);

            this.LatestLocalEpisodeNumber = contract.LatestLocalEpisodeNumber;
            this.PlayedCount           = contract.PlayedCount;
            this.StoppedCount          = contract.StoppedCount;
            this.UnwatchedEpisodeCount = contract.UnwatchedEpisodeCount;
            this.WatchedCount          = contract.WatchedCount;
            this.WatchedDate           = contract.WatchedDate;
            this.EpisodeAddedDate      = contract.EpisodeAddedDate;
            this.WatchedEpisodeCount   = contract.WatchedEpisodeCount;

            this.MissingEpisodeCount       = contract.MissingEpisodeCount;
            this.MissingEpisodeCountGroups = contract.MissingEpisodeCountGroups;

            HasMissingEpisodesAny = (MissingEpisodeCount > 0 || MissingEpisodeCountGroups > 0);
            HasMissingEpisodesAllDifferentToGroups = (MissingEpisodeCount > 0 && MissingEpisodeCount != MissingEpisodeCountGroups);
            HasMissingEpisodesGroups = MissingEpisodeCountGroups > 0;

            //PosterPath = AniDB_Anime.DefaultPosterPath;

            SetSeriesNames();
        }
コード例 #10
0
        private void RefreshRecords()
        {
            try
            {
                IsDataLoading         = true;
                IsDataFinishedLoading = false;

                AnimeFolderSummaryRecords.Clear();

                TotalFileCount = 0;
                double fileSize = 0;


                AniDB_AnimeVM anime = this.DataContext as AniDB_AnimeVM;
                if (anime == null)
                {
                    return;
                }

                JMMServerBinary.Contract_AnimeSeries contract = JMMServerVM.Instance.clientBinaryHTTP.GetSeriesForAnime(anime.AnimeID,
                                                                                                                        JMMServerVM.Instance.CurrentUser.JMMUserID.Value);

                if (contract == null)
                {
                    return;
                }
                thisSeries = new AnimeSeriesVM(contract);

                Dictionary <string, AnimeFolderSummary> folders = new Dictionary <string, AnimeFolderSummary>();

                foreach (VideoLocalVM vid in anime.AllVideoLocals)
                {
                    TotalFileCount++;
                    fileSize += (double)vid.FileSize;
                    if (!folders.ContainsKey(vid.FileDirectory))
                    {
                        AnimeFolderSummary fs = new AnimeFolderSummary();
                        fs.FolderName              = vid.FileDirectory;
                        fs.FileCount               = 0;
                        fs.TotalFileSize           = 0;
                        folders[vid.FileDirectory] = fs;
                    }

                    folders[vid.FileDirectory].FileCount     = folders[vid.FileDirectory].FileCount + 1;
                    folders[vid.FileDirectory].TotalFileSize = folders[vid.FileDirectory].TotalFileSize + vid.FileSize;
                }

                bool foundDefault = false;
                foreach (AnimeFolderSummary afs in folders.Values)
                {
                    afs.IsDefaultFolder = false;

                    if (!string.IsNullOrEmpty(thisSeries.DefaultFolder))
                    {
                        if (thisSeries.DefaultFolder.Equals(afs.FolderName, StringComparison.InvariantCultureIgnoreCase))
                        {
                            afs.IsDefaultFolder = true;
                            foundDefault        = true;
                        }
                    }
                    AnimeFolderSummaryRecords.Add(afs);
                }

                /*if (!foundDefault)
                 * {
                 *  if (!string.IsNullOrEmpty(thisSeries.DefaultFolder))
                 *  {
                 *      AnimeFolderSummary afs = new AnimeFolderSummary();
                 *      afs.FolderName = thisSeries.DefaultFolder;
                 *      afs.FileCount = 0;
                 *      afs.TotalFileSize = 0;
                 *      afs.IsDefaultFolder = true;
                 *      AnimeFolderSummaryRecords.Add(afs);
                 *  }
                 * }*/


                TotalFileSize = Utils.FormatFileSize(fileSize);


                IsDataLoading         = false;
                IsDataFinishedLoading = true;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
コード例 #11
0
        void getDataWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            colEpisodes = e.Result as List <AnimeEpisodeVM>;

            if (colEpisodes == null || colEpisodes.Count == 0)
            {
                if (dummyAnyRecords != null)
                {
                    dummyAnyRecords.Visible = false;
                }
                setGUIProperty("Watching.Status", "No episodes have recently been watched");
                return;
            }

            if (dummyAnyRecords != null)
            {
                dummyAnyRecords.Visible = true;
            }

            foreach (AnimeEpisodeVM ep in colEpisodes)
            {
                GUIListItem   item  = new GUIListItem("");
                AniDB_AnimeVM anime = ep.AnimeSeries.AniDB_Anime;

                string imagePath = GUIGraphicsContext.Skin + @"\Media\MyAnime3\anime3_question_poster.png";
                if (anime.DefaultPosterPath.Trim().Length > 0)
                {
                    if (File.Exists(anime.DefaultPosterPath))
                    {
                        imagePath = anime.DefaultPosterPath;
                    }
                }

                item.IconImage       = item.IconImageBig = imagePath;
                item.TVTag           = ep;
                item.OnItemSelected += new GUIListItem.ItemSelectedHandler(onFacadeItemSelected);
                m_Facade.Add(item);
            }

            if (m_Facade.Count > 0)
            {
                m_Facade.SelectedListItemIndex = 0;

                AnimeEpisodeVM ep = m_Facade.SelectedListItem.TVTag as AnimeEpisodeVM;
                if (ep != null)
                {
                    SetEpisode(ep);
                }
            }

            if (MainWindow.animeSeriesIDToBeRated.HasValue && BaseConfig.Settings.DisplayRatingDialogOnCompletion)
            {
                JMMServerBinary.Contract_AnimeSeries contract = JMMServerVM.Instance.clientBinaryHTTP.GetSeries(MainWindow.animeSeriesIDToBeRated.Value,
                                                                                                                JMMServerVM.Instance.CurrentUser.JMMUserID);
                if (contract != null)
                {
                    AnimeSeriesVM ser = new AnimeSeriesVM(contract);
                    Utils.PromptToRateSeriesOnCompletion(ser);
                }

                MainWindow.animeSeriesIDToBeRated = null;
            }
        }
コード例 #12
0
ファイル: AnimeSeriesVM.cs プロジェクト: ewelike23/jmm
        public void Populate(JMMServerBinary.Contract_AnimeSeries contract)
        {
            AniDB_Anime = new AniDB_AnimeVM(contract.AniDBAnime);

            if (contract.CrossRefAniDBTvDBV2 != null)
            {
                foreach (JMMServerBinary.Contract_CrossRef_AniDB_TvDBV2 contractTV in contract.CrossRefAniDBTvDBV2)
                {
                    CrossRef_AniDB_TvDBV2.Add(new CrossRef_AniDB_TvDBVMV2(contractTV));
                }
            }

            if (contract.TvDB_Series != null)
            {
                foreach (JMMServerBinary.Contract_TvDB_Series contractSer in contract.TvDB_Series)
                {
                    TvDBSeriesV2.Add(new TvDB_SeriesVM(contractSer));
                }
            }

            if (contract.CrossRefAniDBMovieDB != null)
            {
                CrossRef_AniDB_MovieDB = new CrossRef_AniDB_OtherVM(contract.CrossRefAniDBMovieDB);
            }
            else
            {
                CrossRef_AniDB_MovieDB = null;
            }

            if (contract.CrossRefAniDBMAL != null)
            {
                CrossRef_AniDB_MAL = new List <CrossRef_AniDB_MALVM>();
                foreach (JMMServerBinary.Contract_CrossRef_AniDB_MAL contractTemp in contract.CrossRefAniDBMAL)
                {
                    CrossRef_AniDB_MAL.Add(new CrossRef_AniDB_MALVM(contractTemp));
                }
            }
            else
            {
                CrossRef_AniDB_MAL = null;
            }

            // read only members
            this.AniDB_ID                = contract.AniDB_ID;
            this.AnimeGroupID            = contract.AnimeGroupID;
            this.AnimeSeriesID           = contract.AnimeSeriesID;
            this.DateTimeUpdated         = contract.DateTimeUpdated;
            this.DateTimeCreated         = contract.DateTimeCreated;
            this.DefaultAudioLanguage    = contract.DefaultAudioLanguage;
            this.DefaultSubtitleLanguage = contract.DefaultSubtitleLanguage;
            this.SeriesNameOverride      = contract.SeriesNameOverride;

            this.LatestLocalEpisodeNumber = contract.LatestLocalEpisodeNumber;
            this.PlayedCount           = contract.PlayedCount;
            this.StoppedCount          = contract.StoppedCount;
            this.UnwatchedEpisodeCount = contract.UnwatchedEpisodeCount;
            this.WatchedCount          = contract.WatchedCount;
            this.WatchedDate           = contract.WatchedDate;
            this.EpisodeAddedDate      = contract.EpisodeAddedDate;
            this.WatchedEpisodeCount   = contract.WatchedEpisodeCount;

            this.MissingEpisodeCount       = contract.MissingEpisodeCount;
            this.MissingEpisodeCountGroups = contract.MissingEpisodeCountGroups;

            HasMissingEpisodesAny = (MissingEpisodeCount > 0 || MissingEpisodeCountGroups > 0);
            HasMissingEpisodesAllDifferentToGroups = (MissingEpisodeCount > 0 && MissingEpisodeCount != MissingEpisodeCountGroups);
            HasMissingEpisodesGroups = MissingEpisodeCountGroups > 0;

            PosterPath = AniDB_Anime.DefaultPosterPath;
        }