Ejemplo n.º 1
0
        private void LoadData()
        {
            relations.Clear();

            mainAnime = null;
            serMain   = null;



            serMain = JMMServerHelper.GetSeries(MainWindow.GlobalSeriesID);
            if (serMain != null)
            {
                mainAnime = serMain.AniDB_Anime;
            }

            if (mainAnime == null)
            {
                return;
            }

            try
            {
                relations = mainAnime.RelatedAnimeLinks;
            }
            catch (Exception ex)
            {
                BaseConfig.MyAnimeLog.Write(ex.ToString());
            }
        }
Ejemplo n.º 2
0
        void workerRefreshUnlinkedFiles_DoWork(object sender, DoWorkEventArgs e)
        {
            List <VideoLocalVM> unlinkedVideos = JMMServerHelper.GetUnlinkedVideos();

            List <GUIListItem> listItems = new List <GUIListItem>();
            GUIListItem        itm       = null;

            foreach (VideoLocalVM locFile in unlinkedVideos)
            {
                string fileNameFull = Path.GetFileName(locFile.FullPath);
                string fileName     = fileNameFull;
                if (File.Exists(fileNameFull))
                {
                    FileInfo fi = new FileInfo(fileNameFull);
                    fileName = fi.Name;
                }


                itm       = new GUIListItem(fileName);
                itm.TVTag = locFile;
                listItems.Add(itm);
            }

            e.Result = listItems;
        }
Ejemplo n.º 3
0
        private void ShowPosters()
        {
            GUIControl.ClearControl(this.GetID, m_Facade.GetID);
            List <PosterContainer> allPosters = new List <PosterContainer>();

            string displayname = "";

            AnimeSeriesVM ser = JMMServerHelper.GetSeries(MainWindow.GlobalSeriesID);

            if (ser != null)
            {
                displayname = ser.SeriesName;
                if (ser.CrossRef_AniDB_TvDBV2 != null && ser.CrossRef_AniDB_TvDBV2.Count > 0)
                {
                    AnimeID = ser.CrossRef_AniDB_TvDBV2[0].AnimeID;
                }
            }

            BaseConfig.MyAnimeLog.Write("ShowPosters for {0} - {1}", displayname, AnimeID);

            foreach (PosterContainer pstr in ser.AniDB_Anime.AniDB_AnimeCrossRefs.AllPosters)
            {
                if (!File.Exists(pstr.FullImagePath))
                {
                    continue;
                }

                allPosters.Add(pstr);
            }

            GUIListItem item = null;

            foreach (PosterContainer poster in allPosters)
            {
                item                 = new GUIListItem();
                item.IconImage       = item.IconImageBig = poster.FullImagePath;
                item.TVTag           = poster;
                item.OnItemSelected += new GUIListItem.ItemSelectedHandler(onFacadeItemSelected);
                m_Facade.Add(item);
            }

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

                // Work around for Filmstrip not allowing to programmatically select item
                if (m_Facade.CurrentLayout == GUIFacadeControl.Layout.Filmstrip)
                {
                }

                PosterContainer selectedPoster = m_Facade.SelectedListItem.TVTag as PosterContainer;
                if (selectedPoster != null)
                {
                    SetPosterProperties(selectedPoster);
                }

                GUIControl.FocusControl(GetID, 50);
            }
        }
Ejemplo n.º 4
0
        private void ShowFanart()
        {
            GUIControl.ClearControl(this.GetID, m_Facade.GetID);
            List <FanartContainer> allFanart = new List <FanartContainer>();

            AnimeSeriesVM ser = JMMServerHelper.GetSeries(MainWindow.GlobalSeriesID);

            if (ser != null)
            {
                if (ser.CrossRef_AniDB_TvDBV2 != null && ser.CrossRef_AniDB_TvDBV2.Count > 0)
                {
                    AnimeID = ser.CrossRef_AniDB_TvDBV2[0].AnimeID;
                }
            }

            if (ser == null)
            {
                return;
            }

            BaseConfig.MyAnimeLog.Write("ShowFanart for {0}", AnimeID);
            GUIListItem item = null;

            foreach (FanartContainer fanart in ser.AniDB_Anime.AniDB_AnimeCrossRefs.AllFanarts)
            {
                if (!File.Exists(fanart.FullImagePath))
                {
                    continue;
                }

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

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

                // Work around for Filmstrip not allowing to programmatically select item
                if (m_Facade.CurrentLayout == GUIFacadeControl.Layout.Filmstrip)
                {
                }

                FanartContainer selectedFanart = m_Facade.SelectedListItem.TVTag as FanartContainer;
                if (selectedFanart != null)
                {
                    setFanartPreviewBackground(selectedFanart);
                }

                GUIControl.FocusControl(GetID, 50);
            }
        }
Ejemplo n.º 5
0
 private void LoadInfo()
 {
     if (MainWindow.GlobalSeriesID > 0)
     {
         serMain = JMMServerHelper.GetSeries(MainWindow.GlobalSeriesID);
         if (serMain != null)
         {
             MainAnime = serMain.AniDB_Anime;
         }
     }
 }
Ejemplo n.º 6
0
        private void ShowWideBanners()
        {
            GUIControl.ClearControl(this.GetID, m_Facade.GetID);

            AnimeSeriesVM ser = JMMServerHelper.GetSeries(MainWindow.GlobalSeriesID);

            if (ser != null)
            {
                if (ser.CrossRef_AniDB_TvDBV2 != null && ser.CrossRef_AniDB_TvDBV2.Count > 0)
                {
                    AnimeID = ser.CrossRef_AniDB_TvDBV2[0].AnimeID;
                }
            }

            if (ser != null)
            {
                List <TvDB_ImageWideBannerVM> tvDBWideBanners = ser.AniDB_Anime.AniDB_AnimeCrossRefs.TvDBImageWideBanners;

                GUIListItem item = null;
                foreach (TvDB_ImageWideBannerVM banner in tvDBWideBanners)
                {
                    item                 = new GUIListItem();
                    item.IconImage       = item.IconImageBig = banner.FullImagePath;
                    item.TVTag           = banner;
                    item.OnItemSelected += new GUIListItem.ItemSelectedHandler(onFacadeItemSelected);
                    m_Facade.Add(item);
                }


                if (m_Facade.Count > 0)
                {
                    m_Facade.SelectedListItemIndex = 0;
                    TvDB_ImageWideBannerVM selectedBanner = m_Facade.SelectedListItem.TVTag as TvDB_ImageWideBannerVM;
                    if (selectedBanner != null)
                    {
                        SetWideBannerProperties(selectedBanner);
                    }

                    GUIControl.FocusControl(GetID, 50);
                }
            }
        }
