コード例 #1
0
        private void ShowContextMenu(int menuaction, bool iscontextmenu)
        {
            try
              {
            bool bCoverSelected = true;
            var selectedCover = new MFCover();
            GUIListItem currentitem = this.MFacade.SelectedListItem;
            if (currentitem == null || !(currentitem.TVTag is MFCover))
              bCoverSelected = false; //return;
            else
              selectedCover = currentitem.TVTag as MFCover;

            var dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
            GUIListItem pItem;
            if (dlg == null) return;
            dlg.Reset();

            switch (menuaction)
            {
              case (int)MenuAction.MenuMain:
            #region main menu
            dlg.SetHeading(GUILocalizeStrings.Get(10799201)); // MyFilms Cover Manager

            //// disabled, can be used by just select the item
            //if (bCoverSelected)
            //{
            //  pItem = new GUIListItem(GUILocalizeStrings.Get(10798769)); // Select Cover as Default
            //  dlg.Add(pItem);
            //  pItem.ItemId = (int)MenuAction.UseAsDefault;
            //}

            pItem = new GUIListItem(GUILocalizeStrings.Get(10799204)); // Download Covers ...
            dlg.Add(pItem);
            pItem.ItemId = (int)MenuAction.MenuDownload;

            if (MyFilmsDetail.ExtendedStartmode(MyFilmsDetail.PluginMode.Extended, "CoverManager: Submenu 'create covers ...'"))
            {
              pItem = new GUIListItem(GUILocalizeStrings.Get(10799208)); // Create Covers ...
              dlg.Add(pItem);
              pItem.ItemId = (int)MenuAction.MenuCreate;
            }

            pItem = new GUIListItem(GUILocalizeStrings.Get(10799209)); // Delete Cover ...
            dlg.Add(pItem);
            pItem.ItemId = (int)MenuAction.MenuDelete;

            if (!loadingWorker.IsBusy) // don't allowing filtering until all data is loaded
            {
              pItem = new GUIListItem(GUILocalizeStrings.Get(10799210)); // Filter Cover ...
              dlg.Add(pItem);
              pItem.ItemId = (int)MenuAction.MenuFilter;
            }
            #endregion
            break;

              case (int)MenuAction.MenuDownload:
            #region submenu download covers ...
            dlg.SetHeading(GUILocalizeStrings.Get(10799204)); // Download Covers ...

            pItem = new GUIListItem(GUILocalizeStrings.Get(10798766));  // Load single Cover ...
            dlg.Add(pItem);
            pItem.ItemId = (int)MenuAction.LoadSingle;

            pItem = new GUIListItem(GUILocalizeStrings.Get(10798764)); // Load multiple Covers ...
            dlg.Add(pItem);
            pItem.ItemId = (int)MenuAction.LoadMultiple;

            pItem = new GUIListItem(GUILocalizeStrings.Get(10798761)); // Load Covers (TMDB)
            dlg.Add(pItem);
            pItem.ItemId = (int)MenuAction.LoadFromTmdb;
            #endregion
            break;

              case (int)MenuAction.MenuCreate:
            #region submenu create covers ...
            dlg.SetHeading(GUILocalizeStrings.Get(10799208));  // Create Covers ...

            if (MyFilmsDetail.ExtendedStartmode(MyFilmsDetail.PluginMode.Extended, "CoverManager: Creation of Covers from Movie not yet supported"))
            {
              pItem = new GUIListItem(GUILocalizeStrings.Get(10798728)); // create cover from movie ...
              dlg.Add(pItem);
              pItem.ItemId = (int)MenuAction.CreateFromMovie;

              pItem = new GUIListItem(GUILocalizeStrings.Get(10798729)); // Create cover from film as mosaic
              dlg.Add(pItem);
              pItem.ItemId = (int)MenuAction.CreateFromMovieAsMosaic;
            }
            #endregion
            break;

              case (int)MenuAction.MenuDelete:
            #region submenu delete covers ...
            dlg.SetHeading(GUILocalizeStrings.Get(10799209));  // Delete Covers ...

            if (bCoverSelected)
            {
              if (!loadingWorker.IsBusy && !string.IsNullOrEmpty(MyFilms.r[this.MovieId]["Picture"].ToString()))
              {
                pItem = new GUIListItem(GUILocalizeStrings.Get(10798810)); // Delete Movie Cover from DB
                dlg.Add(pItem);
                pItem.ItemId = (int)MenuAction.ClearMovieCover;
              }

              pItem = new GUIListItem(GUILocalizeStrings.Get(10799212)); //"Delete all 'Low'"
              dlg.Add(pItem);
              pItem.ItemId = (int)MenuAction.DeleteAllLow;

              pItem = new GUIListItem(GUILocalizeStrings.Get(10799213)); // "Delete all 'Medium'"
              dlg.Add(pItem);
              pItem.ItemId = (int)MenuAction.DeleteAllMedium;

              pItem = new GUIListItem(GUILocalizeStrings.Get(10799214)); // "Delete all 'High'"
              dlg.Add(pItem);
              pItem.ItemId = (int)MenuAction.DeleteAllHigh;

              pItem = new GUIListItem(GUILocalizeStrings.Get(10799211)); // Delete selected Cover
              dlg.Add(pItem);
              pItem.ItemId = (int)MenuAction.DeleteSelected;

              pItem = new GUIListItem(GUILocalizeStrings.Get(10799215)); // "Delete all except currently selected"
              dlg.Add(pItem);
              pItem.ItemId = (int)MenuAction.DeleteAllExceptSelected;
            }
            #endregion
            break;

              case (int)MenuAction.MenuFilter:
            #region submenu filter covers ... (calls extra method)
            dlg.SetHeading(GUILocalizeStrings.Get(10799210)); // Filter Cover ...

            pItem = new GUIListItem(GUILocalizeStrings.Get(10799221)); // All
            dlg.Add(pItem);
            pItem.ItemId = (int)MenuFilterAction.all;

            pItem = new GUIListItem(GUILocalizeStrings.Get(10799222)); // High
            dlg.Add(pItem);
            pItem.ItemId = (int)MenuFilterAction.high;

            pItem = new GUIListItem(GUILocalizeStrings.Get(10799223)); // Medium
            dlg.Add(pItem);
            pItem.ItemId = (int)MenuFilterAction.medium;

            pItem = new GUIListItem(GUILocalizeStrings.Get(10799224)); // Low
            dlg.Add(pItem);
            pItem.ItemId = (int)MenuFilterAction.low;
            #endregion
            break;
            }

            dlg.DoModal(GUIWindowManager.ActiveWindow);

            if (dlg.SelectedLabel == -1)
            {
              #region conditional return to main menu
              if (iscontextmenu)
              {
            switch (menuaction)
            {
              case (int)MenuAction.MenuMain:
                dlg.Reset();
                return;
              case (int)MenuAction.MenuDownload:
              case (int)MenuAction.MenuCreate:
              case (int)MenuAction.MenuDelete:
              case (int)MenuAction.MenuFilter:
                ShowContextMenu((int)MenuAction.MenuMain, true);
                break;
            }
              }
              else
              {
            return;
              }
              #endregion
            }

            string title = "";
            string mediapath = "";
            MyFilmsDetail.Searchtitles sTitles;
            switch (dlg.SelectedId) // what was chosen?
            {
              case (int)MenuAction.MenuDownload:
            dlg.Reset();
            this.ShowContextMenu((int)MenuAction.MenuDownload, iscontextmenu);
            break;
              case (int)MenuAction.MenuCreate:
            dlg.Reset();
            this.ShowContextMenu((int)MenuAction.MenuCreate, iscontextmenu);
            break;
              case (int)MenuAction.MenuDelete:
            dlg.Reset();
            this.ShowContextMenu((int)MenuAction.MenuDelete, iscontextmenu);
            break;
              case (int)MenuAction.MenuFilter:
            dlg.Reset();
            ShowFiltersMenu();
            break;

              case (int)MenuAction.LoadSingle:
            //downloadFanart(selectedCover);
            title = MyFilmsDetail.GetSearchTitle(MyFilms.r, MyFilms.conf.StrIndex, "");
            mediapath = MyFilmsDetail.GetMediaPathOfFirstFile(MyFilms.r, MyFilms.conf.StrIndex);
            sTitles = MyFilmsDetail.GetSearchTitles(MyFilms.r[MyFilms.conf.StrIndex], mediapath);
            MyFilmsDetail.grabb_Internet_Informations(title, GetID, true, MyFilms.conf.StrGrabber_cnf, mediapath, MyFilmsDetail.GrabType.Cover, false, sTitles, SearchAnimation);
            // this.RefreshFacade(); // will be done by OnDetailsUpdated Message Handler
            break;
              case (int)MenuAction.LoadMultiple:
            //downloadFanart(selectedCover);
            title = MyFilmsDetail.GetSearchTitle(MyFilms.r, MyFilms.conf.StrIndex, "");
            mediapath = MyFilmsDetail.GetMediaPathOfFirstFile(MyFilms.r, MyFilms.conf.StrIndex);
            sTitles = MyFilmsDetail.GetSearchTitles(MyFilms.r[MyFilms.conf.StrIndex], mediapath);
            MyFilmsDetail.grabb_Internet_Informations(title, GetID, true, MyFilms.conf.StrGrabber_cnf, mediapath, MyFilmsDetail.GrabType.MultiCovers, false, sTitles, SearchAnimation);
            // this.RefreshFacade(); // will be done by OnDetailsUpdated Message Handler
            break;
              case (int)MenuAction.LoadFromTmdb:
            sTitles = MyFilmsDetail.GetSearchTitles(MyFilms.r[MyFilms.conf.StrIndex], "");
            MyFilmsDetail.Download_TMDB_Posters(sTitles.OriginalTitle, sTitles.TranslatedTitle, sTitles.Director, sTitles.Year.ToString(), false, GetID, sTitles.OriginalTitle, SearchAnimation);
            // this.RefreshFacade(); // will be done by OnDetailsUpdated Message Handler
            break;
              case (int)MenuAction.CreateFromMovie:
            //ToDo: Add Code for single image thumbnailer
            // this.RefreshFacade(); // will be done by OnDetailsUpdated Message Handler
            break;
              case (int)MenuAction.CreateFromMovieAsMosaic:
            //downloadFanart(selectedCover);
            MyFilmsDetail.CreateThumbFromMovie();
            // this.RefreshFacade(); // will be done by OnDetailsUpdated Message Handler
            break;
              case (int)MenuAction.DeleteSelected:
            // delete from DB, if it is the one currently selected
            if (NewArtworkFileName == selectedCover.FullPath)
            {
              NewArtworkFileName = "";
              sTitles = MyFilmsDetail.GetSearchTitles(MyFilms.r[this.MovieId], MyFilmsDetail.GetMediaPathOfFirstFile(MyFilms.r, this.MovieId));
              ArtworkFileName = MyFilmsDetail.GetOrCreateCoverFilename(MyFilms.r, this.MovieId, sTitles.MasterTitle);
              MyFilmsDetail.clearGUIProperty("picture");
              this.SaveChangesToDb();
            }
            selectedCover.Delete(AllTitles());
            // and reinit the display to get rid of it
            this.RefreshFacade();
            break;
              case (int)MenuAction.DeleteAllLow:
            this.DeleteSelectedFromGroup("Low");
            this.RefreshFacade();
            break;
              case (int)MenuAction.DeleteAllMedium:
            this.DeleteSelectedFromGroup("Medium");
            this.RefreshFacade();
            break;
              case (int)MenuAction.DeleteAllHigh:
            this.DeleteSelectedFromGroup("High");
            this.RefreshFacade();
            break;
              case (int)MenuAction.DeleteAllExceptSelected:
            DeleteAllExceptSelected(this.MFacade.SelectedListItemIndex);
            this.RefreshFacade();
            break;
              case (int)MenuAction.UseAsDefault:
            SetFacadeItemAsChosen(this.MFacade.SelectedListItemIndex);
            selectedCover.Chosen = true;
            this.SetDefaultCover(selectedCover);
            break;
              case (int)MenuAction.ClearMovieCover:
            dlg.Reset();
            this.RemoveMovieCoverFromDb();
            ClearProperties();
            UpdateFilterProperty(false);
            this.RefreshFacade();
            break;
            }
              }
              catch (Exception ex)
              {
            LogMyFilms.Debug("Exception in Artwork Chooser Context Menu: " + ex.Message);
              }
        }