From 1c8ac1f32a62e038fc92f052301ec1b731fc4c20 Mon Sep 17 00:00:00 2001 From: Andrei Shkrob Date: Sun, 20 Jul 2025 20:49:45 +0200 Subject: [PATCH] [android] Show bookmark icon in color selector Signed-off-by: Andrei Shkrob --- .../bookmarks/BookmarksListFragment.java | 2 +- .../app/organicmaps/bookmarks/ColorsAdapter.java | 10 +++++++--- .../app/organicmaps/sdk/bookmarks/data/Icon.java | 12 +++++------- .../placepage/BookmarkColorDialogFragment.java | 16 +++++++++++++--- .../widget/placepage/EditBookmarkFragment.java | 14 ++++++++------ 5 files changed, 34 insertions(+), 20 deletions(-) diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksListFragment.java b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksListFragment.java index 5567715a5..98bad6b1d 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksListFragment.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksListFragment.java @@ -593,7 +593,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment @PredefinedColors.Color private int mCheckedIconColor; - public ColorsAdapter(Context context, List list) + @DrawableRes + private final int mIconResId; + + public ColorsAdapter(Context context, List list, @DrawableRes int iconResId) { super(context, 0, 0, list); + mIconResId = iconResId; } @Override @@ -44,8 +49,7 @@ public class ColorsAdapter extends ArrayAdapter if (color == mCheckedIconColor) { circle = Graphics.drawCircleAndImage(PredefinedColors.getColor(mCheckedIconColor), R.dimen.track_circle_size, - app.organicmaps.sdk.R.drawable.ic_bookmark_none, R.dimen.bookmark_icon_size, - getContext()); + mIconResId, R.dimen.bookmark_icon_size, getContext()); } else { diff --git a/android/app/src/main/java/app/organicmaps/sdk/bookmarks/data/Icon.java b/android/app/src/main/java/app/organicmaps/sdk/bookmarks/data/Icon.java index a97fabaf6..0ac0c513b 100644 --- a/android/app/src/main/java/app/organicmaps/sdk/bookmarks/data/Icon.java +++ b/android/app/src/main/java/app/organicmaps/sdk/bookmarks/data/Icon.java @@ -16,8 +16,6 @@ public class Icon implements Parcelable { private static final String TAG = Icon.class.getSimpleName(); - static final int BOOKMARK_ICON_TYPE_NONE = 0; - @DrawableRes private static int[] sTypeIcons = null; @@ -25,11 +23,6 @@ public class Icon implements Parcelable private final int mColor; private final int mType; - public Icon(@PredefinedColors.Color int color) - { - this(color, BOOKMARK_ICON_TYPE_NONE); - } - public Icon(@PredefinedColors.Color int color, int type) { mColor = color; @@ -75,6 +68,11 @@ public class Icon implements Parcelable return sTypeIcons[mType]; } + public int getType() + { + return mType; + } + @Override public boolean equals(Object o) { diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/BookmarkColorDialogFragment.java b/android/app/src/main/java/app/organicmaps/widget/placepage/BookmarkColorDialogFragment.java index 15a1449d5..2994a98ad 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/BookmarkColorDialogFragment.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/BookmarkColorDialogFragment.java @@ -6,6 +6,7 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.GridView; +import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import app.organicmaps.R; import app.organicmaps.base.BaseMwmDialogFragment; @@ -16,11 +17,15 @@ import java.util.List; public class BookmarkColorDialogFragment extends BaseMwmDialogFragment { - public static final String ICON_TYPE = "ExtraIconType"; + public static final String ICON_COLOR = "ExtraIconColor"; + public static final String ICON_RES = "ExtraIconRes"; @PredefinedColors.Color private int mIconColor; + @DrawableRes + private int mIconResId = app.organicmaps.sdk.R.drawable.ic_bookmark_none; + public interface OnBookmarkColorChangeListener { void onBookmarkColorSet(@PredefinedColors.Color int color); @@ -35,7 +40,12 @@ public class BookmarkColorDialogFragment extends BaseMwmDialogFragment public Dialog onCreateDialog(Bundle savedInstanceState) { if (getArguments() != null) - mIconColor = getArguments().getInt(ICON_TYPE); + { + if (getArguments().containsKey(ICON_COLOR)) + mIconColor = getArguments().getInt(ICON_COLOR); + if (getArguments().containsKey(ICON_RES)) + mIconResId = getArguments().getInt(ICON_RES); + } return new MaterialAlertDialogBuilder(requireActivity(), R.style.MwmTheme_AlertDialog) .setView(buildView()) @@ -53,7 +63,7 @@ public class BookmarkColorDialogFragment extends BaseMwmDialogFragment private View buildView() { final List colors = PredefinedColors.getAllPredefinedColors(); - final ColorsAdapter adapter = new ColorsAdapter(requireActivity(), colors); + final ColorsAdapter adapter = new ColorsAdapter(requireActivity(), colors, mIconResId); adapter.chooseItem(mIconColor); @SuppressLint("InflateParams") diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/EditBookmarkFragment.java b/android/app/src/main/java/app/organicmaps/widget/placepage/EditBookmarkFragment.java index a63fbc72a..8ffc5ab53 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/EditBookmarkFragment.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/EditBookmarkFragment.java @@ -305,9 +305,12 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. final Bundle args = new Bundle(); if (mTrack != null) - args.putInt(BookmarkColorDialogFragment.ICON_TYPE, PredefinedColors.getPredefinedColorIndex(mColor)); + args.putInt(BookmarkColorDialogFragment.ICON_COLOR, PredefinedColors.getPredefinedColorIndex(mColor)); else - args.putInt(BookmarkColorDialogFragment.ICON_TYPE, mIcon.getColor()); + { + args.putInt(BookmarkColorDialogFragment.ICON_COLOR, mIcon.getColor()); + args.putInt(BookmarkColorDialogFragment.ICON_RES, mIcon.getResId()); + } final FragmentManager manager = getChildFragmentManager(); String className = BookmarkColorDialogFragment.class.getName(); final FragmentFactory factory = manager.getFragmentFactory(); @@ -321,7 +324,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. if (mIcon != null && mIcon.getColor() == colorPos) return; - mIcon = new Icon(colorPos); + mIcon = new Icon(colorPos, mIcon.getType()); refreshColorMarker(); }); case TYPE_TRACK -> @@ -342,9 +345,8 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. { if (mIcon != null) { - Drawable circle = Graphics.drawCircleAndImage(mIcon.argb(), R.dimen.track_circle_size, - app.organicmaps.sdk.R.drawable.ic_bookmark_none, - R.dimen.bookmark_icon_size, requireContext()); + final Drawable circle = Graphics.drawCircleAndImage(mIcon.argb(), R.dimen.track_circle_size, mIcon.getResId(), + R.dimen.bookmark_icon_size, requireContext()); mIvColor.setImageDrawable(circle); } }