Ejemplo n.º 7
0
		private void ShowEpisodeDetails(AnimeEpisodeVM ep)
		{
			dummyEpisodeSearch.Visible = false;
			AnimeSeriesVM series = JMMServerHelper.GetSeries(ep.AnimeSeriesID);
			if (series != null && series.AniDB_Anime != null)
			{

                SetGUIProperty(GuiProperty.SubGroup_AnimeName, series.AniDB_Anime.FormattedTitle);
                SetGUIProperty(GuiProperty.SubGroup_EpisodeName, ep.EpisodeNumberAndName);

                List<GroupVideoQualityVM> videoQualityRecords = new List<GroupVideoQualityVM>();
				List<JMMServerBinary.Contract_GroupVideoQuality> summ = new List<Contract_GroupVideoQuality>(JMMServerVM.Instance.clientBinaryHTTP.GetGroupVideoQualitySummary(series.AniDB_Anime.AnimeID));
				foreach (JMMServerBinary.Contract_GroupVideoQuality contract in summ)
				{
					GroupVideoQualityVM vidQual = new GroupVideoQualityVM(contract);
					videoQualityRecords.Add(vidQual);
				}

				// apply sorting
				if (videoQualityRecords.Count > 0)
				{
					List<SortPropOrFieldAndDirection> sortlist = new List<SortPropOrFieldAndDirection>();
					sortlist.Add(new SortPropOrFieldAndDirection("FileCountNormal", true, SortType.eInteger));
					videoQualityRecords = Sorting.MultiSort<GroupVideoQualityVM>(videoQualityRecords, sortlist);

					string fileDetails = "";
					foreach (GroupVideoQualityVM gvq in videoQualityRecords)
						fileDetails += string.Format("{0}({1}/{2}/{3}bit) - {4} Files ({5})", gvq.GroupNameShort, gvq.Resolution, gvq.VideoSource, gvq.VideoBitDepth, gvq.FileCountNormal, gvq.NormalEpisodeNumberSummary)
							+ Environment.NewLine;


                    SetGUIProperty(GuiProperty.SubGroup_FileDetails, fileDetails);
                }
                else
                {
                    ClearGUIProperty(GuiProperty.SubGroup_FileDetails);
                }

                dummyEpisodeSearch.Visible = true;
			}
		}
Ejemplo n.º 8
0
        protected override void OnShowContextMenu()
        {
            GUIListItem currentitem = this.m_Facade.SelectedListItem;

            if (currentitem == null)
            {
                return;
            }

            if (currentitem.TVTag.GetType() == typeof(AnimeEpisodeVM))
            {
                AnimeEpisodeVM ep = currentitem.TVTag as AnimeEpisodeVM;
                if (ep != null)
                {
                    GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
                    if (dlg == null)
                    {
                        return;
                    }

                    dlg.Reset();
                    dlg.SetHeading(ep.EpisodeNumberAndName);
                    dlg.Add("Mark as Watched");
                    dlg.Add("Play Previous Episode");
                    dlg.Add("Go To Episode List");
                    dlg.Add("View Series Info");

                    dlg.DoModal(GUIWindowManager.ActiveWindow);

                    switch (dlg.SelectedLabel)
                    {
                    case 0:
                        ep.ToggleWatchedStatus(true);
                        LoadData();
                        break;

                    case 1:
                        if (ep.AnimeSeries == null)
                        {
                            return;
                        }
                        JMMServerBinary.Contract_AnimeEpisode contract = JMMServerVM.Instance.clientBinaryHTTP.GetPreviousEpisodeForUnwatched(ep.AnimeSeries.AnimeSeriesID.Value,
                                                                                                                                              JMMServerVM.Instance.CurrentUser.JMMUserID);

                        if (contract == null)
                        {
                            Utils.DialogMsg("Error", "Previous episode not found");
                            return;
                        }
                        AnimeEpisodeVM epPrev = new AnimeEpisodeVM(contract);
                        MainWindow.vidHandler.ResumeOrPlay(epPrev);
                        break;

                    case 2:

                        if (ep.AnimeSeries == null)
                        {
                            return;
                        }
                        MainWindow.curGroupFilter = GroupFilterHelper.AllGroupsFilter;

                        // find the group for this series
                        AnimeGroupVM grp = JMMServerHelper.GetGroup(ep.AnimeSeries.AnimeGroupID);
                        if (grp == null)
                        {
                            BaseConfig.MyAnimeLog.Write("Group not found");
                            return;
                        }
                        MainWindow.curAnimeGroup       = grp;
                        MainWindow.curAnimeGroupViewed = grp;
                        MainWindow.curAnimeSeries      = ep.AnimeSeries;

                        bool foundEpType = false;
                        foreach (AnimeEpisodeTypeVM anEpType in ep.AnimeSeries.EpisodeTypesToDisplay)
                        {
                            if (anEpType.EpisodeType == enEpisodeType.Episode)
                            {
                                MainWindow.curAnimeEpisodeType = anEpType;
                                foundEpType = true;
                                break;
                            }
                        }

                        if (!foundEpType)
                        {
                            return;
                        }

                        MainWindow.listLevel = Listlevel.Episode;
                        GUIWindowManager.ActivateWindow(Constants.WindowIDs.MAIN, false);

                        break;

                    case 3:

                        if (ep.AnimeSeries == null)
                        {
                            return;
                        }
                        MainWindow.GlobalSeriesID = ep.AnimeSeries.AnimeSeriesID.Value;
                        GUIWindowManager.ActivateWindow(Constants.WindowIDs.ANIMEINFO, false);

                        break;
                    }
                }
            }
        }
