Exemple #1
0
        private void DoAutoMatching(DBSeries series, string orderingOption)
        {
            var seriesMatches         = matches.SingleOrDefault(kv => kv.Key == series);
            List <DBEpisode> localEps = localeps[series];

            var newseriesMatches = new List <KeyValuePair <DBEpisode, DBOnlineEpisode> >();

            foreach (var localEp in localEps)
            {
                var bestMatchVal = from oe in onlineeps.Single(s => s.Key == series).Value
                                   select new { Episode = oe, MatchValue = OnlineParsing.matchOnlineToLocalEpisode(series, localEp, oe, orderingOption) };
                var matchedEp = bestMatchVal.OrderBy(me => me.MatchValue).FirstOrDefault(me => me.MatchValue < int.MaxValue);
                if (matchedEp != null)
                {
                    newseriesMatches.Add(new KeyValuePair <DBEpisode, DBOnlineEpisode>(localEp, matchedEp.Episode));
                }
                else
                {
                    newseriesMatches.Add(new KeyValuePair <DBEpisode, DBOnlineEpisode>(localEp, null));
                }
            }
            if (seriesMatches.Key != null)
            {
                matches.Remove(seriesMatches);
            }
            matches.Add(new KeyValuePair <DBSeries, List <KeyValuePair <DBEpisode, DBOnlineEpisode> > >(series, newseriesMatches));
        }
        private void DoLocalParsing()
        {
            LocalParse runner = new LocalParse();

            runner.LocalParseCompleted += new LocalParse.LocalParseCompletedHandler(//runner_LocalParseCompleted);
                results =>
            {
                allFoundFiles = results.Select(r => r.PathPair).ToList();
                OnlineParsing.RemoveFilesInDB(ref results);
                this.labelWaitParse.Text = "Local File Parsing is done, displaying Results...";
                MPTVSeriesLog.Write(this.labelWaitParse.Text);
                origResults = results.ToList <parseResult>();
                FillGrid(results);
                this.labelWaitParse.Text = "Please make changes to the Results below, and/or add files. Click Next to continue.";
                // fire off event so user can click Next in wizard
                if (ParsingGridPopulated != null)
                {
                    ParsingGridPopulated();
                }
            });
            runner.AsyncFullParse();
        }
        private void OnlineParsing_OnCompleted(bool newEpisodes)
        {
            TimeSpan span = DateTime.Now - m_timingStart;
            MPTVSeriesLog.Write("Online Parsing Completed in " + span);           
            m_parser = null;
            ImportWizardParseParams = null;
            DBOption.SetOptions(DBOption.cImportOnlineUpdateScanLastTime, DateTime.Now.ToString());
            LoadTree();

            if (ParsingWizardHost != null && tabPage_Import.Contains(ParsingWizardHost))
            {                
                ParsingWizardHost.SetButtonVisibility(ImportWizard.WizardButton.Finish, true);
                ParsingWizardHost.SetButtonVisibility(ImportWizard.WizardButton.Cancel, false);
                ParsingWizardHost.SetButtonState(ImportWizard.WizardButton.Next, false);
                ParsingWizardHost.SetButtonState(ImportWizard.WizardButton.Prev, false);
            }

            EnableImportButtonState(true);
        }        
        private void Parsing_Start(CParsingParameters parsingParams)
        {
            if (m_parser == null)
            {
                // refresh regex and replacements
                FilenameParser.reLoadExpressions();

                m_parser = new OnlineParsing(this);
                m_parser.Start(parsingParams);
            }
        }
        private void ImportWizard_OnFinishedSeriesID(UserInputResults inputResults, UserFinishedRequestedAction requestAction)
        {
            ParsingWizardSeriesIDPage.UserFinishedEditing -= new UserFinishedEditingDelegate(ImportWizard_OnFinishedSeriesID);

            ParsingWizardHost.RemoveDetailsPanel(ParsingWizardSeriesIDPage);

            if (requestAction == UserFinishedRequestedAction.Next)
            {
                m_parser = new OnlineParsing(this);

                // and give it to the wizard
                ParsingWizardHost.Init();

                // now show generic progress details (remove seriesIDPage)
                ParsingWizardHost.RemoveDetailsPanel(ParsingWizardSeriesIDPage);                                
                ParsingWizardHost.ShowDetailsPanel(ParsingWizardProgress);
                ParsingWizardProgress.Init();

                ParsingWizardHost.SetButtonState(ImportWizard.WizardButton.Prev, false);
                ParsingWizardHost.SetButtonState(ImportWizard.WizardButton.Next, false);

                ParsingWizardHost.ImportFinished += new EventHandler(ImportWizard_OnFinished);          

                // only now do we set up the parser itself and fire it off
                ImportWizardParseParams.m_userInputResult = inputResults;

                // this will be requested by the the parsing engine at the appropriate time
                ImportWizardParseParams.UserEpisodeMatcher = ParsingWizardEpIDPage;
                ImportWizardParseParams.m_files = ParsingWizardParsingPage.allFoundFiles; // else they will be marked as removed

                ParsingWizardEpIDPage.UserFinishedEditing += new UserFinishedEditingDelegate(ImportWizard_OnFinishedEditingEpisodes);

                // finally fire it off
                m_timingStart = DateTime.Now;                
                m_parser.Start(ImportWizardParseParams);
            }
            else if (requestAction == UserFinishedRequestedAction.Prev)
            {
                // unregister events
                ParsingWizardSeriesIDPage.UserFinishedEditing -= new UserFinishedEditingDelegate(ImportWizard_OnFinishedSeriesID);
                ParsingWizardSeriesIDPage.SeriesGridPopulated -= new ImportPanelSeriesID.SeriesGridPopulatedDelegate(ImportWizard_OnSeriesGridPopulated);

                // remove existing panel and show previous one
                ParsingWizardHost.SetButtonState(ImportWizard.WizardButton.Prev, false);
                ParsingWizardHost.ShowDetailsPanel(ParsingWizardParsingPage);
                ParsingWizardHost.RemoveDetailsPanel(ParsingWizardSeriesIDPage);
                ParsingWizardParsingPage.Init();
                ParsingWizardSeriesIDPage.ClearResults();                                
            }
            else if (requestAction == UserFinishedRequestedAction.Cancel)
            {
                
            }
        }
        public override bool Init()
        {
            m_localControlForInvoke = new Control();
            m_localControlForInvoke.CreateControl();

            MPTVSeriesLog.Write("**** Plugin started in MediaPortal ****");
            DBOption.LogOptions();

            #region Translations
            Translation.Init();

            // Push Translated Strings to skin
            MPTVSeriesLog.Write("Setting translated strings: ", MPTVSeriesLog.LogLevel.Debug);
            string propertyName = string.Empty;
            string propertyValue = string.Empty;
            foreach (string name in Translation.Strings.Keys)
            {
                propertyName = "#TVSeries.Translation." + name + ".Label";
                propertyValue = Translation.Strings[name];
                MPTVSeriesLog.Write(propertyName + " = " + propertyValue, MPTVSeriesLog.LogLevel.Debug);
                GUIPropertyManager.SetProperty(propertyName, propertyValue);
            }
            #endregion

            #region Misc
            m_VideoHandler = new VideoHandler();
            m_VideoHandler.RateRequestOccured += new VideoHandler.rateRequest(m_VideoHandler_RateRequestOccured);

            // Setup Random Fanart Timer
            m_FanartTimer = new System.Threading.Timer(new TimerCallback(FanartTimerEvent), null, Timeout.Infinite, Timeout.Infinite);
            m_bFanartTimerDisabled = true;

            // Lock for Parental Control
            logicalView.IsLocked = true;
            // Timer to reset Locked Status
            if (!string.IsNullOrEmpty(DBOption.GetOptions(DBOption.cParentalControlPinCode)))
            {
                long interval = DBOption.GetOptions(DBOption.cParentalControlResetInterval) * 60 * 1000;
                m_ParentalControlTimer = new System.Threading.Timer(new TimerCallback(ParentalControlTimerEvent), null, 0, interval);
            }

            // Check if MediaPortal will Show TVSeries Plugin when restarting
            // We need to do this because we may need to show a modal dialog e.g. PinCode and we can't do this if MediaPortal window is not yet ready
            using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml")))
            {
                m_bShowLastActiveModule = xmlreader.GetValueAsBool("general", "showlastactivemodule", false);
                m_iLastActiveModule = xmlreader.GetValueAsInt("general", "lastactivemodule", -1);
            }

            #endregion

            #region Initialize Importer
            m_parserUpdater = new OnlineParsing(this);
            OnlineParsing.OnlineParsingProgress += new OnlineParsing.OnlineParsingProgressHandler(parserUpdater_OnlineParsingProgress);
            OnlineParsing.OnlineParsingCompleted += new OnlineParsing.OnlineParsingCompletedHandler(parserUpdater_OnlineParsingCompleted);

            System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged += NetworkAvailabilityChanged;
            Microsoft.Win32.SystemEvents.PowerModeChanged += new Microsoft.Win32.PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);

            // Setup Importer
            InitImporter();
            #endregion

            #region Skin Settings / Load
            SkinSettings.Init();

            // listen to this event to detect skin/language changes in GUI
            GUIWindowManager.OnDeActivateWindow += new GUIWindowManager.WindowActivationHandler(GUIWindowManager_OnDeActivateWindow);

            GUIWindowManager.OnActivateWindow += new GUIWindowManager.WindowActivationHandler(GUIWindowManager_OnActivateWindow);

            String xmlSkin = GUIGraphicsContext.Skin + @"\TVSeries.xml";
            MPTVSeriesLog.Write("Loading main skin window: " + xmlSkin);
            return Load(xmlSkin);
            #endregion
        }