summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/ChooseLockGeneric.java
diff options
context:
space:
mode:
authorJim Miller <jaggies@google.com>2010-12-07 20:41:41 -0800
committerJim Miller <jaggies@google.com>2010-12-08 16:45:52 -0800
commit17e9e1933055b207473b488595b2887bfcaea32e (patch)
tree7b3f0f0ac2d5fcf62ea7dc4300f7927488250cab /src/com/android/settings/ChooseLockGeneric.java
parent1c7e49ba670ad70822d34234e3677fef53e94569 (diff)
downloadpackages_apps_settings-17e9e1933055b207473b488595b2887bfcaea32e.zip
packages_apps_settings-17e9e1933055b207473b488595b2887bfcaea32e.tar.gz
packages_apps_settings-17e9e1933055b207473b488595b2887bfcaea32e.tar.bz2
Fix 3148496: Initial pass at fragmentizing lockscreen settings.
This converts most of the existing activities to fragments and wraps them in PreferenceActivities so they can be launched as before (e.g. by a DevicePolicyManager) Upload after sync/rebase. Change-Id: I4f351b75d9fca0498bcb04b4e11ff3b70765a4ba
Diffstat (limited to 'src/com/android/settings/ChooseLockGeneric.java')
-rw-r--r--src/com/android/settings/ChooseLockGeneric.java314
1 files changed, 163 insertions, 151 deletions
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index f87ee5a..264db5f 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -18,6 +18,7 @@ package com.android.settings;
import com.android.internal.widget.LockPatternUtils;
+import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
@@ -28,179 +29,190 @@ import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
public class ChooseLockGeneric extends PreferenceActivity {
- private static final int MIN_PASSWORD_LENGTH = 4;
- private static final String KEY_UNLOCK_SET_OFF = "unlock_set_off";
- private static final String KEY_UNLOCK_SET_NONE = "unlock_set_none";
- private static final String KEY_UNLOCK_SET_PIN = "unlock_set_pin";
- private static final String KEY_UNLOCK_SET_PASSWORD = "unlock_set_password";
- private static final String KEY_UNLOCK_SET_PATTERN = "unlock_set_pattern";
- private static final int CONFIRM_EXISTING_REQUEST = 100;
- private static final String PASSWORD_CONFIRMED = "password_confirmed";
- private static final String CONFIRM_CREDENTIALS = "confirm_credentials";
-
- private ChooseLockSettingsHelper mChooseLockSettingsHelper;
- private DevicePolicyManager mDPM;
- private boolean mPasswordConfirmed = false;
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
- mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
+ public Intent getIntent() {
+ Intent modIntent = new Intent(super.getIntent());
+ modIntent.putExtra(EXTRA_SHOW_FRAGMENT, ChooseLockGenericFragment.class.getName());
+ modIntent.putExtra(EXTRA_NO_HEADERS, true);
+ return modIntent;
+ }
- if (savedInstanceState != null) {
- mPasswordConfirmed = savedInstanceState.getBoolean(PASSWORD_CONFIRMED);
- }
+ public static class ChooseLockGenericFragment extends SettingsPreferenceFragment {
+ private static final int MIN_PASSWORD_LENGTH = 4;
+ private static final String KEY_UNLOCK_SET_OFF = "unlock_set_off";
+ private static final String KEY_UNLOCK_SET_NONE = "unlock_set_none";
+ private static final String KEY_UNLOCK_SET_PIN = "unlock_set_pin";
+ private static final String KEY_UNLOCK_SET_PASSWORD = "unlock_set_password";
+ private static final String KEY_UNLOCK_SET_PATTERN = "unlock_set_pattern";
+ private static final int CONFIRM_EXISTING_REQUEST = 100;
+ private static final String PASSWORD_CONFIRMED = "password_confirmed";
+ private static final String CONFIRM_CREDENTIALS = "confirm_credentials";
+
+ private ChooseLockSettingsHelper mChooseLockSettingsHelper;
+ private DevicePolicyManager mDPM;
+ private boolean mPasswordConfirmed = false;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
+ mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity());
+
+ if (savedInstanceState != null) {
+ mPasswordConfirmed = savedInstanceState.getBoolean(PASSWORD_CONFIRMED);
+ }
- if (!mPasswordConfirmed) {
- ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this);
- if (!helper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST, null, null)) {
- mPasswordConfirmed = true; // no password set, so no need to confirm
+ if (!mPasswordConfirmed) {
+ ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this.getActivity(), this);
+ if (!helper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST, null, null)) {
+ mPasswordConfirmed = true; // no password set, so no need to confirm
+ updatePreferencesOrFinish();
+ }
+ } else {
updatePreferencesOrFinish();
}
- } else {
- updatePreferencesOrFinish();
}
- }
- @Override
- public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
- Preference preference) {
- final String key = preference.getKey();
- boolean handled = true;
- if (KEY_UNLOCK_SET_OFF.equals(key)) {
- updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, true);
- } else if (KEY_UNLOCK_SET_NONE.equals(key)) {
- updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, false);
- } else if (KEY_UNLOCK_SET_PATTERN.equals(key)) {
- updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, false);
- } else if (KEY_UNLOCK_SET_PIN.equals(key)) {
- updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC, false);
- } else if (KEY_UNLOCK_SET_PASSWORD.equals(key)) {
- updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC, false);
- } else {
- handled = false;
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
+ Preference preference) {
+ final String key = preference.getKey();
+ boolean handled = true;
+ if (KEY_UNLOCK_SET_OFF.equals(key)) {
+ updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, true);
+ } else if (KEY_UNLOCK_SET_NONE.equals(key)) {
+ updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, false);
+ } else if (KEY_UNLOCK_SET_PATTERN.equals(key)) {
+ updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, false);
+ } else if (KEY_UNLOCK_SET_PIN.equals(key)) {
+ updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC, false);
+ } else if (KEY_UNLOCK_SET_PASSWORD.equals(key)) {
+ updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC, false);
+ } else {
+ handled = false;
+ }
+ return handled;
}
- return handled;
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == CONFIRM_EXISTING_REQUEST && resultCode == RESULT_OK) {
- mPasswordConfirmed = true;
- updatePreferencesOrFinish();
- } else {
- setResult(RESULT_CANCELED);
- finish();
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (requestCode == CONFIRM_EXISTING_REQUEST && resultCode == Activity.RESULT_OK) {
+ mPasswordConfirmed = true;
+ updatePreferencesOrFinish();
+ } else {
+ getActivity().setResult(Activity.RESULT_CANCELED);
+ finish();
+ }
}
- }
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- // Saved so we don't force user to re-enter their password if configuration changes
- outState.putBoolean(PASSWORD_CONFIRMED, mPasswordConfirmed);
- }
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ // Saved so we don't force user to re-enter their password if configuration changes
+ outState.putBoolean(PASSWORD_CONFIRMED, mPasswordConfirmed);
+ }
- private void updatePreferencesOrFinish() {
- int quality = getIntent().getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, -1);
- if (quality == -1) {
- // If caller didn't specify password quality, show the UI and allow the user to choose.
- quality = mChooseLockSettingsHelper.utils().getKeyguardStoredPasswordQuality();
- final PreferenceScreen prefScreen = getPreferenceScreen();
- if (prefScreen != null) {
- prefScreen.removeAll();
+ private void updatePreferencesOrFinish() {
+ int quality = getActivity().getIntent().getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, -1);
+ if (quality == -1) {
+ // If caller didn't specify password quality, show the UI and allow the user to choose.
+ quality = mChooseLockSettingsHelper.utils().getKeyguardStoredPasswordQuality();
+ final PreferenceScreen prefScreen = getPreferenceScreen();
+ if (prefScreen != null) {
+ prefScreen.removeAll();
+ }
+ addPreferencesFromResource(R.xml.security_settings_picker);
+ disableUnusablePreferences(mDPM.getPasswordQuality(null));
+ } else {
+ updateUnlockMethodAndFinish(quality, false);
}
- addPreferencesFromResource(R.xml.security_settings_picker);
- disableUnusablePreferences(mDPM.getPasswordQuality(null));
- } else {
- updateUnlockMethodAndFinish(quality, false);
}
- }
- /***
- * Disables preferences that are less secure than required quality.
- *
- * @param quality the requested quality.
- */
- private void disableUnusablePreferences(final int quality) {
- final Preference picker = getPreferenceScreen().findPreference("security_picker_category");
- final PreferenceCategory cat = (PreferenceCategory) picker;
- final int preferenceCount = cat.getPreferenceCount();
- for (int i = 0; i < preferenceCount; i++) {
- Preference pref = cat.getPreference(i);
- if (pref instanceof PreferenceScreen) {
- final String key = ((PreferenceScreen) pref).getKey();
- boolean enabled = true;
- if (KEY_UNLOCK_SET_OFF.equals(key)) {
- enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
- } else if (KEY_UNLOCK_SET_NONE.equals(key)) {
- enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
- } else if (KEY_UNLOCK_SET_PATTERN.equals(key)) {
- enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_SOMETHING;
- } else if (KEY_UNLOCK_SET_PIN.equals(key)) {
- enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
- } else if (KEY_UNLOCK_SET_PASSWORD.equals(key)) {
- enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_COMPLEX;
- }
- if (!enabled) {
- pref.setSummary(R.string.unlock_set_unlock_disabled_summary);
- pref.setEnabled(false);
+ /***
+ * Disables preferences that are less secure than required quality.
+ *
+ * @param quality the requested quality.
+ */
+ private void disableUnusablePreferences(final int quality) {
+ final Preference picker = getPreferenceScreen().findPreference("security_picker_category");
+ final PreferenceCategory cat = (PreferenceCategory) picker;
+ final int preferenceCount = cat.getPreferenceCount();
+ for (int i = 0; i < preferenceCount; i++) {
+ Preference pref = cat.getPreference(i);
+ if (pref instanceof PreferenceScreen) {
+ final String key = ((PreferenceScreen) pref).getKey();
+ boolean enabled = true;
+ if (KEY_UNLOCK_SET_OFF.equals(key)) {
+ enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+ } else if (KEY_UNLOCK_SET_NONE.equals(key)) {
+ enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+ } else if (KEY_UNLOCK_SET_PATTERN.equals(key)) {
+ enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_SOMETHING;
+ } else if (KEY_UNLOCK_SET_PIN.equals(key)) {
+ enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
+ } else if (KEY_UNLOCK_SET_PASSWORD.equals(key)) {
+ enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_COMPLEX;
+ }
+ if (!enabled) {
+ pref.setSummary(R.string.unlock_set_unlock_disabled_summary);
+ pref.setEnabled(false);
+ }
}
}
}
- }
- /**
- * Invokes an activity to change the user's pattern, password or PIN based on given quality
- * and minimum quality specified by DevicePolicyManager. If quality is
- * {@link DevicePolicyManager#PASSWORD_QUALITY_UNSPECIFIED}, password is cleared.
- *
- * @param quality the desired quality. Ignored if DevicePolicyManager requires more security.
- * @param disabled whether or not to show LockScreen at all. Only meaningful when quality is
- * {@link DevicePolicyManager#PASSWORD_QUALITY_UNSPECIFIED}
- */
- void updateUnlockMethodAndFinish(int quality, boolean disabled) {
- // Sanity check. We should never get here without confirming user's existing password first.
- if (!mPasswordConfirmed) {
- throw new IllegalStateException("Tried to update password without confirming first");
- }
+ /**
+ * Invokes an activity to change the user's pattern, password or PIN based on given quality
+ * and minimum quality specified by DevicePolicyManager. If quality is
+ * {@link DevicePolicyManager#PASSWORD_QUALITY_UNSPECIFIED}, password is cleared.
+ *
+ * @param quality the desired quality. Ignored if DevicePolicyManager requires more security.
+ * @param disabled whether or not to show LockScreen at all. Only meaningful when quality is
+ * {@link DevicePolicyManager#PASSWORD_QUALITY_UNSPECIFIED}
+ */
+ void updateUnlockMethodAndFinish(int quality, boolean disabled) {
+ // Sanity check. We should never get here without confirming user's existing password first.
+ if (!mPasswordConfirmed) {
+ throw new IllegalStateException("Tried to update password without confirming first");
+ }
- // Compare minimum allowed password quality and launch appropriate security setting method
- int minQuality = mDPM.getPasswordQuality(null);
- if (quality < minQuality) {
- quality = minQuality;
- }
- if (quality >= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) {
- int minLength = mDPM.getPasswordMinimumLength(null);
- if (minLength < MIN_PASSWORD_LENGTH) {
- minLength = MIN_PASSWORD_LENGTH;
+ // Compare minimum allowed password quality and launch appropriate security setting method
+ int minQuality = mDPM.getPasswordQuality(null);
+ if (quality < minQuality) {
+ quality = minQuality;
}
- final int maxLength = mDPM.getPasswordMaximumLength(quality);
- Intent intent = new Intent().setClass(this, ChooseLockPassword.class);
- intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, quality);
- intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, minLength);
- intent.putExtra(ChooseLockPassword.PASSWORD_MAX_KEY, maxLength);
- intent.putExtra(CONFIRM_CREDENTIALS, false);
- intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
- startActivity(intent);
- } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) {
- boolean showTutorial = !mChooseLockSettingsHelper.utils().isPatternEverChosen();
- Intent intent = new Intent();
- intent.setClass(this, showTutorial
- ? ChooseLockPatternTutorial.class
- : ChooseLockPattern.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
- intent.putExtra("key_lock_method", "pattern");
- intent.putExtra(CONFIRM_CREDENTIALS, false);
- startActivity(intent);
- } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
- mChooseLockSettingsHelper.utils().clearLock();
- mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled);
- setResult(RESULT_OK);
+ if (quality >= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) {
+ int minLength = mDPM.getPasswordMinimumLength(null);
+ if (minLength < MIN_PASSWORD_LENGTH) {
+ minLength = MIN_PASSWORD_LENGTH;
+ }
+ final int maxLength = mDPM.getPasswordMaximumLength(quality);
+ Intent intent = new Intent().setClass(getActivity(), ChooseLockPassword.class);
+ intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, quality);
+ intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, minLength);
+ intent.putExtra(ChooseLockPassword.PASSWORD_MAX_KEY, maxLength);
+ intent.putExtra(CONFIRM_CREDENTIALS, false);
+ intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ startActivity(intent);
+ } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) {
+ boolean showTutorial = !mChooseLockSettingsHelper.utils().isPatternEverChosen();
+ Intent intent = new Intent();
+ intent.setClass(getActivity(), showTutorial
+ ? ChooseLockPatternTutorial.class
+ : ChooseLockPattern.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ intent.putExtra("key_lock_method", "pattern");
+ intent.putExtra(CONFIRM_CREDENTIALS, false);
+ startActivity(intent);
+ } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
+ mChooseLockSettingsHelper.utils().clearLock();
+ mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled);
+ getActivity().setResult(Activity.RESULT_OK);
+ }
+ finish();
}
- finish();
}
}