Ejemplo n.º 9
0
        protected override void OnShowContextMenu()
        {
            try
            {
                GUIListItem currentitem = this.m_Facade.SelectedListItem;
                if (currentitem == null || !(currentitem.TVTag is TvDB_ImageWideBannerVM))
                {
                    return;
                }
                TvDB_ImageWideBannerVM selectedBanner = currentitem.TVTag as TvDB_ImageWideBannerVM;

                IDialogbox dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
                if (dlg == null)
                {
                    return;
                }
                dlg.Reset();
                dlg.SetHeading("Wide Banner");

                bool isDisabled = false;
                bool isDefault  = false;

                isDisabled = selectedBanner.Enabled == 0 ? true : false;


                GUIListItem pItem;

                if (isDisabled)
                {
                    pItem = new GUIListItem("Enable"); dlg.Add(pItem);
                }
                else
                {
                    pItem = new GUIListItem("Disable"); dlg.Add(pItem);
                }

                if (!isDisabled)
                {
                    if (!selectedBanner.IsImageDefault)
                    {
                        pItem = new GUIListItem("Set as Default"); dlg.Add(pItem);
                    }
                    if (selectedBanner.IsImageDefault)
                    {
                        pItem = new GUIListItem("Remove as Default"); dlg.Add(pItem);
                    }
                }


                // lets show it
                dlg.DoModal(GUIWindowManager.ActiveWindow);

                if (dlg.SelectedId == 1)                 // enabled/disable
                {
                    bool endis = isDisabled;
                    JMMServerHelper.EnableDisableWideBanner(endis, selectedBanner, AnimeID);

                    ShowWideBanners();
                    return;
                }

                if (dlg.SelectedId == 2)
                {
                    bool isdef = !selectedBanner.IsImageDefault;
                    JMMServerHelper.SetDefaultWideBanner(isdef, selectedBanner, AnimeID);

                    ShowWideBanners();
                    return;
                }
            }
            catch (Exception ex)
            {
                BaseConfig.MyAnimeLog.Write("Exception in Wide Banner Chooser Context Menu: " + ex.Message);
                return;
            }
        }
Ejemplo n.º 10
0
        public List <string> GetParms()
        {
            List <string> parms = new List <string>();

            if (searchType == DownloadSearchType.Episode)
            {
                AnimeEpisodeVM ep = searchParameter as AnimeEpisodeVM;

                AnimeSeriesVM series = JMMServerHelper.GetSeries(ep.AnimeSeriesID);
                if (series == null)
                {
                    return(parms);
                }

                AniDB_AnimeVM anime = series.AniDB_Anime;
                if (anime == null)
                {
                    return(parms);
                }

                // only use the first 2 words of the anime's title
                string[] titles = anime.MainTitle.Split(' ');
                int      i      = 0;
                foreach (string s in titles)
                {
                    i++;
                    parms.Add(s.Trim());
                    if (i == 2)
                    {
                        break;
                    }
                }

                parms.Add(ep.EpisodeNumber.ToString().PadLeft(2, '0'));
            }

            if (searchType == DownloadSearchType.Series)
            {
                AniDB_AnimeVM anime = searchParameter as AniDB_AnimeVM;

                // only use the first 2 words of the anime's title
                string[] titles = anime.MainTitle.Split(' ');
                int      i      = 0;
                foreach (string s in titles)
                {
                    i++;
                    parms.Add(s.Trim());
                    if (i == 2)
                    {
                        break;
                    }
                }
            }

            if (searchType == DownloadSearchType.Manual)
            {
                string[] titles = searchParameter.ToString().Split(' ');
                foreach (string s in titles)
                {
                    parms.Add(s.Trim());
                }
            }

            return(parms);
        }
