MediaPortal.Player.Subtitles.SubtitleSelector.SubtitleSelector C# (CSharp) Method

SubtitleSelector() public method

public SubtitleSelector ( TSReaderPlayer dvbStreams, SubtitleRenderer subRender, MediaPortal.Player.Subtitles.TeletextSubtitleDecoder subDecoder ) : System
dvbStreams TSReaderPlayer
subRender SubtitleRenderer
subDecoder MediaPortal.Player.Subtitles.TeletextSubtitleDecoder
return System
    public SubtitleSelector(TSReaderPlayer.ISubtitleStream dvbStreams, SubtitleRenderer subRender,
                            TeletextSubtitleDecoder subDecoder)
    {
      Log.Debug("SubtitleSelector ctor");
      this.dvbStreams = dvbStreams;
      this.subRender = subRender;

      // load preferences
      using (Settings reader = new MPSettings())
      {
        preferedLanguages = new List<string>();
        string languages;
        if (g_Player.IsDVD)
        {
          languages = BDPlayer.Settings.subtitleLang;          
        }
        else
        {
          languages = reader.GetValueAsString("tvservice", "preferredsublanguages", "");
        }
        Log.Debug("SubtitleSelector: sublangs entry content: " + languages);
        StringTokenizer st = new StringTokenizer(languages, ";");
        while (st.HasMore)
        {
          string lang = st.NextToken();
          if (lang.Length != 3)
          {
            Log.Warn("Language {0} is not in the correct format!", lang);
          }
          else
          {
            preferedLanguages.Add(lang);
            Log.Info("Prefered language {0} is {1}", preferedLanguages.Count, lang);
          }
        }
      }

      pageEntries = new Dictionary<int, TeletextPageEntry>();

      bitmapSubtitleCache = new List<SubtitleOption>();

      lock (syncLock)
      {
        if (subDecoder != null)
        {
          subDecoder.SetPageInfoCallback(new TeletextSubtitleDecoder.PageInfoCallback(OnPageInfo));
        }

        if (dvbStreams != null)
        {
          RetrieveBitmapSubtitles();
          subStreamCallback = new SubtitleStreamEventCallback(OnSubtitleReset);
          IntPtr pSubStreamCallback = Marshal.GetFunctionPointerForDelegate(subStreamCallback);
          Log.Debug("Calling SetSubtitleStreamEventCallback");
          dvbStreams.SetSubtitleResetCallback(pSubStreamCallback);
        }

        if (preferedLanguages.Count > 0)
        {
          autoSelectOption = new SubtitleOption();
          autoSelectOption.language = "None";
          autoSelectOption.isAuto = true;
          autoSelectOption.type = SubtitleType.None;

          SetOption(0); // the autoselect mode will have index 0 (ugly)
        }
      }
      Log.Debug("End SubtitleSelector ctor");
    }