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

Commit 76ad11c1 authored by pastychang's avatar pastychang
Browse files

Migrating to new footer button for ChooseLockPassword page

Bug: 120805516
Test: RunSettingsRoboTests
Change-Id: I1fb4588d0c2cf04bca88ec470d59945c2fcab01c
parent 32d56165
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -17,11 +17,11 @@
<com.google.android.setupdesign.GlifLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:id="@+id/setup_wizard_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:icon="@drawable/ic_lock"
    android:importantForAutofill="noExcludeDescendants"
    settings:sucFooter="@layout/choose_lock_password_footer"
    settings:sucHeaderText="@string/lockpassword_choose_your_screen_lock_header">

    <LinearLayout
+0 −53
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
    Copyright (C) 2017 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License")
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<!-- TODO: Use aapt:attr when it is fixed (b/36809755) -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/SudGlifButtonBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <!-- left : skip -->
    <Button android:id="@+id/skip_button"
        style="@style/SudGlifButton.Secondary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/skip_label"
        android:visibility="gone" />


    <!-- left : clear -->
    <Button android:id="@+id/clear_button"
        style="@style/SudGlifButton.Secondary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:text="@string/lockpassword_clear_label" />

    <Space
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <!-- right : continue -->
    <Button android:id="@+id/next_button"
        style="@style/SudGlifButton.Primary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/next_label" />

</LinearLayout>
+31 −25
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
@@ -69,6 +68,8 @@ import com.android.settings.core.InstrumentedFragment;
import com.android.settings.notification.RedactionInterstitial;
import com.android.settings.widget.ImeAwareEditText;

import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
import com.google.android.setupdesign.GlifLayout;

