[FRP] Use setup wizard nav bar buttons

Use setup wizard nav bar buttons instead of custom button bar for
lock screen setup.

Bug: 18482708
Change-Id: I471f475ebe6bc7ba8cfbd179daddd854c1b6982a
This commit is contained in:
Maurice Lam
2014-12-03 15:17:46 -08:00
parent 3c00e18ba7
commit af103b4eb4
6 changed files with 158 additions and 48 deletions

View File

@@ -52,6 +52,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone"
style="@style/SecurityPreferenceButtonContainer"> style="@style/SecurityPreferenceButtonContainer">
<!-- left : cancel --> <!-- left : cancel -->

View File

@@ -44,11 +44,22 @@
android:layout_weight="4" android:layout_weight="4"
android:background="@color/lock_pattern_background"/> android:background="@color/lock_pattern_background"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button android:id="@+id/retryButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lockpattern_retry_button_text"/>
<TextView android:id="@+id/footerText" <TextView android:id="@+id/footerText"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="0dip" android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:minHeight="50dp" android:minHeight="50dp"
android:textSize="14sp"/> android:textSize="14sp"/>
@@ -59,6 +70,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone"
style="@style/SecurityPreferenceButtonContainer"> style="@style/SecurityPreferenceButtonContainer">
<!-- left : cancel, or re-try --> <!-- left : cancel, or re-try -->

View File

