aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSascha Woo <sascha.woo@gmail.com>2018-01-08 13:00:58 +0100
committerGitHub <noreply@github.com>2018-01-08 13:00:58 +0100
commitcf0ff1f73013a869eed663bfc544f1723f17e933 (patch)
tree1949021a2096c4cd3ae08faf09ce3265c7d41ecb
parentc44a0607ba69dc0f181fdf6772961a9484028d70 (diff)
parenteabc3b46f1367401faf58c9123e7438a331bf792 (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.cpp63
-rw-r--r--xbmc/profiles/dialogs/GUIDialogLockSettings.h7
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
+};