From 8b7679d7d88ad621b561bff0aaf605c3f3c33795 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Date: Thu, 1 Jan 2026 07:37:37 +0100 Subject: [PATCH] [android] Use error in textfield instead alert dialog Signed-off-by: Jean-Baptiste --- .../BookmarkCategorySettingsFragment.java | 70 +++++++++---------- .../fragment_bookmark_category_settings.xml | 13 ++-- 2 files changed, 41 insertions(+), 42 deletions(-) diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategorySettingsFragment.java b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategorySettingsFragment.java index 9c3ed39df..d4c633b48 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategorySettingsFragment.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategorySettingsFragment.java @@ -16,8 +16,7 @@ import app.organicmaps.sdk.bookmarks.data.BookmarkCategory; import app.organicmaps.sdk.bookmarks.data.BookmarkManager; import app.organicmaps.util.InputUtils; import app.organicmaps.util.Utils; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import com.google.android.material.imageview.ShapeableImageView; +import com.google.android.material.button.MaterialButton; import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputLayout; import java.util.Objects; @@ -34,11 +33,15 @@ public class BookmarkCategorySettingsFragment extends BaseMwmToolbarFragment @NonNull private TextInputEditText mEditDescView; + @SuppressWarnings("NullableProblems") + @NonNull + private TextInputLayout mEditCategoryNameLayout; + @SuppressWarnings("NullableProblems") @NonNull private TextInputEditText mEditCategoryNameView; @NonNull - private ShapeableImageView mSaveView; + private MaterialButton mSaveView; @Override public void onCreate(@Nullable Bundle savedInstanceState) @@ -61,8 +64,8 @@ public class BookmarkCategorySettingsFragment extends BaseMwmToolbarFragment private void initViews(@NonNull View root) { mEditCategoryNameView = root.findViewById(R.id.edit_list_name_view); - TextInputLayout clearNameBtn = root.findViewById(R.id.edit_list_name_input); - clearNameBtn.setEndIconOnClickListener(v -> clearAndFocus(mEditCategoryNameView)); + mEditCategoryNameLayout = root.findViewById(R.id.edit_list_name_input); + mEditCategoryNameLayout.setEndIconOnClickListener(v -> clearAndFocus(mEditCategoryNameView)); mEditCategoryNameView.setText(mCategory.getName()); InputFilter[] f = {new InputFilter.LengthFilter(TEXT_LENGTH_LIMIT)}; mEditCategoryNameView.setFilters(f); @@ -75,7 +78,15 @@ public class BookmarkCategorySettingsFragment extends BaseMwmToolbarFragment @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { - clearNameBtn.setEndIconVisible(charSequence.length() > 0); + if (charSequence.length() > 0) + { + mEditCategoryNameLayout.setEndIconVisible(true); + } + else + { + mEditCategoryNameLayout.setEndIconVisible(false); + mEditCategoryNameLayout.setError(getString(R.string.bookmarks_error_title_empty_list_name)); + } } @Override @@ -91,16 +102,23 @@ public class BookmarkCategorySettingsFragment extends BaseMwmToolbarFragment private void onEditDoneClicked() { final String newCategoryName = getEditableCategoryName(); - if (!validateCategoryName(newCategoryName)) - return; + if (BookmarkManager.INSTANCE.isUsedCategoryName(newCategoryName) && !TextUtils.equals(newCategoryName, mCategory.getName())){ + mEditCategoryNameLayout.setError(getString(R.string.bookmarks_error_title_list_name_already_taken)); + } + else if (mEditCategoryNameView.length() < 1) + { + mEditCategoryNameLayout.setError(getString(R.string.bookmarks_error_title_empty_list_name)); + } + else + { + if (isCategoryNameChanged()) + BookmarkManager.INSTANCE.setCategoryName(mCategory.getId(), newCategoryName); - if (isCategoryNameChanged()) - BookmarkManager.INSTANCE.setCategoryName(mCategory.getId(), newCategoryName); + if (isCategoryDescChanged()) + BookmarkManager.INSTANCE.setCategoryDescription(mCategory.getId(), getEditableCategoryDesc()); - if (isCategoryDescChanged()) - BookmarkManager.INSTANCE.setCategoryDescription(mCategory.getId(), getEditableCategoryDesc()); - - requireActivity().finish(); + requireActivity().finish(); + } } private boolean isCategoryNameChanged() @@ -109,30 +127,6 @@ public class BookmarkCategorySettingsFragment extends BaseMwmToolbarFragment return !TextUtils.equals(categoryName, mCategory.getName()); } - private boolean validateCategoryName(@Nullable String name) - { - if (TextUtils.isEmpty(name)) - { - new MaterialAlertDialogBuilder(requireActivity(), R.style.MwmTheme_AlertDialog) - .setTitle(R.string.bookmarks_error_title_empty_list_name) - .setMessage(R.string.bookmarks_error_message_empty_list_name) - .setPositiveButton(R.string.ok, null) - .show(); - return false; - } - - if (BookmarkManager.INSTANCE.isUsedCategoryName(name) && !TextUtils.equals(name, mCategory.getName())) - { - new MaterialAlertDialogBuilder(requireActivity(), R.style.MwmTheme_AlertDialog) - .setTitle(R.string.bookmarks_error_title_list_name_already_taken) - .setMessage(R.string.bookmarks_error_message_list_name_already_taken) - .setPositiveButton(R.string.ok, null) - .show(); - return false; - } - return true; - } - @NonNull private String getEditableCategoryName() { diff --git a/android/app/src/main/res/layout/fragment_bookmark_category_settings.xml b/android/app/src/main/res/layout/fragment_bookmark_category_settings.xml index 330463c43..d5c897cb9 100644 --- a/android/app/src/main/res/layout/fragment_bookmark_category_settings.xml +++ b/android/app/src/main/res/layout/fragment_bookmark_category_settings.xml @@ -12,13 +12,18 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/MwmWidget.ToolbarTheme"> - + app:icon="@drawable/ic_done" + app:iconGravity="textStart" + app:iconTint="?iconTint" + android:enabled="false" + app:iconPadding="0dp" + app:iconSize="24dp" />