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

Commit 20daffd9 authored by Jim Miller's avatar Jim Miller
Browse files

Disable keyguard text marquee when the display turns off.

Fixes bug 11116666

Change-Id: Id9abb9d0531bcf4c5da7014ed4b9b202652b3754
parent a27366ef
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
@@ -47,6 +47,14 @@ public class CarrierText extends TextView {
            mSimState = simState;
            mSimState = simState;
            updateCarrierText(mSimState, mPlmn, mSpn);
            updateCarrierText(mSimState, mPlmn, mSpn);
        }
        }

        public void onScreenTurnedOff(int why) {
            setSelected(false);
        };

        public void onScreenTurnedOn() {
            setSelected(true);
        };
    };
    };
    /**
    /**
     * The status of this lock screen. Primarily used for widgets on LockScreen.
     * The status of this lock screen. Primarily used for widgets on LockScreen.
@@ -79,7 +87,8 @@ public class CarrierText extends TextView {
    protected void onFinishInflate() {
    protected void onFinishInflate() {
        super.onFinishInflate();
        super.onFinishInflate();
        mSeparator = getResources().getString(R.string.kg_text_message_separator);
        mSeparator = getResources().getString(R.string.kg_text_message_separator);
        setSelected(true); // Allow marquee to work.
        final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn();
        setSelected(screenOn); // Allow marquee to work.
    }
    }


    @Override
    @Override
+12 −3
Original line number Original line Diff line number Diff line
@@ -163,6 +163,12 @@ class KeyguardMessageArea extends TextView {
            mBatteryIsLow = status.isBatteryLow();
            mBatteryIsLow = status.isBatteryLow();
            update();
            update();
        }
        }
        public void onScreenTurnedOff(int why) {
            setSelected(false);
        };
        public void onScreenTurnedOn() {
            setSelected(true);
        };
    };
    };


    public KeyguardMessageArea(Context context) {
    public KeyguardMessageArea(Context context) {
@@ -174,9 +180,6 @@ class KeyguardMessageArea extends TextView {


        mLockPatternUtils = new LockPatternUtils(context);
        mLockPatternUtils = new LockPatternUtils(context);


        // This is required to ensure marquee works
        setSelected(true);

        // Registering this callback immediately updates the battery state, among other things.
        // Registering this callback immediately updates the battery state, among other things.
        mUpdateMonitor = KeyguardUpdateMonitor.getInstance(getContext());
        mUpdateMonitor = KeyguardUpdateMonitor.getInstance(getContext());
        mUpdateMonitor.registerCallback(mInfoCallback);
        mUpdateMonitor.registerCallback(mInfoCallback);
@@ -187,6 +190,12 @@ class KeyguardMessageArea extends TextView {
        update();
        update();
    }
    }


    @Override
    protected void onFinishInflate() {
        final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn();
        setSelected(screenOn); // This is required to ensure marquee works
    }

    public void securityMessageChanged() {
    public void securityMessageChanged() {
        setAlpha(1f);
        setAlpha(1f);
        mShowingMessage = true;
        mShowingMessage = true;
+23 −11
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.res.Resources;
import android.graphics.Typeface;
import android.graphics.Typeface;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Slog;
import android.util.Slog;
import android.view.View;
import android.view.View;
import android.widget.GridLayout;
import android.widget.GridLayout;
@@ -42,6 +43,8 @@ public class KeyguardStatusView extends GridLayout {


    private TextView mAlarmStatusView;
    private TextView mAlarmStatusView;


    private final int MARQUEE_VIEWS[] = { R.id.alarm_status };

    private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
    private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {


        @Override
        @Override
@@ -56,6 +59,14 @@ public class KeyguardStatusView extends GridLayout {
                refresh();
                refresh();
            }
            }
        };
        };

        public void onScreenTurnedOn() {
            setEnableMarquee(true);
        };

        public void onScreenTurnedOff(int why) {
            setEnableMarquee(false);
        };
    };
    };


    public KeyguardStatusView(Context context) {
    public KeyguardStatusView(Context context) {
@@ -70,22 +81,23 @@ public class KeyguardStatusView extends GridLayout {
        super(context, attrs, defStyle);
        super(context, attrs, defStyle);
    }
    }


    private void setEnableMarquee(boolean enabled) {
        if (DEBUG) Log.v(TAG, (enabled ? "Enable" : "Disable") + " transport text marquee");
        for (int i = 0; i < MARQUEE_VIEWS.length; i++) {
            View v = findViewById(MARQUEE_VIEWS[i]);
            if (v != null) {
                v.setSelected(enabled);
            }
        }
    }

    @Override
    @Override
    protected void onFinishInflate() {
    protected void onFinishInflate() {
        super.onFinishInflate();
        super.onFinishInflate();

        mAlarmStatusView = (TextView) findViewById(R.id.alarm_status);
        mAlarmStatusView = (TextView) findViewById(R.id.alarm_status);
        mLockPatternUtils = new LockPatternUtils(getContext());
        mLockPatternUtils = new LockPatternUtils(getContext());

        final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn();
        // Required to get Marquee to work.
        setEnableMarquee(screenOn);
        final View marqueeViews[] = { mAlarmStatusView };
        for (int i = 0; i < marqueeViews.length; i++) {
            View v = marqueeViews[i];
            if (v == null) {
                throw new RuntimeException("Can't find widget at index " + i);
            }
            v.setSelected(true);
        }
        refresh();
        refresh();
    }
    }


+26 −2
Original line number Original line Diff line number Diff line
@@ -84,6 +84,8 @@ public class KeyguardTransportControlView extends FrameLayout {
    private AudioManager mAudioManager;
    private AudioManager mAudioManager;
    private RemoteController mRemoteController;
    private RemoteController mRemoteController;


    private int MARQUEE_VIEWS[] = { R.id.title, R.id.artist_album };

    private ImageView mBadge;
    private ImageView mBadge;


    private boolean mSeekEnabled;
    private boolean mSeekEnabled;
@@ -198,6 +200,16 @@ public class KeyguardTransportControlView extends FrameLayout {


    KeyguardHostView.TransportControlCallback mTransportControlCallback;
    KeyguardHostView.TransportControlCallback mTransportControlCallback;


    private final KeyguardUpdateMonitorCallback mUpdateMonitor
            = new KeyguardUpdateMonitorCallback() {
        public void onScreenTurnedOff(int why) {
            setEnableMarquee(false);
        };
        public void onScreenTurnedOn() {
            setEnableMarquee(true);
        };
    };

    public KeyguardTransportControlView(Context context, AttributeSet attrs) {
    public KeyguardTransportControlView(Context context, AttributeSet attrs) {
        super(context, attrs);
        super(context, attrs);
        if (DEBUG) Log.v(TAG, "Create TCV " + this);
        if (DEBUG) Log.v(TAG, "Create TCV " + this);
@@ -250,6 +262,16 @@ public class KeyguardTransportControlView extends FrameLayout {
        mTransportControlCallback = transportControlCallback;
        mTransportControlCallback = transportControlCallback;
    }
    }


    private void setEnableMarquee(boolean enabled) {
        if (DEBUG) Log.v(TAG, (enabled ? "Enable" : "Disable") + " transport text marquee");
        for (int i = 0; i < MARQUEE_VIEWS.length; i++) {
            View v = findViewById(MARQUEE_VIEWS[i]);
            if (v != null) {
                v.setSelected(enabled);
            }
        }
    }

    @Override
    @Override
    public void onFinishInflate() {
    public void onFinishInflate() {
        super.onFinishInflate();
        super.onFinishInflate();
@@ -257,9 +279,7 @@ public class KeyguardTransportControlView extends FrameLayout {
        mMetadataContainer = (ViewGroup) findViewById(R.id.metadata_container);
        mMetadataContainer = (ViewGroup) findViewById(R.id.metadata_container);
        mBadge = (ImageView) findViewById(R.id.badge);
        mBadge = (ImageView) findViewById(R.id.badge);
        mTrackTitle = (TextView) findViewById(R.id.title);
        mTrackTitle = (TextView) findViewById(R.id.title);
        mTrackTitle.setSelected(true); // enable marquee
        mTrackArtistAlbum = (TextView) findViewById(R.id.artist_album);
        mTrackArtistAlbum = (TextView) findViewById(R.id.artist_album);
        mTrackArtistAlbum.setSelected(true);
        mTransientSeek = findViewById(R.id.transient_seek);
        mTransientSeek = findViewById(R.id.transient_seek);
        mTransientSeekBar = (SeekBar) findViewById(R.id.transient_seek_bar);
        mTransientSeekBar = (SeekBar) findViewById(R.id.transient_seek_bar);
        mTransientSeekBar.setOnSeekBarChangeListener(mOnSeekBarChangeListener);
        mTransientSeekBar.setOnSeekBarChangeListener(mOnSeekBarChangeListener);
@@ -273,6 +293,8 @@ public class KeyguardTransportControlView extends FrameLayout {
            view.setOnClickListener(mTransportCommandListener);
            view.setOnClickListener(mTransportCommandListener);
            view.setOnLongClickListener(mTransportShowSeekBarListener);
            view.setOnLongClickListener(mTransportShowSeekBarListener);
        }
        }
        final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn();
        setEnableMarquee(screenOn);
    }
    }


    @Override
    @Override
@@ -285,6 +307,7 @@ public class KeyguardTransportControlView extends FrameLayout {
        }
        }
        if (DEBUG) Log.v(TAG, "Registering TCV " + this);
        if (DEBUG) Log.v(TAG, "Registering TCV " + this);
        mAudioManager.registerRemoteController(mRemoteController);
        mAudioManager.registerRemoteController(mRemoteController);
        KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitor);
    }
    }


    @Override
    @Override
@@ -301,6 +324,7 @@ public class KeyguardTransportControlView extends FrameLayout {
        super.onDetachedFromWindow();
        super.onDetachedFromWindow();
        if (DEBUG) Log.v(TAG, "Unregistering TCV " + this);
        if (DEBUG) Log.v(TAG, "Unregistering TCV " + this);
        mAudioManager.unregisterRemoteController(mRemoteController);
        mAudioManager.unregisterRemoteController(mRemoteController);
        KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mUpdateMonitor);
        mUserSeeking = false;
        mUserSeeking = false;
    }
    }


+50 −1
Original line number Original line Diff line number Diff line
@@ -92,7 +92,8 @@ public class KeyguardUpdateMonitor {
    protected static final int MSG_SET_PLAYBACK_STATE = 316;
    protected static final int MSG_SET_PLAYBACK_STATE = 316;
    protected static final int MSG_USER_INFO_CHANGED = 317;
    protected static final int MSG_USER_INFO_CHANGED = 317;
    protected static final int MSG_REPORT_EMERGENCY_CALL_ACTION = 318;
    protected static final int MSG_REPORT_EMERGENCY_CALL_ACTION = 318;

    private static final int MSG_SCREEN_TURNED_ON = 319;
    private static final int MSG_SCREEN_TURNED_OFF = 320;


    private static KeyguardUpdateMonitor sInstance;
    private static KeyguardUpdateMonitor sInstance;


@@ -127,6 +128,8 @@ public class KeyguardUpdateMonitor {


    private boolean mSwitchingUser;
    private boolean mSwitchingUser;


    private boolean mScreenOn;

    private final Handler mHandler = new Handler() {
    private final Handler mHandler = new Handler() {
        @Override
        @Override
        public void handleMessage(Message msg) {
        public void handleMessage(Message msg) {
@@ -185,6 +188,12 @@ public class KeyguardUpdateMonitor {
                case MSG_REPORT_EMERGENCY_CALL_ACTION:
                case MSG_REPORT_EMERGENCY_CALL_ACTION:
                    handleReportEmergencyCallAction();
                    handleReportEmergencyCallAction();
                    break;
                    break;
                case MSG_SCREEN_TURNED_OFF:
                    handleScreenTurnedOff(msg.arg1);
                    break;
                case MSG_SCREEN_TURNED_ON:
                    handleScreenTurnedOn();
                    break;
            }
            }
        }
        }
    };
    };
@@ -411,6 +420,26 @@ public class KeyguardUpdateMonitor {
        return sInstance;
        return sInstance;
    }
    }


    protected void handleScreenTurnedOn() {
        final int count = mCallbacks.size();
        for (int i = 0; i < count; i++) {
            KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
            if (cb != null) {
                cb.onScreenTurnedOn();
            }
        }
    }

    protected void handleScreenTurnedOff(int arg1) {
        final int count = mCallbacks.size();
        for (int i = 0; i < count; i++) {
            KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
            if (cb != null) {
                cb.onScreenTurnedOff(arg1);
            }
        }
    }

    /**
    /**
     * IMPORTANT: Must be called from UI thread.
     * IMPORTANT: Must be called from UI thread.
     */
     */
@@ -1041,4 +1070,24 @@ public class KeyguardUpdateMonitor {
    public DisplayClientState getCachedDisplayClientState() {
    public DisplayClientState getCachedDisplayClientState() {
        return mDisplayClientState;
        return mDisplayClientState;
    }
    }

    // TODO: use these callbacks elsewhere in place of the existing notifyScreen*()
    // (KeyguardViewMediator, KeyguardHostView)
    public void dispatchScreenTurnedOn() {
        synchronized (this) {
            mScreenOn = true;
        }
        mHandler.sendEmptyMessage(MSG_SCREEN_TURNED_ON);
    }

    public void dispatchScreenTurndOff(int why) {
        synchronized(this) {
            mScreenOn = false;
        }
        mHandler.sendMessage(mHandler.obtainMessage(MSG_SCREEN_TURNED_OFF, why, 0));
    }

    public boolean isScreenOn() {
        return mScreenOn;
    }
}
}
Loading