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

Commit 05e374c7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Consider the clock detached if the keyguard isn't visible" into sc-dev am: 0e95498a

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14554008

Change-Id: I376df75eb1df921acd7fa19f24de3206fa13163d
parents ae784dd2 0e95498a
Loading
Loading
Loading
Loading
+60 −23
Original line number Diff line number Diff line
@@ -37,7 +37,8 @@ import java.util.Objects;
import java.util.TimeZone;

/**
 * Controller for an AnimatableClockView. Instantiated by {@link KeyguardClockSwitchController}.
 * Controller for an AnimatableClockView on the keyguard. Instantiated by
 * {@link KeyguardClockSwitchController}.
 */
public class AnimatableClockController extends ViewController<AnimatableClockView> {
    private static final int FORMAT_NUMBER = 1234567890;
@@ -46,6 +47,7 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie
    private final BroadcastDispatcher mBroadcastDispatcher;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final KeyguardBypassController mBypassController;
    private final BatteryController mBatteryController;
    private final int mDozingColor = Color.WHITE;
    private int mLockScreenColor;

@@ -53,6 +55,7 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie
    private boolean mIsCharging;
    private float mDozeAmount;
    private Locale mLocale;
    private boolean mAttached; // if keyguard isn't showing, mAttached = false

    private final NumberFormat mBurmeseNf = NumberFormat.getInstance(Locale.forLanguageTag("my"));
    private final String mBurmeseNumerals;
@@ -73,14 +76,17 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie
        mBroadcastDispatcher = broadcastDispatcher;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mBypassController = bypassController;
        mBatteryController = batteryController;

        mBurmeseNumerals = mBurmeseNf.format(FORMAT_NUMBER);
        mBurmeseLineSpacing = getContext().getResources().getFloat(
                R.dimen.keyguard_clock_line_spacing_scale_burmese);
        mDefaultLineSpacing = getContext().getResources().getFloat(
                R.dimen.keyguard_clock_line_spacing_scale);
    }

        batteryController.addCallback(new BatteryController.BatteryStateChangeCallback() {
    private final BatteryController.BatteryStateChangeCallback mBatteryCallback =
            new BatteryController.BatteryStateChangeCallback() {
        @Override
        public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
            if (!mIsCharging && charging) {
@@ -88,29 +94,29 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie
            }
            mIsCharging = charging;
        }
        });
    }
    };

    private BroadcastReceiver mLocaleBroadcastReceiver = new BroadcastReceiver() {
    private final BroadcastReceiver mLocaleBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            updateLocale();
        }
    };

    private final KeyguardUpdateMonitorCallback mKeyguardPersistentCallback =
            new KeyguardUpdateMonitorCallback() {
        @Override
    protected void onViewAttached() {
        updateLocale();
        mBroadcastDispatcher.registerReceiver(mLocaleBroadcastReceiver,
                new IntentFilter(Intent.ACTION_LOCALE_CHANGED));
        mStatusBarStateController.addCallback(mStatusBarStateListener);
        mIsDozing = mStatusBarStateController.isDozing();
        mDozeAmount = mStatusBarStateController.getDozeAmount();
        mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback);

        refreshTime();
        initColors();
        public void onKeyguardVisibilityChanged(boolean showing) {
            // call attached/detached methods on visibility changes. benefits include:
            //  - no animations when keyguard/clock view aren't visible
            //  - resets state when keyguard is visible again (ie: font weight)
            if (showing) {
                onViewAttached();
            } else {
                onViewDetached();
            }
        }
    };

    private final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback =
            new KeyguardUpdateMonitorCallback() {
@@ -124,11 +130,42 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie
        }
    };

    @Override
    protected void onViewAttached() {
        if (mAttached) {
            return;
        }
        mAttached = true;
        updateLocale();
        mBroadcastDispatcher.registerReceiver(mLocaleBroadcastReceiver,
                new IntentFilter(Intent.ACTION_LOCALE_CHANGED));
        mStatusBarStateController.addCallback(mStatusBarStateListener);
        mIsDozing = mStatusBarStateController.isDozing();
        mDozeAmount = mStatusBarStateController.getDozeAmount();
        mBatteryController.addCallback(mBatteryCallback);
        mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback);

        mKeyguardUpdateMonitor.removeCallback(mKeyguardPersistentCallback);
        mKeyguardUpdateMonitor.registerCallback(mKeyguardPersistentCallback);

        refreshTime();
        initColors();
    }

    @Override
    protected void onViewDetached() {
        if (!mAttached) {
            return;
        }

        mAttached = false;
        mBroadcastDispatcher.unregisterReceiver(mLocaleBroadcastReceiver);
        mStatusBarStateController.removeCallback(mStatusBarStateListener);
        mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateMonitorCallback);
        mBatteryController.removeCallback(mBatteryCallback);
        if (!mView.isAttachedToWindow()) {
            mKeyguardUpdateMonitor.removeCallback(mKeyguardPersistentCallback);
        }
    }

    /** Animate the clock appearance */
+10 −10
Original line number Diff line number Diff line
@@ -124,16 +124,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
    @Override
    public void onInit() {
        mKeyguardSliceViewController.init();
    }

    @Override
    protected void onViewAttached() {
        if (CUSTOM_CLOCKS_ENABLED) {
            mClockManager.addOnClockChangedListener(mClockChangedListener);
        }
        mColorExtractor.addOnColorsChangedListener(mColorsListener);
        mView.updateColors(getGradientColors());
        updateAodIcons();

        mClockFrame = mView.findViewById(R.id.lockscreen_clock_view);
        mLargeClockFrame = mView.findViewById(R.id.lockscreen_clock_view_large);
@@ -157,6 +147,16 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
                        mKeyguardUpdateMonitor,
                        mBypassController);
        mLargeClockViewController.init();
    }

    @Override
    protected void onViewAttached() {
        if (CUSTOM_CLOCKS_ENABLED) {
            mClockManager.addOnClockChangedListener(mClockChangedListener);
        }
        mColorExtractor.addOnColorsChangedListener(mColorsListener);
        mView.updateColors(getGradientColors());
        updateAodIcons();

        if (mSmartspaceController.isEnabled()) {
            mSmartspaceView = mSmartspaceController.buildAndConnectView(mView);