diff options
author | Sascha Woo <sascha.woo@gmail.com> | 2018-01-08 13:00:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-08 13:00:58 +0100 |
commit | cf0ff1f73013a869eed663bfc544f1723f17e933 (patch) | |
tree | 1949021a2096c4cd3ae08faf09ce3265c7d41ecb | |
parent | c44a0607ba69dc0f181fdf6772961a9484028d70 (diff) | |
parent | eabc3b46f1367401faf58c9123e7438a331bf792 (diff) |
Merge pull request #13315 from xhaggi/use-select-dialog-for-profile-lock-mode
[gui] use select dialog instead of context menu for profile lock mode selection
-rw-r--r-- | xbmc/profiles/dialogs/GUIDialogLockSettings.cpp | 63 | ||||
-rw-r--r-- | xbmc/profiles/dialogs/GUIDialogLockSettings.h | 7 |
2 files changed, 41 insertions, 29 deletions
diff --git a/xbmc/profiles/dialogs/GUIDialogLockSettings.cpp b/xbmc/profiles/dialogs/GUIDialogLockSettings.cpp index bc49b71a95..7cf8b09570 100644 --- a/xbmc/profiles/dialogs/GUIDialogLockSettings.cpp +++ b/xbmc/profiles/dialogs/GUIDialogLockSettings.cpp @@ -22,9 +22,9 @@ #include <utility> -#include "dialogs/GUIDialogContextMenu.h" #include "dialogs/GUIDialogGamepad.h" #include "dialogs/GUIDialogNumeric.h" +#include "dialogs/GUIDialogSelect.h" #include "guilib/GUIKeyboardFactory.h" #include "guilib/GUIWindowManager.h" #include "guilib/LocalizeStrings.h" @@ -156,34 +156,40 @@ void CGUIDialogLockSettings::OnSettingAction(std::shared_ptr<const CSetting> set const std::string &settingId = setting->GetId(); if (settingId == SETTING_LOCKCODE) { - CContextButtons choices; - choices.Add(1, 1223); - choices.Add(2, 12337); - choices.Add(3, 12338); - choices.Add(4, 12339); - int choice = CGUIDialogContextMenu::ShowAndGetChoice(choices); + CGUIDialogSelect* dialog = g_windowManager.GetWindow<CGUIDialogSelect>(WINDOW_DIALOG_SELECT); + if (!dialog) + return; + + dialog->Reset(); + dialog->SetHeading(CVariant{12360}); + dialog->Add(g_localizeStrings.Get(1223)); + dialog->Add(g_localizeStrings.Get(12337)); + dialog->Add(g_localizeStrings.Get(12338)); + dialog->Add(g_localizeStrings.Get(12339)); + dialog->SetSelected(GetLockModeLabel()); + dialog->Open(); std::string newPassword; LockType iLockMode = LOCK_MODE_UNKNOWN; bool bResult = false; - switch(choice) + switch (dialog->GetSelectedItem()) { - case 1: + case 0: iLockMode = LOCK_MODE_EVERYONE; //Disabled! Need check routine!!! bResult = true; break; - case 2: + case 1: iLockMode = LOCK_MODE_NUMERIC; bResult = CGUIDialogNumeric::ShowAndVerifyNewPassword(newPassword); break; - case 3: + case 2: iLockMode = LOCK_MODE_GAMEPAD; bResult = CGUIDialogGamepad::ShowAndVerifyNewPassword(newPassword); break; - case 4: + case 3: iLockMode = LOCK_MODE_QWERTY; bResult = CGUIKeyboardFactory::ShowAndVerifyNewPassword(newPassword); break; @@ -201,8 +207,8 @@ void CGUIDialogLockSettings::OnSettingAction(std::shared_ptr<const CSetting> set iLockMode = LOCK_MODE_EVERYONE; m_locks.mode = iLockMode; - setLockCodeLabel(); - setDetailSettingsEnabled(m_locks.mode != LOCK_MODE_EVERYONE); + SetSettingLockCodeLabel(); + SetDetailSettingsEnabled(m_locks.mode != LOCK_MODE_EVERYONE); m_changed = true; } } @@ -225,8 +231,8 @@ void CGUIDialogLockSettings::SetupView() else { SetHeading(20066); - setLockCodeLabel(); - setDetailSettingsEnabled(m_locks.mode != LOCK_MODE_EVERYONE); + SetSettingLockCodeLabel(); + SetDetailSettingsEnabled(m_locks.mode != LOCK_MODE_EVERYONE); } SET_CONTROL_HIDDEN(CONTROL_SETTINGS_CUSTOM_BUTTON); SET_CONTROL_LABEL(CONTROL_SETTINGS_OKAY_BUTTON, 186); @@ -279,12 +285,12 @@ void CGUIDialogLockSettings::InitializeSettings() AddToggle(groupDetails, SETTING_LOCK_FILEMANAGER, 20042, SettingLevel::Basic, m_locks.files); TranslatableIntegerSettingOptions settingsLevelOptions; - settingsLevelOptions.push_back(std::make_pair(106, LOCK_LEVEL::NONE)); - settingsLevelOptions.push_back(std::make_pair(593, LOCK_LEVEL::ALL)); - settingsLevelOptions.push_back(std::make_pair(10037, LOCK_LEVEL::STANDARD)); - settingsLevelOptions.push_back(std::make_pair(10038, LOCK_LEVEL::ADVANCED)); - settingsLevelOptions.push_back(std::make_pair(10039, LOCK_LEVEL::EXPERT)); - AddSpinner(groupDetails, SETTING_LOCK_SETTINGS, 20043, SettingLevel::Basic, static_cast<int>(m_locks.settings), settingsLevelOptions); + settingsLevelOptions.push_back(std::make_pair(106, LOCK_LEVEL::NONE)); + settingsLevelOptions.push_back(std::make_pair(593, LOCK_LEVEL::ALL)); + settingsLevelOptions.push_back(std::make_pair(10037, LOCK_LEVEL::STANDARD)); + settingsLevelOptions.push_back(std::make_pair(10038, LOCK_LEVEL::ADVANCED)); + settingsLevelOptions.push_back(std::make_pair(10039, LOCK_LEVEL::EXPERT)); + AddList(groupDetails, SETTING_LOCK_SETTINGS, 20043, SettingLevel::Basic, static_cast<int>(m_locks.settings), settingsLevelOptions, 20043); AddToggle(groupDetails, SETTING_LOCK_ADDONMANAGER, 24090, SettingLevel::Basic, m_locks.addonManager); } @@ -292,7 +298,12 @@ void CGUIDialogLockSettings::InitializeSettings() m_changed = false; } -void CGUIDialogLockSettings::setDetailSettingsEnabled(bool enabled) +std::string CGUIDialogLockSettings::GetLockModeLabel() +{ + return g_localizeStrings.Get(m_locks.mode == LOCK_MODE_EVERYONE ? 1223 : 12336 + m_locks.mode); +} + +void CGUIDialogLockSettings::SetDetailSettingsEnabled(bool enabled) { if (!m_details) return; @@ -307,12 +318,12 @@ void CGUIDialogLockSettings::setDetailSettingsEnabled(bool enabled) GetSettingControl(SETTING_LOCK_ADDONMANAGER)->GetSetting()->SetEnabled(enabled); } -void CGUIDialogLockSettings::setLockCodeLabel() +void CGUIDialogLockSettings::SetSettingLockCodeLabel() { - // adjust label2 of the lock code button + // adjust label2 of the lock code setting button if (m_locks.mode > LOCK_MODE_QWERTY) m_locks.mode = LOCK_MODE_EVERYONE; BaseSettingControlPtr settingControl = GetSettingControl(SETTING_LOCKCODE); if (settingControl != NULL && settingControl->GetControl() != NULL) - SET_CONTROL_LABEL2(settingControl->GetID(), g_localizeStrings.Get(m_locks.mode == LOCK_MODE_EVERYONE ? 1223 : 12336 + m_locks.mode)); + SET_CONTROL_LABEL2(settingControl->GetID(), GetLockModeLabel()); } diff --git a/xbmc/profiles/dialogs/GUIDialogLockSettings.h b/xbmc/profiles/dialogs/GUIDialogLockSettings.h index ce6102f106..cf9b06bdd7 100644 --- a/xbmc/profiles/dialogs/GUIDialogLockSettings.h +++ b/xbmc/profiles/dialogs/GUIDialogLockSettings.h @@ -49,8 +49,9 @@ protected: void InitializeSettings() override; private: - void setDetailSettingsEnabled(bool enabled); - void setLockCodeLabel(); + std::string GetLockModeLabel(); + void SetDetailSettingsEnabled(bool enabled); + void SetSettingLockCodeLabel(); bool m_changed; @@ -62,4 +63,4 @@ private: bool m_getUser; bool* m_saveUserDetails; int m_buttonLabel; -};
\ No newline at end of file +}; |