aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartijn Kaijser <martijn@xbmc.org>2015-09-12 11:35:38 +0200
committerMartijn Kaijser <martijn@xbmc.org>2015-09-12 11:35:38 +0200
commit5f9ea4c60dbbc6f34b26ec70b55669aaad149b69 (patch)
treefce20cf60b23b2d7c32b7fb15176abf1ff802e72
parent4d4c0d76e2bd3775884c49020f860504bdd4fe27 (diff)
parent1ddecf5b51fd40c19f815640417b5e02973e579c (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.xml6
-rw-r--r--xbmc/LangInfo.cpp41
-rw-r--r--xbmc/LangInfo.h5
-rw-r--r--xbmc/settings/Settings.cpp8
-rw-r--r--xbmc/utils/LangCodeExpander.cpp10
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 &current, void *data)
+void CLangInfo::SettingOptionsAudioStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, 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 &current, 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 &current, 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 &current, 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 &current, void *data);
- static void SettingOptionsStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, void *data);
+ static void SettingOptionsAudioStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, void *data);
+ static void SettingOptionsSubtitleStreamLanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, void *data);
+ static void SettingOptionsSubtitleDownloadlanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, void *data);
static void SettingOptionsISO6391LanguagesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, void *data);
static void SettingOptionsRegionsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, void *data);
static void SettingOptionsShortDateFormatsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, 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" },