aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Marshall <jmarshall@xbmc.org>2014-07-12 18:21:32 +1200
committerJonathan Marshall <jmarshall@xbmc.org>2014-08-11 21:48:34 +1200
commit8ae6ff85e97167d60738bc5329d5f6cf36cbea97 (patch)
tree68bd72fb7e17aa553c9c7ae9b408e61d90f6fbcb
parent0d8469a9ce941b1d6a3b8a2633d1e5b29195966e (diff)
[keyboard] settings for keyboard layouts
-rwxr-xr-xlanguage/English/strings.po15
-rw-r--r--system/settings/settings.xml13
-rw-r--r--xbmc/input/KeyboardLayout.cpp11
-rw-r--r--xbmc/input/KeyboardLayout.h3
-rw-r--r--xbmc/settings/Settings.cpp3
5 files changed, 43 insertions, 2 deletions
diff --git a/language/English/strings.po b/language/English/strings.po
index a78c8929e1..093c143947 100755
--- a/language/English/strings.po
+++ b/language/English/strings.po
@@ -1300,7 +1300,13 @@ msgctxt "#309"
msgid "User interface language"
msgstr ""
-#empty strings from id 310 to 311
+#. Setting in international settings
+#: system/settings/settings.xml
+msgctxt "#310"
+msgid "Keyboard layouts"
+msgstr ""
+
+#empty string with id 311
msgctxt "#312"
msgid "(0=auto)"
@@ -15354,9 +15360,14 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#36431"
msgid "Defines whether video decoding should be performed in software (requires more CPU) or with hardware acceleration where possible."
+
+#. Description for international setting #310: Keyboard layouts
+#: system/settings/settings.xml
+msgctxt "#36432"
+msgid "Select virtual keyboard layouts."
msgstr ""
-#empty strings from id 36432 to 36499
+#empty strings from id 36433 to 36499
#end reservation
#: system/settings/settings.xml
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
index 7f33d83e69..d69ffc04af 100644
--- a/system/settings/settings.xml
+++ b/system/settings/settings.xml
@@ -142,6 +142,19 @@
</dependencies>
<control type="list" format="string" />
</setting>
+ <setting id="locale.keyboardlayouts" type="list[string]" label="310" help="36432">
+ <level>1</level>
+ <default>QWERTY</default>
+ <constraints>
+ <options>keyboardlayouts</options>
+ <delimiter>|</delimiter>
+ <minimumItems>1</minimumItems>
+ <maximumItems>3</maximumItems>
+ </constraints>
+ <control type="list" format="string">
+ <multiselect>true</multiselect>
+ </control>
+ </setting>
</group>
<group id="2">
<setting id="locale.timezonecountry" type="string" label="14079" help="36117">
diff --git a/xbmc/input/KeyboardLayout.cpp b/xbmc/input/KeyboardLayout.cpp
index 482959f258..9993566c06 100644
--- a/xbmc/input/KeyboardLayout.cpp
+++ b/xbmc/input/KeyboardLayout.cpp
@@ -19,6 +19,7 @@
*/
#include "KeyboardLayout.h"
+#include "settings/lib/Setting.h"
#include "utils/CharsetConverter.h"
#include "utils/StringUtils.h"
#include "utils/XBMCTinyXML.h"
@@ -154,3 +155,13 @@ std::vector<CKeyboardLayout> CKeyboardLayout::LoadLayouts()
}
return result;
}
+
+void CKeyboardLayout::SettingOptionsKeyboardLayoutsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, void *data)
+{
+ std::vector<CKeyboardLayout> layouts = LoadLayouts();
+ for (std::vector<CKeyboardLayout>::const_iterator it = layouts.begin(); it != layouts.end(); it++)
+ {
+ std::string name = it->GetName();
+ list.push_back(make_pair(name, name));
+ }
+}
diff --git a/xbmc/input/KeyboardLayout.h b/xbmc/input/KeyboardLayout.h
index 81eb67d77a..d540cb3214 100644
--- a/xbmc/input/KeyboardLayout.h
+++ b/xbmc/input/KeyboardLayout.h
@@ -35,6 +35,7 @@
*/
class TiXmlElement;
+class CSetting;
class CKeyboardLayout
{
@@ -63,6 +64,8 @@ public:
*/
static std::vector<CKeyboardLayout> LoadLayouts();
+ static void SettingOptionsKeyboardLayoutsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, void* data);
+
private:
static std::vector<std::string> BreakCharacters(const std::string &chars);
diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp
index b5ed60a01c..797e91a553 100644
--- a/xbmc/settings/Settings.cpp
+++ b/xbmc/settings/Settings.cpp
@@ -36,6 +36,7 @@
#include "guilib/GUIFontManager.h"
#include "guilib/LocalizeStrings.h"
#include "guilib/StereoscopicsManager.h"
+#include "input/KeyboardLayout.h"
#include "input/MouseStat.h"
#if defined(TARGET_WINDOWS)
#include "input/windows/WINJoystick.h"
@@ -254,6 +255,7 @@ void CSettings::Uninitialize()
m_settingsManager->UnregisterSettingOptionsFiller("timezones");
#endif // defined(TARGET_LINUX)
m_settingsManager->UnregisterSettingOptionsFiller("verticalsyncs");
+ m_settingsManager->UnregisterSettingOptionsFiller("keyboardlayouts");
// unregister ISettingCallback implementations
m_settingsManager->UnregisterCallback(&g_advancedSettings);
@@ -597,6 +599,7 @@ void CSettings::InitializeOptionFillers()
m_settingsManager->RegisterSettingOptionsFiller("timezones", CLinuxTimezone::SettingOptionsTimezonesFiller);
#endif
m_settingsManager->RegisterSettingOptionsFiller("verticalsyncs", CDisplaySettings::SettingOptionsVerticalSyncsFiller);
+ m_settingsManager->RegisterSettingOptionsFiller("keyboardlayouts", CKeyboardLayout::SettingOptionsKeyboardLayoutsFiller);
m_settingsManager->RegisterSettingOptionsFiller("loggingcomponents", CAdvancedSettings::SettingOptionsLoggingComponentsFiller);
}