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(),