diff --git a/OsmAnd/res/drawable/ic_action_purchases.xml b/OsmAnd/res/drawable/ic_action_purchases.xml new file mode 100644 index 0000000000..14a5f783dc --- /dev/null +++ b/OsmAnd/res/drawable/ic_action_purchases.xml @@ -0,0 +1,10 @@ + + + diff --git a/OsmAnd/res/drawable/ic_action_purchases_outlined.xml b/OsmAnd/res/drawable/ic_action_purchases_outlined.xml new file mode 100644 index 0000000000..650ccdcfbe --- /dev/null +++ b/OsmAnd/res/drawable/ic_action_purchases_outlined.xml @@ -0,0 +1,10 @@ + + + diff --git a/OsmAnd/res/layout/add_new_favorite_category.xml b/OsmAnd/res/layout/add_new_favorite_category.xml index 74510f0842..c54020040a 100644 --- a/OsmAnd/res/layout/add_new_favorite_category.xml +++ b/OsmAnd/res/layout/add_new_favorite_category.xml @@ -21,7 +21,10 @@ android:paddingLeft="@dimen/content_padding" android:paddingEnd="@dimen/content_padding" android:paddingRight="@dimen/content_padding" - app:startIconDrawable="@drawable/ic_action_folder"> + app:startIconDrawable="@drawable/ic_action_folder" + app:boxBackgroundColor="?attr/text_input_background" + app:boxStrokeColor="@color/osmand_orange" + app:hintTextColor="@color/text_color_secondary_light"> - + app:srcCompat="@drawable/ic_action_sdcard_warning_colored" /> + android:paddingLeft="@dimen/dialog_content_margin" + android:paddingTop="@dimen/dialog_content_bottom_margin" + android:paddingEnd="@dimen/dialog_content_margin" + android:paddingRight="@dimen/dialog_content_margin" + android:paddingBottom="@dimen/dialog_content_bottom_margin"> - + - + diff --git a/OsmAnd/res/layout/select_folder_row.xml b/OsmAnd/res/layout/select_folder_row.xml index d9340cc5f2..1d855ff70f 100644 --- a/OsmAnd/res/layout/select_folder_row.xml +++ b/OsmAnd/res/layout/select_folder_row.xml @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/dialogs/MapLayerMenuListener.java b/OsmAnd/src/net/osmand/plus/dialogs/MapLayerMenuListener.java index d3f6fc053d..6064dad7df 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/MapLayerMenuListener.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/MapLayerMenuListener.java @@ -193,7 +193,8 @@ final class MapLayerMenuListener extends OnRowItemClick { adapter.notifyDataSetChanged(); } }; - if (poiFiltersHelper.isShowingAnyPoi(wiki)) { + boolean isMultichoose = poiFiltersHelper.getSelectedPoiFilters(wiki).size() > 1; + if (isMultichoose) { mapActivity.getMapLayers().showMultichoicePoiFilterDialog(mapActivity.getMapView(), dismissListener); } else { diff --git a/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java b/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java index b71b83316f..d9087a5b0d 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java @@ -57,7 +57,9 @@ public class SearchHistoryHelper { } public void addNewItemToHistory(GPXInfo gpxInfo) { - addNewItemToHistory(new HistoryEntry(0, 0, createPointDescription(gpxInfo))); + if(gpxInfo != null) { + addNewItemToHistory(new HistoryEntry(0, 0, createPointDescription(gpxInfo))); + } } public List getHistoryEntries(boolean onlyPoints) { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/AddNewFavoriteCategoryBottomSheet.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/AddNewFavoriteCategoryBottomSheet.java index d90c06b609..5485c3a79a 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/AddNewFavoriteCategoryBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/AddNewFavoriteCategoryBottomSheet.java @@ -169,7 +169,6 @@ public class AddNewFavoriteCategoryBottomSheet extends MenuBottomSheetDialogFrag view = UiUtilities.getInflater(app, nightMode).inflate(R.layout.add_new_favorite_category, null); nameTextBox = view.findViewById(R.id.name_text_box); - nameTextBox.setBoxBackgroundColorResource(nightMode ? R.color.list_background_color_dark : R.color.activity_background_color_light); nameTextBox.setHint(app.getResources().getString(R.string.favorite_category_name)); ColorStateList colorStateList = ColorStateList.valueOf(ContextCompat .getColor(app, nightMode ? R.color.text_color_secondary_dark : R.color.text_color_secondary_light)); @@ -179,7 +178,6 @@ public class AddNewFavoriteCategoryBottomSheet extends MenuBottomSheetDialogFrag editText.requestFocus(); AndroidUtils.softKeyboardDelayed(getActivity(), editText); nameTextBox.setStartIconTintList(ColorStateList.valueOf(selectedColor)); - nameTextBox.setBoxStrokeColorStateList(ColorStateList.valueOf(selectedColor)); BaseBottomSheetItem editFolderName = new BaseBottomSheetItem.Builder() .setCustomView(view) @@ -200,7 +198,6 @@ public class AddNewFavoriteCategoryBottomSheet extends MenuBottomSheetDialogFrag ((TextView) view.findViewById(R.id.color_name)).setText(ColorDialogs.getColorName(color)); selectedColor = color; nameTextBox.setStartIconTintList(ColorStateList.valueOf(selectedColor)); - nameTextBox.setBoxStrokeColorStateList(ColorStateList.valueOf(selectedColor)); } @Override diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java index 8b8fc64f5b..5f03754847 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java @@ -32,7 +32,6 @@ import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.BaseOsmAndFragment; -import net.osmand.plus.base.BottomSheetDialogFragment; import net.osmand.plus.widgets.AutoCompleteTextViewEx; import net.osmand.util.Algorithms; @@ -77,7 +76,7 @@ public abstract class PointEditorFragment extends BaseOsmAndFragment { dismiss(); } }); - + int activeColorResId = !editor.isLight() ? R.color.active_color_primary_dark : R.color.active_color_primary_light; Button saveButton = (Button) view.findViewById(R.id.save_button); @@ -182,7 +181,7 @@ public abstract class PointEditorFragment extends BaseOsmAndFragment { protected DialogFragment createSelectCategoryDialog() { PointEditor editor = getEditor(); if (editor != null) { - return SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag()); + return SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag(), ""); } else { return null; } @@ -364,7 +363,7 @@ public abstract class PointEditorFragment extends BaseOsmAndFragment { if (isPersonalCategoryDisplayName(requireContext(), name)) { return PERSONAL_CATEGORY; } - if(name.equals(getDefaultCategoryName())) { + if (name.equals(getDefaultCategoryName())) { return ""; } return name; diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java index 946351baa0..b8fb261f09 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java @@ -739,12 +739,19 @@ public abstract class PointEditorFragmentNew extends BaseOsmAndFragment implemen protected DialogFragment createSelectCategoryDialog() { PointEditor editor = getEditor(); if (editor != null) { - return SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag()); + return SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag(), getSelectedCategory()); } else { return null; } } + public String getSelectedCategory() { + if (groupListAdapter != null && groupListAdapter.getSelectedItem() != null) { + return groupListAdapter.getSelectedItem(); + } + return getCategoryInitValue(); + } + @Nullable protected AddNewFavoriteCategoryBottomSheet createAddCategoryDialog() { PointEditor editor = getEditor(); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/RtePtEditorFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/RtePtEditorFragment.java index 9bbbb0ec34..e2e8a8490e 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/RtePtEditorFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/RtePtEditorFragment.java @@ -23,7 +23,7 @@ public class RtePtEditorFragment extends WptPtEditorFragment { @Override protected DialogFragment createSelectCategoryDialog() { PointEditor editor = getEditor(); - return editor != null ? SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag()) : null; + return editor != null ? SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag(), "") : null; } public static void showInstance(final MapActivity mapActivity) { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/SelectFavoriteCategoryBottomSheet.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/SelectFavoriteCategoryBottomSheet.java index c3ee4169dc..4eef418bcc 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/SelectFavoriteCategoryBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/SelectFavoriteCategoryBottomSheet.java @@ -42,8 +42,10 @@ import java.util.Set; public class SelectFavoriteCategoryBottomSheet extends MenuBottomSheetDialogFragment { public static final String TAG = SelectFavoriteCategoryBottomSheet.class.getSimpleName(); - private static final String KEY_CTX_SEL_CAT_EDITOR_TAG = "key_ctx_sel_cat_editor_tag"; + private static final String SELECT_CATEGORY_EDITOR_TAG = "select_category_editor_tag"; + private static final String SELECT_CURRENT_CATEGORY_EDITOR_TAG = "select_current_category_editor_tag"; private static String editorTag; + private static String selectedCategory; private OsmandApplication app; private GPXUtilities.GPXFile gpxFile; private Map gpxCategories; @@ -60,10 +62,11 @@ public class SelectFavoriteCategoryBottomSheet extends MenuBottomSheetDialogFrag return drawable; } - public static SelectFavoriteCategoryBottomSheet createInstance(String editorTag) { + public static SelectFavoriteCategoryBottomSheet createInstance(String editorTag, String selectedCategory) { SelectFavoriteCategoryBottomSheet fragment = new SelectFavoriteCategoryBottomSheet(); Bundle bundle = new Bundle(); - bundle.putString(KEY_CTX_SEL_CAT_EDITOR_TAG, editorTag); + bundle.putString(SELECT_CATEGORY_EDITOR_TAG, editorTag); + bundle.putString(SELECT_CURRENT_CATEGORY_EDITOR_TAG, selectedCategory); fragment.setArguments(bundle); fragment.setRetainInstance(true); return fragment; @@ -136,17 +139,21 @@ public class SelectFavoriteCategoryBottomSheet extends MenuBottomSheetDialogFrag View favoriteCategoryList = UiUtilities.getInflater(app, nightMode).inflate(R.layout.favorite_categories_dialog, null); ScrollView scrollContainer = favoriteCategoryList.findViewById(R.id.scroll_container); - final int dp16 = AndroidUtils.dpToPx(app, 16f); - scrollContainer.setPadding(dp16,0, dp16,0); + scrollContainer.setPadding(0, 0, 0, 0); LinearLayout favoriteCategoryContainer = favoriteCategoryList.findViewById(R.id.list_container); final FavouritesDbHelper favoritesHelper = app.getFavorites(); if (gpxFile != null) { if (gpxCategories != null) { + Map> pointsCategories = gpxFile.getPointsByCategories(); for (Map.Entry e : gpxCategories.entrySet()) { - String categoryName = e.getKey(); - String favoriteCategoryCount = String.valueOf(e.getKey().length()); - favoriteCategoryContainer.addView(createCategoryItem(activity, nightMode, categoryName, e.getValue(), favoriteCategoryCount, false)); + String favoriteCategoryCount; + if (Algorithms.isEmpty(pointsCategories.get(e.getKey()))) { + favoriteCategoryCount = app.getString(R.string.shared_string_empty); + } else { + favoriteCategoryCount = String.valueOf(pointsCategories.get(e.getKey()).size()); + } + favoriteCategoryContainer.addView(createCategoryItem(activity, nightMode, e.getKey(), e.getValue(), favoriteCategoryCount, false)); } } } else { @@ -171,19 +178,15 @@ public class SelectFavoriteCategoryBottomSheet extends MenuBottomSheetDialogFrag View itemView = UiUtilities.getInflater(activity, nightMode).inflate(R.layout.bottom_sheet_item_with_descr_and_radio_btn, null); final AppCompatImageView button = (AppCompatImageView) itemView.findViewById(R.id.icon); final int dp8 = AndroidUtils.dpToPx(app, 8f); - button.setPadding(0,0, dp8,0); + final int dp16 = AndroidUtils.dpToPx(app, 16f); + button.setPadding(0, 0, dp8, 0); LinearLayout descriptionContainer = itemView.findViewById(R.id.descriptionContainer); - descriptionContainer.setPadding(0, 0, 0, 0); + descriptionContainer.setPadding(dp16, 0, dp16, 0); View divider = itemView.findViewById(R.id.divider_bottom); divider.setVisibility(View.GONE); itemView.setPadding(0, 0, 0, 0); - final RadioButton compoundButton = itemView.findViewById(R.id.compound_button); int activeColorId = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light; - int disableColorId = nightMode ? - R.color.icon_color_default_dark : R.color.icon_color_default_light; - UiUtilities.setupCompoundButton(nightMode, ContextCompat.getColor(app, - nightMode ? activeColorId : disableColorId), compoundButton); if (isHidden) { button.setImageResource(R.drawable.ic_action_hide); @@ -195,16 +198,19 @@ public class SelectFavoriteCategoryBottomSheet extends MenuBottomSheetDialogFrag gpxFile != null ? R.color.gpx_color_point : R.color.color_favorite))); } } + RadioButton compoundButton = itemView.findViewById(R.id.compound_button); + compoundButton.setChecked(Algorithms.stringsEqual(selectedCategory, categoryName)); + UiUtilities.setupCompoundButton(nightMode, ContextCompat.getColor(app, + activeColorId), compoundButton); String name = categoryName.length() == 0 ? getString(R.string.shared_string_favorites) : categoryName; TextView text = itemView.findViewById(R.id.title); TextView description = itemView.findViewById(R.id.description); text.setText(name); description.setText(String.valueOf(categoryPointCount)); - descriptionContainer.setOnClickListener(new View.OnClickListener() { + itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentActivity a = getActivity(); - compoundButton.setSelected(true); if (a instanceof MapActivity) { PointEditor pointEditor = ((MapActivity) a).getContextMenu().getPointEditor(editorTag); if (pointEditor != null) { @@ -221,7 +227,8 @@ public class SelectFavoriteCategoryBottomSheet extends MenuBottomSheetDialogFrag } public void restoreState(Bundle bundle) { - editorTag = bundle.getString(KEY_CTX_SEL_CAT_EDITOR_TAG); + editorTag = bundle.getString(SELECT_CATEGORY_EDITOR_TAG); + selectedCategory = bundle.getString(SELECT_CURRENT_CATEGORY_EDITOR_TAG); } public interface CategorySelectionListener { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/WptPtEditorFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/WptPtEditorFragment.java index a3efbca5ad..2d0654301b 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/WptPtEditorFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/WptPtEditorFragment.java @@ -67,7 +67,7 @@ public class WptPtEditorFragment extends PointEditorFragment { protected DialogFragment createSelectCategoryDialog() { WptPtEditor editor = getWptPtEditor(); if (editor != null) { - SelectFavoriteCategoryBottomSheet selectCategoryDialogFragment = SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag()); + SelectFavoriteCategoryBottomSheet selectCategoryDialogFragment = SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag(), ""); GPXFile gpx = editor.getGpxFile(); if (gpx != null) { selectCategoryDialogFragment.setGpxFile(gpx); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/WptPtEditorFragmentNew.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/WptPtEditorFragmentNew.java index 456049403e..ae30904896 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/WptPtEditorFragmentNew.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/WptPtEditorFragmentNew.java @@ -81,7 +81,7 @@ public class WptPtEditorFragmentNew extends PointEditorFragmentNew { protected DialogFragment createSelectCategoryDialog() { WptPtEditor editor = getWptPtEditor(); if (editor != null) { - SelectFavoriteCategoryBottomSheet selectCategoryDialogFragment = SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag()); + SelectFavoriteCategoryBottomSheet selectCategoryDialogFragment = SelectFavoriteCategoryBottomSheet.createInstance(editor.getFragmentTag(), getSelectedCategory()); GPXFile gpx = editor.getGpxFile(); if (gpx != null) { selectCategoryDialogFragment.setGpxFile(gpx); diff --git a/OsmAnd/src/net/osmand/plus/quickaction/actions/FavoriteAction.java b/OsmAnd/src/net/osmand/plus/quickaction/actions/FavoriteAction.java index ecd277b092..5331045af4 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/actions/FavoriteAction.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/actions/FavoriteAction.java @@ -176,7 +176,7 @@ public class FavoriteAction extends QuickAction { @Override public void onClick(final View view) { - SelectFavoriteCategoryBottomSheet dialogFragment = SelectFavoriteCategoryBottomSheet.createInstance(""); + SelectFavoriteCategoryBottomSheet dialogFragment = SelectFavoriteCategoryBottomSheet.createInstance("", ""); dialogFragment.show( activity.getSupportFragmentManager(), diff --git a/OsmAnd/src/net/osmand/plus/quickaction/actions/GPXAction.java b/OsmAnd/src/net/osmand/plus/quickaction/actions/GPXAction.java index d0bfd98cbf..ca45f06413 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/actions/GPXAction.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/actions/GPXAction.java @@ -120,7 +120,7 @@ public class GPXAction extends QuickAction { @Override public void onClick(final View view) { - SelectFavoriteCategoryBottomSheet dialogFragment = SelectFavoriteCategoryBottomSheet.createInstance(""); + SelectFavoriteCategoryBottomSheet dialogFragment = SelectFavoriteCategoryBottomSheet.createInstance("", ""); dialogFragment.show( activity.getSupportFragmentManager(),