Ejemplo n.º 11
0
        private void ProcessImageDownloadRequest(ImageDownloadRequest req)
        {
            try
            {
                string fileName      = GetFileName(req, false);
                string entityID      = GetEntityID(req);
                bool   downloadImage = true;
                bool   fileExists    = File.Exists(fileName);

                if (fileExists)
                {
                    if (!req.ForceDownload)
                    {
                        downloadImage = false;
                    }
                    else
                    {
                        downloadImage = true;
                    }
                }
                else
                {
                    downloadImage = true;
                }

                if (downloadImage)
                {
                    string tempName = Path.Combine(Utils.GetImagesTempFolder(), Path.GetFileName(fileName));
                    if (File.Exists(tempName))
                    {
                        File.Delete(tempName);
                    }


                    OnImageDownloadEvent(new ImageDownloadEventArgs("", req, ImageDownloadEventType.Started));
                    if (fileExists)
                    {
                        File.Delete(fileName);
                    }

                    byte[] imageArray = null;
                    try
                    {
                        imageArray = JMMServerHelper.GetImage(entityID, req.ImageType, false);
                    }
                    catch { }

                    if (imageArray == null)
                    {
                        imagesToDownload.Remove(req);
                        OnQueueUpdateEvent(new QueueUpdateEventArgs(this.QueueCount));
                        return;
                    }

                    File.WriteAllBytes(tempName, imageArray);

                    // move the file to it's final location
                    string fullPath = Path.GetDirectoryName(fileName);
                    if (!Directory.Exists(fullPath))
                    {
                        Directory.CreateDirectory(fullPath);
                    }

                    // move the file to it's final location
                    File.Move(tempName, fileName);
                }

                OnImageDownloadEvent(new ImageDownloadEventArgs("", req, ImageDownloadEventType.Complete));


                // if the file is a tvdb fanart also get the thumbnail
                if (req.ImageType == ImageEntityType.TvDB_FanArt)
                {
                    fileName      = GetFileName(req, true);
                    entityID      = GetEntityID(req);
                    downloadImage = true;
                    fileExists    = File.Exists(fileName);

                    if (fileExists)
                    {
                        if (!req.ForceDownload)
                        {
                            downloadImage = false;
                        }
                        else
                        {
                            downloadImage = true;
                        }
                    }
                    else
                    {
                        downloadImage = true;
                    }

                    if (downloadImage)
                    {
                        string tempName = Path.Combine(Utils.GetImagesTempFolder(), Path.GetFileName(fileName));
                        if (File.Exists(tempName))
                        {
                            File.Delete(tempName);
                        }

                        OnImageDownloadEvent(new ImageDownloadEventArgs("", req, ImageDownloadEventType.Started));
                        if (fileExists)
                        {
                            File.Delete(fileName);
                        }

                        byte[] imageArray = null;
                        try
                        {
                            imageArray = JMMServerVM.Instance.imageClient.GetImage(entityID, (int)req.ImageType, true);
                        }
                        catch { }

                        if (imageArray == null)
                        {
                            imagesToDownload.Remove(req);
                            OnQueueUpdateEvent(new QueueUpdateEventArgs(this.QueueCount));
                            return;
                        }

                        File.WriteAllBytes(tempName, imageArray);

                        // move the file to it's final location
                        string fullPath = Path.GetDirectoryName(fileName);
                        if (!Directory.Exists(fullPath))
                        {
                            Directory.CreateDirectory(fullPath);
                        }

                        // move the file to it's final location
                        File.Move(tempName, fileName);
                    }
                }

                imagesToDownload.Remove(req);
                OnQueueUpdateEvent(new QueueUpdateEventArgs(this.QueueCount));

                //OnGotShowInfoEvent(new GotShowInfoEventArgs(req.animeID));
            }
            catch (Exception ex)
            {
                imagesToDownload.Remove(req);
                OnQueueUpdateEvent(new QueueUpdateEventArgs(this.QueueCount));
                BaseConfig.MyAnimeLog.Write(ex.ToString());
            }
        }
