Merge "Use ImeAwareEditText in FingerprintSettings"

This commit is contained in:
TreeHugger Robot
2018-10-29 22:48:29 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 22 deletions

View File

@@ -35,7 +35,7 @@
android:clipChildren="false" android:clipChildren="false"
android:clipToPadding="false" /> android:clipToPadding="false" />
<EditText <com.android.settings.widget.ImeAwareEditText
android:id="@+id/fingerprint_rename_field" android:id="@+id/fingerprint_rename_field"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@@ -55,6 +55,7 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.password.ChooseLockGeneric; import com.android.settings.password.ChooseLockGeneric;
import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.utils.AnnotationSpan; import com.android.settings.utils.AnnotationSpan;
import com.android.settings.widget.ImeAwareEditText;
import com.android.settingslib.HelpUtils; import com.android.settingslib.HelpUtils;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -708,11 +709,7 @@ public class FingerprintSettings extends SubSettings {
public static class RenameDialog extends InstrumentedDialogFragment { public static class RenameDialog extends InstrumentedDialogFragment {
private Fingerprint mFp; private Fingerprint mFp;
private EditText mDialogTextField; private ImeAwareEditText mDialogTextField;
private String mFingerName;
private Boolean mTextHadFocus;
private int mTextSelectionStart;
private int mTextSelectionEnd;
private AlertDialog mAlertDialog; private AlertDialog mAlertDialog;
private boolean mDeleteInProgress; private boolean mDeleteInProgress;
@@ -723,11 +720,17 @@ public class FingerprintSettings extends SubSettings {
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
mFp = getArguments().getParcelable("fingerprint"); mFp = getArguments().getParcelable("fingerprint");
final String fingerName;
final int textSelectionStart;
final int textSelectionEnd;
if (savedInstanceState != null) { if (savedInstanceState != null) {
mFingerName = savedInstanceState.getString("fingerName"); fingerName = savedInstanceState.getString("fingerName");
mTextHadFocus = savedInstanceState.getBoolean("textHadFocus"); textSelectionStart = savedInstanceState.getInt("startSelection", -1);
mTextSelectionStart = savedInstanceState.getInt("startSelection"); textSelectionEnd = savedInstanceState.getInt("endSelection", -1);
mTextSelectionEnd = savedInstanceState.getInt("endSelection"); } else {
fingerName = null;
textSelectionStart = -1;
textSelectionEnd = -1;
} }
mAlertDialog = new AlertDialog.Builder(getActivity()) mAlertDialog = new AlertDialog.Builder(getActivity())
.setView(R.layout.fingerprint_rename_dialog) .setView(R.layout.fingerprint_rename_dialog)
@@ -756,26 +759,21 @@ public class FingerprintSettings extends SubSettings {
mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() { mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override @Override
public void onShow(DialogInterface dialog) { public void onShow(DialogInterface dialog) {
mDialogTextField = (EditText) mAlertDialog.findViewById( mDialogTextField = mAlertDialog.findViewById(R.id.fingerprint_rename_field);
R.id.fingerprint_rename_field); CharSequence name = fingerName == null ? mFp.getName() : fingerName;
CharSequence name = mFingerName == null ? mFp.getName() : mFingerName;
mDialogTextField.setText(name); mDialogTextField.setText(name);
if (mTextHadFocus == null) { if (textSelectionStart != -1 && textSelectionEnd != -1) {
mDialogTextField.selectAll(); mDialogTextField.setSelection(textSelectionStart, textSelectionEnd);
} else { } else {
mDialogTextField.setSelection(mTextSelectionStart, mTextSelectionEnd); mDialogTextField.selectAll();
} }
if (mDeleteInProgress) { if (mDeleteInProgress) {
mAlertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false); mAlertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
} }
mDialogTextField.requestFocus(); mDialogTextField.requestFocus();
mDialogTextField.scheduleShowSoftInput();
} }
}); });
if (mTextHadFocus == null || mTextHadFocus) {
// Request the IME
mAlertDialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
return mAlertDialog; return mAlertDialog;
} }
@@ -791,7 +789,6 @@ public class FingerprintSettings extends SubSettings {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
if (mDialogTextField != null) { if (mDialogTextField != null) {
outState.putString("fingerName", mDialogTextField.getText().toString()); outState.putString("fingerName", mDialogTextField.getText().toString());
outState.putBoolean("textHadFocus", mDialogTextField.hasFocus());
outState.putInt("startSelection", mDialogTextField.getSelectionStart()); outState.putInt("startSelection", mDialogTextField.getSelectionStart());
outState.putInt("endSelection", mDialogTextField.getSelectionEnd()); outState.putInt("endSelection", mDialogTextField.getSelectionEnd());
} }