diff options
-rw-r--r-- | system/settings/settings.xml | 6 | ||||
-rw-r--r-- | xbmc/LangInfo.cpp | 41 | ||||
-rw-r--r-- | xbmc/LangInfo.h | 5 | ||||
-rw-r--r-- | xbmc/settings/Settings.cpp | 8 |
4 files changed, 44 insertions, 16 deletions
diff --git a/system/settings/settings.xml b/system/settings/settings.xml index 2323db4e82..a22a44fc15 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -510,7 +510,7 @@ <level>1</level> <default>original</default> <constraints> - <options>streamlanguages</options> + <options>audiostreamlanguages</options> </constraints> <control type="list" format="string" /> </setting> @@ -876,7 +876,7 @@ <level>1</level> <default>original</default> <constraints> - <options>streamlanguages</options> + <options>subtitlestreamlanguages</options> </constraints> <control type="list" format="string" /> </setting> @@ -992,7 +992,7 @@ <level>1</level> <default>English</default> <constraints> - <options>streamlanguages</options> + <options>subtitledownloadlanguages</options> <delimiter>,</delimiter> <minimumitems>1</minimumitems> </constraints> diff --git a/xbmc/LangInfo.cpp b/xbmc/LangInfo.cpp index 1e2fbcc070..b8f94e0d46 100644 --- a/xbmc/LangInfo.cpp +++ b/xbmc/LangInfo.cpp @@ -1141,24 +1141,30 @@ void CLangInfo::SettingOptionsISO6391LanguagesFiller(const CSetting *setting, st list.push_back(std::make_pair(*language, *language)); } -void CLangInfo::SettingOptionsStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data) +void CLangInfo::SettingOptionsAudioStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data) +{ + list.push_back(make_pair(g_localizeStrings.Get(308), "original")); + list.push_back(make_pair(g_localizeStrings.Get(309), "default")); + + AddLanguages(list); +} + +void CLangInfo::SettingOptionsSubtitleStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data) { list.push_back(make_pair(g_localizeStrings.Get(231), "none")); list.push_back(make_pair(g_localizeStrings.Get(13207), "forced_only")); list.push_back(make_pair(g_localizeStrings.Get(308), "original")); list.push_back(make_pair(g_localizeStrings.Get(309), "default")); - std::string dummy; - std::vector<std::pair<std::string, std::string>> languages; - SettingOptionsISO6391LanguagesFiller(NULL, languages, dummy, NULL); - SettingOptionsLanguageNamesFiller(NULL, languages, dummy, NULL); + AddLanguages(list); +} - // convert the vector to a set to remove duplicates - std::set<std::pair<std::string, std::string>, SortLanguage> tmp( - languages.begin(), languages.end(), SortLanguage()); +void CLangInfo::SettingOptionsSubtitleDownloadlanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data) +{ + list.push_back(make_pair(g_localizeStrings.Get(308), "original")); + list.push_back(make_pair(g_localizeStrings.Get(309), "default")); - list.reserve(list.size() + tmp.size()); - list.insert(list.end(), tmp.begin(), tmp.end()); + AddLanguages(list); } void CLangInfo::SettingOptionsRegionsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data) @@ -1399,3 +1405,18 @@ void CLangInfo::SettingOptionsSpeedUnitsFiller(const CSetting *setting, std::vec if (!match && !list.empty()) current = list[0].second; } + +void CLangInfo::AddLanguages(std::vector< std::pair<std::string, std::string> > &list) +{ + std::string dummy; + std::vector<std::pair<std::string, std::string>> languages; + SettingOptionsISO6391LanguagesFiller(NULL, languages, dummy, NULL); + SettingOptionsLanguageNamesFiller(NULL, languages, dummy, NULL); + + // convert the vector to a set to remove duplicates + std::set<std::pair<std::string, std::string>, SortLanguage> tmp( + languages.begin(), languages.end(), SortLanguage()); + + list.reserve(list.size() + tmp.size()); + list.insert(list.end(), tmp.begin(), tmp.end()); +} diff --git a/xbmc/LangInfo.h b/xbmc/LangInfo.h index 7a14f444e3..585df24b6d 100644 --- a/xbmc/LangInfo.h +++ b/xbmc/LangInfo.h @@ -183,7 +183,9 @@ public: static void LoadTokens(const TiXmlNode* pTokens, std::set<std::string>& vecTokens); static void SettingOptionsLanguageNamesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data); - static void SettingOptionsStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data); + static void SettingOptionsAudioStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data); + static void SettingOptionsSubtitleStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data); + static void SettingOptionsSubtitleDownloadlanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data); static void SettingOptionsISO6391LanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data); static void SettingOptionsRegionsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data); static void SettingOptionsShortDateFormatsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t, void *data); @@ -199,6 +201,7 @@ protected: static bool DetermineUse24HourClockFromTimeFormat(const std::string& timeFormat); static bool DetermineUseMeridiemFromTimeFormat(const std::string& timeFormat); static std::string PrepareTimeFormat(const std::string& timeFormat, bool use24HourClock); + static void AddLanguages(std::vector< std::pair<std::string, std::string> > &list); class CRegion { diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp index 8b5def86eb..bdeebe0490 100644 --- a/xbmc/settings/Settings.cpp +++ b/xbmc/settings/Settings.cpp @@ -583,7 +583,9 @@ void CSettings::Uninitialize() m_settingsManager->UnregisterSettingOptionsFiller("videoseeksteps"); m_settingsManager->UnregisterSettingOptionsFiller("shutdownstates"); m_settingsManager->UnregisterSettingOptionsFiller("startupwindows"); - m_settingsManager->UnregisterSettingOptionsFiller("streamlanguages"); + m_settingsManager->UnregisterSettingOptionsFiller("audiostreamlanguages"); + m_settingsManager->UnregisterSettingOptionsFiller("subtitlestreamlanguages"); + m_settingsManager->UnregisterSettingOptionsFiller("subtitledownloadlanguages"); m_settingsManager->UnregisterSettingOptionsFiller("iso6391languages"); m_settingsManager->UnregisterSettingOptionsFiller("skincolors"); m_settingsManager->UnregisterSettingOptionsFiller("skinfonts"); @@ -951,7 +953,9 @@ void CSettings::InitializeOptionFillers() m_settingsManager->RegisterSettingOptionsFiller("videoseeksteps", CSeekHandler::SettingOptionsSeekStepsFiller); m_settingsManager->RegisterSettingOptionsFiller("shutdownstates", CPowerManager::SettingOptionsShutdownStatesFiller); m_settingsManager->RegisterSettingOptionsFiller("startupwindows", ADDON::CSkinInfo::SettingOptionsStartupWindowsFiller); - m_settingsManager->RegisterSettingOptionsFiller("streamlanguages", CLangInfo::SettingOptionsStreamLanguagesFiller); + m_settingsManager->RegisterSettingOptionsFiller("audiostreamlanguages", CLangInfo::SettingOptionsAudioStreamLanguagesFiller); + m_settingsManager->RegisterSettingOptionsFiller("subtitlestreamlanguages", CLangInfo::SettingOptionsSubtitleStreamLanguagesFiller); + m_settingsManager->RegisterSettingOptionsFiller("subtitledownloadlanguages", CLangInfo::SettingOptionsSubtitleDownloadlanguagesFiller); m_settingsManager->RegisterSettingOptionsFiller("iso6391languages", CLangInfo::SettingOptionsISO6391LanguagesFiller); m_settingsManager->RegisterSettingOptionsFiller("skincolors", ADDON::CSkinInfo::SettingOptionsSkinColorsFiller); m_settingsManager->RegisterSettingOptionsFiller("skinfonts", ADDON::CSkinInfo::SettingOptionsSkinFontsFiller); |