Loading src/com/android/settings/cyanogenmod/LockscreenInterface.java +54 −48 Original line number Original line Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.cyanogenmod; package com.android.settings.cyanogenmod; import android.app.ActivityManager; import android.app.ActivityManager; import android.app.admin.DeviceAdminReceiver; import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Context; import android.os.Bundle; import android.os.Bundle; Loading @@ -35,77 +34,62 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.Utils; public class LockscreenInterface extends SettingsPreferenceFragment { public class LockscreenInterface extends SettingsPreferenceFragment { private static final String TAG = "LockscreenInterface"; private static final String LOCKSCREEN_WIDGETS_CATEGORY = "lockscreen_widgets_category"; private static final String KEY_ENABLE_WIDGETS = "keyguard_enable_widgets"; private static final String KEY_ENABLE_WIDGETS = "keyguard_enable_widgets"; private static final String KEY_LOCK_CLOCK = "lock_clock"; private static final String KEY_LOCK_CLOCK = "lock_clock"; private static final String LOCKSCREEN_WIDGETS_CATEGORY = "lockscreen_widgets_category"; private CheckBoxPreference mEnableKeyguardWidgets; private CheckBoxPreference mEnableKeyguardWidgets; private ChooseLockSettingsHelper mChooseLockSettingsHelper; private ChooseLockSettingsHelper mChooseLockSettingsHelper; private LockPatternUtils mLockUtils; private DevicePolicyManager mDPM; private DevicePolicyManager mDPM; private boolean mIsPrimary; @Override @Override public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.lockscreen_interface_settings); mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity()); mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity()); mLockUtils = mChooseLockSettingsHelper.utils(); mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); addPreferencesFromResource(R.xml.lockscreen_interface_settings); // Find categories PreferenceCategory widgetsCategory = (PreferenceCategory) findPreference(LOCKSCREEN_WIDGETS_CATEGORY); PreferenceCategory widgetsCategory = (PreferenceCategory) findPreference(LOCKSCREEN_WIDGETS_CATEGORY); // Only add if device has LockClock installed if (!isPackageInstalled("com.cyanogenmod.lockclock")) { widgetsCategory.removePreference(findPreference(KEY_LOCK_CLOCK)); } // Determine which user is logged in // Find preferences mIsPrimary = UserHandle.myUserId() == UserHandle.USER_OWNER; if (mIsPrimary) { // Its the primary user, show all the settings if (!Utils.isPhone(getActivity())) { if (widgetsCategory != null) { widgetsCategory.removePreference( findPreference(Settings.System.LOCKSCREEN_MAXIMIZE_WIDGETS)); } } } else { // Secondary user is logged in, remove all primary user specific preferences } // This applies to all users // Enable or disable keyguard widget checkbox based on DPM state mEnableKeyguardWidgets = (CheckBoxPreference) findPreference(KEY_ENABLE_WIDGETS); mEnableKeyguardWidgets = (CheckBoxPreference) findPreference(KEY_ENABLE_WIDGETS); if (mEnableKeyguardWidgets != null) { // Remove/disable custom widgets based on device RAM and policy if (ActivityManager.isLowRamDeviceStatic()) { if (ActivityManager.isLowRamDeviceStatic()) { /*|| mLockPatternUtils.isLockScreenDisabled()) {*/ // Widgets take a lot of RAM, so disable them on low-memory devices // Widgets take a lot of RAM, so disable them on low-memory devices if (widgetsCategory != null) { widgetsCategory.removePreference(findPreference(KEY_ENABLE_WIDGETS)); widgetsCategory.removePreference(findPreference(KEY_ENABLE_WIDGETS)); mEnableKeyguardWidgets = null; mEnableKeyguardWidgets = null; } } else { } else { final boolean disabled = (0 != (mDPM.getKeyguardDisabledFeatures(null) checkDisabledByPolicy(mEnableKeyguardWidgets, & DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL)); DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL); if (disabled) { mEnableKeyguardWidgets.setSummary( R.string.security_enable_widgets_disabled_summary); } } mEnableKeyguardWidgets.setEnabled(!disabled); // Remove cLock settings item if not installed if (!isPackageInstalled("com.cyanogenmod.lockclock")) { widgetsCategory.removePreference(findPreference(KEY_LOCK_CLOCK)); } } // Remove maximize widgets on tablets if (!Utils.isPhone(getActivity())) { widgetsCategory.removePreference( findPreference(Settings.System.LOCKSCREEN_MAXIMIZE_WIDGETS)); } } } } @Override @Override public void onResume() { public void onResume() { super.onResume(); super.onResume(); final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils(); // Update custom widgets if (mEnableKeyguardWidgets != null) { if (mEnableKeyguardWidgets != null) { mEnableKeyguardWidgets.setChecked(lockPatternUtils.getWidgetsEnabled()); mEnableKeyguardWidgets.setChecked(mLockUtils.getWidgetsEnabled()); } } } } Loading @@ -113,15 +97,37 @@ public class LockscreenInterface extends SettingsPreferenceFragment { public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { final String key = preference.getKey(); final String key = preference.getKey(); final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils(); if (KEY_ENABLE_WIDGETS.equals(key)) { if (KEY_ENABLE_WIDGETS.equals(key)) { lockPatternUtils.setWidgetsEnabled(mEnableKeyguardWidgets.isChecked()); mLockUtils.setWidgetsEnabled(mEnableKeyguardWidgets.isChecked()); return true; return true; } } return super.onPreferenceTreeClick(preferenceScreen, preference); return super.onPreferenceTreeClick(preferenceScreen, preference); } } public static class DeviceAdminLockscreenReceiver extends DeviceAdminReceiver {} /** * Checks if a specific policy is disabled by a device administrator, and disables the * provided preference if so. * @param preference Preference * @param feature Feature */ private void checkDisabledByPolicy(Preference preference, int feature) { boolean disabled = featureIsDisabled(feature); if (disabled) { preference.setSummary(R.string.security_enable_widgets_disabled_summary); } preference.setEnabled(!disabled); } /** * Checks if a specific policy is disabled by a device administrator. * @param feature Feature * @return Is disabled */ private boolean featureIsDisabled(int feature) { return (mDPM.getKeyguardDisabledFeatures(null) & feature) != 0; } } } Loading
src/com/android/settings/cyanogenmod/LockscreenInterface.java +54 −48 Original line number Original line Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.cyanogenmod; package com.android.settings.cyanogenmod; import android.app.ActivityManager; import android.app.ActivityManager; import android.app.admin.DeviceAdminReceiver; import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Context; import android.os.Bundle; import android.os.Bundle; Loading @@ -35,77 +34,62 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.Utils; public class LockscreenInterface extends SettingsPreferenceFragment { public class LockscreenInterface extends SettingsPreferenceFragment { private static final String TAG = "LockscreenInterface"; private static final String LOCKSCREEN_WIDGETS_CATEGORY = "lockscreen_widgets_category"; private static final String KEY_ENABLE_WIDGETS = "keyguard_enable_widgets"; private static final String KEY_ENABLE_WIDGETS = "keyguard_enable_widgets"; private static final String KEY_LOCK_CLOCK = "lock_clock"; private static final String KEY_LOCK_CLOCK = "lock_clock"; private static final String LOCKSCREEN_WIDGETS_CATEGORY = "lockscreen_widgets_category"; private CheckBoxPreference mEnableKeyguardWidgets; private CheckBoxPreference mEnableKeyguardWidgets; private ChooseLockSettingsHelper mChooseLockSettingsHelper; private ChooseLockSettingsHelper mChooseLockSettingsHelper; private LockPatternUtils mLockUtils; private DevicePolicyManager mDPM; private DevicePolicyManager mDPM; private boolean mIsPrimary; @Override @Override public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.lockscreen_interface_settings); mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity()); mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity()); mLockUtils = mChooseLockSettingsHelper.utils(); mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); addPreferencesFromResource(R.xml.lockscreen_interface_settings); // Find categories PreferenceCategory widgetsCategory = (PreferenceCategory) findPreference(LOCKSCREEN_WIDGETS_CATEGORY); PreferenceCategory widgetsCategory = (PreferenceCategory) findPreference(LOCKSCREEN_WIDGETS_CATEGORY); // Only add if device has LockClock installed if (!isPackageInstalled("com.cyanogenmod.lockclock")) { widgetsCategory.removePreference(findPreference(KEY_LOCK_CLOCK)); } // Determine which user is logged in // Find preferences mIsPrimary = UserHandle.myUserId() == UserHandle.USER_OWNER; if (mIsPrimary) { // Its the primary user, show all the settings if (!Utils.isPhone(getActivity())) { if (widgetsCategory != null) { widgetsCategory.removePreference( findPreference(Settings.System.LOCKSCREEN_MAXIMIZE_WIDGETS)); } } } else { // Secondary user is logged in, remove all primary user specific preferences } // This applies to all users // Enable or disable keyguard widget checkbox based on DPM state mEnableKeyguardWidgets = (CheckBoxPreference) findPreference(KEY_ENABLE_WIDGETS); mEnableKeyguardWidgets = (CheckBoxPreference) findPreference(KEY_ENABLE_WIDGETS); if (mEnableKeyguardWidgets != null) { // Remove/disable custom widgets based on device RAM and policy if (ActivityManager.isLowRamDeviceStatic()) { if (ActivityManager.isLowRamDeviceStatic()) { /*|| mLockPatternUtils.isLockScreenDisabled()) {*/ // Widgets take a lot of RAM, so disable them on low-memory devices // Widgets take a lot of RAM, so disable them on low-memory devices if (widgetsCategory != null) { widgetsCategory.removePreference(findPreference(KEY_ENABLE_WIDGETS)); widgetsCategory.removePreference(findPreference(KEY_ENABLE_WIDGETS)); mEnableKeyguardWidgets = null; mEnableKeyguardWidgets = null; } } else { } else { final boolean disabled = (0 != (mDPM.getKeyguardDisabledFeatures(null) checkDisabledByPolicy(mEnableKeyguardWidgets, & DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL)); DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL); if (disabled) { mEnableKeyguardWidgets.setSummary( R.string.security_enable_widgets_disabled_summary); } } mEnableKeyguardWidgets.setEnabled(!disabled); // Remove cLock settings item if not installed if (!isPackageInstalled("com.cyanogenmod.lockclock")) { widgetsCategory.removePreference(findPreference(KEY_LOCK_CLOCK)); } } // Remove maximize widgets on tablets if (!Utils.isPhone(getActivity())) { widgetsCategory.removePreference( findPreference(Settings.System.LOCKSCREEN_MAXIMIZE_WIDGETS)); } } } } @Override @Override public void onResume() { public void onResume() { super.onResume(); super.onResume(); final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils(); // Update custom widgets if (mEnableKeyguardWidgets != null) { if (mEnableKeyguardWidgets != null) { mEnableKeyguardWidgets.setChecked(lockPatternUtils.getWidgetsEnabled()); mEnableKeyguardWidgets.setChecked(mLockUtils.getWidgetsEnabled()); } } } } Loading @@ -113,15 +97,37 @@ public class LockscreenInterface extends SettingsPreferenceFragment { public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { final String key = preference.getKey(); final String key = preference.getKey(); final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils(); if (KEY_ENABLE_WIDGETS.equals(key)) { if (KEY_ENABLE_WIDGETS.equals(key)) { lockPatternUtils.setWidgetsEnabled(mEnableKeyguardWidgets.isChecked()); mLockUtils.setWidgetsEnabled(mEnableKeyguardWidgets.isChecked()); return true; return true; } } return super.onPreferenceTreeClick(preferenceScreen, preference); return super.onPreferenceTreeClick(preferenceScreen, preference); } } public static class DeviceAdminLockscreenReceiver extends DeviceAdminReceiver {} /** * Checks if a specific policy is disabled by a device administrator, and disables the * provided preference if so. * @param preference Preference * @param feature Feature */ private void checkDisabledByPolicy(Preference preference, int feature) { boolean disabled = featureIsDisabled(feature); if (disabled) { preference.setSummary(R.string.security_enable_widgets_disabled_summary); } preference.setEnabled(!disabled); } /** * Checks if a specific policy is disabled by a device administrator. * @param feature Feature * @return Is disabled */ private boolean featureIsDisabled(int feature) { return (mDPM.getKeyguardDisabledFeatures(null) & feature) != 0; } } }