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

Commit 1fe41d44 authored by Pasty Chang's avatar Pasty Chang Committed by Android (Google) Code Review
Browse files

Merge "Migrating to new footer button for ChooseLockPassword page"

parents 2cea2d4c 76ad11c1
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