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

Commit eb85a63a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Support showing alignment hint based on aligniment state of dock"

parents 2f15dae0 6a8fb02a
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -986,6 +986,12 @@
    <!-- Message shown when face authentication fails and the pin pad is visible. [CHAR LIMIT=60] -->
    <string name="keyguard_retry">Swipe up to try again</string>

    <!-- Indication when device is slow charging due to misalignment on the dock. [CHAR LIMIT=60] -->
    <string name="dock_alignment_slow_charging" product="default">Realign phone for faster charging</string>

    <!-- Indication when device is not charging due to bad placement on the dock. [CHAR LIMIT=60] -->
    <string name="dock_alignment_not_charging" product="default">Realign phone to charge wirelessly</string>

    <!-- Text on keyguard screen and in Quick Settings footer indicating that the device is enterprise-managed by a Device Owner [CHAR LIMIT=60] -->
    <string name="do_disclosure_generic">This device is managed by your organization</string>

+48 −7
Original line number Diff line number Diff line
@@ -17,12 +17,12 @@
package com.android.systemui.dock;

/**
 * Allows an app to handle dock events
 * Allows an app to handle dock events.
 */
public interface DockManager {

    /**
     * Uninitialized / undocking dock states
     * Uninitialized / undocking dock states.
     */
    int STATE_NONE = 0;
    /**
@@ -30,24 +30,53 @@ public interface DockManager {
     */
    int STATE_DOCKED = 1;
    /**
     * The state for docking without showing UI
     * The state for docking without showing UI.
     */
    int STATE_DOCKED_HIDE = 2;

    /**
     * Add a dock event listener into manager
     * Indicates there's no alignment issue.
     */
    int ALIGN_STATE_GOOD = 0;

    /**
     * Indicates it's slightly not aligned with dock.
     */
    int ALIGN_STATE_POOR = 1;

    /**
     * Indicates it's not aligned with dock.
     */
    int ALIGN_STATE_TERRIBLE = 2;

    /**
     * Adds a dock event listener into manager.
     *
     * @param callback A {@link DockEventListener} which want to add
     */
    void addListener(DockEventListener callback);

    /**
     * Remove the added listener from dock manager
     * Removes the added listener from dock manager
     *
     * @param callback A {@link DockEventListener} which want to remove
     */
    void removeListener(DockEventListener callback);

    /**
     * Adds a alignment listener into manager.
     *
     * @param listener A {@link AlignmentStateListener} which want to add
     */
    void addAlignmentStateListener(AlignmentStateListener listener);

    /**
     * Removes the added alignment listener from dock manager.
     *
     * @param listener A {@link AlignmentStateListener} which want to remove
     */
    void removeAlignmentStateListener(AlignmentStateListener listener);