Ejemplo n.º 12
0
        private void LoadData()
        {
            dummyAnyAnimeForMonth.Visible = false;

            monthNow = new DateTime(MainWindow.CurrentCalendarYear, MainWindow.CurrentCalendarMonth, 1);

            monthMinusOne   = monthNow.AddMonths(-1);
            monthMinusTwo   = monthNow.AddMonths(-2);
            monthMinusThree = monthNow.AddMonths(-3);

            monthPlusOne   = monthNow.AddMonths(1);
            monthPlusTwo   = monthNow.AddMonths(2);
            monthPlusThree = monthNow.AddMonths(3);

            setGUIProperty("Calendar.CurrentMonth", monthNow.ToString("MMM"));
            setGUIProperty("Calendar.CurrentYear", monthNow.ToString("yyyy"));

            setGUIProperty("Calendar.MinusOneMonth", monthMinusOne.ToString("MMM"));
            setGUIProperty("Calendar.MinusOneYear", monthMinusOne.ToString("yyyy"));

            setGUIProperty("Calendar.MinusTwoMonth", monthMinusTwo.ToString("MMM"));
            setGUIProperty("Calendar.MinusTwoYear", monthMinusTwo.ToString("yyyy"));

            setGUIProperty("Calendar.MinusThreeMonth", monthMinusThree.ToString("MMM"));
            setGUIProperty("Calendar.MinusThreeYear", monthMinusThree.ToString("yyyy"));


            setGUIProperty("Calendar.PlusOneMonth", monthPlusOne.ToString("MMM"));
            setGUIProperty("Calendar.PlusOneYear", monthPlusOne.ToString("yyyy"));

            setGUIProperty("Calendar.PlusTwoMonth", monthPlusTwo.ToString("MMM"));
            setGUIProperty("Calendar.PlusTwoYear", monthPlusTwo.ToString("yyyy"));

            setGUIProperty("Calendar.PlusThreeMonth", monthPlusThree.ToString("MMM"));
            setGUIProperty("Calendar.PlusThreeYear", monthPlusThree.ToString("yyyy"));


            // find the anime for this month
            colAnime = JMMServerHelper.GetAnimeForMonthYear(monthNow.Month, monthNow.Year);

            if (colAnime.Count > 0)
            {
                dummyAnyAnimeForMonth.Visible = true;
            }

            // now sort the groups by air date
            List <SortPropOrFieldAndDirection> sortCriteria = new List <SortPropOrFieldAndDirection>();

            sortCriteria.Add(new SortPropOrFieldAndDirection("AirDate", false, SortType.eDateTime));
            colAnime = Sorting.MultiSort <AniDB_AnimeVM>(colAnime, sortCriteria);

            //BaseConfig.MyAnimeLog.Write(monthNow.ToString("MMM yyyy").ToUpper());

            GUIControl.ClearControl(this.GetID, m_Facade.GetID);
            m_Facade.CurrentLayout = GUIFacadeControl.Layout.Filmstrip;

            int selIndex = 0;
            int pos      = 0;

            foreach (AniDB_AnimeVM anime in colAnime)
            {
                //BaseConfig.MyAnimeLog.Write(anime.ToString());

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

                if (anime.AnimeID == MainWindow.GlobalSeriesID)
                {
                    selIndex = pos;
                }
                pos++;

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

            if (m_Facade.Count > 0)
            {
                //BaseConfig.MyAnimeLog.Write("selIndex: {0}", selIndex.ToString());

                int currentIndex = m_Facade.SelectedListItemIndex;
                if (selIndex >= 0 && selIndex < m_Facade.Count && selIndex != currentIndex)
                {
                    int increment = (currentIndex < selIndex) ? 1 : -1;
                    MediaPortal.GUI.Library.Action.ActionType actionType = (currentIndex < selIndex) ? MediaPortal.GUI.Library.Action.ActionType.ACTION_MOVE_RIGHT : MediaPortal.GUI.Library.Action.ActionType.ACTION_MOVE_LEFT;
                    for (int i = currentIndex; i != selIndex; i += increment)
                    {
                        m_Facade.OnAction(new MediaPortal.GUI.Library.Action(actionType, 0, 0));
                    }
                }

                m_Facade.SelectedListItemIndex = selIndex;

                AniDB_AnimeVM anime = m_Facade.SelectedListItem.TVTag as AniDB_AnimeVM;
                if (anime != null)
                {
                    SetAnime(anime);
                }
            }

            // set the focus button
            btnCurrentPlusOne.Focus = false;
            switch (MainWindow.CurrentCalendarButton)
            {
            case 3: btnCurrentMinusOne.Focus = true; break;

            case 4: btnCurrentPlusOne.Focus = true; break;
            }
        }
Ejemplo n.º 13
0
        private void ShowCharacters()
        {
            GUIControl.ClearControl(this.GetID, m_Facade.GetID);

            if (dummyMainCharExists != null)
            {
                dummyMainCharExists.Visible = false;
            }
            if (dummyMainActorExists != null)
            {
                dummyMainActorExists.Visible = false;
            }
            if (dummySeriesExists != null)
            {
                dummySeriesExists.Visible = false;
            }

            clearGUIProperty("Title");
            clearGUIProperty("Character.Name");
            clearGUIProperty("Character.KanjiName");
            clearGUIProperty("Actor.Name");
            clearGUIProperty("Actor.KanjiName");
            clearGUIProperty("Character.CharacterCount");

            BaseConfig.MyAnimeLog.Write("CharWindow.GlobalSeriesID = {0}", MainWindow.GlobalSeriesID.ToString());

            charList.Clear();

            mainAnime = null;
            serMain   = null;

            serMain = JMMServerHelper.GetSeries(MainWindow.GlobalSeriesID);
            if (serMain != null)
            {
                mainAnime = serMain.AniDB_Anime;
            }
            else
            {
                return;
            }

            if (mainAnime == null)
            {
                return;
            }

            setGUIProperty("Character.Main.Title", mainAnime.FormattedTitle);

            charList = mainAnime.Characters;
            if (dummyCharactersExist != null)
            {
                if (charList.Count > 0)
                {
                    dummyCharactersExist.Visible = true;
                }
                else
                {
                    dummyCharactersExist.Visible = false;
                }
            }
            setGUIProperty("Character.CharacterCount", charList.Count.ToString());

            setGUIProperty("Title", serMain.SeriesName);

            string imagePathNoPicture = GUIGraphicsContext.Skin + @"\Media\MyAnime3\anime3_blankchar.png";

            foreach (AniDB_CharacterVM aniChar in charList)
            {
                string imagePath = imagePathNoPicture;
                if (!string.IsNullOrEmpty(aniChar.PosterPath) && File.Exists(aniChar.PosterPath))
                {
                    imagePath = aniChar.PosterPath;
                }

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

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

                AniDB_CharacterVM aniChar = m_Facade.SelectedListItem.TVTag as AniDB_CharacterVM;
                if (aniChar != null)
                {
                    SetCharacterProperties(aniChar);
                }
            }
        }
Ejemplo n.º 14
0
        public static List <GroupFilterVM> GetGroupFiltersForPredefined(GroupFilterVM pre)
        {
            List <GroupFilterVM> gfs = new List <GroupFilterVM>();

            if (pre.GroupFilterID.Value == Constants.StaticGF.Predefined_Years)
            {
                List <int> years = new List <int>();

                List <JMMServerBinary.Contract_AnimeSeries> contracts = JMMServerVM.Instance.clientBinaryHTTP.GetAllSeries(JMMServerVM.Instance.CurrentUser.JMMUserID);
                foreach (JMMServerBinary.Contract_AnimeSeries serContract in contracts)
                {
                    AnimeSeriesVM ser = new AnimeSeriesVM(serContract);

                    int startYear = 0;
                    if (!ser.Stat_AirDate_Min.HasValue)
                    {
                        continue;
                    }
                    startYear = ser.Stat_AirDate_Min.Value.Year;

                    int endYear = DateTime.Now.AddYears(1).Year;
                    if (ser.Stat_AirDate_Max.HasValue)
                    {
                        endYear = ser.Stat_AirDate_Max.Value.Year;
                    }

                    for (int i = startYear; i <= endYear; i++)
                    {
                        if (!years.Contains(i))
                        {
                            years.Add(i);
                        }
                    }
                }

                years.Sort();

                foreach (int yr in years)
                {
                    GroupFilterVM gf = new GroupFilterVM();
                    gf.GroupFilterID      = Constants.StaticGF.Predefined_Years_Child;
                    gf.FilterConditions   = new List <GroupFilterConditionVM>();
                    gf.ApplyToSeries      = 0;
                    gf.BaseCondition      = 1;
                    gf.GroupFilterName    = yr.ToString();
                    gf.PredefinedCriteria = yr.ToString();

                    gfs.Add(gf);
                }
            }
            else if (pre.GroupFilterID.Value == Constants.StaticGF.Predefined_Categories)
            {
                List <string> categories = new List <string>();

                List <AnimeGroupVM> grps = JMMServerHelper.GetAnimeGroupsForFilter(GroupFilterHelper.AllGroupsFilter);
                foreach (AnimeGroupVM grp in grps)
                {
                    foreach (string cat in grp.Categories)
                    {
                        if (!categories.Contains(cat) && !string.IsNullOrEmpty(cat))
                        {
                            categories.Add(cat);
                        }
                    }
                }

                categories.Sort();

                foreach (string cat in categories)
                {
                    GroupFilterVM gf = new GroupFilterVM();
                    gf.GroupFilterID      = Constants.StaticGF.Predefined_Categories_Child;
                    gf.FilterConditions   = new List <GroupFilterConditionVM>();
                    gf.ApplyToSeries      = 0;
                    gf.BaseCondition      = 1;
                    gf.GroupFilterName    = cat;
                    gf.PredefinedCriteria = cat;

                    gfs.Add(gf);
                }
            }

            return(gfs);
        }
Ejemplo n.º 15
0
        protected override void OnShowContextMenu()
        {
            try
            {
                GUIListItem currentitem = this.m_Facade.SelectedListItem;
                if (currentitem == null || !(currentitem.TVTag is FanartContainer))
                {
                    return;
                }
                FanartContainer selectedFanart = currentitem.TVTag as FanartContainer;

                IDialogbox dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
                if (dlg == null)
                {
                    return;
                }
                dlg.Reset();
                dlg.SetHeading("Fanart");


                GUIListItem pItem;


                if (!selectedFanart.IsImageEnabled)
                {
                    pItem = new GUIListItem("Enable");
                    dlg.Add(pItem);
                }
                else
                {
                    pItem = new GUIListItem("Disable");
                    dlg.Add(pItem);
                }

                if (selectedFanart.IsImageEnabled)
                {
                    if (selectedFanart.IsImageDefault)
                    {
                        pItem = new GUIListItem("Remove as Default");
                        dlg.Add(pItem);
                    }
                    else
                    {
                        pItem = new GUIListItem("Set as Default");
                        dlg.Add(pItem);
                    }
                }


                // lets show it
                dlg.DoModal(GUIWindowManager.ActiveWindow);

                if (dlg.SelectedId == 1)                 // enabled/disable
                {
                    bool endis = !selectedFanart.IsImageEnabled;
                    JMMServerHelper.EnableDisableFanart(endis, selectedFanart, AnimeID);

                    ShowFanart();
                    return;
                }

                if (dlg.SelectedId == 2)
                {
                    bool isdef = !selectedFanart.IsImageDefault;
                    JMMServerHelper.SetDefaultFanart(isdef, selectedFanart, AnimeID);

                    ShowFanart();
                    return;
                }
            }
            catch (Exception ex)
            {
                BaseConfig.MyAnimeLog.Write("Exception in Fanart Chooser Context Menu: " + ex.Message + ex.StackTrace);
                return;
            }
        }
Ejemplo n.º 16
0
        public static List <TorrentLink> SearchTorrents(DownloadSearchCriteria search)
        {
            List <string>      parms = search.GetParms();
            List <TorrentLink> links = new List <TorrentLink>();


            TorrentsAnimeSuki   suki  = new TorrentsAnimeSuki();
            TorrentsBakaUpdates bakau = new TorrentsBakaUpdates();

            List <string> episodeGroupParms = new List <string>();

            // lets do something special for episodes
            if (BaseConfig.Settings.TorrentPreferOwnGroups && search.SearchType == DownloadSearchType.Episode)
            {
                AnimeEpisodeVM ep = search.SearchParameter as AnimeEpisodeVM;

                AnimeSeriesVM series = JMMServerHelper.GetSeries(ep.AnimeSeriesID);
                if (series != null && series.AniDB_Anime != null)
                {
                    List <GroupVideoQualityVM> videoQualityRecords         = new List <GroupVideoQualityVM>();
                    List <JMMServerBinary.Contract_GroupVideoQuality> summ = JMMServerVM.Instance.clientBinaryHTTP.GetGroupVideoQualitySummary(series.AniDB_Anime.AnimeID);
                    foreach (JMMServerBinary.Contract_GroupVideoQuality contract in summ)
                    {
                        GroupVideoQualityVM vidQual = new GroupVideoQualityVM(contract);
                        videoQualityRecords.Add(vidQual);
                    }

                    // apply sorting
                    if (videoQualityRecords.Count > 0)
                    {
                        List <SortPropOrFieldAndDirection> sortlist = new List <SortPropOrFieldAndDirection>();
                        sortlist.Add(new SortPropOrFieldAndDirection("FileCountNormal", true, SortType.eInteger));
                        videoQualityRecords = Sorting.MultiSort <GroupVideoQualityVM>(videoQualityRecords, sortlist);
                    }

                    //only use the first 2
                    int i = 0;
                    foreach (GroupVideoQualityVM gvq in videoQualityRecords)
                    {
                        if (i == 2)
                        {
                            break;
                        }
                        if (!episodeGroupParms.Contains(gvq.GroupNameShort))
                        {
                            episodeGroupParms.Add(gvq.GroupNameShort);
                            i++;
                        }
                    }
                }
            }

            // if searching by series and BakaBT is enabled, use that first
            bool doneBakaBT = false;

            if (BaseConfig.Settings.TorrentSources.Contains(MyAnimePlugin3.Constants.TorrentSourceNames.BakaBT) && search.SearchType == DownloadSearchType.Series)
            {
                doneBakaBT = true;
                TorrentsBakaBT     bakbt      = new TorrentsBakaBT();
                List <TorrentLink> bakbtLinks = bakbt.GetTorrents(parms);
                links.AddRange(bakbtLinks);
            }

            bool doneAnimeBytes = false;

            if (BaseConfig.Settings.TorrentSources.Contains(MyAnimePlugin3.Constants.TorrentSourceNames.AnimeBytes) && search.SearchType == DownloadSearchType.Series)
            {
                doneAnimeBytes = true;
                TorrentsAnimeBytes abytes      = new TorrentsAnimeBytes();
                List <TorrentLink> abytesLinks = abytes.GetTorrents(parms);
                links.AddRange(abytesLinks);
            }

            foreach (string src in BaseConfig.Settings.TorrentSources)
            {
                if (src == MyAnimePlugin3.Constants.TorrentSourceNames.BakaBT && !doneBakaBT)
                {
                    TorrentsBakaBT     bakbt      = new TorrentsBakaBT();
                    List <TorrentLink> bakbtLinks = bakbt.GetTorrents(parms);
                    links.AddRange(bakbtLinks);
                }

                if (src == MyAnimePlugin3.Constants.TorrentSourceNames.BakaBT && !doneAnimeBytes)
                {
                    TorrentsAnimeBytes abytes      = new TorrentsAnimeBytes();
                    List <TorrentLink> abytesLinks = abytes.GetTorrents(parms);
                    links.AddRange(abytesLinks);
                }

                if (src == MyAnimePlugin3.Constants.TorrentSourceNames.Nyaa)
                {
                    TorrentsNyaa       nyaa    = new TorrentsNyaa();
                    List <TorrentLink> ttLinks = null;
                    Dictionary <string, TorrentLink> dictLinks = new Dictionary <string, TorrentLink>();

                    foreach (string grp in episodeGroupParms)
                    {
                        List <string> tempParms = new List <string>();
                        foreach (string parmTemp in parms)
                        {
                            tempParms.Add(parmTemp);
                        }
                        tempParms.Insert(0, grp);
                        ttLinks = nyaa.GetTorrents(tempParms);

                        BaseConfig.MyAnimeLog.Write("Searching for: " + search.ToString() + "(" + grp + ")");

                        // only use the first 20
                        int x = 0;
                        foreach (TorrentLink link in ttLinks)
                        {
                            if (x == 20)
                            {
                                break;
                            }
                            dictLinks[link.TorrentDownloadLink] = link;
                            BaseConfig.MyAnimeLog.Write("Adding link: " + link.ToString());
                        }
                    }

                    BaseConfig.MyAnimeLog.Write("Searching for: " + search.ToString());
                    ttLinks = nyaa.GetTorrents(parms);
                    foreach (TorrentLink link in ttLinks)
                    {
                        dictLinks[link.TorrentDownloadLink] = link;
                        BaseConfig.MyAnimeLog.Write("Adding link: " + link.ToString());
                    }

                    links.AddRange(dictLinks.Values);
                }

                if (src == MyAnimePlugin3.Constants.TorrentSourceNames.AnimeSuki)
                {
                    List <TorrentLink> sukiLinks = suki.GetTorrents(parms);
                    links.AddRange(sukiLinks);
                }

                if (src == MyAnimePlugin3.Constants.TorrentSourceNames.TT)
                {
                    TorrentsTokyoToshokan            tt        = new TorrentsTokyoToshokan();
                    List <TorrentLink>               ttLinks   = null;
                    Dictionary <string, TorrentLink> dictLinks = new Dictionary <string, TorrentLink>();

                    foreach (string grp in episodeGroupParms)
                    {
                        List <string> tempParms = new List <string>();
                        foreach (string parmTemp in parms)
                        {
                            tempParms.Add(parmTemp);
                        }
                        tempParms.Insert(0, grp);
                        ttLinks = tt.GetTorrents(tempParms);

                        BaseConfig.MyAnimeLog.Write("Searching for: " + search.ToString() + "(" + grp + ")");

                        // only use the first 20
                        int x = 0;
                        foreach (TorrentLink link in ttLinks)
                        {
                            if (x == 20)
                            {
                                break;
                            }
                            dictLinks[link.TorrentDownloadLink] = link;
                            BaseConfig.MyAnimeLog.Write("Adding link: " + link.ToString());
                        }
                    }

                    BaseConfig.MyAnimeLog.Write("Searching for: " + search.ToString());
                    ttLinks = tt.GetTorrents(parms);
                    foreach (TorrentLink link in ttLinks)
                    {
                        dictLinks[link.TorrentDownloadLink] = link;
                        BaseConfig.MyAnimeLog.Write("Adding link: " + link.ToString());
                    }

                    links.AddRange(dictLinks.Values);
                }

                if (src == MyAnimePlugin3.Constants.TorrentSourceNames.BakaUpdates)
                {
                    List <TorrentLink> bakauLinks = bakau.GetTorrents(parms);
                    links.AddRange(bakauLinks);
                }
            }



            return(links);
        }
Ejemplo n.º 17
0
        protected override void OnClicked(int controlId, GUIControl control, MediaPortal.GUI.Library.Action.ActionType actionType)
        {
            if (MA3WindowManager.HandleWindowChangeButton(control))
            {
                return;
            }

            if (btnAddCategory != null && control == btnAddCategory)
            {
                string cat = Utils.PromptSelectCategory("");
                if (!string.IsNullOrEmpty(cat))
                {
                    if (!string.IsNullOrEmpty(MainWindow.RandomWindow_SeriesCategories))
                    {
                        MainWindow.RandomWindow_SeriesCategories += ", ";
                    }

                    MainWindow.RandomWindow_SeriesCategories += cat;

                    SetDisplayDetails();
                }
            }

            if (btnEpisodeAddCategory != null && control == btnEpisodeAddCategory)
            {
                string cat = Utils.PromptSelectCategory("");
                if (!string.IsNullOrEmpty(cat))
                {
                    if (!string.IsNullOrEmpty(MainWindow.RandomWindow_EpisodeCategories))
                    {
                        MainWindow.RandomWindow_EpisodeCategories += ", ";
                    }

                    MainWindow.RandomWindow_EpisodeCategories += cat;

                    SetDisplayDetails();
                }
            }

            if (btnClearcategories != null && control == btnClearcategories)
            {
                MainWindow.RandomWindow_SeriesCategories = "";
                SetDisplayDetails();
            }

            if (btnEpisodeClearcategories != null && control == btnEpisodeClearcategories)
            {
                MainWindow.RandomWindow_EpisodeCategories = "";
                SetDisplayDetails();
            }

            if (btnAllAnycategories != null && control == btnAllAnycategories)
            {
                MainWindow.RandomWindow_SeriesAllCategories = !MainWindow.RandomWindow_SeriesAllCategories;
                SetDisplayDetails();
            }

            if (btnEpisodeAllAnycategories != null && control == btnEpisodeAllAnycategories)
            {
                MainWindow.RandomWindow_EpisodeAllCategories = !MainWindow.RandomWindow_EpisodeAllCategories;
                SetDisplayDetails();
            }

            if (btnRandom != null && control == btnRandom)
            {
                if (togWatched != null)
                {
                    MainWindow.RandomWindow_SeriesWatched = togWatched.Selected;
                }
                if (togUnwatched != null)
                {
                    MainWindow.RandomWindow_SeriesUnwatched = togUnwatched.Selected;
                }
                if (togPartiallyWatched != null)
                {
                    MainWindow.RandomWindow_SeriesPartiallyWatched = togPartiallyWatched.Selected;
                }
                if (togCompleteOnly != null)
                {
                    MainWindow.RandomWindow_SeriesOnlyComplete = togCompleteOnly.Selected;
                }

                if (togEpisodeUnwatched != null)
                {
                    MainWindow.RandomWindow_EpisodeUnwatched = togEpisodeUnwatched.Selected;
                }
                if (togEpisodeWatched != null)
                {
                    MainWindow.RandomWindow_EpisodeWatched = togEpisodeWatched.Selected;
                }

                MainWindow.RandomWindow_CurrentEpisode = null;
                MainWindow.RandomWindow_CurrentSeries  = null;
                this.btnRandom.IsFocused = true;
                LoadData();
            }

            if (btnSwitchSeries != null && control == btnSwitchSeries)
            {
                this.btnSwitchSeries.IsFocused     = false;
                this.btnRandom.IsFocused           = true;
                MainWindow.RandomWindow_RandomType = RandomObjectType.Series;
                LoadData();
            }

            if (btnSwitchEpisode != null && control == btnSwitchEpisode)
            {
                this.btnSwitchEpisode.IsFocused    = false;
                this.btnRandom.IsFocused           = true;
                MainWindow.RandomWindow_RandomType = RandomObjectType.Episode;
                LoadData();
            }

            if (btnPlayEpisode != null && control == btnPlayEpisode)
            {
                if (MainWindow.RandomWindow_CurrentEpisode == null)
                {
                    return;
                }
                MainWindow.vidHandler.ResumeOrPlay(MainWindow.RandomWindow_CurrentEpisode);
            }


            if (btnEpisodeList != null && control == btnEpisodeList)
            {
                if (MainWindow.RandomWindow_CurrentSeries == null)
                {
                    return;
                }
                MainWindow.curGroupFilter = GroupFilterHelper.AllGroupsFilter;

                // find the group for this series
                AnimeGroupVM grp = JMMServerHelper.GetGroup(MainWindow.RandomWindow_CurrentSeries.AnimeGroupID);
                if (grp == null)
                {
                    BaseConfig.MyAnimeLog.Write("Group not found");
                    return;
                }
                MainWindow.curAnimeGroup       = grp;
                MainWindow.curAnimeGroupViewed = grp;
                MainWindow.curAnimeSeries      = MainWindow.RandomWindow_CurrentSeries;

                bool foundEpType = false;
                foreach (AnimeEpisodeTypeVM anEpType in MainWindow.RandomWindow_CurrentSeries.EpisodeTypesToDisplay)
                {
                    if (anEpType.EpisodeType == enEpisodeType.Episode)
                    {
                        MainWindow.curAnimeEpisodeType = anEpType;
                        foundEpType = true;
                        break;
                    }
                }

                if (!foundEpType)
                {
                    return;
                }


                MainWindow.listLevel = Listlevel.Episode;

                GUIWindowManager.CloseCurrentWindow();
                GUIWindowManager.ActivateWindow(Constants.WindowIDs.MAIN, false);
                return;
            }

            base.OnClicked(controlId, control, actionType);
        }
Ejemplo n.º 18
0
        private void LoadGroups()
        {
            string mygroupsData    = "";
            string othergroupsData = "";

            List <AniDBReleaseGroupVM> allGrps = JMMServerHelper.GetReleaseGroupsForAnime(MainAnime.AnimeID);

            List <AniDBReleaseGroupVM> mygrps    = new List <AniDBReleaseGroupVM>();
            List <AniDBReleaseGroupVM> othergrps = new List <AniDBReleaseGroupVM>();

            foreach (AniDBReleaseGroupVM grp in allGrps)
            {
                if (grp.UserCollecting)
                {
                    mygrps.Add(grp);
                }
                else
                {
                    othergrps.Add(grp);
                }
            }

            if (mygrps.Count > 0)
            {
                // now sort the groups by file count
                List <SortPropOrFieldAndDirection> sortCriteria = new List <SortPropOrFieldAndDirection>();
                sortCriteria.Add(new SortPropOrFieldAndDirection("FileCount", true, SortType.eInteger));
                mygrps = Sorting.MultiSort <AniDBReleaseGroupVM>(mygrps, sortCriteria);

                foreach (AniDBReleaseGroupVM grp in mygrps)
                {
                    mygroupsData += string.Format("{0} - ({1} Local Files)", grp.GroupName, grp.FileCount);
                    mygroupsData += Environment.NewLine;
                }
            }
            else
            {
                mygroupsData = "-";
            }

            setGUIProperty("AnimeInfo.Groups.MyGroupsDescription", mygroupsData);



            if (othergrps.Count > 0)
            {
                // now sort the groups by name
                List <SortPropOrFieldAndDirection> sortCriteria = new List <SortPropOrFieldAndDirection>();
                sortCriteria.Add(new SortPropOrFieldAndDirection("GroupName", false, SortType.eString));
                othergrps = Sorting.MultiSort <AniDBReleaseGroupVM>(othergrps, sortCriteria);

                foreach (AniDBReleaseGroupVM grp in othergrps)
                {
                    othergroupsData += string.Format("{0} - Episode Range: {1}", grp.GroupName, grp.EpisodeRange);
                    othergroupsData += Environment.NewLine;
                }
            }
            else
            {
                othergroupsData = "-";
            }

            setGUIProperty("AnimeInfo.Groups.OtherGroupsDescription", othergroupsData);
        }