Commit 4f49fb23 authored by Elizabeth Popova's avatar Elizabeth Popova Committed by Commit Bot

[Android][Autofill] Hide required fields notice when no fields required

Prior this change, at the bottom of the dialog there was always a label
with text "* Field is required". Now this text is only shown when there
is at least one required field.

For now it only affects the AddressEditor usage opened from Autofill
Settings.

Bug: 1149568
Change-Id: I581c7ca6e89f1aaacb3e698dd3fb21981f2aa087
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2536438
Commit-Queue: Elizabeth Popova <lizapopova@google.com>
Reviewed-by: default avatarChristoph Schwering <schwering@google.com>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Reviewed-by: default avatarRouslan Solomakhin <rouslan@chromium.org>
Reviewed-by: default avatarMatthias Körber <koerber@google.com>
Cr-Commit-Position: refs/heads/master@{#829649}
parent 6edc995a
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
android:orientation="vertical" > android:orientation="vertical" >
<TextView <TextView
android:id="@+id/required_fields_notice"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
......
...@@ -356,6 +356,18 @@ public class EditorDialog ...@@ -356,6 +356,18 @@ public class EditorDialog
cancelButton.setOnClickListener(this); cancelButton.setOnClickListener(this);
} }
private void prepareFooter() {
TextView requiredFieldsNotice = mLayout.findViewById(R.id.required_fields_notice);
int requiredFieldsNoticeVisibility = View.GONE;
for (int i = 0; i < mFieldViews.size(); i++) {
if (mFieldViews.get(i).isRequired()) {
requiredFieldsNoticeVisibility = View.VISIBLE;
break;
}
}
requiredFieldsNotice.setVisibility(requiredFieldsNoticeVisibility);
}
/** /**
* Create the visual representation of the EditorModel. * Create the visual representation of the EditorModel.
* *
...@@ -453,6 +465,7 @@ public class EditorDialog ...@@ -453,6 +465,7 @@ public class EditorDialog
// The fields may have changed. // The fields may have changed.
prepareEditor(); prepareEditor();
prepareFooter();
if (sObserverForTest != null) sObserverForTest.onEditorReadyToEdit(); if (sObserverForTest != null) sObserverForTest.onEditorReadyToEdit();
} }
}; };
...@@ -530,6 +543,7 @@ public class EditorDialog ...@@ -530,6 +543,7 @@ public class EditorDialog
prepareToolbar(); prepareToolbar();
prepareEditor(); prepareEditor();
prepareFooter();
prepareButtons(); prepareButtons();
show(); show();
} }
......
...@@ -177,6 +177,11 @@ class EditorDropdownField implements EditorFieldView { ...@@ -177,6 +177,11 @@ class EditorDropdownField implements EditorFieldView {
return mFieldModel.isValid(); return mFieldModel.isValid();
} }
@Override
public boolean isRequired() {
return mFieldModel.isRequired();
}
@Override @Override
public void updateDisplayedError(boolean showError) { public void updateDisplayedError(boolean showError) {
View view = mDropdown.getSelectedView(); View view = mDropdown.getSelectedView();
......
...@@ -16,6 +16,9 @@ interface EditorFieldView { ...@@ -16,6 +16,9 @@ interface EditorFieldView {
/** @return True if this field is valid. */ /** @return True if this field is valid. */
boolean isValid(); boolean isValid();
/** @return True if this field is required. */
boolean isRequired();
/** Scrolls to and focuses the field to bring user's attention to it. */ /** Scrolls to and focuses the field to bring user's attention to it. */
void scrollToAndFocus(); void scrollToAndFocus();
......
...@@ -256,6 +256,11 @@ public class EditorTextField extends FrameLayout implements EditorFieldView, Vie ...@@ -256,6 +256,11 @@ public class EditorTextField extends FrameLayout implements EditorFieldView, Vie
return mEditorFieldModel.isValid(); return mEditorFieldModel.isValid();
} }
@Override
public boolean isRequired() {
return mEditorFieldModel.isRequired();
}
@Override @Override
public void updateDisplayedError(boolean showError) { public void updateDisplayedError(boolean showError) {
mInputLayout.setError(showError ? mEditorFieldModel.getErrorMessage() : null); mInputLayout.setError(showError ? mEditorFieldModel.getErrorMessage() : null);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment