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

Commit 27ce1948 authored by Kevin Chyn's avatar Kevin Chyn
Browse files

Update FingerprintDialog UI for landscape orientation

Fixes: 73818869

Test: tested with modified FingerprintDialog apk
Change-Id: I59664669920c1dfaf3446b68c42de6d9dda83acc
parent 09da294c
Loading
Loading
Loading
Loading
+120 −98
Original line number Diff line number Diff line
@@ -26,12 +26,24 @@
    <View
        android:id="@+id/space"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <LinearLayout
        android:id="@+id/dialog"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <!-- This is not a Space since Spaces cannot be clicked. The width of this changes depending
         on horizontal/portrait orientation -->
        <View
            android:id="@+id/left_space"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent"/>

        <LinearLayout
            android:id="@+id/dialog"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:elevation="2dp"
@@ -138,4 +150,14 @@
            </LinearLayout>
        </LinearLayout>

        <!-- This is not a Space since Spaces cannot be clicked. The width of this changes depending
         on horizontal/portrait orientation -->
        <View
            android:id="@+id/right_space"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />

    </LinearLayout>

</LinearLayout>
 No newline at end of file
+25 −6
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.fingerprint;

import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
@@ -27,6 +28,7 @@ import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -42,6 +44,7 @@ import android.widget.TextView;

import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.util.leak.RotationUtils;

/**
 * This class loads the view for the system-provided dialog. The view consists of:
@@ -74,6 +77,8 @@ public class FingerprintDialogView extends LinearLayout {
    private final LinearLayout mDialog;
    private int mLastState;

    private final float mDisplayWidth;

    public FingerprintDialogView(Context context, Handler handler) {
        super(context);
        mHandler = handler;
@@ -88,6 +93,10 @@ public class FingerprintDialogView extends LinearLayout {
        mFingerprintColor = Color.parseColor(
                getResources().getString(R.color.fingerprint_dialog_fingerprint_color));

        DisplayMetrics metrics = new DisplayMetrics();
        mWindowManager.getDefaultDisplay().getMetrics(metrics);
        mDisplayWidth = metrics.widthPixels;

        // Create the dialog
        LayoutInflater factory = LayoutInflater.from(getContext());
        mLayout = (ViewGroup) factory.inflate(R.layout.fingerprint_dialog, this, false);
@@ -117,15 +126,14 @@ public class FingerprintDialogView extends LinearLayout {
        });

        final View space = mLayout.findViewById(R.id.space);
        final View leftSpace = mLayout.findViewById(R.id.left_space);
        final View rightSpace = mLayout.findViewById(R.id.right_space);
        final Button negative = mLayout.findViewById(R.id.button2);
        final Button positive = mLayout.findViewById(R.id.button1);

        space.setClickable(true);
        space.setOnTouchListener((View view, MotionEvent event) -> {
            mHandler.obtainMessage(FingerprintDialogImpl.MSG_HIDE_DIALOG, true /* userCanceled */)
                    .sendToTarget();
            return true;
        });
        setDismissesDialog(space);
        setDismissesDialog(leftSpace);
        setDismissesDialog(rightSpace);

        negative.setOnClickListener((View v) -> {
            mHandler.obtainMessage(FingerprintDialogImpl.MSG_BUTTON_NEGATIVE).sendToTarget();
@@ -149,6 +157,8 @@ public class FingerprintDialogView extends LinearLayout {
        final Button negative = mLayout.findViewById(R.id.button2);
        final Button positive = mLayout.findViewById(R.id.button1);

        mDialog.getLayoutParams().width = (int) mDisplayWidth;

        mLastState = STATE_NONE;
        updateFingerprintIcon(STATE_FINGERPRINT);

@@ -189,6 +199,15 @@ public class FingerprintDialogView extends LinearLayout {
        });
    }

    private void setDismissesDialog(View v) {
        v.setClickable(true);
        v.setOnTouchListener((View view, MotionEvent event) -> {
            mHandler.obtainMessage(FingerprintDialogImpl.MSG_HIDE_DIALOG, true /* userCanceled */)
                    .sendToTarget();
            return true;
        });
    }

    public void startDismiss() {
        final Runnable endActionRunnable = new Runnable() {
            @Override