@@ -24,14 +24,12 @@ import com.android.settings.notification.RedactionInterstitial;
import android.app.Activity; import android.app.Activity;
import android.app.Fragment; import android.app.Fragment;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.inputmethodservice.KeyboardView; import android.inputmethodservice.KeyboardView;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.provider.Settings;
import android.text.Editable; import android.text.Editable;
import android.text.InputType; import android.text.InputType;
import android.text.Selection; import android.text.Selection;
@@ -416,7 +414,7 @@ public class ChooseLockPassword extends SettingsActivity {
return null; return null;
} }
private void handleNext() { public void handleNext() {
if (mDone) return; if (mDone) return;
final String pin = mPasswordEntry.getText().toString(); final String pin = mPasswordEntry.getText().toString();
@@ -460,6 +458,14 @@ public class ChooseLockPassword extends SettingsActivity {
} }
} }
protected void setNextEnabled(boolean enabled) {
mNextButton.setEnabled(enabled);
}
protected void setNextText(int text) {
mNextButton.setText(text);
}
public void onClick(View v) { public void onClick(View v) {
switch (v.getId()) { switch (v.getId()) {
case R.id.next_button: case R.id.next_button:
@@ -502,22 +508,22 @@ public class ChooseLockPassword extends SettingsActivity {
String msg = getString(mIsAlphaMode ? R.string.lockpassword_password_too_short String msg = getString(mIsAlphaMode ? R.string.lockpassword_password_too_short
: R.string.lockpassword_pin_too_short, mPasswordMinLength); : R.string.lockpassword_pin_too_short, mPasswordMinLength);
mHeaderText.setText(msg); mHeaderText.setText(msg);
mNextButton.setEnabled(false); setNextEnabled(false);
} else { } else {
String error = validatePassword(password); String error = validatePassword(password);
if (error != null) { if (error != null) {
mHeaderText.setText(error); mHeaderText.setText(error);
mNextButton.setEnabled(false); setNextEnabled(false);
} else { } else {
mHeaderText.setText(R.string.lockpassword_press_continue); mHeaderText.setText(R.string.lockpassword_press_continue);
mNextButton.setEnabled(true); setNextEnabled(true);
} }
} }
} else { } else {
mHeaderText.setText(mIsAlphaMode ? mUiStage.alphaHint : mUiStage.numericHint); mHeaderText.setText(mIsAlphaMode ? mUiStage.alphaHint : mUiStage.numericHint);
mNextButton.setEnabled(length > 0); setNextEnabled(length > 0);
} }
mNextButton.setText(mUiStage.buttonText); setNextText(mUiStage.buttonText);
} }
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {

View File

@@ -150,6 +150,14 @@ public class ChooseLockPattern extends SettingsActivity {
} }
} }
protected void setRightButtonEnabled(boolean enabled) {
mFooterRightButton.setEnabled(enabled);
}
protected void setRightButtonText(int text) {
mFooterRightButton.setText(text);
}
/** /**
* The pattern listener that responds according to a user choosing a new * The pattern listener that responds according to a user choosing a new
* lock pattern. * lock pattern.
@@ -390,43 +398,51 @@ public class ChooseLockPattern extends SettingsActivity {
return RedactionInterstitial.createStartIntent(context); return RedactionInterstitial.createStartIntent(context);
} }
public void handleLeftButton() {
if (mUiStage.leftMode == LeftButtonMode.Retry) {
mChosenPattern = null;
mLockPatternView.clearPattern();
updateStage(Stage.Introduction);
} else if (mUiStage.leftMode == LeftButtonMode.Cancel) {
// They are canceling the entire wizard
getActivity().setResult(RESULT_FINISHED);
getActivity().finish();
} else {
throw new IllegalStateException("left footer button pressed, but stage of " +
mUiStage + " doesn't make sense");
}
}
public void handleRightButton() {
if (mUiStage.rightMode == RightButtonMode.Continue) {
if (mUiStage != Stage.FirstChoiceValid) {
throw new IllegalStateException("expected ui stage "
+ Stage.FirstChoiceValid + " when button is "
+ RightButtonMode.Continue);
}
updateStage(Stage.NeedToConfirm);
} else if (mUiStage.rightMode == RightButtonMode.Confirm) {
if (mUiStage != Stage.ChoiceConfirmed) {
throw new IllegalStateException("expected ui stage " + Stage.ChoiceConfirmed
+ " when button is " + RightButtonMode.Confirm);
}
saveChosenPatternAndFinish();
} else if (mUiStage.rightMode == RightButtonMode.Ok) {
if (mUiStage != Stage.HelpScreen) {
throw new IllegalStateException("Help screen is only mode with ok button, "
+ "but stage is " + mUiStage);
}
mLockPatternView.clearPattern();
mLockPatternView.setDisplayMode(DisplayMode.Correct);
updateStage(Stage.Introduction);
}
}
public void onClick(View v) { public void onClick(View v) {
if (v == mFooterLeftButton) { if (v == mFooterLeftButton) {
if (mUiStage.leftMode == LeftButtonMode.Retry) { handleLeftButton();
mChosenPattern = null;
mLockPatternView.clearPattern();
updateStage(Stage.Introduction);
} else if (mUiStage.leftMode == LeftButtonMode.Cancel) {
// They are canceling the entire wizard
getActivity().setResult(RESULT_FINISHED);
getActivity().finish();
} else {
throw new IllegalStateException("left footer button pressed, but stage of " +
mUiStage + " doesn't make sense");
}
} else if (v == mFooterRightButton) { } else if (v == mFooterRightButton) {
handleRightButton();
if (mUiStage.rightMode == RightButtonMode.Continue) {
if (mUiStage != Stage.FirstChoiceValid) {
throw new IllegalStateException("expected ui stage " + Stage.FirstChoiceValid
+ " when button is " + RightButtonMode.Continue);
}
updateStage(Stage.NeedToConfirm);
} else if (mUiStage.rightMode == RightButtonMode.Confirm) {
if (mUiStage != Stage.ChoiceConfirmed) {
throw new IllegalStateException("expected ui stage " + Stage.ChoiceConfirmed
+ " when button is " + RightButtonMode.Confirm);
}
saveChosenPatternAndFinish();
} else if (mUiStage.rightMode == RightButtonMode.Ok) {
if (mUiStage != Stage.HelpScreen) {
throw new IllegalStateException("Help screen is only mode with ok button, but " +
"stage is " + mUiStage);
}
mLockPatternView.clearPattern();
mLockPatternView.setDisplayMode(DisplayMode.Correct);
updateStage(Stage.Introduction);
}
} }
} }
@@ -489,8 +505,8 @@ public class ChooseLockPattern extends SettingsActivity {
mFooterLeftButton.setEnabled(stage.leftMode.enabled); mFooterLeftButton.setEnabled(stage.leftMode.enabled);
} }
mFooterRightButton.setText(stage.rightMode.text); setRightButtonText(stage.rightMode.text);
mFooterRightButton.setEnabled(stage.rightMode.enabled); setRightButtonEnabled(stage.rightMode.enabled);
// same for whether the patten is enabled // same for whether the patten is enabled
if (stage.patternEnabled) { if (stage.patternEnabled) {

View File

@@ -47,6 +47,9 @@ public class SetupChooseLockPassword extends ChooseLockPassword
return intent; return intent;
} }
private SetupWizardNavBar mNavigationBar;
private SetupChooseLockPasswordFragment mFragment;
@Override @Override
protected boolean isValidFragment(String fragmentName) { protected boolean isValidFragment(String fragmentName) {
return SetupChooseLockPasswordFragment.class.getName().equals(fragmentName); return SetupChooseLockPasswordFragment.class.getName().equals(fragmentName);
@@ -65,6 +68,7 @@ public class SetupChooseLockPassword extends ChooseLockPassword
@Override @Override
public void onNavigationBarCreated(SetupWizardNavBar bar) { public void onNavigationBarCreated(SetupWizardNavBar bar) {
mNavigationBar = bar;
SetupWizardUtils.setImmersiveMode(this, bar); SetupWizardUtils.setImmersiveMode(this, bar);
} }
@@ -75,6 +79,17 @@ public class SetupChooseLockPassword extends ChooseLockPassword
@Override @Override
public void onNavigateNext() { public void onNavigateNext() {
if (mFragment != null) {
mFragment.handleNext();
}
}
@Override
public void onAttachFragment(Fragment fragment) {
super.onAttachFragment(fragment);
if (fragment instanceof SetupChooseLockPasswordFragment) {
mFragment = (SetupChooseLockPasswordFragment) fragment;
}
} }
public static class SetupChooseLockPasswordFragment extends ChooseLockPasswordFragment { public static class SetupChooseLockPasswordFragment extends ChooseLockPasswordFragment {
@@ -100,5 +115,17 @@ public class SetupChooseLockPassword extends ChooseLockPassword
SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent);
return intent; return intent;
} }
@Override
protected void setNextEnabled(boolean enabled) {
SetupChooseLockPassword activity = (SetupChooseLockPassword) getActivity();
activity.mNavigationBar.getNextButton().setEnabled(enabled);
}
@Override
protected void setNextText(int text) {
SetupChooseLockPassword activity = (SetupChooseLockPassword) getActivity();
activity.mNavigationBar.getNextButton().setText(text);
}
} }
} }

View File

@@ -26,6 +26,7 @@ import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button;
/** /**
* Setup Wizard's version of ChooseLockPattern screen. It inherits the logic and basic structure * Setup Wizard's version of ChooseLockPattern screen. It inherits the logic and basic structure
@@ -45,6 +46,9 @@ public class SetupChooseLockPattern extends ChooseLockPattern
return intent; return intent;
} }
private SetupWizardNavBar mNavigationBar;
private SetupChooseLockPatternFragment mFragment;
@Override @Override
protected boolean isValidFragment(String fragmentName) { protected boolean isValidFragment(String fragmentName) {
return SetupChooseLockPatternFragment.class.getName().equals(fragmentName); return SetupChooseLockPatternFragment.class.getName().equals(fragmentName);
@@ -63,6 +67,7 @@ public class SetupChooseLockPattern extends ChooseLockPattern
@Override @Override
public void onNavigationBarCreated(SetupWizardNavBar bar) { public void onNavigationBarCreated(SetupWizardNavBar bar) {
mNavigationBar = bar;
SetupWizardUtils.setImmersiveMode(this, bar); SetupWizardUtils.setImmersiveMode(this, bar);
} }
@@ -73,10 +78,23 @@ public class SetupChooseLockPattern extends ChooseLockPattern
@Override @Override
public void onNavigateNext() { public void onNavigateNext() {
if (mFragment != null) {
mFragment.handleRightButton();
}
}
@Override
public void onAttachFragment(Fragment fragment) {
super.onAttachFragment(fragment);
if (fragment instanceof ChooseLockPatternFragment) {
mFragment = (SetupChooseLockPatternFragment) fragment;
}
} }
public static class SetupChooseLockPatternFragment extends ChooseLockPatternFragment { public static class SetupChooseLockPatternFragment extends ChooseLockPatternFragment {
private Button mRetryButton;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
@@ -88,6 +106,8 @@ public class SetupChooseLockPattern extends ChooseLockPattern
@Override @Override
public void onViewCreated(View view, Bundle savedInstanceState) { public void onViewCreated(View view, Bundle savedInstanceState) {
mRetryButton = (Button) view.findViewById(R.id.retryButton);
mRetryButton.setOnClickListener(this);
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
SetupWizardUtils.setHeaderText(getActivity(), getActivity().getTitle()); SetupWizardUtils.setHeaderText(getActivity(), getActivity().getTitle());
} }
@@ -98,5 +118,33 @@ public class SetupChooseLockPattern extends ChooseLockPattern
SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent);
return intent; return intent;
} }
@Override
public void onClick(View v) {
if (v == mRetryButton) {
handleLeftButton();
} else {
super.onClick(v);
}
}
@Override
protected void setRightButtonEnabled(boolean enabled) {
SetupChooseLockPattern activity = (SetupChooseLockPattern) getActivity();
activity.mNavigationBar.getNextButton().setEnabled(enabled);
}
@Override
protected void setRightButtonText(int text) {
SetupChooseLockPattern activity = (SetupChooseLockPattern) getActivity();
activity.mNavigationBar.getNextButton().setText(text);
}
@Override
protected void updateStage(Stage stage) {
super.updateStage(stage);
// Only enable the button for retry
mRetryButton.setEnabled(stage == Stage.FirstChoiceValid);
}
} }
} }