    /**
    * Returns true if the device is in docking state.
    */
@@ -58,11 +87,23 @@ public interface DockManager {
     */
    boolean isHidden();

    /** Callback for receiving dock events */
    /**
     * Listens to dock events.
     */
    interface DockEventListener {
        /**
         * Override to handle dock events
         * Override to handle dock events.
         */
        void onEvent(int event);
    }

    /**
     * Listens to dock alignment state changed.
     */
    interface AlignmentStateListener {
        /**
         * Override to handle alignment state changes.
         */
        void onAlignmentStateChanged(int alignState);
    }
}
+8 −0
Original line number Diff line number Diff line
@@ -34,6 +34,14 @@ public class DockManagerImpl implements DockManager {
    public void removeListener(DockEventListener callback) {
    }

    @Override
    public void addAlignmentStateListener(AlignmentStateListener listener) {
    }

    @Override
    public void removeAlignmentStateListener(AlignmentStateListener listener) {
    }

    @Override
    public boolean isDocked() {
        return false;
+31 −3
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import com.android.settingslib.Utils;
import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.dock.DockManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
import com.android.systemui.statusbar.phone.KeyguardIndicationTextView;
@@ -95,6 +96,7 @@ public class KeyguardIndicationController implements StateListener,
    private final IBatteryStats mBatteryInfo;
    private final SettableWakeLock mWakeLock;
    private final LockPatternUtils mLockPatternUtils;
    private final DockManager mDockManager;

    private final int mSlowThreshold;
    private final int mFastThreshold;
@@ -103,6 +105,7 @@ public class KeyguardIndicationController implements StateListener,
    private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger();

    private String mRestingIndication;
    private String mAlignmentIndication;
    private CharSequence mTransientIndication;
    private ColorStateList mTransientTextColorState;
    private ColorStateList mInitialTextColorState;
@@ -140,7 +143,8 @@ public class KeyguardIndicationController implements StateListener,
                Dependency.get(AccessibilityController.class),
                Dependency.get(KeyguardStateController.class),
                Dependency.get(StatusBarStateController.class),
                Dependency.get(KeyguardUpdateMonitor.class));
                Dependency.get(KeyguardUpdateMonitor.class),
                Dependency.get(DockManager.class));
    }

    /**
@@ -152,7 +156,8 @@ public class KeyguardIndicationController implements StateListener,
            AccessibilityController accessibilityController,
            KeyguardStateController keyguardStateController,
            StatusBarStateController statusBarStateController,
            KeyguardUpdateMonitor keyguardUpdateMonitor) {
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            DockManager dockManager) {
        mContext = context;
        mLockIcon = lockIcon;
        mShadeController = shadeController;
@@ -160,6 +165,8 @@ public class KeyguardIndicationController implements StateListener,
        mKeyguardStateController = keyguardStateController;
        mStatusBarStateController = statusBarStateController;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mDockManager = dockManager;
        mDockManager.addAlignmentStateListener(this::handleAlignStateChanged);
        // lock icon is not used on all form factors.
        if (mLockIcon != null) {
            mLockIcon.setOnLongClickListener(this::handleLockLongClick);
@@ -211,6 +218,21 @@ public class KeyguardIndicationController implements StateListener,
        mShadeController.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE, true /* force */);
    }

    private void handleAlignStateChanged(int alignState) {
        String alignmentIndication = "";
        if (alignState == DockManager.ALIGN_STATE_POOR) {
            alignmentIndication =
                    mContext.getResources().getString(R.string.dock_alignment_slow_charging);
        } else if (alignState == DockManager.ALIGN_STATE_TERRIBLE) {
            alignmentIndication =
                    mContext.getResources().getString(R.string.dock_alignment_not_charging);
        }
        if (!alignmentIndication.equals(mAlignmentIndication)) {
            mAlignmentIndication = alignmentIndication;
            updateIndication(false);
        }
    }

    /**
     * Gets the {@link KeyguardUpdateMonitorCallback} instance associated with this
     * {@link KeyguardIndicationController}.
@@ -345,6 +367,9 @@ public class KeyguardIndicationController implements StateListener,
                mTextView.setTextColor(Color.WHITE);
                if (!TextUtils.isEmpty(mTransientIndication)) {
                    mTextView.switchIndication(mTransientIndication);
                } else if (!TextUtils.isEmpty(mAlignmentIndication)) {
                    mTextView.switchIndication(mAlignmentIndication);
                    mTextView.setTextColor(Utils.getColorError(mContext));
                } else if (mPowerPluggedIn) {
                    String indication = computePowerIndication();
                    if (animate) {
@@ -373,6 +398,9 @@ public class KeyguardIndicationController implements StateListener,
                    && mKeyguardUpdateMonitor.getUserHasTrust(userId)) {
                mTextView.switchIndication(trustGrantedIndication);
                mTextView.setTextColor(mInitialTextColorState);
            } else if (!TextUtils.isEmpty(mAlignmentIndication)) {
                mTextView.switchIndication(mAlignmentIndication);
                mTextView.setTextColor(Utils.getColorError(mContext));
            } else if (mPowerPluggedIn) {
                String indication = computePowerIndication();
                if (DEBUG_CHARGING_SPEED) {
+11 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ package com.android.systemui.dock;
 */
public class DockManagerFake implements DockManager {
    DockEventListener mCallback;
    AlignmentStateListener mAlignmentListener;

    @Override
    public void addListener(DockEventListener callback) {
@@ -32,6 +33,16 @@ public class DockManagerFake implements DockManager {
        this.mCallback = null;
    }

    @Override
    public void addAlignmentStateListener(AlignmentStateListener listener) {
        mAlignmentListener = listener;
    }

    @Override
    public void removeAlignmentStateListener(AlignmentStateListener listener) {
        mAlignmentListener = listener;
    }

    @Override
    public boolean isDocked() {
        return false;
Loading