import java.util.ArrayList;
@@ -168,8 +169,7 @@ public class ChooseLockPassword extends SettingsActivity {
    }

    public static class ChooseLockPasswordFragment extends InstrumentedFragment
            implements OnClickListener, OnEditorActionListener, TextWatcher,
            SaveAndFinishWorker.Listener {
            implements OnEditorActionListener, TextWatcher, SaveAndFinishWorker.Listener {
        private static final String KEY_FIRST_PIN = "first_pin";
        private static final String KEY_UI_STAGE = "ui_stage";
        private static final String KEY_CURRENT_PASSWORD = "current_password";
@@ -210,9 +210,8 @@ public class ChooseLockPassword extends SettingsActivity {
        private String mFirstPin;
        private RecyclerView mPasswordRestrictionView;
        protected boolean mIsAlphaMode;
        protected Button mSkipButton;
        private Button mClearButton;
        private Button mNextButton;
        protected FooterButton mSkipOrClearButton;
        private FooterButton mNextButton;
        private TextView mMessage;

        private TextChangedHandler mTextChangedHandler;
@@ -408,13 +407,25 @@ public class ChooseLockPassword extends SettingsActivity {
            ViewGroup container = view.findViewById(R.id.password_container);
            container.setOpticalInsets(Insets.NONE);

            mSkipButton = view.findViewById(R.id.skip_button);
            mSkipButton.setOnClickListener(this);
            mNextButton = view.findViewById(R.id.next_button);
            mNextButton.setOnClickListener(this);
            mClearButton = view.findViewById(R.id.clear_button);
            mClearButton.setOnClickListener(this);

            final ButtonFooterMixin mixin = mLayout.getMixin(ButtonFooterMixin.class);
            mixin.setSecondaryButton(
                    new FooterButton.Builder(getActivity())
                            .setText(R.string.lockpassword_clear_label)
                            .setListener(this::onSkipOrClearButtonClick)
                            .setButtonType(FooterButton.ButtonType.SKIP)
                            .setTheme(R.style.SudGlifButton_Secondary)
                            .build()
            );
            mixin.setPrimaryButton(
                    new FooterButton.Builder(getActivity())
                            .setText(R.string.next_label)
                            .setListener(this::onNextButtonClick)
                            .setButtonType(FooterButton.ButtonType.NEXT)
                            .setTheme(R.style.SudGlifButton_Primary)
                            .build()
            );
            mSkipOrClearButton = mixin.getSecondaryButton();
            mNextButton = mixin.getPrimaryButton();

            mMessage = view.findViewById(R.id.message);
            if (mForFingerprint) {
@@ -777,19 +788,15 @@ public class ChooseLockPassword extends SettingsActivity {
        }

        protected void setNextText(int text) {
            mNextButton.setText(text);
            mNextButton.setText(getActivity(), text);
        }

        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.next_button:
                    handleNext();
                    break;

                case R.id.clear_button:
        protected void onSkipOrClearButtonClick(View view) {
            mPasswordEntry.setText("");
                    break;
        }

        protected void onNextButtonClick(View view) {
            handleNext();
        }

        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
@@ -894,13 +901,12 @@ public class ChooseLockPassword extends SettingsActivity {
                mPasswordRequirementAdapter.setRequirements(messages);
                // Enable/Disable the next button accordingly.
                setNextEnabled(errorCode == NO_ERROR);
                mClearButton.setVisibility(View.GONE);
            } else {
                // Hide password requirement view when we are just asking user to confirm the pw.
                mPasswordRestrictionView.setVisibility(View.GONE);
                setHeaderText(getString(mUiStage.getHint(mIsAlphaMode, getStageType())));
                setNextEnabled(canInput && length >= mPasswordMinLength);
                mClearButton.setVisibility(toVisibility(canInput && length > 0));
                mSkipOrClearButton.setVisibility(toVisibility(canInput && length > 0));
            }
            int message = mUiStage.getMessage(mIsAlphaMode, getStageType());
            if (message != 0) {
+18 −17
Original line number Diff line number Diff line
@@ -72,8 +72,11 @@ public class SetupChooseLockPassword extends ChooseLockPassword {
    public static class SetupChooseLockPasswordFragment extends ChooseLockPasswordFragment
            implements OnLockTypeSelectedListener {

        private static final String TAG_SKIP_SCREEN_LOCK_DIALOG = "skip_screen_lock_dialog";

        @Nullable
        private Button mOptionsButton;
        private boolean mLeftButtonIsSkip;

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
@@ -92,26 +95,22 @@ public class SetupChooseLockPassword extends ChooseLockPassword {
            if (showOptionsButton && anyOptionsShown) {
                mOptionsButton = view.findViewById(R.id.screen_lock_options);
                mOptionsButton.setVisibility(View.VISIBLE);
                mOptionsButton.setOnClickListener(this);
                mOptionsButton.setOnClickListener((btn) ->
                        ChooseLockTypeDialogFragment.newInstance(mUserId)
                                .show(getChildFragmentManager(), TAG_SKIP_SCREEN_LOCK_DIALOG));
            }
        }

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.screen_lock_options:
                    ChooseLockTypeDialogFragment.newInstance(mUserId)
                            .show(getChildFragmentManager(), null);
                    break;
                case R.id.skip_button:
        protected void onSkipOrClearButtonClick(View view) {
            if (mLeftButtonIsSkip) {
                SetupSkipDialog dialog = SetupSkipDialog.newInstance(
                        getActivity().getIntent()
                                .getBooleanExtra(SetupSkipDialog.EXTRA_FRP_SUPPORTED, false));
                dialog.show(getFragmentManager());
                    break;
                default:
                    super.onClick(v);
                return;
            }
            super.onSkipOrClearButtonClick(view);
        }

        @Override
@@ -137,9 +136,11 @@ public class SetupChooseLockPassword extends ChooseLockPassword {
            super.updateUi();
            // Show the skip button during SUW but not during Settings > Biometric Enrollment
            if (mUiStage == Stage.Introduction) {
                mSkipButton.setVisibility(View.VISIBLE);
                mSkipOrClearButton.setText(getActivity(), R.string.skip_label);
                mLeftButtonIsSkip = true;
            } else {
                mSkipButton.setVisibility(View.GONE);
                mSkipOrClearButton.setText(getActivity(), R.string.lockpassword_clear_label);
                mLeftButtonIsSkip = false;
            }

            if (mOptionsButton != null) {
+3 −1
Original line number Diff line number Diff line
@@ -57,6 +57,8 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
    public static class SetupChooseLockPatternFragment extends ChooseLockPatternFragment
            implements ChooseLockTypeDialogFragment.OnLockTypeSelectedListener {

        private static final String TAG_SKIP_SCREEN_LOCK_DIALOG = "skip_screen_lock_dialog";

        @Nullable
        private Button mOptionsButton;
        private boolean mLeftButtonIsSkip;
@@ -69,7 +71,7 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
                mOptionsButton = view.findViewById(R.id.screen_lock_options);
                mOptionsButton.setOnClickListener((btn) ->
                        ChooseLockTypeDialogFragment.newInstance(mUserId)
                                .show(getChildFragmentManager(), null));
                                .show(getChildFragmentManager(), TAG_SKIP_SCREEN_LOCK_DIALOG));
            }
            // Show the skip button during SUW but not during Settings > Biometric Enrollment
            mSkipOrClearButton.setOnClickListener(this::onSkipOrClearButtonClick);
Loading