Skip to content

Commit

Permalink
Merge pull request #11242 from da-anda/rememberlayout
Browse files Browse the repository at this point in the history
[GUI] remember last used keyboard layout
  • Loading branch information
da-anda committed Dec 25, 2016
2 parents f56c86d + 0cbccc9 commit 5b7006a
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 0 deletions.
4 changes: 4 additions & 0 deletions system/settings/settings.xml
Expand Up @@ -3275,6 +3275,10 @@
<multiselect>true</multiselect>
</control>
</setting>
<setting id="locale.activekeyboardlayout" type="string" label="0" help="0">
<level>4</level>
<default>English QWERTY</default>
</setting>
</group>
<group id="2" label="14270">
<setting id="locale.country" type="string" label="14271" help="36115">
Expand Down
7 changes: 7 additions & 0 deletions xbmc/dialogs/GUIDialogKeyboardGeneric.cpp
Expand Up @@ -133,12 +133,17 @@ void CGUIDialogKeyboardGeneric::OnInitWindow()
m_layouts.clear();
const KeyboardLayouts& keyboardLayouts = CKeyboardLayoutManager::GetInstance().GetLayouts();
std::vector<CVariant> layoutNames = CServiceBroker::GetSettings().GetList(CSettings::SETTING_LOCALE_KEYBOARDLAYOUTS);
std::string activeLayout = CServiceBroker::GetSettings().GetString(CSettings::SETTING_LOCALE_ACTIVEKEYBOARDLAYOUT);

for (std::vector<CVariant>::const_iterator layoutName = layoutNames.begin(); layoutName != layoutNames.end(); ++layoutName)
{
KeyboardLayouts::const_iterator keyboardLayout = keyboardLayouts.find(layoutName->asString());
if (keyboardLayout != keyboardLayouts.end())
{
m_layouts.push_back(keyboardLayout->second);
if (layoutName->asString() == activeLayout)
m_currentLayout = m_layouts.size() - 1;
}
}

// set alphabetic (capitals)
Expand Down Expand Up @@ -525,6 +530,8 @@ void CGUIDialogKeyboardGeneric::OnLayout()
m_currentLayout++;
if (m_currentLayout >= m_layouts.size())
m_currentLayout = 0;
CKeyboardLayout layout = m_layouts.empty() ? CKeyboardLayout() : m_layouts[m_currentLayout];
CServiceBroker::GetSettings().SetString(CSettings::SETTING_LOCALE_ACTIVEKEYBOARDLAYOUT, layout.GetName());
UpdateButtons();
}

Expand Down
1 change: 1 addition & 0 deletions xbmc/settings/Settings.cpp
Expand Up @@ -106,6 +106,7 @@ const std::string CSettings::SETTING_LOCALE_LANGUAGE = "locale.language";
const std::string CSettings::SETTING_LOCALE_COUNTRY = "locale.country";
const std::string CSettings::SETTING_LOCALE_CHARSET = "locale.charset";
const std::string CSettings::SETTING_LOCALE_KEYBOARDLAYOUTS = "locale.keyboardlayouts";
const std::string CSettings::SETTING_LOCALE_ACTIVEKEYBOARDLAYOUT = "locale.activekeyboardlayout";
const std::string CSettings::SETTING_LOCALE_TIMEZONECOUNTRY = "locale.timezonecountry";
const std::string CSettings::SETTING_LOCALE_TIMEZONE = "locale.timezone";
const std::string CSettings::SETTING_LOCALE_SHORTDATEFORMAT = "locale.shortdateformat";
Expand Down
1 change: 1 addition & 0 deletions xbmc/settings/Settings.h
Expand Up @@ -62,6 +62,7 @@ class CSettings : public CSettingCreator, public CSettingControlCreator
static const std::string SETTING_LOCALE_COUNTRY;
static const std::string SETTING_LOCALE_CHARSET;
static const std::string SETTING_LOCALE_KEYBOARDLAYOUTS;
static const std::string SETTING_LOCALE_ACTIVEKEYBOARDLAYOUT;
static const std::string SETTING_LOCALE_TIMEZONECOUNTRY;
static const std::string SETTING_LOCALE_TIMEZONE;
static const std::string SETTING_LOCALE_SHORTDATEFORMAT;
Expand Down

0 comments on commit 5b7006a

Please sign in to comment.