diff options
author | Martijn Kaijser <martijn@xbmc.org> | 2015-09-12 11:35:38 +0200 |
---|---|---|
committer | Martijn Kaijser <martijn@xbmc.org> | 2015-09-12 11:35:38 +0200 |
commit | 5f9ea4c60dbbc6f34b26ec70b55669aaad149b69 (patch) | |
tree | fce20cf60b23b2d7c32b7fb15176abf1ff802e72 | |
parent | 4d4c0d76e2bd3775884c49020f860504bdd4fe27 (diff) | |
parent | 1ddecf5b51fd40c19f815640417b5e02973e579c (diff) |
Merge pull request #8014 from ace20022/lang_options
[lang/settings] Add own lists for audio, subtitle and sub download languages
-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 | ||||
-rw-r--r-- | xbmc/utils/LangCodeExpander.cpp | 10 |
5 files changed, 48 insertions, 22 deletions
diff --git a/system/settings/settings.xml b/system/settings/settings.xml index da969f247e..820687f273 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 75e6cd52d9..6b0289371d 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); diff --git a/xbmc/utils/LangCodeExpander.cpp b/xbmc/utils/LangCodeExpander.cpp index 5b4bf0cf42..ca0c9a8690 100644 --- a/xbmc/utils/LangCodeExpander.cpp +++ b/xbmc/utils/LangCodeExpander.cpp @@ -32,7 +32,7 @@ typedef struct LCENTRY const char *name; } LCENTRY; -extern const struct LCENTRY g_iso639_1[186]; +extern const struct LCENTRY g_iso639_1[185]; extern const struct LCENTRY g_iso639_2[538]; struct ISO639 @@ -50,7 +50,7 @@ struct ISO3166_1 // declared as extern to allow forward declaration extern const ISO639 LanguageCodes[189]; -extern const ISO3166_1 RegionCodes[246]; +extern const ISO3166_1 RegionCodes[245]; CLangCodeExpander::CLangCodeExpander() { } @@ -515,9 +515,8 @@ std::string CLangCodeExpander::ConvertToISO6392T(const std::string& lang) return lang; } -extern const LCENTRY g_iso639_1[186] = +extern const LCENTRY g_iso639_1[185] = { - { MAKECODE('\0','\0','c','c'), "Closed Caption" }, { MAKECODE('\0','\0','a','a'), "Afar" }, { MAKECODE('\0','\0','a','b'), "Abkhazian" }, { MAKECODE('\0','\0','a','e'), "Avestan" }, @@ -1442,7 +1441,7 @@ const ISO639 LanguageCodes[189] = }; // Based on ISO 3166 -const ISO3166_1 RegionCodes[246] = +const ISO3166_1 RegionCodes[245] = { { "af", "afg" }, { "ax", "ala" }, @@ -1490,7 +1489,6 @@ const ISO3166_1 RegionCodes[246] = { "cl", "chl" }, { "cn", "chn" }, { "cx", "cxr" }, - { "cc", "cck" }, { "co", "col" }, { "km", "com" }, { "cg", "cog" }, |