diff options
author | Jonathan Marshall <jmarshall@xbmc.org> | 2014-07-12 18:21:32 +1200 |
---|---|---|
committer | Jonathan Marshall <jmarshall@xbmc.org> | 2014-08-11 21:48:34 +1200 |
commit | 8ae6ff85e97167d60738bc5329d5f6cf36cbea97 (patch) | |
tree | 68bd72fb7e17aa553c9c7ae9b408e61d90f6fbcb | |
parent | 0d8469a9ce941b1d6a3b8a2633d1e5b29195966e (diff) |
[keyboard] settings for keyboard layouts
-rwxr-xr-x | language/English/strings.po | 15 | ||||
-rw-r--r-- | system/settings/settings.xml | 13 | ||||
-rw-r--r-- | xbmc/input/KeyboardLayout.cpp | 11 | ||||
-rw-r--r-- | xbmc/input/KeyboardLayout.h | 3 | ||||
-rw-r--r-- | xbmc/settings/Settings.cpp | 3 |
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 ¤t, 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 ¤t, 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); } |