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

Commit cd97f111 authored by Utkarsh Gupta's avatar Utkarsh Gupta Committed by Michael Bestas
Browse files

Allow screen unpinning on devices without navbar

Change-Id: Iedfc08f4d95bbee3c8578c0d2450b90739e63603

Screen Pinning: Show correct text for on screen nav.

  Similar to I09c2ef661bff272cb4f7ca43bac0e45f4b20a4d4,
  we're not getting an instance of PhoneWindowManager which
  we can rely on to update dynamically.

  TICKET: OPO-393

Change-Id: Iacf8221066461fb6940dd88432e665812545c3ff
parent 43a65667
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -27,4 +27,7 @@

    <!-- Message to show the user when their vendor image doesn't match the build's fingerprint. -->
    <string name="lineage_system_error_manufacturer">A vendor image mismatch has been detected. Typically this means your vendor image is out of date. Please ensure your vendor image matches <xliff:g id="fingerprint">%1$s</xliff:g>.</string>

    <!-- Notify user that they are in Lock-to-app (for devices without navbar) -->
    <string name="lock_to_app_toast_no_navbar">To unpin this screen, touch and hold the Back button.</string>
</resources>
+3 −0
Original line number Diff line number Diff line
@@ -34,4 +34,7 @@

    <!-- Message to show the user when their vendor image doesn't match the build's fingerprint. -->
    <java-symbol type="string" name="lineage_system_error_manufacturer" />

    <!-- Screen unpinning -->
    <java-symbol type="string" name="lock_to_app_toast_no_navbar" />
</resources>
+3 −0
Original line number Diff line number Diff line
@@ -65,4 +65,7 @@
    <!-- Navigation bar dpad -->
    <string name="accessibility_dpad_left">Cursor left</string>
    <string name="accessibility_dpad_right">Cursor right</string>

    <!-- Screen pinning dialog description (for devices without navbar) -->
    <string name="screen_pinning_description_no_navbar">This keeps it in view until you unpin. Touch &amp; hold Back to unpin.</string>
</resources>
+16 −1
Original line number Diff line number Diff line
@@ -31,10 +31,12 @@ import android.os.Binder;
import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.IWindowManager;
import android.view.Surface;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityManager;
import android.view.animation.DecelerateInterpolator;
import android.widget.Button;
@@ -56,6 +58,7 @@ public class ScreenPinningRequest implements View.OnClickListener {

    private final AccessibilityManager mAccessibilityService;
    private final WindowManager mWindowManager;
    private final IWindowManager mWindowManagerService;

    private RequestWindowView mRequestWindow;

@@ -68,6 +71,7 @@ public class ScreenPinningRequest implements View.OnClickListener {
                mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
        mWindowManager = (WindowManager)
                mContext.getSystemService(Context.WINDOW_SERVICE);
        mWindowManagerService = WindowManagerGlobal.getWindowManagerService();
    }

    public void clearPrompt() {
@@ -235,7 +239,9 @@ public class ScreenPinningRequest implements View.OnClickListener {

            boolean touchExplorationEnabled = mAccessibilityService.isTouchExplorationEnabled();
            ((TextView) mLayout.findViewById(R.id.screen_pinning_description))
                    .setText(touchExplorationEnabled
                    .setText(!hasNavigationBar()
                            ? R.string.screen_pinning_description_no_navbar
                            : touchExplorationEnabled
                            ? R.string.screen_pinning_description_accessible
                            : R.string.screen_pinning_description);
            final int backBgVisibility = touchExplorationEnabled ? View.INVISIBLE : View.VISIBLE;
@@ -264,6 +270,15 @@ public class ScreenPinningRequest implements View.OnClickListener {
            }
        }

        private boolean hasNavigationBar() {
            try {
                return mWindowManagerService.hasNavigationBar();
            } catch (RemoteException e) {
                // ignore
            }
            return false;
        }

        @Override
        public void onDetachedFromWindow() {
            mContext.unregisterReceiver(mReceiver);
+16 −1
Original line number Diff line number Diff line
@@ -20,9 +20,12 @@ import android.app.ActivityManager;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
import android.os.SystemClock;
import android.util.Slog;
import android.view.IWindowManager;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.widget.Toast;

import com.android.internal.R;
@@ -37,12 +40,14 @@ public class LockTaskNotify {

    private final Context mContext;
    private final H mHandler;
    private final IWindowManager mWindowManagerService;
    private Toast mLastToast;
    private long mLastShowToastTime;

    public LockTaskNotify(Context context) {
        mContext = context;
        mHandler = new H();
        mWindowManagerService = WindowManagerGlobal.getWindowManagerService();
    }

    public void showToast(int lockTaskModeState) {
@@ -54,7 +59,8 @@ public class LockTaskNotify {
        if (lockTaskModeState == ActivityManager.LOCK_TASK_MODE_LOCKED) {
            text = mContext.getString(R.string.lock_to_app_toast_locked);
        } else if (lockTaskModeState == ActivityManager.LOCK_TASK_MODE_PINNED) {
            text = mContext.getString(R.string.lock_to_app_toast);
            text = mContext.getString(hasNavigationBar()
                      ? R.string.lock_to_app_toast : R.string.lock_to_app_toast_no_navbar);
        }
        if (text == null) {
            return;
@@ -87,6 +93,15 @@ public class LockTaskNotify {
        return toast;
    }

    private boolean hasNavigationBar() {
        try {
            return mWindowManagerService.hasNavigationBar();
        } catch (RemoteException e) {
            // ignore
        }
        return false;
    }

    private final class H extends Handler {
        private static final int SHOW_TOAST = 3;

Loading