TraktPlugin.TraktPlugin.LoadPluginHandlers C# (CSharp) Method

LoadPluginHandlers() private method

private LoadPluginHandlers ( ) : void
return void
        private void LoadPluginHandlers()
        {
            TraktLogger.Debug("Loading Plugin Handlers");
            string errorMessage = "Tried to load plugin handler '{0}' but failed, check minimum requirements have been met!";

            #region MovingPictures
            try
            {
                bool handlerExists = TraktHandlers.Exists(p => p.Name == "Moving Pictures");
                if (!handlerExists && TraktSettings.MovingPictures != -1)
                    TraktHandlers.Add(new MovingPictures(TraktSettings.MovingPictures));
                else if (handlerExists && TraktSettings.MovingPictures == -1)
                {
                    ITraktHandler item = TraktHandlers.FirstOrDefault(p => p.Name == "Moving Pictures");
                    (item as MovingPictures).DisposeEvents();
                    TraktHandlers.Remove(item);
                }
            }
            catch (Exception)
            {
                TraktLogger.Error(errorMessage, "Moving Pictures");
            }
            #endregion

            #region MP-TVSeries
            try
            {
                bool handlerExists = TraktHandlers.Exists(p => p.Name == "MP-TVSeries");
                if (!handlerExists && TraktSettings.TVSeries != -1)
                    TraktHandlers.Add(new TVSeries(TraktSettings.TVSeries));
                else if (handlerExists && TraktSettings.TVSeries == -1)
                {
                    ITraktHandler item = TraktHandlers.FirstOrDefault(p => p.Name == "MP-TVSeries");
                    (item as TVSeries).DisposeEvents();
                    TraktHandlers.Remove(item);

                }
            }
            catch (Exception)
            {
                TraktLogger.Error(errorMessage, "MP-TVSeries");
            }
            #endregion

            #region My Videos
            try
            {
                bool handlerExists = TraktHandlers.Exists(p => p.Name == "My Videos");
                if (!handlerExists && TraktSettings.MyVideos != -1)
                    TraktHandlers.Add(new MyVideos(TraktSettings.MyVideos));
                else if (handlerExists && TraktSettings.MyVideos == -1)
                    TraktHandlers.RemoveAll(p => p.Name == "My Videos");
            }
            catch (Exception)
            {
                TraktLogger.Error(errorMessage, "My Videos");
            }
            #endregion

            #region My Films
            try
            {
                bool handlerExists = TraktHandlers.Exists(p => p.Name == "My Films");
                if (!handlerExists && TraktSettings.MyFilms != -1)
                    TraktHandlers.Add(new MyFilmsHandler(TraktSettings.MyFilms));
                else if (handlerExists && TraktSettings.MyFilms == -1)
                {
                    ITraktHandler item = TraktHandlers.FirstOrDefault(p => p.Name == "My Films");
                    (item as MyFilmsHandler).DisposeEvents();
                    TraktHandlers.Remove(item);
                }
            }
            catch (Exception)
            {
                TraktLogger.Error(errorMessage, "My Films");
            }
            #endregion

            #region OnlineVideos
            try
            {
                bool handlerExists = TraktHandlers.Exists(p => p.Name == "OnlineVideos");
                if (!handlerExists && TraktSettings.OnlineVideos != -1)
                    TraktHandlers.Add(new TraktHandlers.OnlineVideos(TraktSettings.OnlineVideos));
                else if (handlerExists && TraktSettings.OnlineVideos == -1)
                {
                    ITraktHandler item = TraktHandlers.FirstOrDefault(p => p.Name == "OnlineVideos");
                    (item as TraktHandlers.OnlineVideos).DisposeEvents();
                    TraktHandlers.Remove(item);
                }
            }
            catch (Exception)
            {
                TraktLogger.Error(errorMessage, "OnlineVideos");
            }
            #endregion

            #region My TV Recordings
            try
            {
                bool handlerExists = TraktHandlers.Exists(p => p.Name == "My TV Recordings");
                if (!handlerExists && TraktSettings.MyTVRecordings != -1)
                    TraktHandlers.Add(new MyTVRecordings(TraktSettings.MyTVRecordings));
                else if (handlerExists && TraktSettings.MyTVRecordings == -1)
                    TraktHandlers.RemoveAll(p => p.Name == "My TV Recordings");
            }
            catch (Exception)
            {
                TraktLogger.Error(errorMessage, "My TV Recordings");
            }
            #endregion

            #region My TV Live
            try
            {
                bool handlerExists = TraktHandlers.Exists(p => p.Name == "My TV Live");
                if (!handlerExists && TraktSettings.MyTVLive != -1)
                    TraktHandlers.Add(new MyTVLive(TraktSettings.MyTVLive));
                else if (handlerExists && TraktSettings.MyTVRecordings == -1)
                    TraktHandlers.RemoveAll(p => p.Name == "My TV Live");
            }
            catch (Exception)
            {
                TraktLogger.Error(errorMessage, "My TV Live");
            }
            #endregion

            #region Argus TV Recordings
            try
            {
                bool handlerExists = TraktHandlers.Exists(p => p.Name == "Argus TV Recordings");
                if (!handlerExists && TraktSettings.ArgusRecordings != -1)
                    TraktHandlers.Add(new ArgusTVRecordings(TraktSettings.ArgusRecordings));
                else if (handlerExists && TraktSettings.ArgusRecordings == -1)
                    TraktHandlers.RemoveAll(p => p.Name == "Argus TV Recordings");
            }
            catch (Exception)
            {
                TraktLogger.Error(errorMessage, "Argus TV Recordings");
            }
            #endregion

            #region Argus TV Live
            try
            {
                bool handlerExists = TraktHandlers.Exists(p => p.Name == "Argus TV Live");
                if (!handlerExists && TraktSettings.ArgusTVLive != -1)
                    TraktHandlers.Add(new ArgusTVLive(TraktSettings.ArgusTVLive));
                else if (handlerExists && TraktSettings.ArgusTVLive == -1)
                    TraktHandlers.RemoveAll(p => p.Name == "Argus TV Live");
            }
            catch (Exception)
            {
                TraktLogger.Error(errorMessage, "Argus TV Live");
            }
            #endregion

            if (TraktHandlers.Count == 0)
            {
                TraktLogger.Info("There are no Plugin Handlers configured!");
            }
            else
            {
                TraktLogger.Debug("Sorting Plugin Handlers by priority");
                TraktHandlers.Sort(delegate(ITraktHandler t1, ITraktHandler t2) { return t1.Priority.CompareTo(t2.Priority); });
            }
        }