Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6d41f7e authored by Danny Baumann's avatar Danny Baumann Committed by Gerrit Code Review
Browse files

Merge "Clean up lock screen interface code" into cm-11.0

parents bf897d71 463da07a
Loading
Loading
Loading
Loading
+54 −48
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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());
        }
        }
    }
    }


@@ -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;
    }


}
}