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

Commit e6b9b2c0 authored by Phil Tunstall's avatar Phil Tunstall
Browse files

Keep ToggleLockscreenTiles in sync between Quick Settings and Ribbon

Update the appearance of both tiles when one is toggled.
Only the KeyguardLock which disabled the lockscreen is able to
re-enable it, so have both tiles use a static KeyguardLock.

Change-Id: Idd8d41d3eda60f9a13bd4b6bc0fab12eb3d25f40
parent baf0eefd
Loading
Loading
Loading
Loading
+38 −18
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@ package com.android.systemui.quicksettings;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -13,25 +15,25 @@ import com.android.systemui.statusbar.phone.QuickSettingsController;
import com.android.systemui.statusbar.phone.QuickSettingsContainerView;

@SuppressWarnings("deprecation")
public class ToggleLockscreenTile extends QuickSettingsTile {
public class ToggleLockscreenTile extends QuickSettingsTile
        implements OnSharedPreferenceChangeListener {

    private KeyguardLock mLock = null;
    private static final String KEY_DISABLED = "lockscreen_disabled";

    private boolean mDisabledLockscreen;
    private static KeyguardLock sLock = null;
    private static int sLockTileCount = 0;
    private static boolean sDisabledLockscreen = false;

    public ToggleLockscreenTile(Context context, QuickSettingsController qsc) {
        super(context, qsc);

        mDisabledLockscreen = mPrefs.getBoolean(KEY_DISABLED, false);

        mOnClick = new OnClickListener() {

            @Override
            public void onClick(View v) {
                mDisabledLockscreen = !mDisabledLockscreen;
                mPrefs.edit().putBoolean(KEY_DISABLED, mDisabledLockscreen).apply();
                updateResources();
                sDisabledLockscreen = !sDisabledLockscreen;
                mPrefs.edit().putBoolean(KEY_DISABLED, sDisabledLockscreen).apply();
                updateLockscreenState();
            }
        };

@@ -47,14 +49,23 @@ public class ToggleLockscreenTile extends QuickSettingsTile {

    @Override
    void onPostCreate() {
        mPrefs.registerOnSharedPreferenceChangeListener(this);
        if (sLockTileCount == 0) {
            sDisabledLockscreen = mPrefs.getBoolean(KEY_DISABLED, false);
            updateLockscreenState();
        }
        sLockTileCount++;
        updateTile();
        super.onPostCreate();
    }

    @Override
    public void onDestroy() {
        if (mLock != null) {
            mLock.reenableKeyguard();
        mPrefs.unregisterOnSharedPreferenceChangeListener(this);
        sLockTileCount--;
        if (sLock != null && sLockTileCount < 1 && sDisabledLockscreen) {
            sLock.reenableKeyguard();
            sLock = null;
        }
        super.onDestroy();
    }
@@ -67,18 +78,27 @@ public class ToggleLockscreenTile extends QuickSettingsTile {

    private synchronized void updateTile() {
        mLabel = mContext.getString(R.string.quick_settings_lockscreen);
        if (mLock == null) {
        mDrawable = sDisabledLockscreen ?
                R.drawable.ic_qs_lock_screen_off : R.drawable.ic_qs_lock_screen_on;
    }

    private void updateLockscreenState() {
        if (sLock == null) {
            KeyguardManager keyguardManager = (KeyguardManager)
                    mContext.getSystemService(Context.KEYGUARD_SERVICE);
            mLock = keyguardManager.newKeyguardLock("LockscreenTile");
                    mContext.getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);
            sLock = keyguardManager.newKeyguardLock("LockscreenTile");
        }
        if (mDisabledLockscreen) {
            mDrawable = R.drawable.ic_qs_lock_screen_off;
            mLock.disableKeyguard();
        if (sDisabledLockscreen) {
            sLock.disableKeyguard();
        } else {
            mDrawable = R.drawable.ic_qs_lock_screen_on;
            mLock.reenableKeyguard();
            sLock.reenableKeyguard();
        }
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (KEY_DISABLED.equals(key)) {
            updateResources();
        }
    }
}