From 892d3e78c6adccd3aaeab6f8d589a2a984368723 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Fri, 24 Apr 2020 12:11:57 +0300 Subject: [PATCH 01/54] support for profile theme --- .../net/osmand/plus/settings/ConfigureMenuItemsFragment.java | 4 ++-- .../net/osmand/plus/settings/ConfigureMenuRootFragment.java | 3 ++- .../net/osmand/plus/settings/RearrangeMenuItemsAdapter.java | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index 6777b95add..0c38dd14fd 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -127,7 +127,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); app = requireMyApplication(); - nightMode = !app.getSettings().isLightContent(); + nightMode = app.getSettings().OSMAND_THEME.getModeValue(appMode) == OsmandSettings.OSMAND_DARK_THEME; mInflater = UiUtilities.getInflater(app, nightMode); if (savedInstanceState != null) { appMode = ApplicationMode.valueOfStringKey(savedInstanceState.getString(APP_MODE_KEY), null); @@ -198,7 +198,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment appbar.addView(toolbar); RecyclerView recyclerView = root.findViewById(R.id.profiles_list); recyclerView.setPadding(0, 0, 0, (int) app.getResources().getDimension(R.dimen.dialog_button_ex_min_width)); - rearrangeAdapter = new RearrangeMenuItemsAdapter(app, getAdapterItems()); + rearrangeAdapter = new RearrangeMenuItemsAdapter(app, getAdapterItems(), nightMode); recyclerView.setLayoutManager(new LinearLayoutManager(app)); final ItemTouchHelper touchHelper = new ItemTouchHelper(new ReorderItemTouchHelperCallback(rearrangeAdapter)); touchHelper.attachToRecyclerView(recyclerView); diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java index a45a72dc11..5b6370b6c8 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java @@ -30,6 +30,7 @@ import net.osmand.PlatformUtil; import net.osmand.plus.ApplicationMode; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; @@ -83,7 +84,7 @@ public class ConfigureMenuRootFragment extends BaseOsmAndFragment { appMode = ApplicationMode.valueOfStringKey(savedInstanceState.getString(APP_MODE_KEY), null); } app = requireMyApplication(); - nightMode = !app.getSettings().isLightContent(); + nightMode = app.getSettings().OSMAND_THEME.getModeValue(appMode) == OsmandSettings.OSMAND_DARK_THEME; mInflater = UiUtilities.getInflater(app, nightMode); } diff --git a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java index 5ad66aa816..960e5d7d82 100644 --- a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java @@ -53,11 +53,11 @@ public class RearrangeMenuItemsAdapter extends RecyclerView.Adapter items) { + List items, boolean nightMode) { this.app = app; this.items = items; uiUtilities = app.getUIUtilities(); - nightMode = !app.getSettings().isLightContent(); + this.nightMode = nightMode; activeColorRes = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light; From 4fb1c7a07747f6a76b26f3169b5e3af0ecb71838 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Fri, 24 Apr 2020 12:34:07 +0300 Subject: [PATCH 02/54] Configure map/Map rendering sortByOrder --- OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 224226f818..c8af92ab1d 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -911,6 +911,7 @@ public class ConfigureMapMenu { .setCategory(true).setLayout(R.layout.list_group_title_with_switch).createItem()); createCustomRenderingProperties(adapter, activity, customRules, app, selectedProfileColor, nightMode, themeRes); } + adapter.sortItemsByOrder(); } public static String[] mapNamesIds = new String[]{"", "en", "af", "als", "ar", "az", "be", "ber", "bg", "bn", "bpy", "br", "bs", "ca", "ceb", "cs", "cy", "da", "de", "el", "eo", "es", "et", "eu", "fa", "fi", "fr", "fy", "ga", "gl", "he", "hi", "hsb", "hr", "ht", "hu", "hy", "id", "is", "it", "ja", "ka", "kab", "ko", "ku", "la", "lb", "lo", "lt", "lv", "mk", "ml", "mr", "ms", "nds", "new", "nl", "nn", "no", "nv", "oc", "os", "pl", "pms", "pt", "ro", "ru", "sc", "sh", "sk", "sl", "sq", "sr", "sv", "sw", "ta", "te", "th", "tl", "tr", "uk", "vi", "vo", "zh"}; From 3c0bd48945a545d7a510290b2d0a20c3f7a1908a Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Fri, 24 Apr 2020 14:33:06 +0300 Subject: [PATCH 03/54] ui fixes --- OsmAnd/res/layout/profile_edit_list_item.xml | 16 +++---- OsmAnd/res/values/strings.xml | 1 + .../plus/activities/MapActivityActions.java | 5 ++- .../MapContextMenuFragment.java | 3 +- .../settings/RearrangeMenuItemsAdapter.java | 45 +++++++++++++++++-- 5 files changed, 53 insertions(+), 17 deletions(-) diff --git a/OsmAnd/res/layout/profile_edit_list_item.xml b/OsmAnd/res/layout/profile_edit_list_item.xml index 8f7b962ef5..cb0cc1aa89 100644 --- a/OsmAnd/res/layout/profile_edit_list_item.xml +++ b/OsmAnd/res/layout/profile_edit_list_item.xml @@ -27,17 +27,15 @@ + android:layout_marginEnd="@dimen/content_padding_half" + android:layout_marginRight="@dimen/content_padding_half" /> + Create/Edit POI Unsupported action %1$s Extra maps Custom color diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index ef9f6f9f6c..20b6ece7d0 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -31,6 +31,7 @@ import net.osmand.GPXUtilities.WptPt; import net.osmand.IndexConstants; import net.osmand.Location; import net.osmand.PlatformUtil; +import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.data.QuadRect; @@ -346,7 +347,7 @@ public class MapActivityActions implements DialogProvider { ItemBuilder itemBuilder = new ItemBuilder(); adapter.addItem(itemBuilder - .setTitleId(R.string.shared_string_add, mapActivity) + .setTitleId(selectedObj instanceof FavouritePoint ? R.string.favourites_context_menu_edit : R.string.shared_string_add, mapActivity) .setId(MAP_CONTEXT_MENU_ADD_ID) .setIcon(R.drawable.map_action_fav_dark) .setOrder(0) @@ -477,7 +478,7 @@ public class MapActivityActions implements DialogProvider { MeasurementToolFragment.showInstance(mapActivity.getSupportFragmentManager(), new LatLon(latitude, longitude)); } else if (standardId == R.string.avoid_road) { getMyApplication().getAvoidSpecificRoads().addImpassableRoad(mapActivity, new LatLon(latitude, longitude), true, false, null); - } else if (standardId == R.string.shared_string_add) { + } else if (standardId == R.string.shared_string_add || standardId == R.string.favourites_context_menu_edit) { mapActivity.getContextMenu().buttonFavoritePressed(); } else if (standardId == R.string.shared_string_marker) { mapActivity.getContextMenu().buttonWaypointPressed(); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index ab8f716b4f..519d209714 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -668,7 +668,8 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo TextView title = view.findViewById(R.id.text); icon.setImageDrawable(uiUtilities.getIcon(contextMenuItem.getIcon(), nightMode)); title.setText(contextMenuItem.getTitle()); - if (contextMenuItem.getId().equals(MAP_CONTEXT_MENU_MORE_ID)) { + String id = contextMenuItem.getId(); + if (Algorithms.stringsEqual(id, MAP_CONTEXT_MENU_MORE_ID)) { item.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java index 960e5d7d82..9733d51d74 100644 --- a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java @@ -31,13 +31,27 @@ import net.osmand.plus.settings.ConfigureMenuRootFragment.ScreenType; import java.util.Collections; import java.util.List; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.CONTOUR_LINES; import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_BUILDS_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_DIVIDER_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.GPX_FILES_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ADD_GPX_WAYPOINT; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_CREATE_POI; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_EDIT_GPX_WP; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MODIFY_OSM_NOTE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MORE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_OPEN_OSM_NOTE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_RENDERING_CATEGORY_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_SOURCE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_EDITS; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_NOTES; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.OVERLAY_MAP; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.RECORDING_LAYER; import static net.osmand.aidlapi.OsmAndCustomizationConstants.RENDERING_ITEMS_ID_SCHEME; import static net.osmand.aidlapi.OsmAndCustomizationConstants.SHOW_CATEGORY_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.SHOW_ITEMS_ID_SCHEME; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.TERRAIN; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.UNDERLAY_MAP; import static net.osmand.plus.settings.ConfigureMenuItemsFragment.MAIN_BUTTONS_QUANTITY; public class RearrangeMenuItemsAdapter extends RecyclerView.Adapter @@ -192,6 +206,9 @@ public class RearrangeMenuItemsAdapter extends RecyclerView.Adapter Date: Wed, 29 Apr 2020 15:22:47 +0300 Subject: [PATCH 04/54] context menu actions fixes / tracker item fix / ui fixes --- .../aidlapi/OsmAndCustomizationConstants.java | 3 + OsmAnd/res/values/strings.xml | 2 + .../net/osmand/plus/ContextMenuAdapter.java | 5 +- .../src/net/osmand/plus/OsmandSettings.java | 28 +++++- .../plus/activities/MapActivityActions.java | 4 +- .../audionotes/AudioVideoNotesPlugin.java | 6 ++ .../MapContextMenuFragment.java | 34 ++++++-- .../settings/ConfigureMenuItemsFragment.java | 86 ++++++++++++++++--- .../settings/ConfigureMenuRootFragment.java | 42 ++++++--- .../settings/RearrangeMenuItemsAdapter.java | 68 +++++++++++++-- 10 files changed, 233 insertions(+), 45 deletions(-) diff --git a/OsmAnd-api/src/net/osmand/aidlapi/OsmAndCustomizationConstants.java b/OsmAnd-api/src/net/osmand/aidlapi/OsmAndCustomizationConstants.java index 8d884efc9a..de443bedf3 100644 --- a/OsmAnd-api/src/net/osmand/aidlapi/OsmAndCustomizationConstants.java +++ b/OsmAnd-api/src/net/osmand/aidlapi/OsmAndCustomizationConstants.java @@ -91,6 +91,9 @@ public interface OsmAndCustomizationConstants { String MAP_CONTEXT_MENU_CREATE_POI = MAP_CONTEXT_MENU_ACTIONS + "create_poi"; String MAP_CONTEXT_MENU_MODIFY_OSM_NOTE = MAP_CONTEXT_MENU_ACTIONS + "modify_osm_note"; String MAP_CONTEXT_MENU_OPEN_OSM_NOTE = MAP_CONTEXT_MENU_ACTIONS + "open_osm_note"; + String MAP_CONTEXT_MENU_AUDIO_NOTE = MAP_CONTEXT_MENU_ACTIONS + "audio_note"; + String MAP_CONTEXT_MENU_VIDEO_NOTE = MAP_CONTEXT_MENU_ACTIONS + "video_note"; + String MAP_CONTEXT_MENU_PHOTO_NOTE = MAP_CONTEXT_MENU_ACTIONS + "photo_note"; //Plug-in's IDs: String PLUGIN_OSMAND_MONITOR = "osmand.monitoring"; diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 13317babd6..72cd559796 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,8 @@ Thx - Hardy --> + Add / Edit + Parking positions Create/Edit POI Unsupported action %1$s Extra maps diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index fb088a3124..e10b815284 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -49,6 +49,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import static net.osmand.aidl.ConnectedApp.AIDL_LAYERS_PREFIX; import static net.osmand.aidlapi.OsmAndCustomizationConstants.APP_PROFILES_ID; public class ContextMenuAdapter { @@ -171,7 +172,7 @@ public class ContextMenuAdapter { return order; } } - return defaultOrder; + return defaultOrder == -1 ? items.size() - 1 : defaultOrder; } public ArrayAdapter createListAdapter(final Activity activity, final boolean lightTheme) { @@ -579,7 +580,7 @@ public class ContextMenuAdapter { List items = new ArrayList<>(); for (ContextMenuItem item : this.items) { String id = item.getId(); - if (id != null && id.startsWith(idScheme) && !APP_PROFILES_ID.equals(id)) { + if (id != null && id.startsWith(idScheme) && !APP_PROFILES_ID.equals(id) || id != null && id.startsWith(AIDL_LAYERS_PREFIX)) { items.add(item); } } diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index 462b61dc32..e372d6aeaf 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -81,6 +81,7 @@ import java.util.Map; import java.util.Set; import java.util.StringTokenizer; +import static net.osmand.aidl.ConnectedApp.AIDL_LAYERS_PREFIX; import static net.osmand.aidlapi.OsmAndCustomizationConstants.CONFIGURE_MAP_ITEM_ID_SCHEME; import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_ITEM_ID_SCHEME; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ACTIONS; @@ -1176,8 +1177,10 @@ public class OsmandSettings { public static class ContextMenuItemsSettings implements Serializable { public static final String HIDDEN = "hidden"; public static final String ORDER = "order"; + public static final String MAIN_ACTIONS = "main_actions"; private List hiddenIds = new ArrayList<>(); private List orderIds = new ArrayList<>(); + private List mainActionIds = new ArrayList<>(); public ContextMenuItemsSettings() { @@ -1188,6 +1191,12 @@ public class OsmandSettings { this.orderIds = orderIds; } + public ContextMenuItemsSettings(@NonNull List mainActionIds, @NonNull List hiddenIds, @NonNull List orderIds) { + this.mainActionIds = mainActionIds; + this.hiddenIds = hiddenIds; + this.orderIds = orderIds; + } + public void readFromJsonString(String jsonString, @NonNull String idScheme) { if (Algorithms.isEmpty(jsonString)) { return; @@ -1196,6 +1205,9 @@ public class OsmandSettings { JSONObject json = new JSONObject(jsonString); hiddenIds = readIdsList(json.optJSONArray(HIDDEN), idScheme); orderIds = readIdsList(json.optJSONArray(ORDER), idScheme); + if (idScheme.equals(MAP_CONTEXT_MENU_ACTIONS)) { + mainActionIds = readIdsList(json.optJSONArray(MAIN_ACTIONS), idScheme); + } } catch (JSONException e) { LOG.error("Error converting to json string: " + e); } @@ -1206,7 +1218,11 @@ public class OsmandSettings { if (jsonArray != null) { for (int i = 0; i < jsonArray.length(); i++) { String id = jsonArray.optString(i); - list.add(idScheme + id); + if (id.startsWith(AIDL_LAYERS_PREFIX)) { + list.add(id); + } else { + list.add(idScheme + id); + } } } return list; @@ -1217,6 +1233,9 @@ public class OsmandSettings { JSONObject json = new JSONObject(); json.put(HIDDEN, getJsonArray(hiddenIds, idScheme)); json.put(ORDER, getJsonArray(orderIds, idScheme)); + if (idScheme.equals(MAP_CONTEXT_MENU_ACTIONS)) { + json.put(MAIN_ACTIONS, getJsonArray(mainActionIds, idScheme)); + } return json.toString(); } catch (JSONException e) { LOG.error("Error converting to json string: " + e); @@ -1241,6 +1260,10 @@ public class OsmandSettings { public List getOrderIds() { return Collections.unmodifiableList(orderIds); } + + public List getMainActionIds() { + return Collections.unmodifiableList(mainActionIds); + } } public class EnumIntPreference> extends CommonPreference { @@ -3581,6 +3604,9 @@ public class OsmandSettings { @Nullable public ContextMenuItemsPreference getContextMenuItemsPreference(@NonNull String id) { + if (id.startsWith(AIDL_LAYERS_PREFIX)) { + return CONFIGURE_MAP_ITEMS; + } for (ContextMenuItemsPreference preference : CONTEXT_MENU_ITEMS_PREFERENCES) { if (id.startsWith(preference.idScheme)) { return preference; diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 20b6ece7d0..6fc213a82a 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -1038,7 +1038,9 @@ public class MapActivityActions implements DialogProvider { ItemBuilder divider = new ItemBuilder().setLayout(R.layout.drawer_divider); divider.setId(DRAWER_DIVIDER_ID); - divider.setPosition(dividerItemIndex >= 0 ? dividerItemIndex : 8); + int position = dividerItemIndex >= 0 ? dividerItemIndex : 8; + divider.setPosition(position); + divider.setOrder(position); optionsMenuHelper.addItem(divider.createItem()); return optionsMenuHelper; diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index 39c625b988..fc70ac67ca 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -96,6 +96,9 @@ import java.util.Map; import java.util.Timer; import java.util.TimerTask; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_AUDIO_NOTE; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_PHOTO_NOTE; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_VIDEO_NOTE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.RECORDING_LAYER; @@ -660,6 +663,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { return; } adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.recording_context_menu_arecord, app) + .setId(MAP_CONTEXT_MENU_AUDIO_NOTE) .setIcon(R.drawable.ic_action_micro_dark) .setOrder(TAKE_AUDIO_NOTE_ITEM_ORDER) .setListener(new ContextMenuAdapter.ItemClickListener() { @@ -672,6 +676,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { }) .createItem()); adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.recording_context_menu_vrecord, app) + .setId(MAP_CONTEXT_MENU_VIDEO_NOTE) .setIcon(R.drawable.ic_action_video_dark) .setOrder(TAKE_VIDEO_NOTE_ITEM_ORDER) .setListener(new ItemClickListener() { @@ -684,6 +689,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { }) .createItem()); adapter.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.recording_context_menu_precord, app) + .setId(MAP_CONTEXT_MENU_PHOTO_NOTE) .setIcon(R.drawable.ic_action_photo_dark) .setOrder(TAKE_PHOTO_NOTE_ITEM_ORDER) .setListener(new ItemClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 519d209714..0e5c76af04 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -568,6 +568,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo // TODO refactor section ContextMenuAdapter adapter = menu.getActionsContextMenuAdapter(false); List items = new ArrayList<>(); + List mainIds = app.getSettings().CONTEXT_MENU_ACTIONS_ITEMS.get().getMainActionIds(); for (ContextMenuItem item : adapter.getItems()) { if (!item.isHidden()) { items.add(item); @@ -575,11 +576,22 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo } ContextMenuAdapter mainAdapter = new ContextMenuAdapter(requireMyApplication()); ContextMenuAdapter additionalAdapter = new ContextMenuAdapter(requireMyApplication()); - for (int i = 0; i < items.size(); i++) { - if (i < MAIN_BUTTONS_QUANTITY) { - mainAdapter.addItem(items.get(i)); - } else { - additionalAdapter.addItem(items.get(i)); + + if (!mainIds.isEmpty()){ + for (ContextMenuItem item : items) { + if (mainIds.contains(item.getId())) { + mainAdapter.addItem(item); + } else { + additionalAdapter.addItem(item); + } + } + } else { + for (int i = 0; i < items.size(); i++) { + if (i < MAIN_BUTTONS_QUANTITY) { + mainAdapter.addItem(items.get(i)); + } else { + additionalAdapter.addItem(items.get(i)); + } } } LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( @@ -591,9 +603,15 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo ContextMenuItemClickListener mainListener = menu.getContextMenuItemClickListener(mainAdapter); ContextMenuItemClickListener additionalListener = menu.getContextMenuItemClickListener(additionalAdapter); - int mainButtonsQuantity = Math.min(MAIN_BUTTONS_QUANTITY, items.size()); - for (int i = 0; i < mainButtonsQuantity; i++) { - buttons.addView(getActionView(items.get(i), i, mainAdapter, additionalAdapter, mainListener, additionalListener), params); + if (!mainIds.isEmpty()){ + for (ContextMenuItem item: mainAdapter.getItems()) { + buttons.addView(getActionView(item, mainAdapter.getItems().indexOf(item), mainAdapter, additionalAdapter, mainListener, additionalListener), params); + } + } else { + int mainButtonsQuantity = Math.min(MAIN_BUTTONS_QUANTITY, items.size()); + for (int i = 0; i < mainButtonsQuantity; i++) { + buttons.addView(getActionView(items.get(i), i, mainAdapter, additionalAdapter, mainListener, additionalListener), params); + } } buttons.setGravity(Gravity.CENTER); diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index 0c38dd14fd..8ccffa7dab 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -68,12 +68,14 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment private static final String ITEM_TYPE_KEY = "item_type_key"; private static final String ITEMS_ORDER_KEY = "items_order_key"; private static final String HIDDEN_ITEMS_KEY = "hidden_items_key"; + private static final String MAIN_ACTIONS_ITEMS_KEY = "main_actions_items_key"; private static final String CONFIGURE_MENU_ITEMS_TAG = "configure_menu_items_tag"; private static final String IS_CHANGED_KEY = "is_changed_key"; private RearrangeMenuItemsAdapter rearrangeAdapter; private HashMap menuItemsOrder; private ContextMenuAdapter contextMenuAdapter; private List hiddenMenuItems; + private List mainActionItems; private ApplicationMode appMode; private LayoutInflater mInflater; private OsmandApplication app; @@ -81,6 +83,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment private boolean nightMode; private boolean wasReset = false; private boolean isChanged = false; + private Activity activity; @Override public void onSaveInstanceState(@NonNull Bundle outState) { @@ -90,6 +93,9 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment outState.putSerializable(ITEM_TYPE_KEY, screenType); outState.putString(APP_MODE_KEY, appMode.getStringKey()); outState.putBoolean(IS_CHANGED_KEY, isChanged); + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + outState.putStringArrayList(MAIN_ACTIONS_ITEMS_KEY, new ArrayList<>(mainActionItems)); + } } public static ConfigureMenuItemsFragment showInstance( @@ -127,14 +133,15 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); app = requireMyApplication(); - nightMode = app.getSettings().OSMAND_THEME.getModeValue(appMode) == OsmandSettings.OSMAND_DARK_THEME; - mInflater = UiUtilities.getInflater(app, nightMode); if (savedInstanceState != null) { appMode = ApplicationMode.valueOfStringKey(savedInstanceState.getString(APP_MODE_KEY), null); screenType = (ScreenType) savedInstanceState.getSerializable(ITEM_TYPE_KEY); hiddenMenuItems = savedInstanceState.getStringArrayList(HIDDEN_ITEMS_KEY); menuItemsOrder = (HashMap) savedInstanceState.getSerializable(ITEMS_ORDER_KEY); isChanged = savedInstanceState.getBoolean(IS_CHANGED_KEY); + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + mainActionItems = savedInstanceState.getStringArrayList(MAIN_ACTIONS_ITEMS_KEY); + } } else { hiddenMenuItems = new ArrayList<>(getSettingForScreen(app, screenType).getModeValue(appMode).getHiddenIds()); menuItemsOrder = new HashMap<>(); @@ -143,6 +150,10 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment menuItemsOrder.put(orderIds.get(i), i); } } + nightMode = app.getSettings().OSMAND_THEME.getModeValue(appMode) == OsmandSettings.OSMAND_DARK_THEME; + mInflater = UiUtilities.getInflater(app, nightMode); + mainActionItems = new ArrayList<>(); + activity = getActivity(); instantiateContextMenuAdapter(); if (menuItemsOrder.isEmpty()) { List defItems = contextMenuAdapter.getDefaultItems(); @@ -151,10 +162,23 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment menuItemsOrder.put(defItems.get(i).getId(), i); } } + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + initDefaultMainActions(); + } + } + + private void initDefaultMainActions() { + List defItems = contextMenuAdapter.getDefaultItems(); + initDefaultOrders(defItems); + mainActionItems = new ArrayList<>(getSettingForScreen(app, screenType).getModeValue(appMode).getMainActionIds()); + if (mainActionItems.isEmpty()) { + for (int i = 0; i < MAIN_BUTTONS_QUANTITY; i++) { + mainActionItems.add(defItems.get(i).getId()); + } + } } private void instantiateContextMenuAdapter() { - Activity activity = getActivity(); if (activity instanceof MapActivity) { switch (screenType) { case DRAWER: @@ -214,6 +238,9 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment @Override public void onDragOrSwipeEnded(RecyclerView.ViewHolder holder) { + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + mainActionItems = rearrangeAdapter.getMainActionsIds(); + } toPosition = holder.getAdapterPosition(); if (toPosition >= 0 && fromPosition >= 0 && toPosition != fromPosition) { rearrangeAdapter.notifyDataSetChanged(); @@ -226,10 +253,14 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment if (rearrangeMenuAdapterItem.getValue() instanceof ContextMenuItem) { ContextMenuItem menuItemBase = (ContextMenuItem) rearrangeMenuAdapterItem.getValue(); menuItemBase.setHidden(!menuItemBase.isHidden()); + String id = menuItemBase.getId(); if (menuItemBase.isHidden()) { - hiddenMenuItems.add(menuItemBase.getId()); + hiddenMenuItems.add(id); + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + mainActionItems.remove(id); + } } else { - hiddenMenuItems.remove(menuItemBase.getId()); + hiddenMenuItems.remove(id); } wasReset = false; isChanged = true; @@ -273,7 +304,12 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } } FragmentManager fm = getFragmentManager(); - OsmandSettings.ContextMenuItemsSettings prefToSave = new OsmandSettings.ContextMenuItemsSettings(hiddenMenuItems, ids); + OsmandSettings.ContextMenuItemsSettings prefToSave; + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + prefToSave = new OsmandSettings.ContextMenuItemsSettings(mainActionItems, hiddenMenuItems, ids); + } else { + prefToSave = new OsmandSettings.ContextMenuItemsSettings(hiddenMenuItems, ids); + } if (fm != null) { ChangeGeneralProfilesPrefBottomSheet.showInstance(fm, getSettingForScreen(app, screenType).getId(), @@ -301,6 +337,22 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment return root; } + @Override + public void onResume() { + super.onResume(); + if (activity instanceof MapActivity) { + ((MapActivity) activity).disableDrawer(); + } + } + + @Override + public void onStop() { + super.onStop(); + if (activity instanceof MapActivity) { + ((MapActivity) activity).enableDrawer(); + } + } + private List getAdapterItems() { List items = new ArrayList<>(); items.add(new RearrangeMenuAdapterItem(DESCRIPTION, screenType)); @@ -322,18 +374,20 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } List main = new ArrayList<>(); - int actionsIndex = Math.min(MAIN_BUTTONS_QUANTITY, visible.size()); - for (int i = 0; i < actionsIndex; i++) { - main.add(visible.get(i)); + List additional = new ArrayList<>(); + for (RearrangeMenuAdapterItem adapterItem : visible) { + if (mainActionItems.contains(((ContextMenuItem) adapterItem.getValue()).getId())) { + main.add(adapterItem); + } else { + additional.add(adapterItem); + } } items.add(new RearrangeMenuAdapterItem(HEADER, new RearrangeMenuItemsAdapter.HeaderItem(R.string.main_actions, R.string.main_actions_descr))); items.addAll(main); - items.add(new RearrangeMenuAdapterItem(HEADER, new RearrangeMenuItemsAdapter.HeaderItem(R.string.additional_actions, R.string.additional_actions_descr))); - List additional = new ArrayList<>(); - for (int i = MAIN_BUTTONS_QUANTITY; i < visible.size(); i++) { - additional.add(visible.get(i)); + if (!additional.isEmpty()) { + items.add(new RearrangeMenuAdapterItem(HEADER, new RearrangeMenuItemsAdapter.HeaderItem(R.string.additional_actions, R.string.additional_actions_descr))); + items.addAll(additional); } - items.addAll(additional); } else { items.addAll(visible); } @@ -354,6 +408,10 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment isChanged = true; getSettingForScreen(app, screenType).resetModeToDefault(appMode); instantiateContextMenuAdapter(); + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + mainActionItems.clear(); + initDefaultMainActions(); + } rearrangeAdapter.updateItems(getAdapterItems()); } }))); diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java index 5b6370b6c8..246b248013 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java @@ -59,10 +59,11 @@ public class ConfigureMenuRootFragment extends BaseOsmAndFragment { private LayoutInflater mInflater; private boolean nightMode; private ApplicationMode appMode; + private Activity activity; public static boolean showInstance(@NonNull FragmentManager fragmentManager, - Fragment target, - @NonNull ApplicationMode appMode) { + Fragment target, + @NonNull ApplicationMode appMode) { try { ConfigureMenuRootFragment fragment = new ConfigureMenuRootFragment(); fragment.setAppMode(appMode); @@ -86,6 +87,7 @@ public class ConfigureMenuRootFragment extends BaseOsmAndFragment { app = requireMyApplication(); nightMode = app.getSettings().OSMAND_THEME.getModeValue(appMode) == OsmandSettings.OSMAND_DARK_THEME; mInflater = UiUtilities.getInflater(app, nightMode); + activity = getActivity(); } @Nullable @@ -118,9 +120,9 @@ public class ConfigureMenuRootFragment extends BaseOsmAndFragment { toolbarSubTitle.setText(appMode.toHumanString()); toolbarSubTitle.setVisibility(View.VISIBLE); List items = new ArrayList<>(); - String plugins = getString(R.string.prefs_plugins); - String description = String.format(getString(R.string.ui_customization_description), plugins); - items.add(description); + String plugins = getString(R.string.prefs_plugins); + String description = String.format(getString(R.string.ui_customization_description), plugins); + items.add(description); items.addAll(Arrays.asList(ScreenType.values())); CustomizationItemsAdapter adapter = new CustomizationItemsAdapter(items, new OnCustomizationItemClickListener() { @Override @@ -141,11 +143,11 @@ public class ConfigureMenuRootFragment extends BaseOsmAndFragment { @Override public int getStatusBarColorId() { - View view = getView(); - if (view != null && Build.VERSION.SDK_INT >= 23 && !nightMode) { - view.setSystemUiVisibility(view.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); - } - return nightMode ? R.color.activity_background_dark : R.color.activity_background_light; + View view = getView(); + if (view != null && Build.VERSION.SDK_INT >= 23 && !nightMode) { + view.setSystemUiVisibility(view.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } + return nightMode ? R.color.activity_background_dark : R.color.activity_background_light; } @Override @@ -154,6 +156,22 @@ public class ConfigureMenuRootFragment extends BaseOsmAndFragment { outState.putString(APP_MODE_KEY, getAppMode().getStringKey()); } + @Override + public void onResume() { + super.onResume(); + if (activity instanceof MapActivity) { + ((MapActivity) activity).disableDrawer(); + } + } + + @Override + public void onStop() { + super.onStop(); + if (activity instanceof MapActivity) { + ((MapActivity) activity).enableDrawer(); + } + } + public void setAppMode(ApplicationMode appMode) { this.appMode = appMode; } @@ -202,9 +220,9 @@ public class ConfigureMenuRootFragment extends BaseOsmAndFragment { final Object currentItem = items.get(position); if (holder instanceof DescriptionHolder) { DescriptionHolder descriptionHolder = (DescriptionHolder) holder; - String plugins = getString(R.string.prefs_plugins); + String plugins = getString(R.string.prefs_plugins); setupClickableText( - descriptionHolder.description, (String) currentItem, plugins, new Intent(app, PluginsActivity.class)); + descriptionHolder.description, (String) currentItem, plugins, new Intent(app, PluginsActivity.class)); descriptionHolder.image.setVisibility(View.GONE); } else { final ScreenType item = (ScreenType) currentItem; diff --git a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java index 9733d51d74..2e6882c8d5 100644 --- a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java @@ -28,19 +28,27 @@ import net.osmand.plus.views.controls.ReorderItemTouchHelperCallback; import net.osmand.plus.settings.ConfigureMenuRootFragment.ScreenType; +import java.util.ArrayList; import java.util.Collections; import java.util.List; +import static net.osmand.aidl.ConnectedApp.AIDL_LAYERS_PREFIX; import static net.osmand.aidlapi.OsmAndCustomizationConstants.CONTOUR_LINES; import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_BUILDS_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_DIVIDER_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.GPX_FILES_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ACTIONS; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ADD_GPX_WAYPOINT; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ADD_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_AUDIO_NOTE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_CREATE_POI; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_EDIT_GPX_WP; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MARK_AS_PARKING_LOC; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MODIFY_OSM_NOTE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MORE_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_OPEN_OSM_NOTE; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_PHOTO_NOTE; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_VIDEO_NOTE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_RENDERING_CATEGORY_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_SOURCE_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_EDITS; @@ -209,6 +217,9 @@ public class RearrangeMenuItemsAdapter extends RecyclerView.Adapter= headerMaxIndex || menuItemFrom.getId().equals(MAP_CONTEXT_MENU_MORE_ID)) { + return false; + } + Collections.swap(items, from, to); + notifyItemMoved(from, to); + return true; + } + if (itemFrom instanceof ContextMenuItem && itemTo instanceof ContextMenuItem) { ContextMenuItem menuItemFrom = (ContextMenuItem) itemFrom; @@ -247,17 +274,23 @@ public class RearrangeMenuItemsAdapter extends RecyclerView.Adapter buttonMoreIndex) { - return false; +// item "Actions" should not left "Main actions" section + if (menuItemFrom.getId().equals(MAP_CONTEXT_MENU_MORE_ID) || menuItemTo.getId().equals(MAP_CONTEXT_MENU_MORE_ID)) { + int additionalHeaderIndex = 0; + for (int i = 0; i < items.size(); i++) { + Object value = items.get(i).getValue(); + if (value instanceof HeaderItem && ((HeaderItem) value).titleRes == R.string.additional_actions) { + additionalHeaderIndex = i; + break; + } } - } else if (menuItemTo.getId().equals(MAP_CONTEXT_MENU_MORE_ID)) { - if (from > buttonMoreIndex) { + if (to >= additionalHeaderIndex || from > additionalHeaderIndex) { return false; } } @@ -348,6 +381,7 @@ public class RearrangeMenuItemsAdapter extends RecyclerView.Adapter getMainActionsIds() { + List ids = new ArrayList<>(); + for (RearrangeMenuAdapterItem adapterItem : items) { + Object value = adapterItem.getValue(); + if (value instanceof ContextMenuItem) { + ids.add(((ContextMenuItem) value).getId()); + } else if (value instanceof HeaderItem + && (((HeaderItem) value).titleRes == R.string.additional_actions + || ((HeaderItem) value).titleRes == R.string.shared_string_hidden)) { + break; + } + } + return ids; + } } From 4e7abcb41fd46efd78b58d7a8806b417bf0e37be Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 29 Apr 2020 15:39:39 +0300 Subject: [PATCH 05/54] fix instantiateContextMenuAdapter() NPE after screen rotating --- .../settings/ConfigureMenuItemsFragment.java | 146 +++++++++--------- 1 file changed, 76 insertions(+), 70 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index 8ccffa7dab..87ea252055 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -84,6 +84,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment private boolean wasReset = false; private boolean isChanged = false; private Activity activity; + private RecyclerView recyclerView; @Override public void onSaveInstanceState(@NonNull Bundle outState) { @@ -154,17 +155,6 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment mInflater = UiUtilities.getInflater(app, nightMode); mainActionItems = new ArrayList<>(); activity = getActivity(); - instantiateContextMenuAdapter(); - if (menuItemsOrder.isEmpty()) { - List defItems = contextMenuAdapter.getDefaultItems(); - initDefaultOrders(defItems); - for (int i = 0; i < defItems.size(); i++) { - menuItemsOrder.put(defItems.get(i).getId(), i); - } - } - if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { - initDefaultMainActions(); - } } private void initDefaultMainActions() { @@ -220,7 +210,81 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } }); appbar.addView(toolbar); - RecyclerView recyclerView = root.findViewById(R.id.profiles_list); + recyclerView = root.findViewById(R.id.profiles_list); + View cancelButton = root.findViewById(R.id.dismiss_button); + root.findViewById(R.id.buttons_divider).setVisibility(View.VISIBLE); + UiUtilities.setupDialogButton(nightMode, cancelButton, UiUtilities.DialogButtonType.SECONDARY, R.string.shared_string_cancel); + View applyButton = root.findViewById(R.id.right_bottom_button); + cancelButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + FragmentActivity fragmentActivity = getActivity(); + if (fragmentActivity != null) { + fragmentActivity.onBackPressed(); + } + } + }); + UiUtilities.setupDialogButton(nightMode, applyButton, UiUtilities.DialogButtonType.PRIMARY, R.string.shared_string_apply); + applyButton.setVisibility(View.VISIBLE); + applyButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + List defItems = contextMenuAdapter.getDefaultItems(); + List ids = new ArrayList<>(); + if (!menuItemsOrder.isEmpty()) { + sortByCustomOrder(defItems, menuItemsOrder); + for (ContextMenuItem item : defItems) { + ids.add(item.getId()); + } + } + FragmentManager fm = getFragmentManager(); + OsmandSettings.ContextMenuItemsSettings prefToSave; + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + prefToSave = new OsmandSettings.ContextMenuItemsSettings(mainActionItems, hiddenMenuItems, ids); + } else { + prefToSave = new OsmandSettings.ContextMenuItemsSettings(hiddenMenuItems, ids); + } + if (fm != null) { + ChangeGeneralProfilesPrefBottomSheet.showInstance(fm, + getSettingForScreen(app, screenType).getId(), + prefToSave, + getTargetFragment(), + false, + appMode, + new ChangeGeneralProfilesPrefBottomSheet.OnChangeSettingListener() { + @Override + public void onApplied() { + dismissFragment(); + } + + @Override + public void onDiscard() { + + } + }); + } + } + }); + if (Build.VERSION.SDK_INT >= 21) { + AndroidUtils.addStatusBarPadding21v(app, root); + } + return root; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + instantiateContextMenuAdapter(); + if (menuItemsOrder.isEmpty()) { + List defItems = contextMenuAdapter.getDefaultItems(); + initDefaultOrders(defItems); + for (int i = 0; i < defItems.size(); i++) { + menuItemsOrder.put(defItems.get(i).getId(), i); + } + } + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + initDefaultMainActions(); + } recyclerView.setPadding(0, 0, 0, (int) app.getResources().getDimension(R.dimen.dialog_button_ex_min_width)); rearrangeAdapter = new RearrangeMenuItemsAdapter(app, getAdapterItems(), nightMode); recyclerView.setLayoutManager(new LinearLayoutManager(app)); @@ -277,64 +341,6 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment }; rearrangeAdapter.setListener(listener); recyclerView.setAdapter(rearrangeAdapter); - View cancelButton = root.findViewById(R.id.dismiss_button); - UiUtilities.setupDialogButton(nightMode, cancelButton, UiUtilities.DialogButtonType.SECONDARY, R.string.shared_string_cancel); - cancelButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - FragmentActivity fragmentActivity = getActivity(); - if (fragmentActivity != null) { - fragmentActivity.onBackPressed(); - } - } - }); - root.findViewById(R.id.buttons_divider).setVisibility(View.VISIBLE); - View applyButton = root.findViewById(R.id.right_bottom_button); - UiUtilities.setupDialogButton(nightMode, applyButton, UiUtilities.DialogButtonType.PRIMARY, R.string.shared_string_apply); - applyButton.setVisibility(View.VISIBLE); - applyButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - List defItems = contextMenuAdapter.getDefaultItems(); - List ids = new ArrayList<>(); - if (!menuItemsOrder.isEmpty()) { - sortByCustomOrder(defItems, menuItemsOrder); - for (ContextMenuItem item : defItems) { - ids.add(item.getId()); - } - } - FragmentManager fm = getFragmentManager(); - OsmandSettings.ContextMenuItemsSettings prefToSave; - if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { - prefToSave = new OsmandSettings.ContextMenuItemsSettings(mainActionItems, hiddenMenuItems, ids); - } else { - prefToSave = new OsmandSettings.ContextMenuItemsSettings(hiddenMenuItems, ids); - } - if (fm != null) { - ChangeGeneralProfilesPrefBottomSheet.showInstance(fm, - getSettingForScreen(app, screenType).getId(), - prefToSave, - getTargetFragment(), - false, - appMode, - new ChangeGeneralProfilesPrefBottomSheet.OnChangeSettingListener() { - @Override - public void onApplied() { - dismissFragment(); - } - - @Override - public void onDiscard() { - - } - }); - } - } - }); - if (Build.VERSION.SDK_INT >= 21) { - AndroidUtils.addStatusBarPadding21v(app, root); - } - return root; } @Override From de063c68aec6a2829cf06fd95e45f6d1f554e6e6 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Thu, 30 Apr 2020 15:28:44 +0300 Subject: [PATCH 06/54] refactor --- OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java | 4 ++-- .../osmand/plus/mapcontextmenu/MapContextMenuFragment.java | 2 +- .../net/osmand/plus/settings/ConfigureMenuItemsFragment.java | 2 +- .../net/osmand/plus/settings/ConfigureMenuRootFragment.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index e10b815284..ac769d8d6d 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -92,10 +92,10 @@ public class ContextMenuAdapter { item.setOrder(getItemOrder(id, item.getOrder())); } items.add(item.getPos(), item); - sortItemsByOrder(); } catch (IndexOutOfBoundsException ex) { items.add(item); } + sortItemsByOrder(); } public ContextMenuItem getItem(int position) { @@ -580,7 +580,7 @@ public class ContextMenuAdapter { List items = new ArrayList<>(); for (ContextMenuItem item : this.items) { String id = item.getId(); - if (id != null && id.startsWith(idScheme) && !APP_PROFILES_ID.equals(id) || id != null && id.startsWith(AIDL_LAYERS_PREFIX)) { + if (id != null && (id.startsWith(idScheme) && !APP_PROFILES_ID.equals(id) || id.startsWith(AIDL_LAYERS_PREFIX))) { items.add(item); } } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 0e5c76af04..1ab65cdaa9 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -687,7 +687,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo icon.setImageDrawable(uiUtilities.getIcon(contextMenuItem.getIcon(), nightMode)); title.setText(contextMenuItem.getTitle()); String id = contextMenuItem.getId(); - if (Algorithms.stringsEqual(id, MAP_CONTEXT_MENU_MORE_ID)) { + if (MAP_CONTEXT_MENU_MORE_ID.equals(id)) { item.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index 87ea252055..3aea9ef153 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -151,7 +151,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment menuItemsOrder.put(orderIds.get(i), i); } } - nightMode = app.getSettings().OSMAND_THEME.getModeValue(appMode) == OsmandSettings.OSMAND_DARK_THEME; + nightMode = !app.getSettings().isLightContentForMode(appMode); mInflater = UiUtilities.getInflater(app, nightMode); mainActionItems = new ArrayList<>(); activity = getActivity(); diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java index 246b248013..e438823e07 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java @@ -85,7 +85,7 @@ public class ConfigureMenuRootFragment extends BaseOsmAndFragment { appMode = ApplicationMode.valueOfStringKey(savedInstanceState.getString(APP_MODE_KEY), null); } app = requireMyApplication(); - nightMode = app.getSettings().OSMAND_THEME.getModeValue(appMode) == OsmandSettings.OSMAND_DARK_THEME; + nightMode = !app.getSettings().isLightContentForMode(appMode); mInflater = UiUtilities.getInflater(app, nightMode); activity = getActivity(); } From a8c05348b857f1a8bda2dd03b6bfd5a2f66a8f6c Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Thu, 30 Apr 2020 15:35:46 +0300 Subject: [PATCH 07/54] reset dialog --- .../settings/ConfigureMenuItemsFragment.java | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index 3aea9ef153..e9e81b13ce 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -408,17 +408,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment new View.OnClickListener() { @Override public void onClick(View view) { - hiddenMenuItems.clear(); - menuItemsOrder.clear(); - wasReset = true; - isChanged = true; - getSettingForScreen(app, screenType).resetModeToDefault(appMode); - instantiateContextMenuAdapter(); - if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { - mainActionItems.clear(); - initDefaultMainActions(); - } - rearrangeAdapter.updateItems(getAdapterItems()); + showResetDialog(); } }))); items.add(new RearrangeMenuAdapterItem(BUTTON, new RearrangeMenuItemsAdapter.ButtonItem( @@ -464,6 +454,31 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment dismissDialog.show(); } + public void showResetDialog() { + Context themedContext = UiUtilities.getThemedContext(getActivity(), nightMode); + AlertDialog.Builder dismissDialog = new AlertDialog.Builder(themedContext); + dismissDialog.setTitle(getString(R.string.shared_string_reset)); + dismissDialog.setMessage(getString(R.string.reset_to_default)); + dismissDialog.setNegativeButton(R.string.shared_string_cancel, null); + dismissDialog.setPositiveButton(R.string.shared_string_reset, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + hiddenMenuItems.clear(); + menuItemsOrder.clear(); + wasReset = true; + isChanged = true; + getSettingForScreen(app, screenType).resetModeToDefault(appMode); + instantiateContextMenuAdapter(); + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + mainActionItems.clear(); + initDefaultMainActions(); + } + rearrangeAdapter.updateItems(getAdapterItems()); + } + }); + dismissDialog.show(); + } + private void dismissFragment() { FragmentManager fm = getFragmentManager(); if (fm != null && !fm.isStateSaved()) { From d1a19429077a0bb11471faec296ae99c26b25f74 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Thu, 30 Apr 2020 16:24:43 +0300 Subject: [PATCH 08/54] use one string for "Actions" --- OsmAnd/res/values/strings.xml | 2 +- .../net/osmand/plus/settings/RearrangeMenuItemsAdapter.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 72cd559796..de23899184 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -62,7 +62,7 @@ Replace another point with this Developer Plugin You can move items only inside this category. - You can access these actions by tapping the “Actions” button. + You can access these actions by tapping the “%1$s” button. Main actions Main actions containt only 4 buttons. Settings will be reset to the original state after hiding. diff --git a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java index 2e6882c8d5..403b15195d 100644 --- a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java @@ -226,7 +226,11 @@ public class RearrangeMenuItemsAdapter extends RecyclerView.Adapter Date: Mon, 4 May 2020 15:46:39 +0300 Subject: [PATCH 09/54] remove string in another languages --- OsmAnd/res/values-ar/strings.xml | 1 - OsmAnd/res/values-b+kab/strings.xml | 1 - OsmAnd/res/values-bg/strings.xml | 1 - OsmAnd/res/values-ca/strings.xml | 1 - OsmAnd/res/values-cs/strings.xml | 1 - OsmAnd/res/values-de/strings.xml | 1 - OsmAnd/res/values-eo/strings.xml | 1 - OsmAnd/res/values-es-rAR/strings.xml | 1 - OsmAnd/res/values-es-rUS/strings.xml | 1 - OsmAnd/res/values-fa/strings.xml | 1 - OsmAnd/res/values-fr/strings.xml | 1 - OsmAnd/res/values-gl/strings.xml | 1 - OsmAnd/res/values-he/strings.xml | 1 - OsmAnd/res/values-hu/strings.xml | 1 - OsmAnd/res/values-is/strings.xml | 1 - OsmAnd/res/values-nb/strings.xml | 1 - OsmAnd/res/values-pl/strings.xml | 1 - OsmAnd/res/values-pt-rBR/strings.xml | 1 - OsmAnd/res/values-pt/strings.xml | 1 - OsmAnd/res/values-ru/strings.xml | 1 - OsmAnd/res/values-sc/strings.xml | 1 - OsmAnd/res/values-sk/strings.xml | 1 - OsmAnd/res/values-tr/strings.xml | 1 - OsmAnd/res/values-uk/strings.xml | 1 - OsmAnd/res/values-zh-rTW/strings.xml | 1 - 25 files changed, 25 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 96035f7ad2..c94fbb20e6 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -3598,7 +3598,6 @@ ستتم إعادة تعيين الإعدادات إلى الحالة الأصلية بعد الاختفاء. الإجراءات الرئيسية تحتوي على 4 أزرار فقط. الإجراءات الرئيسية - يمكنك الوصول إلى هذه الإجراءات بالضغط على زر \"الإجراءات\". يمكنك نقل العناصر داخل هذه الفئة فقط. الإضافات المطورة العناصر diff --git a/OsmAnd/res/values-b+kab/strings.xml b/OsmAnd/res/values-b+kab/strings.xml index 9dfc48b742..e931417beb 100644 --- a/OsmAnd/res/values-b+kab/strings.xml +++ b/OsmAnd/res/values-b+kab/strings.xml @@ -1286,7 +1286,6 @@ Iferdisen-a ffren deg umuɣ maca isenfran-a neɣ izegrar ur teddun ara akken iwata. Iɣewwaṛen ad alsen awennez ɣer wazalen-nsen imezwura deffir n tuffra-nsen. Tigawin tigejdanin gebrent kan 4 n tqeffalin. - Tzemreḍ dad tkecmeḍ ɣer tigawin-a s utekki ɣef tqeffalt \"Tigawin\". Tzemreḍ kan ad tawiḍ iferdisen daxel n taggayt-a. Uccuḍ deg udfel Tikarḍiwin-nniḍen diff --git a/OsmAnd/res/values-bg/strings.xml b/OsmAnd/res/values-bg/strings.xml index 1e6cdd2c11..907fafd625 100644 --- a/OsmAnd/res/values-bg/strings.xml +++ b/OsmAnd/res/values-bg/strings.xml @@ -2033,7 +2033,6 @@ Настройките ще бъдат върнати в първоначалното състояние след скриване. Основните действия съдържат само 4 бутона. Основни действия - Можете да получите достъп до тези действия, като докоснете бутона „Действия“. Можете да премествате елементи само в тази категория. Добавка за разработчици Ски разходки diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index 6363be3f85..d85454b10f 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -3630,7 +3630,6 @@ Abasta l\'àrea: %1$s x %2$s La configuració es restablirà a l\'estat original després d\'amagar-se. Les accions principals només contenen 4 botons. Accions principals - Podeu accedir a aquestes accions prement el botó \"Accions\". Només podeu moure els elements dins d\'aquesta categoria. Connector per a desenvolupadors Elements diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index 23778a717e..25d6d37d68 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -3381,7 +3381,6 @@ Zobrazená oblast: %1$s x %2$s Pro zobrazení bodů zájmu Wikipedie jsou potřeba další mapy. Hlavní akce mohou obsahovat pouze 4 tlačítka. Hlavní akce - Tyto akce jsou dostupné po stisknutí tlačítka “Akce”. Položky můžete přesouvat pouze v rámci této kategorie. Modul pro vývojáře Položky diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 4951fb01fe..016fa58744 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -3666,7 +3666,6 @@ Lon %2$s Bairisch Baschkirisch Hauptaktionen enthalten nur 4 Schaltflächen. - Sie können auf diese Aktionen zugreifen, indem Sie auf die Schaltfläche „Aktionen“ tippen. Wählen Sie die Sprachen aus, in denen Wikipedia-Artikel auf der Karte erscheinen sollen. Sie können zwischen allen verfügbaren Sprachen wechseln, während Sie den Artikel lesen. Diese Elemente werden aus dem Menü ausgeblendet, aber die dargestellten Optionen oder Plugins funktionieren weiterhin. Ordnen Sie Elemente aus %1$s neu an oder blenden Sie sie aus. diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index dd4e293ce1..313eff992d 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -3607,7 +3607,6 @@ Indikas lokon: %1$s x %2$s" Kromaj mapoj estas necesaj por vidigi punktojn de Vikipedio sur la mapo. La “ĉefaj agoj” povas enhavi nur 4 butonojn. Ĉefaj agoj - Vi povas aliri tiujn ĉi agojn per la butono “pliaj agoj”. Vi povas movi elementojn nur ene tiu ĉi kategorio. Programista kromprogramo Elementoj diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index a8f7fb2916..7cd506e9e2 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -3631,7 +3631,6 @@ Lon %2$s Ocultar los ajustes, los restablece a su estado original. Las «Acciones principales» sólo contienen 4 botones. Acciones principales - Puedes acceder a estas acciones, pulsando el botón «Acciones adicionales». Sólo puedes mover objetos dentro de esta categoría. Complemento de desarrollador Elementos diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml index 10a3aaabf8..2c295266e6 100644 --- a/OsmAnd/res/values-es-rUS/strings.xml +++ b/OsmAnd/res/values-es-rUS/strings.xml @@ -3640,7 +3640,6 @@ Lon %2$s Los elementos debajo de este punto están separados por un divisor. Complemento de desarrollador Acciones del menú contextual - Puedes acceder a estas acciones, pulsando el botón «Acciones adicionales». OsmAnd + Mapillary %1$s / %2$s Viajes (Wikiviajes y Wikipedia) diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index 914d9d73e3..e14f34a3fb 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -3664,7 +3664,6 @@ کنش‌های منوی زمینه کنش‌های اصلی فقط ۴ دکمه است. کنش‌های اصلی - با زدن روی دکمهٔ «کنش‌های بیشتر» می‌توانید به این کنش‌ها دسترسی پیدا کنید. افزونهٔ توسعه‌دهنده چیزهایی که از این نقطه به پایین قرار می‌گیرند، با جداکننده جدا می‌شوند. اقلام را فقط درون این دسته می‌توانید جابه‌جا کنید. diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 7832d50b88..4e9dd5bf93 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3604,7 +3604,6 @@ représentant la zone : %1$s x %2$s \nVous pouvez désactiver les greffons inutilisés, pour masquer leurs contrôles dans l’application %1$s. Ces éléments sont masqués dans le menu mais les options présentes ou les greffons continueront à fonctionner. Masquer les paramètres les réinitialise à leurs valeurs par défaut. - Vous pouvez accéder à ces actions en appuyant sur le bouton « Actions supplémentaires ». Éléments du panneau déroulant, menu contextuel Panneau déroulant Réorganisez ou masquez les éléments à partir de %1$s. diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml index 41e73510af..f05ffa8c90 100644 --- a/OsmAnd/res/values-gl/strings.xml +++ b/OsmAnd/res/values-gl/strings.xml @@ -3659,7 +3659,6 @@ Lon %2$s Precísanse mapas adicionais para ollar os PDI da Wikipedia no mapa. As accións principais conteñen só 4 botóns. Accións principais - Podes acceder a esas accións premendo no botón de \"Accións\". Só podes mover obxectos dentro desta categoría. Escolle as linguas nas que os artigos da Wikipedia aparecerán no mapa. Podes trocar entre todos as linguas dispoñíbeis en canto leas o artigo. Algúns artigos da Wikipedia poden non estar dispoñíbeis na túa lingua. diff --git a/OsmAnd/res/values-he/strings.xml b/OsmAnd/res/values-he/strings.xml index c757acb3d3..45d01f1439 100644 --- a/OsmAnd/res/values-he/strings.xml +++ b/OsmAnd/res/values-he/strings.xml @@ -3632,7 +3632,6 @@ הסתרת הגדרות מאפסת אותן למצבן ההתחלתי. ‚פעולות ראשיות’ מכילות 4 כפתורים בלבד. פעולות ראשית - ניתן לגשת לפעולות האלה על ידי לחיצה על הכפתור „פעולות נוספות”. ניתן להעביר פריטים בתוך קטגוריה זו בלבד. נא לבחור את השפות בהן יופיעו ערכים של ויקיפדיה במפה. ניתן להחליף בין כל השפות הזמינות בזמן קריאת הערך. יתכן שחלק מהערכים בוויקיפדיה לא יהיו זמינים בשפה שלך. diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 1f905224ba..10c692fce6 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -3550,7 +3550,6 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Rejtett A beállítások az eredeti állapotba fognak visszaállni elrejtés után. Fő műveletek - Ezekhez a műveletekhez a \"Műveletek\" gombra koppintva férhet hozzá. Csak ezen a kategórián belül lehetséges az elemek áthelyezése. Fejlesztő bővítmény Másik pont lecserélése erre diff --git a/OsmAnd/res/values-is/strings.xml b/OsmAnd/res/values-is/strings.xml index d93f5af303..4a01a9c9cb 100644 --- a/OsmAnd/res/values-is/strings.xml +++ b/OsmAnd/res/values-is/strings.xml @@ -3647,7 +3647,6 @@ Stendur fyrir svæði: %1$s x %2$s Stillingar verða settar á upphaflega stöðu eftir að hafa verið faldar. Aðalaðgerðir innifela aðeins 4 hnappa. Aðalaðgerðir - Þú getur komist í þessar aðgerðir með því að ýta á \"Aðgerðir\"-hnappinn. Forritsviðbót fyrir forritun Atriði Viðbótarkort þarf til að skoða Wikipedia-merkisstaði á kortinu. diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index 822889407a..6c4bc31c79 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -3514,7 +3514,6 @@ Skjult Hovedhandlinger inneholder kun 4 knapper. Hovedhandlinger - Du får tilgang til disse handlingene ved å trykke på knappen “Handlinger”. Du kan kun flytte elementer innenfor denne kategorien. Utvikler-tillegg Erstatt et annet punkt med dette diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index e4c11b6107..b71b1fc492 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -3630,7 +3630,6 @@ Reprezentuje obszar: %1$s x %2$s Ustawienia zostaną zrestetowane po schowaniu. \"Główne czynności\" zawierają tylko 4 przyciski. Główne działania - Możesz uzyskać dostęp do tych czynności, naciskając przycisk „Dodatkowe czynności”. Możesz przemieszczać elementy tylko wewnątrz tej kategorii. Wtyczka deweloperska Elementy diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 22dfe120c6..6e03e4829f 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -3622,7 +3622,6 @@ Pôr do Sol: %2$s Ocultar configurações redefine-as para o estado original. \'Ações principais\' contém apenas 4 botões. Principais ações - Você pode acessar essas ações tocando no botão \"Ações adicionais\". Você pode mover itens somente dentro desta categoria. Plugin do desenvolvedor Itens diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index fd346fe37b..10aa8d7d34 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -3627,7 +3627,6 @@ As configurações serão redefinidas para o estado original após ocultar. As ações principais contêm apenas 4 botões. Principais ações - Pode acessar essas ações tocando no botão \"Ações\". Pode mover itens somente dentro desta categoria. Plugin do programador Itens diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index a59af7ffd6..69c05fb366 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -3632,7 +3632,6 @@ Скрытие настроек сбрасывает их в исходное состояние. «Основные действия» содержат только 4 кнопки. Основные действия - Доступ к этим действиям происходит нажатием кнопки «Дополнительные действия». Перемещать элементы можно только внутри данной категории. Плагин для разработчиков Выберите языки, на которых статьи Википедии будут отображаться на карте. Вы сможете переключаться между всеми доступными языками при чтении статьи. diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index c85a056a12..dc76871aa6 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -3634,7 +3634,6 @@ Pro praghere iscrie su còdighe intreu Sas impostatziones ant a torrare a sos valores predefinidos a pustis de sa cuadura. Sas atziones printzipales cuntenent 4 butones ebbia. Atziones printzipales - Podes atzèdere a custas atziones incarchende su butone \"Atziones\". Podes mòere elementos in intro de custa categoria ebbia. Estensione pro sos isvilupadores Elementos diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index a66c6147ab..bbcdfa64aa 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -3626,7 +3626,6 @@ Zodpovedá oblasti: %1$s x %2$s Skrytie nastavení ich resetuje do pôvodného stavu. \"Hlavné akcie\" obsahujú len 4 tlačidlá. Hlavné akcie - K týmto akciám môžete pristúpiť stlačením tlačidla \"Ďalšie akcie\". Môžete presúvať položky len v rámci tejto kategórie. Doplnok pre vývojárov Položky diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index ae0427a04c..1889866479 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -3591,7 +3591,6 @@ Bu ögeler menüden gizlenir, ancak temsil edilen seçenekler veya eklentiler çalışmaya devam eder. \'Ana eylemler\' sadece 4 düğme içerir. Ana eylemler - Bu eylemlere “Ek eylemler” düğmesine dokunarak erişebilirsiniz. Ögeleri yalnızca bu kategorinin içine taşıyabilirsiniz. Geliştirici Eklentisi Wikipedia makalelerinin haritada görüneceği dilleri seçin. Makaleyi okurken kullanılabilir bütün diller arasında geçiş yapabilirsiniz. diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 41ded8daa3..5c07255f3b 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -3626,7 +3626,6 @@ Після приховування налаштування буде повернено до початкового стану. Основні дії містять лише 4 кнопки. Основні дії - Ви можете отримати доступ до цих дій, натиснувши кнопку «Дії». Ви можете переміщувати елементи лише всередині цієї категорії. Втулок розробника Елементи diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 4986b34831..125c8998ff 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -3626,7 +3626,6 @@ 隱藏設定將會把它們重設回原始狀態。 主要動作僅包含 4 個按鈕。 主要動作 - 您可以透過輕點「額外動作」按鈕來存取這些動作。 您只能在此分類中移動項目。 開發者外掛程式 項目 From 661c33f06f486d60f996337b3a97e61a40d2c5c4 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 4 May 2020 15:58:57 +0300 Subject: [PATCH 10/54] Check how to properly set icon sizes for large density --- .../res/drawable-hdpi/map_action_aircraft.png | Bin 425 -> 0 bytes .../drawable-hdpi/map_action_bicycle_dark.png | Bin 553 -> 0 bytes .../res/drawable-hdpi/map_action_bus_dark.png | Bin 443 -> 0 bytes .../res/drawable-hdpi/map_action_camper.png | Bin 363 -> 0 bytes .../drawable-hdpi/map_action_campervan.png | Bin 439 -> 0 bytes .../res/drawable-hdpi/map_action_cancel.png | Bin 1284 -> 0 bytes .../res/drawable-hdpi/map_action_car_dark.png | Bin 446 -> 0 bytes .../drawable-hdpi/map_action_edit_dark.png | Bin 1379 -> 0 bytes .../res/drawable-hdpi/map_action_fav_dark.png | Bin 1654 -> 0 bytes .../drawable-hdpi/map_action_flag_dark.png | Bin 1339 -> 0 bytes .../drawable-hdpi/map_action_gshare_dark.png | Bin 1439 -> 0 bytes .../drawable-hdpi/map_action_helicopter.png | Bin 373 -> 0 bytes OsmAnd/res/drawable-hdpi/map_action_horse.png | Bin 525 -> 0 bytes .../drawable-hdpi/map_action_monowheel.png | Bin 384 -> 0 bytes .../map_action_motorcycle_dark.png | Bin 452 -> 0 bytes .../res/drawable-hdpi/map_action_offroad.png | Bin 402 -> 0 bytes .../map_action_openstreetmap_logo.png | Bin 801 -> 0 bytes .../map_action_pedestrian_dark.png | Bin 503 -> 0 bytes .../map_action_personal_transporter.png | Bin 406 -> 0 bytes .../drawable-hdpi/map_action_pickup_truck.png | Bin 403 -> 0 bytes .../map_action_sail_boat_dark.png | Bin 572 -> 0 bytes .../res/drawable-hdpi/map_action_scooter.png | Bin 484 -> 0 bytes .../res/drawable-hdpi/map_action_settings.png | Bin 1546 -> 0 bytes .../drawable-hdpi/map_action_shuttle_bus.png | Bin 385 -> 0 bytes .../res/drawable-hdpi/map_action_skiing.png | Bin 550 -> 0 bytes .../res/drawable-hdpi/map_action_subway.png | Bin 490 -> 0 bytes OsmAnd/res/drawable-hdpi/map_action_taxi.png | Bin 523 -> 0 bytes OsmAnd/res/drawable-hdpi/map_action_train.png | Bin 1398 -> 0 bytes .../map_action_trekking_dark.png | Bin 564 -> 0 bytes .../drawable-hdpi/map_action_truck_dark.png | Bin 400 -> 0 bytes OsmAnd/res/drawable-hdpi/map_action_ufo.png | Bin 635 -> 0 bytes OsmAnd/res/drawable-hdpi/map_action_utv.png | Bin 452 -> 0 bytes OsmAnd/res/drawable-hdpi/map_action_wagon.png | Bin 553 -> 0 bytes .../res/drawable-hdpi/map_action_waypoint.png | Bin 1154 -> 0 bytes .../drawable-hdpi/map_action_waypoints.png | Bin 1302 -> 0 bytes .../drawable-hdpi/map_action_world_globe.png | Bin 825 -> 0 bytes .../map_arrow_to_destination.png | Bin 3536 -> 0 bytes .../map_bg_point_rhomb_bottom.png | Bin 3159 -> 0 bytes .../map_bg_point_rhomb_bottom_small.png | Bin 1720 -> 0 bytes .../map_bg_point_rhomb_center.png | Bin 543 -> 0 bytes .../map_bg_point_rhomb_center_small.png | Bin 327 -> 0 bytes .../drawable-hdpi/map_bg_point_rhomb_top.png | Bin 1872 -> 0 bytes .../map_bg_point_rhomb_top_small.png | Bin 861 -> 0 bytes .../res/drawable-mdpi/map_action_aircraft.png | Bin 294 -> 0 bytes .../drawable-mdpi/map_action_bicycle_dark.png | Bin 385 -> 0 bytes .../res/drawable-mdpi/map_action_bus_dark.png | Bin 294 -> 0 bytes .../res/drawable-mdpi/map_action_camper.png | Bin 247 -> 0 bytes .../drawable-mdpi/map_action_campervan.png | Bin 275 -> 0 bytes .../res/drawable-mdpi/map_action_cancel.png | Bin 1160 -> 0 bytes .../res/drawable-mdpi/map_action_car_dark.png | Bin 305 -> 0 bytes .../drawable-mdpi/map_action_edit_dark.png | Bin 1253 -> 0 bytes .../res/drawable-mdpi/map_action_fav_dark.png | Bin 1382 -> 0 bytes .../drawable-mdpi/map_action_flag_dark.png | Bin 1207 -> 0 bytes .../drawable-mdpi/map_action_gshare_dark.png | Bin 1313 -> 0 bytes .../drawable-mdpi/map_action_helicopter.png | Bin 272 -> 0 bytes OsmAnd/res/drawable-mdpi/map_action_horse.png | Bin 325 -> 0 bytes .../drawable-mdpi/map_action_monowheel.png | Bin 282 -> 0 bytes .../map_action_motorcycle_dark.png | Bin 288 -> 0 bytes .../res/drawable-mdpi/map_action_offroad.png | Bin 264 -> 0 bytes .../map_action_openstreetmap_logo.png | Bin 530 -> 0 bytes .../map_action_pedestrian_dark.png | Bin 334 -> 0 bytes .../map_action_personal_transporter.png | Bin 305 -> 0 bytes .../drawable-mdpi/map_action_pickup_truck.png | Bin 249 -> 0 bytes .../map_action_sail_boat_dark.png | Bin 369 -> 0 bytes .../res/drawable-mdpi/map_action_scooter.png | Bin 297 -> 0 bytes .../res/drawable-mdpi/map_action_settings.png | Bin 1337 -> 0 bytes .../drawable-mdpi/map_action_shuttle_bus.png | Bin 232 -> 0 bytes .../res/drawable-mdpi/map_action_skiing.png | Bin 404 -> 0 bytes .../res/drawable-mdpi/map_action_subway.png | Bin 348 -> 0 bytes OsmAnd/res/drawable-mdpi/map_action_taxi.png | Bin 319 -> 0 bytes .../map_action_trekking_dark.png | Bin 377 -> 0 bytes .../drawable-mdpi/map_action_truck_dark.png | Bin 297 -> 0 bytes OsmAnd/res/drawable-mdpi/map_action_ufo.png | Bin 421 -> 0 bytes OsmAnd/res/drawable-mdpi/map_action_utv.png | Bin 392 -> 0 bytes OsmAnd/res/drawable-mdpi/map_action_wagon.png | Bin 328 -> 0 bytes .../drawable-mdpi/map_action_waypoints.png | Bin 1186 -> 0 bytes .../drawable-mdpi/map_action_world_globe.png | Bin 527 -> 0 bytes .../map_arrow_to_destination.png | Bin 2579 -> 0 bytes .../map_bg_point_rhomb_bottom.png | Bin 1712 -> 0 bytes .../map_bg_point_rhomb_bottom_small.png | Bin 975 -> 0 bytes .../map_bg_point_rhomb_center.png | Bin 397 -> 0 bytes .../map_bg_point_rhomb_center_small.png | Bin 207 -> 0 bytes .../drawable-mdpi/map_bg_point_rhomb_top.png | Bin 1114 -> 0 bytes .../map_bg_point_rhomb_top_small.png | Bin 516 -> 0 bytes .../drawable-xhdpi/map_action_aircraft.png | Bin 489 -> 0 bytes .../map_action_bicycle_dark.png | Bin 713 -> 0 bytes .../drawable-xhdpi/map_action_bus_dark.png | Bin 463 -> 0 bytes .../res/drawable-xhdpi/map_action_camper.png | Bin 372 -> 0 bytes .../drawable-xhdpi/map_action_campervan.png | Bin 456 -> 0 bytes .../res/drawable-xhdpi/map_action_cancel.png | Bin 1281 -> 0 bytes .../drawable-xhdpi/map_action_car_dark.png | Bin 453 -> 0 bytes .../drawable-xhdpi/map_action_edit_dark.png | Bin 1542 -> 0 bytes .../drawable-xhdpi/map_action_fav_dark.png | Bin 1887 -> 0 bytes .../drawable-xhdpi/map_action_flag_dark.png | Bin 1457 -> 0 bytes .../drawable-xhdpi/map_action_gshare_dark.png | Bin 1644 -> 0 bytes .../drawable-xhdpi/map_action_helicopter.png | Bin 391 -> 0 bytes .../res/drawable-xhdpi/map_action_horse.png | Bin 590 -> 0 bytes .../drawable-xhdpi/map_action_monowheel.png | Bin 437 -> 0 bytes .../map_action_motorcycle_dark.png | Bin 495 -> 0 bytes .../res/drawable-xhdpi/map_action_offroad.png | Bin 437 -> 0 bytes .../map_action_openstreetmap_logo.png | Bin 942 -> 0 bytes .../map_action_pedestrian_dark.png | Bin 568 -> 0 bytes .../map_action_personal_transporter.png | Bin 469 -> 0 bytes .../map_action_pickup_truck.png | Bin 503 -> 0 bytes .../map_action_sail_boat_dark.png | Bin 637 -> 0 bytes .../res/drawable-xhdpi/map_action_scooter.png | Bin 464 -> 0 bytes .../drawable-xhdpi/map_action_settings.png | Bin 1746 -> 0 bytes .../drawable-xhdpi/map_action_shuttle_bus.png | Bin 388 -> 0 bytes .../res/drawable-xhdpi/map_action_skiing.png | Bin 705 -> 0 bytes .../res/drawable-xhdpi/map_action_subway.png | Bin 572 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_action_taxi.png | Bin 483 -> 0 bytes .../res/drawable-xhdpi/map_action_train.png | Bin 1519 -> 0 bytes .../map_action_trekking_dark.png | Bin 671 -> 0 bytes .../drawable-xhdpi/map_action_truck_dark.png | Bin 452 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_action_ufo.png | Bin 804 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_action_utv.png | Bin 685 -> 0 bytes .../res/drawable-xhdpi/map_action_wagon.png | Bin 630 -> 0 bytes .../drawable-xhdpi/map_action_waypoint.png | Bin 1227 -> 0 bytes .../drawable-xhdpi/map_action_waypoints.png | Bin 1410 -> 0 bytes .../drawable-xhdpi/map_action_world_globe.png | Bin 1020 -> 0 bytes .../map_arrow_to_destination.png | Bin 4602 -> 0 bytes .../map_bg_point_rhomb_bottom.png | Bin 4557 -> 0 bytes .../map_bg_point_rhomb_bottom_small.png | Bin 2578 -> 0 bytes .../map_bg_point_rhomb_center.png | Bin 739 -> 0 bytes .../map_bg_point_rhomb_center_small.png | Bin 397 -> 0 bytes .../drawable-xhdpi/map_bg_point_rhomb_top.png | Bin 2727 -> 0 bytes .../map_bg_point_rhomb_top_small.png | Bin 1231 -> 0 bytes .../drawable-xxhdpi/map_action_aircraft.png | Bin 727 -> 0 bytes .../map_action_bicycle_dark.png | Bin 1083 -> 0 bytes .../drawable-xxhdpi/map_action_bus_dark.png | Bin 688 -> 0 bytes .../res/drawable-xxhdpi/map_action_camper.png | Bin 503 -> 0 bytes .../drawable-xxhdpi/map_action_campervan.png | Bin 644 -> 0 bytes .../res/drawable-xxhdpi/map_action_cancel.png | Bin 1468 -> 0 bytes .../drawable-xxhdpi/map_action_car_dark.png | Bin 695 -> 0 bytes .../drawable-xxhdpi/map_action_edit_dark.png | Bin 1827 -> 0 bytes .../drawable-xxhdpi/map_action_fav_dark.png | Bin 2381 -> 0 bytes .../drawable-xxhdpi/map_action_flag_dark.png | Bin 1672 -> 0 bytes .../map_action_gshare_dark.png | Bin 1890 -> 0 bytes .../drawable-xxhdpi/map_action_helicopter.png | Bin 580 -> 0 bytes .../res/drawable-xxhdpi/map_action_horse.png | Bin 821 -> 0 bytes .../drawable-xxhdpi/map_action_monowheel.png | Bin 594 -> 0 bytes .../map_action_motorcycle_dark.png | Bin 706 -> 0 bytes .../drawable-xxhdpi/map_action_offroad.png | Bin 611 -> 0 bytes .../map_action_openstreetmap_logo.png | Bin 1435 -> 0 bytes .../map_action_pedestrian_dark.png | Bin 857 -> 0 bytes .../map_action_personal_transporter.png | Bin 646 -> 0 bytes .../map_action_pickup_truck.png | Bin 722 -> 0 bytes .../map_action_sail_boat_dark.png | Bin 949 -> 0 bytes .../drawable-xxhdpi/map_action_scooter.png | Bin 659 -> 0 bytes .../drawable-xxhdpi/map_action_settings.png | Bin 2167 -> 0 bytes .../map_action_shuttle_bus.png | Bin 572 -> 0 bytes .../res/drawable-xxhdpi/map_action_skiing.png | Bin 1005 -> 0 bytes .../res/drawable-xxhdpi/map_action_subway.png | Bin 871 -> 0 bytes .../res/drawable-xxhdpi/map_action_taxi.png | Bin 751 -> 0 bytes .../res/drawable-xxhdpi/map_action_train.png | Bin 1787 -> 0 bytes .../map_action_trekking_dark.png | Bin 1001 -> 0 bytes .../drawable-xxhdpi/map_action_truck_dark.png | Bin 675 -> 0 bytes OsmAnd/res/drawable-xxhdpi/map_action_ufo.png | Bin 1277 -> 0 bytes OsmAnd/res/drawable-xxhdpi/map_action_utv.png | Bin 1038 -> 0 bytes .../res/drawable-xxhdpi/map_action_wagon.png | Bin 879 -> 0 bytes .../drawable-xxhdpi/map_action_waypoint.png | Bin 1403 -> 0 bytes .../drawable-xxhdpi/map_action_waypoints.png | Bin 1677 -> 0 bytes .../map_action_world_globe.png | Bin 1592 -> 0 bytes .../map_arrow_to_destination.png | Bin 6734 -> 0 bytes .../map_bg_point_rhomb_bottom.png | Bin 8538 -> 0 bytes .../map_bg_point_rhomb_bottom_small.png | Bin 4781 -> 0 bytes .../map_bg_point_rhomb_center.png | Bin 1257 -> 0 bytes .../map_bg_point_rhomb_center_small.png | Bin 543 -> 0 bytes .../map_bg_point_rhomb_top.png | Bin 4689 -> 0 bytes .../map_bg_point_rhomb_top_small.png | Bin 2073 -> 0 bytes .../drawable-xxxhdpi/map_action_aircraft.png | Bin 933 -> 0 bytes .../map_action_bicycle_dark.png | Bin 1432 -> 0 bytes .../drawable-xxxhdpi/map_action_bus_dark.png | Bin 894 -> 0 bytes .../drawable-xxxhdpi/map_action_camper.png | Bin 647 -> 0 bytes .../drawable-xxxhdpi/map_action_campervan.png | Bin 846 -> 0 bytes .../drawable-xxxhdpi/map_action_car_dark.png | Bin 857 -> 0 bytes .../map_action_helicopter.png | Bin 738 -> 0 bytes .../res/drawable-xxxhdpi/map_action_horse.png | Bin 1021 -> 0 bytes .../drawable-xxxhdpi/map_action_monowheel.png | Bin 783 -> 0 bytes .../map_action_motorcycle_dark.png | Bin 945 -> 0 bytes .../drawable-xxxhdpi/map_action_offroad.png | Bin 808 -> 0 bytes .../map_action_openstreetmap_logo.png | Bin 1926 -> 0 bytes .../map_action_pedestrian_dark.png | Bin 1114 -> 0 bytes .../map_action_personal_transporter.png | Bin 862 -> 0 bytes .../map_action_pickup_truck.png | Bin 969 -> 0 bytes .../map_action_sail_boat_dark.png | Bin 1234 -> 0 bytes .../drawable-xxxhdpi/map_action_scooter.png | Bin 908 -> 0 bytes .../map_action_shuttle_bus.png | Bin 791 -> 0 bytes .../drawable-xxxhdpi/map_action_skiing.png | Bin 1247 -> 0 bytes .../drawable-xxxhdpi/map_action_subway.png | Bin 1132 -> 0 bytes .../res/drawable-xxxhdpi/map_action_taxi.png | Bin 929 -> 0 bytes .../map_action_trekking_dark.png | Bin 1266 -> 0 bytes .../map_action_truck_dark.png | Bin 836 -> 0 bytes .../res/drawable-xxxhdpi/map_action_ufo.png | Bin 1767 -> 0 bytes .../res/drawable-xxxhdpi/map_action_utv.png | Bin 1377 -> 0 bytes .../res/drawable-xxxhdpi/map_action_wagon.png | Bin 1187 -> 0 bytes .../map_action_world_globe.png | Bin 2197 -> 0 bytes .../map_bg_point_rhomb_bottom.png | Bin 13574 -> 0 bytes .../map_bg_point_rhomb_bottom_small.png | Bin 7394 -> 0 bytes .../map_bg_point_rhomb_center.png | Bin 1848 -> 0 bytes .../map_bg_point_rhomb_center_small.png | Bin 739 -> 0 bytes .../map_bg_point_rhomb_top.png | Bin 7254 -> 0 bytes .../map_bg_point_rhomb_top_small.png | Bin 2986 -> 0 bytes .../res/drawable/map_action_ski_touring.xml | 20 --------- OsmAnd/res/drawable/map_action_snowmobile.xml | 15 ------- .../res/layout/context_menu_action_item.xml | 7 ++- OsmAnd/res/layout/dashboard_toolbar.xml | 42 ++++++++++++------ OsmAnd/res/layout/favorites_list_item.xml | 13 +++--- .../layout/first_usage_wizard_fragment.xml | 2 +- .../res/layout/global_preference_toolbar.xml | 14 ++++-- ...global_preferences_toolbar_with_switch.xml | 12 +++-- OsmAnd/res/layout/grid_menu_item.xml | 4 +- OsmAnd/res/layout/home_work_card.xml | 12 ++--- .../layout/list_group_title_with_switch.xml | 12 ++--- OsmAnd/res/layout/list_item_icon_and_menu.xml | 14 +++--- .../res/layout/list_item_icon_and_switch.xml | 8 ++-- OsmAnd/res/layout/list_item_import.xml | 4 +- ...ist_item_single_line_descrition_narrow.xml | 21 +++++---- .../res/layout/map_context_menu_fragment.xml | 2 +- OsmAnd/res/layout/mode_view.xml | 8 ++-- .../layout/mode_view_route_preparation.xml | 20 +++------ OsmAnd/res/layout/plan_route_info.xml | 16 +++---- .../res/layout/profile_preference_toolbar.xml | 11 +++-- ...profile_preference_toolbar_with_switch.xml | 14 ++++-- OsmAnd/res/values-large/sizes.xml | 9 +++- OsmAnd/res/values/sizes.xml | 4 +- .../src/net/osmand/plus/ApplicationMode.java | 21 ++++----- .../net/osmand/plus/ContextMenuAdapter.java | 5 +-- .../activities/FavoritesTreeFragment.java | 8 ++++ .../plus/activities/MapActivityActions.java | 6 +-- .../activities/actions/AppModeDialog.java | 6 +-- .../plus/mapcontextmenu/MapContextMenu.java | 6 +-- .../MapContextMenuFragment.java | 2 +- .../plus/mapcontextmenu/MenuController.java | 4 +- .../FavouritePointMenuController.java | 2 +- .../MapRouteInfoMenu.java | 4 +- .../RoutingOptionsHelper.java | 4 +- .../ImportedSettingsItemsAdapter.java | 3 +- .../osmand/plus/views/MapControlsLayer.java | 16 ++++++- .../plus/views/MapQuickActionLayer.java | 2 +- 240 files changed, 195 insertions(+), 178 deletions(-) delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_aircraft.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_bicycle_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_bus_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_camper.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_campervan.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_cancel.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_car_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_edit_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_fav_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_flag_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_gshare_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_helicopter.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_horse.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_monowheel.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_motorcycle_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_offroad.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_openstreetmap_logo.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_pedestrian_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_personal_transporter.png delete mode 100755 OsmAnd/res/drawable-hdpi/map_action_pickup_truck.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_sail_boat_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_scooter.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_settings.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_shuttle_bus.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_skiing.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_subway.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_taxi.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_train.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_trekking_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_truck_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_ufo.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_utv.png delete mode 100755 OsmAnd/res/drawable-hdpi/map_action_wagon.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_waypoint.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_waypoints.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_action_world_globe.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_arrow_to_destination.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_bottom.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_bottom_small.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_center.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_center_small.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_top.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_top_small.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_aircraft.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_bicycle_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_bus_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_camper.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_campervan.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_cancel.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_car_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_edit_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_fav_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_flag_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_gshare_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_helicopter.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_horse.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_monowheel.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_motorcycle_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_offroad.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_openstreetmap_logo.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_pedestrian_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_personal_transporter.png delete mode 100755 OsmAnd/res/drawable-mdpi/map_action_pickup_truck.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_sail_boat_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_scooter.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_settings.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_shuttle_bus.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_skiing.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_subway.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_taxi.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_trekking_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_truck_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_ufo.png delete mode 100755 OsmAnd/res/drawable-mdpi/map_action_utv.png delete mode 100755 OsmAnd/res/drawable-mdpi/map_action_wagon.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_waypoints.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_action_world_globe.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_arrow_to_destination.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_bottom.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_bottom_small.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_center.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_center_small.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_top.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_top_small.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_aircraft.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_bicycle_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_bus_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_camper.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_campervan.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_cancel.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_car_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_edit_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_fav_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_flag_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_gshare_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_helicopter.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_horse.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_monowheel.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_motorcycle_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_offroad.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_openstreetmap_logo.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_pedestrian_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_personal_transporter.png delete mode 100755 OsmAnd/res/drawable-xhdpi/map_action_pickup_truck.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_sail_boat_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_scooter.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_settings.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_shuttle_bus.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_skiing.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_subway.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_taxi.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_train.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_trekking_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_truck_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_ufo.png delete mode 100755 OsmAnd/res/drawable-xhdpi/map_action_utv.png delete mode 100755 OsmAnd/res/drawable-xhdpi/map_action_wagon.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_waypoint.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_waypoints.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_action_world_globe.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_arrow_to_destination.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_bottom.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_bottom_small.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_center.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_center_small.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_top.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_top_small.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_aircraft.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_bicycle_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_bus_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_camper.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_campervan.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_cancel.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_car_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_edit_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_fav_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_flag_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_gshare_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_helicopter.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_horse.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_monowheel.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_motorcycle_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_offroad.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_openstreetmap_logo.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_pedestrian_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_personal_transporter.png delete mode 100755 OsmAnd/res/drawable-xxhdpi/map_action_pickup_truck.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_sail_boat_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_scooter.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_settings.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_shuttle_bus.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_skiing.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_subway.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_taxi.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_train.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_trekking_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_truck_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_ufo.png delete mode 100755 OsmAnd/res/drawable-xxhdpi/map_action_utv.png delete mode 100755 OsmAnd/res/drawable-xxhdpi/map_action_wagon.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_waypoint.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_waypoints.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_action_world_globe.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_arrow_to_destination.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_bottom.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_bottom_small.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_center.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_center_small.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_top.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_top_small.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_aircraft.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_bicycle_dark.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_bus_dark.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_camper.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_campervan.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_car_dark.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_helicopter.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_horse.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_monowheel.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_motorcycle_dark.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_offroad.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_openstreetmap_logo.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_pedestrian_dark.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_personal_transporter.png delete mode 100755 OsmAnd/res/drawable-xxxhdpi/map_action_pickup_truck.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_sail_boat_dark.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_scooter.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_shuttle_bus.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_skiing.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_subway.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_taxi.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_trekking_dark.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_truck_dark.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_ufo.png delete mode 100755 OsmAnd/res/drawable-xxxhdpi/map_action_utv.png delete mode 100755 OsmAnd/res/drawable-xxxhdpi/map_action_wagon.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_action_world_globe.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_bottom.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_bottom_small.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_center.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_center_small.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_top.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_top_small.png delete mode 100644 OsmAnd/res/drawable/map_action_ski_touring.xml delete mode 100644 OsmAnd/res/drawable/map_action_snowmobile.xml diff --git a/OsmAnd/res/drawable-hdpi/map_action_aircraft.png b/OsmAnd/res/drawable-hdpi/map_action_aircraft.png deleted file mode 100644 index b49ffae59e4710d9d590a51d8074b1f25f01dd6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)3(TvpoPKQqNpf2}EJkac{q|5vV)}sW1iCm&B-XX? zX}xPLux`>y8q%rX9@G+pqF^(9fvwKXxPG^HdI#nez|7~UvN#_t^Qk;P=U zI~TE;?A{bg*a{STW#&s`nima>P3Q|Q_m-PfN`9+M^i rsW_NCCRR~%|Bt?-J2gejryf>+p3RY$e$ES=00000NkvXXu0mjf0a5Qs diff --git a/OsmAnd/res/drawable-hdpi/map_action_bus_dark.png b/OsmAnd/res/drawable-hdpi/map_action_bus_dark.png deleted file mode 100644 index 0e72f04116edbcd1fefd42b23c7ad940d42ef9d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443 zcmV;s0Yv_ZP)UqK~#7F?U(Is z!Y~kq&s7IVHwYWh4cZC10voiQfOLYgL9;>C3DOOK3CIS7369r_e;5PyC2>%Y{79$Z zk2}9y9OpumxMP%L5;JGG%wcb^+*oF=m#ATlu?_4`DfLgWfS@I8&%@d2STqy_sW?6r z^##rg9*@Gew(^KtQ@fAGpvE4XT^sa?Vj2;My1Mow4Gho)=^uTd36exfNus1oQk3XO z2%W&OndIS__LP*n7Nx7lXR{AJNsgZT1e=){!*J@K+!^~7)J#8)&)gpLtu4(|d&~Xw?pVTndSE`&6H16<=zh1w@{ERtl;z8-LFoE;|q^RPJMy% zisQ2its8pxH5dB6s2fW`%o9W}WE(t1MVI;9;{!BwB-DYnggVeZ!<#8&rR4VM%}rNH l-FbyA%y0d@S5hKzV~$oh-4Qt84~PH&002ovPDHLkV1iVezv}=1 diff --git a/OsmAnd/res/drawable-hdpi/map_action_camper.png b/OsmAnd/res/drawable-hdpi/map_action_camper.png deleted file mode 100644 index 08f6ec1d26a3e863e69cb7147daa183e9e9ed2eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hIoUP)`5$pzTpxvM&xQTX?j?fKkCvXJWpl(3pl^@i@FBI`dp1T|zpm`-R05A;0 zFx#M%O2{hZkGk_Q0>#njYfXZWQhy9goL{zPP1eA__~w2$025e+Qf3#+da#(9yw zv7Ex_-+OZ@S%xK0PL)PNmTofkoMvjA1R)^Dd2e@=4r`8$5la^9e9FkWR+2q!7k`F18eiJ0ZPN?R>>L09002ov JPDHLkV1fpVkO2Sy diff --git a/OsmAnd/res/drawable-hdpi/map_action_campervan.png b/OsmAnd/res/drawable-hdpi/map_action_campervan.png deleted file mode 100644 index dda219fe4c819a5d961a42c2ac9237a6ffc95687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)cNJ&{mXM?bJFpXD1=@k>Ks&&96-Ool5=}yMcxHAOKK7jj z7D9+3k;t1Mr5wRB*j~C>!Nw*Hp^KsTgN^BNK4CN1$a8!J`w>DMZh8>V)MI8{k=El$ z(D;pV*eP}`PK@g!5-O0-Z#ixNEfv!(aQ@k{- zIi;LWw3T;0n$DbpPo|e`;GtQVoO0N$=x1y;;cy>GGxKs6q h-|$^%Mk0|eI06n9?o#bjkO=?)002ovPDHLkV1n3Evx@)# diff --git a/OsmAnd/res/drawable-hdpi/map_action_cancel.png b/OsmAnd/res/drawable-hdpi/map_action_cancel.png deleted file mode 100644 index 718053c4114132155bdeed5166b4ec9a9c3ebef6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFqdV9M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWnQpRyp^1XIrJkXw znYpF8j)D=8uWw+XZ)BirU}P;hnz$GU<>cxGNoetEGbD4HO?c1bPDEK5ysE6UGR0Ee?xCKflOm>HNE zrX-o@8d{nq>82!`00SY>)Kb?XF)7v1(!{{nEX`C2sy~I?@Y4r6N*|P1kP;6}2$&*4 zOn6oRa^RUMH4m7Bihx-~y*KS50|TRqr;B4q#jQ6p{&O`e2pl*5X4L$5zA$>u#PYjYb#Z8ngnqg*wj*TJ7)q z7II7?kagBmb*l*uPi_cV`M)ZB6;SWfx-KkLDru=ts?_S*hhZLj6ZQ8mb`LqVuBTIR zn!Bbos}^S)lS`vl+d`(q1rY|C4vH%#aZl!Y(p*)TXyIU|aY`#@O2Ryesr|N&?yv8$ zST#Od``swDh@XAgg}3gX%ntvEdB-wuPTBUWGM{wc7A5+XX0P8g1Fe2D@{S=lBcVm%Q~loCIA3dxDo&W diff --git a/OsmAnd/res/drawable-hdpi/map_action_car_dark.png b/OsmAnd/res/drawable-hdpi/map_action_car_dark.png deleted file mode 100644 index 66d4fb6ce8d7b82b92943c95fc29bf8abac2155b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmV;v0YUzWP)2!`1=iHKP?b@(JEhI9y_6*v4jS|#I%{AFO*$e8Jd#w*+%neGQfUNks zJ5&(mKdnZiYmFFSv>PMy#m zwG^6&lci?Dey~&?e!_>d$iQZ6D1rOf!&p#dHKdH_yJpaNCOacLC;LJ^>~lqFGF~em z-W6iou7bWxmyZoJ-bCLb7K1iZzw(AYwq&L@!Tq=9papd+iyU1)BA-F{v(|&=aH8~E zGOk&#)Lx)$XYzTBeK+3UY7SaZ|AEa>$B;8PW%uo!9#kqRYYM*bRl|iTW!zED)DHfD oH)&P3P+R^jrm)&~I-NuF2lDFW@p##negFUf07*qoM6N<$f(Sgji2wiq diff --git a/OsmAnd/res/drawable-hdpi/map_action_edit_dark.png b/OsmAnd/res/drawable-hdpi/map_action_edit_dark.png deleted file mode 100644 index 7a84c52ecc65fa55709daac1682a0e9805248eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1379 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 diff --git a/OsmAnd/res/drawable-hdpi/map_action_gshare_dark.png b/OsmAnd/res/drawable-hdpi/map_action_gshare_dark.png deleted file mode 100644 index 7ea5f3bbedc7b439fae8f432f2abe53824c7d5a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1439 zcmbVMZA=qq9Iv>sjh7f5nL)o}zws%k%+*Rmi5lg}9U~;{C3Ke=+t_Lk7 zpkooDP8XFqvM?hk5M3t8vcbR&9ZJUA)F@=ihizsoOa_u=FSsqru0Yv75I^jayXW~o z&+q^Hzu&>^tc>W0xCoU>6>Z66Y|6Sh_&y!3eDA6n8O|(Fq`n zhb;m&!19%4gCJR@TJ3Y&9kRo^jp9U)nhj#q0gqSFR;iLx174OZ0W#zSMQ*_a&tAL) zLvG##?$FYr>zK6s46 z&;mp*F~N&YIjq?bElL0))Ov)&br@tI)wmwh5qKh`!EghL5h$idFr31Slm>^E9$2v^ z@h-~7Y+bUYNG7;gmc0~;`u%>jU#k|SA`~Y{62&yAMuR8_#8)ZEYyc5_n?ei>@Ntsc zE4xJj3No@zv0OI6il>Vqc)V8YGO^%WN|cf^G{AaMT#ca~PcW_pv`@Byf8AIS?Xy>U z0crz2v0UPmdbl=)l$G2)-cS&zctdTM+)7c{Qby#;JwT8xj0sk5)V!Ogcq7IebS@)8 z>U0J~hm%^wsByXwputI&ck%?lxe(7v`Z_(SCpB~$gA?gEZZ?p#RzqTRy1|GMcp7a8 z=~@Jz%nBR`*>)?owdOR!h?|X%)um_&u(BxGMX@y01=+=-Ec%K?FGSN&f|cdmLQsA= zSfj;|86deU0KZidJ4ZNh! z|KH@Hic@H?Q~uLAp(CXogWKgfP=w`40)jF=k}@ZyFw>?|t?IKdY4*VQbfa|(vtz?o zvjcCtUd=lc_d;alu7o7Zu`W|m%3H1ckGtZhq;=^{m?H%7o#ulNI}NlFq&v zGqF(|wp^ObFG%_%oJ*-bUp@9)tgWLRJw1P|W6yi^)X3(rzfw>4k2Yt0`Px8Z%bpD1 z)wM|xC%mgaSjB03u4k_qq3cVU58s%@|JdmIKDVCsV3G8N&J5%JqJy0;{!|+_efhc1 z&0o-E&wN+b-NpCEds`=vsnKImjskRK@P5MIb&&&o7mwz*wM^X3xZTh@eWm^9xwQ>& zWb~Rpzm;oeqVft~$r%4-ycv79dcW{MlUrl|=;NNDchU!%;&1(az@8bTezXE;2!hja9C8{`!i?kcZ}OEQ#?Idb7o!ZqYuyhT0V3BNF4EL?t$_3)_vV| w=c?O;-u!a%Y-T8r!+Znr==qy_Q^TTEO}j=9$6aZ=7yM;f%vsEZ^upSI0Bax;SO5S3 diff --git a/OsmAnd/res/drawable-hdpi/map_action_helicopter.png b/OsmAnd/res/drawable-hdpi/map_action_helicopter.png deleted file mode 100644 index 525e2c99da8e0e883381b53fdf8d15e9b968927c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v5!3HGx4t-t*q&N#aB8wRq1m=J+quN<36QCet zage(c!@6@aFM%AEbVpxD28NCO+!m@4fgvRD=o*g4G0>Q+bS^ zL?^VJ37YaT*m&F0`xm;BJzviD@)lwJkUU2{`rx#$s}}v3vujpVtK3B8`Mt(Y4@#e? zED(PDU}uii^VX2Eo-gd1^3me2_bbq@LJLwix R{}dQX44$rjF6*2UngBnLk3awb diff --git a/OsmAnd/res/drawable-hdpi/map_action_horse.png b/OsmAnd/res/drawable-hdpi/map_action_horse.png deleted file mode 100644 index 1aedc777c7263ec68861fdb7d6f43dadb50ed33e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 525 zcmV+o0`mQdP)r%-ae(l@)}~P^ zV!Nr`O6@28avD9yzu&Xn1lV@6ENfA1TU;HHpqX1X6YA6!+dyC>J8TA&$zeiVa}8 z(DfGXA`Wl10JHlP<_mdD9UvUerjp#feyvs;BMhm_v!lIvVpf4`m%v!2QtFsl`gRHS zc^yuvFH6h`<_G7H>Qhf*hMTELb$I=X6`2}SceeGQ-vE^U`NH^A-@jyYMvbT|Sg8MF zpvZLb^Wlfov$XJ|Lp7yk-#uHf$<)voGP5gS?#XQ58S?=@M%tL5s7KgLagbro*a9X? zygZ_A;LlI)x@imc*?nRNOJvELnCFx;8)+)|XS=|X_t^AY<9FrTu@(FR(V{JrWuANI P00000NkvXXu0mjfUnu26 diff --git a/OsmAnd/res/drawable-hdpi/map_action_monowheel.png b/OsmAnd/res/drawable-hdpi/map_action_monowheel.png deleted file mode 100644 index d40da7364153be425653a3bf1b917a1f4c668364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v5!3HGx4t-t*q&N#aB8wRq1m=J+quN<36QCet zage(c!@6@aFM%AEbVpxD28NCO+n8P4F=lTi$BbOX*7qC@K>K5gU`Sq0XK}ScQOsTZGN3iFG^)i!g z-FvzEVMe?ClUY|>i{Ef%+Qd9R=W>2y2%}8l`<6cwx5no?3WQ8J!g+MB=!#p0Duqn^ zcc&c?bmZdIR%|`PHBoNy$4{EqW1sZdJvmVLJR{*?=KP??i}q?XH;3}h7rwq^*2Lp# zkvT7eO3ZyK9whtOvfsM4?W#HVJZH|@>H7MU)-3<=Y~@3Ki=%f!JTHAaB@p_ebwi5v za-qHxA9j0X@Oy9bbe(tZ;wIl!pGx}dv-VB+XX{ih>NZ3AzKOBQR7bAbdB0Dc>k59$ cGTXG8`Q^j?;>Y#RfWn%=)78&qol`;+0Gaxlk}@5PB3$1R}0kvr$TIU~X{83g!mg%xg@S&&1~LR!n2eUDueSEbEAzWMhvG zv5X$C6i*|0MT{|`VLIBRe&18<={>`@n z#!DGXHKO@;cG&7AWUgC^1y`bWhQr_d5@Ix4um+T@^TRR2PNc;&Vl@|C-vdR?#{Rhk zXlW1h_<=NHHFIt%V*?xTbASXc(9F20J_)VbTNDsS18JJO?nP137d_uiyP}!B*qKJS zWS>64k1p3TLG!s^RqD*GjahcHGn;W`ZOCs3Fo`A(? zAkd)N6NnhmC8ZI88&9Rw6-mdqB`P$p87Vj zE_j>=hmWLq2Ij$*cKFQ3ST!|-xHje#R6_`=FQ#MWCs47gzB^Swbru%jMq#aE_>aWe zAEO(cI_zJ{pm^&hc={yM~`Tzg`07*qoM6N<$f)x#&mjD0& diff --git a/OsmAnd/res/drawable-hdpi/map_action_openstreetmap_logo.png b/OsmAnd/res/drawable-hdpi/map_action_openstreetmap_logo.png deleted file mode 100644 index a1a2c1b0611131334d788fdee612a7d32b47fce5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmV++1K#|JP)DJ769?adJNO~T>XOdn@;@xfhen`4A zGoBlB_ovaGevCo8liaTHl)HbG^eQ#Fi^%{700!IpL_-23MdhzJ!N{2iQRoEH(Ywc*~I+1V^8KDhg@4S91e z=`4pJ#)3;9CB0cdc4cM_k4KU)L-wgLAu+Cp$cyIgOI#h1{js0`a#VZA-O0?7VF12P z-{*kco7ury_-;D5a9BJP+VdskqDgm2pUmu{ybK)#d~JX~{#T-3)PmQ+!GXx(O$55O zb2Gz>gXQdF6}eO9%aFn=Tq*s?Og#Hg8QeWbVpS4)#B&h4i3#Qie^SEe?u4_>M!4CO zq@FUX~G4 z_e?fTfvWq|MZZa!(lL7qlIN7olhmQ;NsOGW^}@S$3Dls|6`tg5s>6}HBC^MoroEMf zrq#B(OPK03g|SKF5Ky)}Wy1%U%ep2;8zPbSV}PcZ&*~H%D9B4Tgs(I6$T*S#K$M|u zUAu%OvNwQG=)B52W2iVGo7=ID$Uaq&=g6J`p*8S{P_ca>y&ps{LWNi0=UU=)?Gm!$ zGS3{K-Uu$Xs|9(aQ?bhIsht9f6VuTw(F0V?sjM+2WLxo246@8AcZUa*nqor-ci#md z=2^}@cb_`Vlua5MwhLR;sUAh&DzHrQ5z#j&u-gL0wLnAiDNuxp^V+6IbLwF^n)d=m z(=PLwZ&DH>1Ir}_!dEUM$|VMuALX>t9Iw*lM_C-nQ!YQs#R-DhT%0UQLhmwn*>3;u fr*^seO~(EU&LM9!)h`w100000NkvXXu0mjf)2Dv@ diff --git a/OsmAnd/res/drawable-hdpi/map_action_pedestrian_dark.png b/OsmAnd/res/drawable-hdpi/map_action_pedestrian_dark.png deleted file mode 100644 index 6220bbbfce9c30090c0c327a1bf10f46367f53c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmVQ?51}8qe}gxQxnJ4 zJzdVv4sazgLWm{BmZGItAvYwVq}Yo?w#bRBkcm5ZaDy-`EaUg^Ae5*t!&qMwMTeZw ztJ)~9jr(f}PYMKt8y>@}BL!asm32W%5kv+x# zDfKzQ5cVcd=jH}c$6P)AiBmSQ%13r#l<-j#z#?mdFmL1ZS$%4g_j0Axm@b9|5{i0I zuK$j~QrH^;aBihK?OBfiIEfPf$K8=Ap5t1n1JjK4wQ`QA4v}ybWo+`$Ty~{WH96x_ tsflSK5~m(r82;iNUAwo;=`7cm&kvd~&2=IgB(VSh002ovPDHLkV1l;a&o%%6 diff --git a/OsmAnd/res/drawable-hdpi/map_action_personal_transporter.png b/OsmAnd/res/drawable-hdpi/map_action_personal_transporter.png deleted file mode 100644 index 4a981fc92d02ff3ee5528380ab9ea830b4b8ffe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk;P)LSP@WAWNu!e`fg>aQAg)gB4Rc3G!|B>-g}y;w3E&7vXUvxeRF5TqAnhx}3BP^JIAbrS3a@)YPqDY)z|$Zrd@m<`g@$P)_3r`%lY%W zJKqr%E>_5d2IY-PQ|kXJCF$LH`aQ|5({@_*Ns@D;Bguu+b~Y&ES(4m&z$R5+q|`dG z;R}E}06UV)S)oV{9#GO3fTsYnAbHGzT}`PGs1<-s09ljF7RMY=7P{{cLRZ4y9Lf}m zLYPf>7L;`^6{dVYgzB^>YJoDAbG|jGOnjSC-U6snsSe&Q;ju)w^85tw4B*~-+>Bk; zXAbIt>o=6WW2j9(0iEaVg?Ue8y1yjy@!{d;B;-MlHtWGlsGe z!@yGOk>tK4j*^Of{%OdPY}9y*lG|pWSCStkKs~jJe5M97OKv-%Jx%hhXE+-J4h7@# xIcapcL^aPp4a%cZcdL61=d^23UbU-K>K8p*v?bJ7zlHz+002ovPDHLkV1kqzwDkZ0 diff --git a/OsmAnd/res/drawable-hdpi/map_action_sail_boat_dark.png b/OsmAnd/res/drawable-hdpi/map_action_sail_boat_dark.png deleted file mode 100644 index c3af81852a2f191af14953d1785a2e2eab73967b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 zcmV-C0>k}@P)_0HC8PtdgQNqK4zz-h4on511MPq;IZkl}LP&Jr0o^Fc)(JX^4$Lq??oJH?1@xNipohbZ^@gsPmvug> z*xVxG)PWvzthp6b-#BxfJ_QP^caATxH0H)c-WC%6#px2G?P z7VXJx;Mte!1aAd*YKQTWykT}rFalQ#!DGs7U-lqpEGVXqZo|b&*-nY^klZ1I@0$6> zcz9#j=aj^F?0t>iQ#DfHDf=vthKlH~&ZmY@m9Ps;u(YO-=1@#8(FR(nm2;t+V!yJP z+4RrJ-UAgvs(uxkKeT;jz*qYXx4sN0Ii@^H|by_R?d45CRXn!u85Tc4Xm9?-7!3)0B9}dm+)1>&P zZEK@Xchddf**;}$@5?A%|9Mv6yj}lV)CXfoZ({M{VCLI5N&Wzc6(pi$t2Z0~0000< KMNUMnLSTaAa{tZ% diff --git a/OsmAnd/res/drawable-hdpi/map_action_scooter.png b/OsmAnd/res/drawable-hdpi/map_action_scooter.png deleted file mode 100644 index 53a50e2a406d9856b2f3e7666b0693ffd4a2646f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmV>&1xrC|~7Cl*U0(dl!5A~(1~=7=ghzBeolrR$~hqg$*2gBehCwsd)v z=DRVb#*&brv^N9!KE;xdfDh*s{Z^g2?uv z+m>?!^Om=i5AjYj4G|S9XyXx-;283)xL8n0{=)ODg`a-Pa+#$~ku^;VEArjG9vP+6cmFEi0%mtn$0#kKP=mN*8&qb89^2 aua_@+On9B3CR)}20000)&K@c?2xsWZ?*0kt5eysNW8ER?KmSolLR*U2^HOMIdvWhYfV5g5O z2ZewW>z4O`EC_m`)?4gW-L70lkbQbCs-qA2{2Cg9vT{OxPN)JZ%!6{TWI^s7K8CC{qTV@fu8OGKQNm5=U{Gp$rU8!ov@uc~itP zrjT_E`_d!}QlYAT2E&5Epgw5O%St&$&@_$VBu0{`rhx|PB$W%HQXn;Efdv6U@%mM- zEWuHW952_X7DQt@6oSw1ay>IF1%?x)r3?#kevHuLn9moDYfw9&7J`3ijHn$buJZ$| z5Cr5JMbPR|mKpuOV8$t-j1YMg=XijUWm^1Z1E5hON#VGGGK(2Ni+>0&{@?sz z8YwK=EdObq*pb$e(e1NQ(1d5h1SD;O6m3-YymKN4f=17Avex3z)&7>VbJ>DdzFKxM zjjBs*{%~#6xrOYRGpPmp6Elm_3Qe8O+xVFWkqHxid9`Wlf+e0cZzY5EX|o+YRmRJY zF16-f{$pF-NQO>AS}A zQTg+6y0({#XSZHZ-pJo4X5T*)=k<(Hm7}E-D$|bMF&`F>T+i-(y`9vhT8}*iNuJSL z*4SU_>+2sC4`D6iI8(}~z9Y9P*^kac)+Sk4Cl8R#Vep=56R|&0UA<}Y`Gl}aZz{o)bvX~M$&(n)_N-WB-gxqC(l2b+U2;! zEN%3Z9GJ^zeOHO?>2!5D5+~g_R5FHYOyS#?737a2vb)3E6zqOOsde4jDV^W6_ z-?1flwlQ3CU{!S_zM;is&sovAQ(sg+9o>IAJ~F>{DUrSMr}4(Qf7UfW=+xcpy*m%v z)EM@|y4%n|rrP7)m}I+~-=9^lQ+!kIe|_>s-psqF`g5lo9Pbu@hdMFtUPRv!zy11` zd(ZLW0(X)dx&dD>mjAxX;Cy&(jXv*T^32n6Ua;@Y^pn`6Po&fL7PnhR_0;$Nx}r6= wcf-ZTge%`~pHq9dq^7_)9q9_kC zeq*gIkxGh>$+B!qQebFfhh-%-w6JLiGB);k#>N`N;Z1Ep&!v^rED^aMt6_|=lxyk( zg*BT^9kT{GM;s+zY(xWtuVRqq2*ZZ!PsRo}<&YXnV#*;gmdunR)Y$mVvqi^`TtupI zxLujktFhBdgKh1aU-6hg(&Y<9O@*SSLitNm1~K(v=zEMr=iWRUHpY)1JKu#}FWVul zSp9)MBh_g-mGDr-8rsp`jvnpfM@2ov(z%OG5NF%X^#!SPx@Os?O0B~MXNbKQIQ#38 fgv8QO6eR^03X|e%2riJT00000NkvXXu0mjf+i#v^ diff --git a/OsmAnd/res/drawable-hdpi/map_action_skiing.png b/OsmAnd/res/drawable-hdpi/map_action_skiing.png deleted file mode 100644 index 48b4f4226c3242eaebf9ba0b53c3a42c6889094f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmV+>0@?kEP)K{NH(Awv>Uh^v>P}Zq#LNxAuc{+2W&9u58gYDFWG*q z4;uh>?OInEY$Qa?=~T(>XO?9bh!J&E&{4xeQ6D88SG`y}U(o#=d_Mev!o8YI4$93$PXzFjSGI;LcxY*#07@})ZX(}(%*Ke oNcIK;@Ym=MeW`xIu3a1J55u+GrZmK79RL6T07*qoM6N<$g3F`umjD0& diff --git a/OsmAnd/res/drawable-hdpi/map_action_subway.png b/OsmAnd/res/drawable-hdpi/map_action_subway.png deleted file mode 100644 index fa492562fe0878c6f7412ad1451333e6dfea8761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmVk`b~&*r4qMtk4ZgCulY>8>Aat&%#wLYWofwA|mmmlN0&w z_&T4B0ob@>l++OsYZ@xDM>`gdjp?m@lYNq1lu{kc0SPI{&SY22N0S{P2U8iFXl^uF z1yiA*11`@Y^nB$JRMMbfc}%}OQ?Fgd6FZOd2iyj;L0(uds?we*xoP-U>sQ*Uj&qpJ zQQ^>&4f1_ibE4Wva07`@>?xAB<$}NF7Ubk^0=YF87@~wsa9D0HV_!8E=RYO*t=(@7n7utGLbQZ`XiRw+t+PQeUF^G~jnJ(-)>DKGJv@<8@A zfPZg&9m(VMk>odsDn)SxWRjc%!<-zSq~)XEM`@*`qOO?HA6BH6iW2QUi@8(3lfAk3 zYW#n5>}kGt=AOt*rGv{C-QCDzDpooEt;a|IRuzY9G5gI3F_34^2=WQz?)_QIw;0)n g=Pg*JsExbk2hgt-Qbf+5YXATM07*qoM6N<$f(5(KWnn*5 z@d%k!i};+BpGgB8jleTG)jxKMFLd@X_+3%ct_O+L6BvB8IzW2e6qS36;JIO{8 zwWz{xoxj7M%#=qUPTh+7OUa;5p>N6A7J7IxM;`;#aroLyqWaROrkGcRVbf<&FHy9< zqzC~0Fug>zrLPeBLnws)AO9jnQORjWd>h+GIl}RTdYvlxTbP&_fnP98CWDa&3?={o N002ovPDHLkV1kDr+yDRo diff --git a/OsmAnd/res/drawable-hdpi/map_action_train.png b/OsmAnd/res/drawable-hdpi/map_action_train.png deleted file mode 100644 index a636843f8dbdee922b5a007388ecb1fa9929d876..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1398 zcmbVMdrTX394}$G2}496PWA`4n{(B0y+?bcJt?EKMGBNPrMmhY_xP1wXnV)qK?@0H zSTN#aBoH<vmAd&I>DqGV(WYNnZ>FcKDDC38CCbH*!B^bfK>yyWip`~H5P z&-eYkE_clXnd$lI8jU8?Sz-66>)nZW!!7D}Uen*NE_W#opHeIMl?W{Xjg=D^069Z+ zJ@5dUYiXPS#Trd&Gw<~&K36rx3Lzbx!04hOQDtj1#XF)R%{Bl9Vn96~w!l}d=)+EkP zdFD zVJM-IW`rii0;`@bhY%87u2schc_mS5%Frk+qPPx2L!m@mOK4f~fPdXs6D@mNM1XpL zEHp{1S`Yu$Bw5Yf%?%}hsyEb5iC2q42kipe6arzzX}7@YjgI3viX{k)CiEO);sA;0 zaRY&vm?9P_0)`?zMl&qQ&`CXO@g0N}!?E%*!ek?G++i#;ItUx7H)|rd-M<0a_6xuOI}IUEmG~iXaCB5wh75RX0G|U3{1mBJ#b7GA&1K z2NK^5xN=DdK}&h2_%(bW36s%;(I$lPGbCa#8%V@lM3@nbU>U&S1W*C+3ZMJG`9oEw z&_uKRr+Jb`YDXrvtD~R_tHT7s>I6yZsARmlaZsa4+2^!dz0v7-|GCOkYwpwfdmc)E zf}so7eL6n<*#+6>%%AySoI2QDm%Y1m_gKTW0HA|Gm~r2pdadVL!Ec@0hUAHOe`mbC zdt%b>f6_mBz)oSKZ=>L(O+vz2XAB?I%LiHD)y+j zQCB)+>iKC)ro+8H^qnwVS5W=^cy9h{FQ16A zu3Y6N#*g8P&BzS3Jzy*`e5{;0Gel|&?%;nO80>#*(Oq)!)Q_>-F3p2i&d(iGrOSQW zJHE!xG(Yl2Y|s3W*{Pl@qXX5mdoM-eXOBF0n8|r8wlgdH*kYbGbzt*U`6pRqmX(}o z{M+_?ua^G3O?$L=Zc{}@?Ah}V_sk8qWnh})zq~V@@?Os7#GlaVsId=~)jjnO=mhl% diff --git a/OsmAnd/res/drawable-hdpi/map_action_trekking_dark.png b/OsmAnd/res/drawable-hdpi/map_action_trekking_dark.png deleted file mode 100644 index 8fba82e7842cc4dbfd72774d0e8ddd8ada5f18aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)Ba{u&P7s&?GXXGxD>crYY!o|*6VhvWcfQz) z68~7TVt_mU9b?Q4TW(4U8pD{N0EO*jTxdLjjyym*3v9js8n2)ueTe#fP?&1Mr(jHM zq8C4M0+LnX^vmI`pPpn8*qBiCl zQ5bg!&G88BnX|sewiJ96HWI(Z>&4n8-gEtclgzypnF-~f2}Nk0w#9SK2bj=1xUS~J z8NvkbHwvFA|6{b{c&N0gPiU%BPxe|dg>r`y7f8h>v`;RCvo?v1yK6V0`I?6BS+MOv z4&4r96zd-W(nTr3rojzQMJ%79G!^ybjWssf?o+{+Li#G$mG}HG7`Kr6EIr>3c5e}S zZ|Zr9hwlyCe0n$TX@Tcoa)?Dtd5&_5p}GDK=FGof_TbSbWu^Fwf4z4#^r$MDvGbvzJb4D{UhA@%X|Z6$mK0Ipl-GR000082cqJ2Zg>owO4^C z5{U%HT04ev`yDneS^5%ah>}AC>Hs~dbLvPSrViDaKunK1$X|!b8ai@CfkQQsN!Q=u zE7T5}DQ&50t{lPcnygQLD3c^H>f9jA2z3f&&|2Rd^5$eh@S$M{H37#4Dk@88pNTz$+#Crn6X8#(F!CEna*j7jMQZTZxb25Qm~nu`u$5V2oEuTmv;)4rizqStfx~Q!H00000)+jEP)6&HNNL&V)8{j_zd+hIV ziGsKsz5j6HVBw-{^djTo<~b+FHT$KJ6|E@|b@qF3kUSi>g9NpC^=R9IJT4C!qRGL@ z5VlU`z%6$FrifxH5g^K`kpKNE3;wi-s7opjZsZ{4lUG{$%B9s}3^wHlv4VpvSmgv3G1gU2e%6Dk^kKz|&NWFr8c{B#Q4beQ%1Dn$j9M@e8Uz VrSsj2q^1A>002ovPDHLkV1isx3M>Es diff --git a/OsmAnd/res/drawable-hdpi/map_action_utv.png b/OsmAnd/res/drawable-hdpi/map_action_utv.png deleted file mode 100644 index 7c34c8c3266b072cd355b7f468e8aeef69f7182d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmV;#0XzPQP)x|3WQ1e`vVpS!BPiA(a*i=Zav;C_+;It5y!Tok z1|XBkWTqhE4)vTNfe&Ha7wD<1sS1=x4V93_0k**Iv~^0+EW}n`=}J%_&CsXw{~8M{ zisE8_F3zJptc~4e=j?c~pS&#fG!(D~JY9RQ1R`;oGUuHWo75Yln%nEw6C5!LogWNC z+5Y48QX&+?kPry4aR(G25t2ZCahx;984$6Sp`bY&%H1j6owPs^G6e78X0LC1Ox!>V z4wGgu9m=Ap_cW%c9RH|?Mn3%;5PAk!j8LBZ( zgVT>^j7p*zGi3ZgHZd}mpvPr;jpm%82eIcUYwn{)Q<9-NP)6~$Y!yv>PGyJ&l)R*g uuS~>Nnk+!OGGj{lKKXFlLNk-eq;dxdw}iK=^|3+#0000T5Ph!$IsiH#6+kKgDgY{g966CxKuQQ5qyyl_jT||K4szr+=vlMY%Gnib8zBpM zB}>Wf%=pdQ`I#8t;s7yW1XX$~BUAs6DKk3&a8l}-%WX*RTIwXllQCsxX8`oHSziFw zBtP0HrDXR&IZM|7#MTSR7b!M?=Jq98pLGS70(A@E!VPW#eERQ007pOU2OMuC?|%i9 znLPlQcQw|~n~_|0u~jqW*Yn)PNJd9NKP9 zVu~d<+=;31QZtJkRTfW5uTh|4<=Ue@Ou19dYplYel&PAL5`~^J3U~#-9@W3KGk5A6hi@3gH@)Fpi1I#&`hZT$L*qSEhOh=mOC$TJSC%=HT46PqcC}BYoT|B zimv%79GYRd9pPI3{AGnXXSeL#7k zmh&-FJCc*wZm!V^@l_=FL{e<_T4tuXUk+=k)k=;x+3!9x)AT7Ly~o?w6Q3f&WUJP* rH`a_FqosF0GBq+)%0Q{yAYINMA#CVbG#I{b^jNRb?g*( zM$LzCh>Vl=&T>2C{SkXOJdAC6iJ?6O`kvrSuc zm*VCL@pVC{R4Va`9LK?&05nY#L`je&o+9{g#UrrFdtrY|gNZ^baD3umkBv0K5?&%H zj(WNsg6rq=JBq!qnJAhvp$dHg#6`h%qqrLAkQC5+H+Dsb#T6e31r*|?z@qgi_qWJ2 zcY7O(fYcj(B5-I?;G&7GB^P-lXQnuM6So~(F9Re4s6rm8YLYJlMdmeBvU!wHY;nL6 zRV1k`J-hKGQ!(X%p{${RBmfy&iKJo5Mq(%_XA<)r0oW}%*^Vnw%qfvGC#2Lr4aV7jLD${n2HvW-0J&MrQPvX~H+ zWSO_2rtqq!BzPz%B_6?&1b_vUq=mR9-~PY(6R1-{)GYsLp4JiV$Vl871-jW8Cgjlx z3h1bO?)99fV|F8F4i&49O0V9&P5(N(f2_0C`Mv&a@1d6y=-jzG-%O@Y<+5DRqyF@` zpPg>2r)$T)KK>-^{Mp$2sQZuD^NSllTqqw7I#b5x2gM9A`SA4XTg-0{5--+k**@jz^)K5W n^mI=Z$QKG^GuA{S}^K2uibkS{S|VVar5@@>{ssqqVaV6 diff --git a/OsmAnd/res/drawable-hdpi/map_action_waypoints.png b/OsmAnd/res/drawable-hdpi/map_action_waypoints.png deleted file mode 100644 index 47f31c73e9b86971e738740a39576a089d79fe74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1302 zcmbVMTWs4@7&ajFCY2V@)-g8CxC~ZQ$Ct!TY?2l?PS7!n#~6HMDn7^?&mtps8S#AVaEtt}5*Cp3trsR)4>L!b#>rZFBkPMg9*wFfNO z=ltjV-~WIA&HH=0x7XKgtV0l_KH4S5;rfXC)>Ogo56I!eaCy*)^g6qYl#`b%fC!3_ z1ZY%~`av8>%5ZK01QFz(AvMwK^v0gzWkd5wu8yamnGlU2!S;eF$r<3FNzkwAA?(KI zr!Z7iLf9TAM#juANUL2V7T7h?osdT|GN)keZD_E-LjxLcB($Jqb(=4Qu(Dkq?%iVo zL(3{oCWI}M>W%fFVZ#C_<6&``q)*Y#U>vnU+f(UHcQcXuS zbkwydC5=HRgh8guA!ueSwrW_nR}uwNMieBIpgbg@X>MF)ZQF^1e`&0#Z6}6JK*WJ< z3|ca*N2<93hPk`5BUcf!;dfdpEQ*vB4S7%lx)T*c7`*W)s>1siMM)-E7N=R(hjXNl z!#Pf&aTZX3k&`}yLB>C@SI;{9YkKc_TiG5h+fjE7+)RJCZJg zif-Qt#MIcgDD>JU&m zEki@gdFItMI0Q&WPEkq{C#597=@g7V-~}A+qZyL)G6BU8VEoH?<^Sf7fTRewS^m>J zl_S`Z?sjz)ps+ejK!+1#!BJtcpT0qmyV$5GBnnr4`|i|^yQK}Ma~H)!#fJyX#fY~;`G$?^!w8->1_Pta|^;IXA#}_+?&N?GdK1TuLftgUbCCN zXn3JY_+xbGz|G6KKL7fu{c{-0ZhNm-{XwK9-LNyzSD4JdeTxj`OMl+_to`U?^GCN_ zO?n>}QeWl9UMI(X?I<*UNkvkR9lUTECj zmAML9HvPD}=K8x6$A7ldt>aGaC9#xwwi>j)^5v(WJS_%)x!gw0tsmHObLp9Z`)+&Z zu6g&wE+cs<-{W`n&V(nk+_9C^Xcbq(ULdd&+s%WHJoaxy6@;_;= B!DRpd diff --git a/OsmAnd/res/drawable-hdpi/map_action_world_globe.png b/OsmAnd/res/drawable-hdpi/map_action_world_globe.png deleted file mode 100644 index 6ad36c2b3ad1ad76c1cf6d5dfa32791878182004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 825 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 diff --git a/OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_bottom_small.png b/OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_bottom_small.png deleted file mode 100644 index 75de2bb8e1a22649e13704fc4b8e31c59cd1e450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1720 zcmV;p21ogcP)GYtqZrDRD zf&oQMJ!npz1VtRYEC^lQ)n+e6t8|f=e&u^UGBe9F&Kss_CQ03kEISY;nM~gK<^Md- z|9M^lePjpmk@2AafjULxKcx_17zQGU_y5WE-ayDq1vu~e*tJ52VGtOi#nUiMGho+X zT>)VTtO7m@fLC^$2Fx9c{+m%usfdB^oJxdva=XoNN$)LS^_qt1^ zlDAYU;alM0HIC!dlP6DVa1q1VBx(!T2?*x`obkN?gff|o+wb@LQmNGE`}gmk({;V@ z+-oTYBSI!O&4*ud)IyR_h;c&RLXU`rvo6YJ7A$VEKo0hR7pLPJ* z%DRy=u~>}W*w}DyY;5=!78b@^Dbq?RQ544~CnujlPQ_v|2%lyc1}Ft<>(;ZjL2U!F zdkoL>pa^>T@+JBD^=o!*Z7q;ar`syy1a;xUg+F{gU-8VDGt%bfram+@WI*+`O7ONo znM{TVhr^y~wc0UE-GmR60$bpDUe9DQ0A#9T4_yNY)R~^1h6FZ19q^fGG|J@j`JTDC zxl@M@9ZGd=w@o)fPC@u)W@dix>+375uCA(9$ee+!HO&4rIyy>~N+sget5=>{trom@ z@7`}TO%Hr1kd?*7y+d~>j4A*&{rye|b;FTmP zc>n(W7bHmr{tb|-s(+t2apE&clD0UGt1K=q0)Xk}xbm8T@Mp8kS65f5t*tFrxm^Av znM{6h`0(NR4+YXRt#tS9-LEfSzWmhd^{#w zQmMFQSq^HN)_d{dMgHi~qd#{G1uzQ>3*X(iapO5fQR{BEyL9m2L1koQL`kJmV3H<~ z)wH+g5Uw(K*wWGx0sd1c6v*Y}Wd+4jlR-+_I zauo^%)>5ixc6Ro3E2Xe9>2x|vlH?{uQRQm2TI=ucS97^sJsyu6LqkIv7^AJ@J0~^v zBRE@4m59Y+5IQ;-47ycS_2|0plV!O#nM|G@85wDW&jtg^6nc7k3bHIKEXyh$k4N)* zy?QpAH781Ig1{gxfpFQwmn5DF6N!Xban)*-ESJlSq9{zUSOlf~x~}(3Pfw2y4-fxH zQI!AIty|w-zkdBMfT1X=!Z1wD<#MU{e7??coMxF}vog-j6%5fncG%P+IgUfQT#lAy znNn4iRulz#oR?u3FidE~q^hcQs3cjID+dl7kl(y{qeP=ojizY>Iz0{%C}a(Orit4N zq~-WwH9VMy&F`%<2@@k&fu?ChE|+s5grEW$mSx?ru+QgHWLZ|r<+2iqMCzc7H3Pvz zbv$1;&DrgNZ0*Fd2m%lF;NS>)+~VRQ>@r|_gz6&$fdKSAGZdjv2y#VbS=JoJEJud7 z0ECBr$Gw~52x|+Sy~O~OnNx7FSS&*L$XqUm`uqD4!!SC8XJutYkH_N(rbM3Sp{h(3 zoD#Wh$eIk#zB_H~JOD}*MH3Xls3;2Ia=DCbHftmj3G?Bw25e|{Hq1;j8t=xXMKsffTKmiOkkfz62USke?W+}a&d)jUi zTQ2IB?VnH$i79{iI3}QhnNG8C7 zWPY4M|Dm9&s&-{r9#cvWzx#b3$MLoA`?Ku&%fAgTXu>Iq;uJ#I{W+cUIF5TX5)^0w zXSRYP!GKoaYyt@abOjC^$sOnh94L}2kN^jUOx5QU?Oym?EhH0ddTb)POdCV}hgxRM+(}gzzlC10!D{rS#Et-Cn*@ z2%11&A%r`PO)0GL-L~z$!a4-XA*vPBG|efc^q4!K)BA62+a5HIr3S5(EbZbR`lD2MV+j35o*;${@jUHUTsv#TZ{=j88wCit%$8h6DQP zvdsXkxRV0=h{?Zs*x48ym_Qj+0ue~|yJJBthy}?6Sdh$*Gl&JTAejIQlKF84u^<*C h6JS9yKhB_x-vx80Jy@p4WmfMJ% zU}l#Ir2;Kr%qTI4fia;(AOS{=VuKVI6^aF#w)WMqo!JYW1!|h+PDC36DBaq}7}ux= z7xW~e6>0|Rj~L??^g zOq2?v1_6{BV*-6anJ{M1gi1%kDVCE(Ew}1#jaj8f^VKpQ^5LsbCUVQNZ6JLxM5)%?*d{VHOI-w=rU;3ai zAu-XaiN2ySzHD|Eck#hACcDBerYt2zSw$l)43}Ovf5Vu`?6g#-owCVkLJ0JnnSZ{1 z|K*fIMNw}M1aKIJX<-^iL zB|`dkYHA8O91aV{80&PpU$jm)O#z8;FviH~bP8oZ#M)8F48DladGn)447CP;(@gQ$vQbXiF0b?a70D`@A^2U2R~sp`;b^+}8!es6m7<_)&n z?d1l8fu5V28_pJ_tN}W7=upG*^75uDSFTL&*s%k?#}Um@sv%;!rAsgQdvdr^F(KWG z$HvC+nKNg$n9b&ehYuePufg2^Y{?p+{rmT~*Vfj~yWMWE23mPkAwYSm$U!L`H{>y< zOSe*o!%^V%dd<(CJ^OK80cve+ZLP1b58b$N1C9^?D4wFF%gvCclC-O3((>gNm7F+n zqQK|#8Ha|3hSn9JrlzKbP$*=4^ytxty1F_jk^oAn{z#{0`8iD9-jyb7r9H5&@YSnV z)bZoT%UPEF?Dcy8T33KUwmBM&CgSn?Vzd0hd5V5+ODxp+LjQ?J+44<0=D(9qBTkmggg?o{!w*1e?r zl5k$We2I@7Ig*4!)AS$Nf+H5lY=Hi94S8QPv$L~27K_Cxih7+*I5`0%niLL)laM?f&vavBBbWrB#F~`py;F?=0BOVX z=g)CxXQvh5Fbp%2Z8(_*xhBKFq(~%Ek1?k2-@iY-XU`r0Bu=7FP!H4XojZ5lHa9l|B+;aFK$Pkb{11K%gM)+2>C>kx zB9TbKWHRN%98Ca;>9(-2PzQ&}fq{WQdwV+oQtB}2CS}n$?REz`IyxZL0FsiysnXBr@p$08RSDh7VzG?oqUNOP2$|;pn%9YtbUGb% z^XARTj*gBcgittx3j##;_U+qjZ*OnXoZ{l*Ked3PnL!c=TtPv>cB9cqU%!6cfB5iW zfCOhYrSp{-ALDkrS*O!!gLSjBvoIlNWeCjR!$~>iX0ms!YdDk1w4GrXboJ_0e^*zR z2uXgdfWMh**RElg%T)#IwT6=qgG8tt!!X-fmPI_z|J~Em1CYQX>D+_6ySsI_Zr!Se zO@bh3YK~@IERAMKli>Y>2M_u@9uL%`*h=B1y1TnMfD;afQ6v({3!Ho!^u;8WWosdQ z_U+r}8yp;rz}F;gZEei(@Nf+*3WvjETGpJrb+L3N0icbFNF6^?gNQ-u4Eh&wrJ`rk*el8a0000< KMNUMnLSTY2Xm5`I diff --git a/OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_top_small.png b/OsmAnd/res/drawable-hdpi/map_bg_point_rhomb_top_small.png deleted file mode 100644 index 89e464a64277009a82a8e250596336cbf6eb389b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmV-j1ETziP)5p2(1D?CgeYseA~LXKU}MRIP$VP<7y%&|7!hKC0Wl;C zTNj2ZZ6)@SwnIf#L8wFXg^ADh*-mvRky4~!$1tEOx5V(hXAL%gf6W001s6Ejf6ex2dX{HH$I@A{bE=-w@2o%1X`a z^%hAR%H^_uadFXw5Tfe!`bRUUjzKdsGefGXM%`}r_3G;C6;0D60Kg3h0Ko7(&&*}jktG-k!)r&EvL{a>dPNxl{ z41)*;A@s`OaPVtuYh{*Y%K(6O!|SV5Do-@@D; zktT}Vr;EiRJvTSkFG-R!old{knz z)_fuoiLeNv8`S>({`ttr2uVr4g`!SRPhAre69c7E$!4)wPV)IY!5dl~fk?$*Fv!;H z^)OA-;@;lgukrD5^4h?S)9kri&JmBthibK&6+)Qn1Vd_c3~Hh<#xGnh7s_NZKgY(# zNJ{Yd_}D%$+;EQBRVvI~On4FF)cO|88& zl~A*Q*Xt#JdczPx8A7NM4957oSYWY>Y0Dxz9yWNH{CdrUNH@)takm*zJc(4o7 nOSPL&HzBfv6bDISANm&>?hXiy*aOQ l(0UR3>l3$@J`Waa=07Igp0hj5Kn~~)22WQ%mvv4FO#rElZ9D(~ diff --git a/OsmAnd/res/drawable-mdpi/map_action_bicycle_dark.png b/OsmAnd/res/drawable-mdpi/map_action_bicycle_dark.png deleted file mode 100644 index 68543a3a57a73f0bffda90492edffde03b202733..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-1!HlL zyA#8@b22Z19F}xPUq=Rpjs4tz5?O(AVxBIJAr*{QLoNz78SwD>9bhwR@>9rr0HmZF zgb%RoYE(98%DW&~&^+tjUZ!tR8e5;g++8i7`|Hys6NfLWCj>n^)3tNqjR4Q5)&Qcn<(P?X-WO+(I6gAJ_4CN@%>T^6-N&9La&>Dy lH;NM9deO?g?_0_#c^h9gFWv~|9H2KCJYD@<);T3K0RZvzXsG}I diff --git a/OsmAnd/res/drawable-mdpi/map_action_camper.png b/OsmAnd/res/drawable-mdpi/map_action_camper.png deleted file mode 100644 index 210a1a2c5badfbe12877fe0f08ce7e16676a53db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 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 diff --git a/OsmAnd/res/drawable-mdpi/map_action_flag_dark.png b/OsmAnd/res/drawable-mdpi/map_action_flag_dark.png deleted file mode 100644 index 67e9c04bc769e3f90e037ad0f5c171f9e59adf38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1207 zcmbVMTWB0r7@pnOutsB6A7Z?Khl!N7bav*<&g|@rS#z1$HY=SNw~H=)D0_D1Y<5iM zl9@?&5(+Lsp@mY5)dwGZt3^SDh$2|AUbdj14}uS&6x4_m@j*lp5oJA->_#6#9~_uD z=RfEF{{Q=Lb9R32==j*Xw_EyORS<;`W#-fOP+o`wI8iNyg%9b zaq7X;58cGpb5l2xosn7n^5)@o;vkqy)F%&g?@dd|W%4c0P6H<=0*r zIX|!=rL!+wym+=$JonBa{U|e*7(MsopEW97qkh{s@#)Q1-(8M>C8gq=_SQ^o{U3Nh Bii`jN diff --git a/OsmAnd/res/drawable-mdpi/map_action_gshare_dark.png b/OsmAnd/res/drawable-mdpi/map_action_gshare_dark.png deleted file mode 100644 index a8bf67e04c12240decd513b69a6850b93e451960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1313 zcmbVMT}T{P6rNS1twvah32Ixs9h;DCot+lsq(08bTj}%}Zz?2z^Mw#NJWY_CfN{ zfth>Hz2`gUJAZS2Wa#zg#*Rh|!Zb2l;VzC%3_5>|^oTLRoASs4q7y@Y!&a~;uCBk&Nsum>ZsJ32k zb;|^vMOm??+%S%q?u1|z(&;_Jrn8$Ulrpj;7f3otk%r;LwXN;A8Tc=aeYKtJbODkX z=vY&>it3T;s)AAOp6$p}L~O)iTSrBaCnZarGN9?Eq%e+df|{<0T8PqkHWwlUmgNbS z7J7&fqvQz4(1NTf8V6~$YG*$@o8aRKfuSXu>!;}iFT{Hofr|I@A&R48alVR8nT{)) zDy;g}k?&nB^-Qc7x1sD>cGj{ct6eaXw_MA~TLlo0gX3vg)lE+hcs1GyS%S9y9@GYG z%K+O+7WI7y@GO*t5Df{gSI!Zv!l{Iy@;O3~Lwt`wv#1vsd>60%-{g^q6zO%!e>$gn zgxb;D?#%%b_9h9MXnbrmCvQFA8ZgW!rKDK4bXVEj+KSW?zC*S1zNI7I`8Fi*VbkiP z%4Bcr;R^T)8-D!B^Ww!{sZ3h~xZHI0eE9=>a2_ZJlp}B7C?E5W*KSO8+s;K{v3{Y= z|Gsaz#=nKF{}Fxh;3_@x_l@Z3#?_VN_1UJmm&$kA78~YBY-0>O?N4?!UDAGQo@%*S zIU4=3X3nTw>hrCC8{NE;j~rTfcmX@x;{UUT?)oOx9-fP)2K~31zbuc|38w>VYj^Pb zo&K$_Prb3+_VE|5MX%JSg;#3-0_PHT_h%~y=Xl?8fK|)4pA3Pg(Q603$BvKvUTJ^G zvrjr-J~o!Tm9Lz!8oW_~m9G7Q4XItt;R}?C0C9t?yd1pI<(;^ng@8 zC6~CnO8-(|iR*a5KU}w79O-L$b>Mo3aqpeOn6Dli{Ajjk^QXv)_tQ!xhNNr#XU_ct DUB0fL diff --git a/OsmAnd/res/drawable-mdpi/map_action_helicopter.png b/OsmAnd/res/drawable-mdpi/map_action_helicopter.png deleted file mode 100644 index baddd20da4b2f8030986b6262cf03488dcf99d27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-1!HlL zyA#8@b22Z19F}xPUq=Rpjs4tz5?O)#rJgR1Ar*{oryS&MP~dSrXwi`OfGh8TM&2Un zmuzbuaO5dSUzw!vFzJ?1Apf2vZVx_7Uup_!U4OBhyJ3Zhvx;1}midE|OV8IeO<V#wTkoscb&*r(s2?s;Ap^*_Mr-M*nsD?=~m=_*ERcz=E;;m!%MEri~xa O!3>_RelF{r5}E+~v1aW6 diff --git a/OsmAnd/res/drawable-mdpi/map_action_horse.png b/OsmAnd/res/drawable-mdpi/map_action_horse.png deleted file mode 100644 index c9ed62dcc05c35597e98c2325d427bf02720345d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-1!HlL zyA#8@b22Z19F}xPUq=Rpjs4tz5?O)#Tb?eCAr*{Qr|jiDWFXMW?{b>&f-@_#0h9EE zF4Lf;X)Iw5NeucECf!p`X?ZMbq%`A)x|!Z5PyfK0Z?=)@_KP$RoMHC}hH5=`J%L3U} z#9GYHTk*a6#MGbbH0RFVd}+VZ@`X3Q7a8-Uq;)xOd|(hT@%Qu#ks?MHrZu{JV9R1+ zvtH5qPNcbXhoJC%xzGA+Zv*xRgyab7^Pf^s?_T8LciC>o(|e)XbYdzc7 RnFaJEgQu&X%Q~loCIBhmcc%aV diff --git a/OsmAnd/res/drawable-mdpi/map_action_monowheel.png b/OsmAnd/res/drawable-mdpi/map_action_monowheel.png deleted file mode 100644 index 1a0d4b4ca8d500077c486a197548bb900ea97997..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-1!HlL zyA#8@b22Z19F}xPUq=Rpjs4tz5?O)#^`0({Ar*{Qr*`u;8}PWSpSwW0WJ=zpoJ)BZ zjF=`LWJ_#L@a_}&SbAW=hb10jC&YixVOXHj@?qK2OjDV|Qi6RIx%XtNjlv;Jm zQ#@z#;ineWC(dwBYcbsOuvqs!o9Y@1ZKpGPPg^c?&eG_6{fuwgD!-eT8@uN423bc% zD4Sb8Dqsn;RbM_wGT`BSm463?#OCZc86Tl2zf*D5d_P0u6>9UYZfMc@*&TZC%Kt|% Z8AZCz8B2R@(EvJ~!PC{xWt~$(69ByEXz&04 diff --git a/OsmAnd/res/drawable-mdpi/map_action_motorcycle_dark.png b/OsmAnd/res/drawable-mdpi/map_action_motorcycle_dark.png deleted file mode 100644 index 4663d5eb5a7d168e39b7415981b26d59111d8a82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-1!HlL zyA#8@b22Z19F}xPUq=Rpjs4tz5?O)#t)4E9Ar*{oC%+bLHsEMoENs!FyhM77@K$LP zX)C6iEkfLDi;|99-(T~*;LPhH$Hm1{yV(9SxV}Hf_BQZlA-XYT8w%~d1bFrdbQ{Jn}GVHGUdh6Y>tm!2ap7~1kHs`bc zy1gKJ;S%p^-R&k;tDW~vFqbL`6l>a|GW(9&hpH2nGfE@&x$eI`!EnRt9|Z?~_6tv& gB!4wj>-Gruyf8JT_eaznSIY8^Pyue1)=s-7J%?%6Y1O`1&xRNfn#9D9X z9@gnM4!bOyTs~(-z{fMsaw0^REx!I!vB<`e;bWSMql!Mmb=9jYcJOH>FO2wF&S-F< zbTdo-g9FR!D>8zbpPsf1Zwjer?X6hHnA`kG;cB|wF}`VAT`zXaEuI8)D1)b~pUXO@ GgeCwZ@L)m! diff --git a/OsmAnd/res/drawable-mdpi/map_action_openstreetmap_logo.png b/OsmAnd/res/drawable-mdpi/map_action_openstreetmap_logo.png deleted file mode 100644 index 8283adb943a49c096a250de524bee0409ec57e15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 530 zcmV+t0`2{YP)c#aaFqFf?5Jgz?^G3gutl%YMk(m!xDKXQqizIrUM;l(veR@HnmSR7 zsV}m?NVQf`w+6jV1_W>T>{=F=34qFq(TtaE4cb1~foFb^FbzjUs0yzEC8DDLLNF<- zC16u2QVWj4T98pt)9*!Dbsr#6fUu%{K>r&&qkJ)ozUSbY2$JYM;2iBv(}Uj!qegl) z*MmidBg1gk$*8Ezc&oi$zGggcS3nw_m!k=!>`Q*7RnR z5`*=DLObQ=A6<9yNQ}Q%;O}SR=h`n9nRqF*O20~WjXvYp)l+y_W{;EmxrhBvT4G{Y zC1)=vcs*Zb^~1&moGeuiUd1el_EXkqpPT#HN3250wKn9NM#4Ct}|6Js; zQ(gf~>ko#{oV{jQA4g2{*6m?#0wxhpIhIvDc(;G`s#VTx8=K6HW(vJ|`tyJjQ+bp4 bwNv8CE2ptX$)?T)dY8e|)z4*}Q$iB}*_(e> diff --git a/OsmAnd/res/drawable-mdpi/map_action_personal_transporter.png b/OsmAnd/res/drawable-mdpi/map_action_personal_transporter.png deleted file mode 100644 index d2aca1284e02a944c4c03463707ca80172cde584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-1!HlL zyA#8@b22Z19F}xPUq=Rpjs4tz5?O)#W1cRKAr*{Ir#5mj8S=R9_bX7g=u+O%c-O@| zK;0rw$o(SkD>lPMvF`Aks%L%H?;IDf{JOlvlUqY^k@D>H>Jw7eSRQs8!oy3CF+K(E3RpqXZaH>^#ux?8}v+ANB!5t@mX5acUo3E=(c8;S>;g|l2ja{=C zGA-wAQ1dA|qFSeA>fk$JUWDd>2i6H^+t#*<>XdnTUAdIL>FH042l5dQoGRbV%Dl$% wL9+1ba^u;SJ5p<8bskQNab9`kTm*0an_70S?{eQK0)52b>FVdQ&MBb@0O;v*xBvhE diff --git a/OsmAnd/res/drawable-mdpi/map_action_pickup_truck.png b/OsmAnd/res/drawable-mdpi/map_action_pickup_truck.png deleted file mode 100755 index de3ea08585787dede3fb62d86ff2ecf46f7ee773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmVv3TVfW#V3dWu97a2&cLk%;2`NCsR8OgK<4tY zuO!j%0xAju6ztpp**l6^RCTKGzL!)~_sxOrcORGmpau3RN=`Qf^nn@9oBRU$CfiBf zIQAil$4(rE2XVG+PwHlW6Y(IWs#qnQ%-6tAuVDYM)yY*dwPq2XNWXISo zC-+R7)_hKNq9Lkh-$# z;<*O1TANedX6}5Z&F)X?gy!RoWBnRX?Me&Pr}6i%i;MWKd|!yvmKizrcHq z?wX-#z9m~N66g~KPgg&ebxsLQ02G#PqyPW_ diff --git a/OsmAnd/res/drawable-mdpi/map_action_settings.png b/OsmAnd/res/drawable-mdpi/map_action_settings.png deleted file mode 100644 index bb2cc220486b276b55f3cd40577c8fc4862de741..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1337 zcmbVMeMlr_7@u9yQ#)-BMeY>rZSDx`ZgxJL-JKcSc6E0>H*URcU2vla=i^;>(w!M+ zMt3zKyExjih@hfQx~t%#2!hL`FzUK%r9`9;39LWD6OJH+IO-4S40~5y>kqj<8kl+C z=Y5~w^ZcH#c`n|2x~{gl7Q?W*XiqqS)}y7jx(a>Qa{f)U9J3=SyH8KsInjhzr=m*` zM6==`Oh8c?A6bMQ7*;W+CR27Qc1Do(tXnMUxbs;9p)sr@kT*nm2--k`gR17ofB)<% z4phaD_j_Vg%m~4Z+B0FozKPzXJTWBm3Lbb6bmRqOAPa2~$?CFK41j$HxmOUEP* zc2w*kKfX&U6^nzAZbIO3dkLAMS>WT{w8!h?eWw6}WRl`Yh9W3l@U#mQ1NI&qc{7!? zkO+70`9hK(&)BvhkYp~GbLZOKx;aSFJkOI9Loy73Gze>4v&B52S;xy3!qAdU)v#4v z10{>1q>tKu95LMuA#229`-U}ZFHtCEWL`8#+D(z!Y$>iCZOcx;e`y@3Z6(JING71A zkD4;7NBVdfjBm?YkmnC?L z)RRb z;)SNyr6Vhs->qy8KY!%oU}J%F-m-xglT`3{ZLur$r{EYl>9RsUElq8RItCVFnr%fH>!eLzXoou`CZe}?3$}JMow{6h03?N+QOw94+kn{Drb$h zFYYR?XF6-H<8j``YR}ulO;d)`^;BfVb#B2pS|9Ga-CTHcWWjOx+t5mJ`fI0~ooo2+ z$AP6o8;!3V-mbn`@gx|FG+1BBVE!?RJv*>`=#Ai3%jpx-12wJjC+5#b{tkeP1){!w zJvx?q>*eLU7p?^-TVDEWW%U&0SihS5CIjwSU4JO@$NK}<5|fKb=Y`ik>00@;*`-g- z*S4(I73YH+HN~N)Hwo9$y)%nF%B$m*g}LvGzc{Z{&;9nyOsc5GXRq_qk&Q;W`Pj3Q dA2`96*y0PzRjnr@Ka_rE(MWIj!>)mI{{U4B!tDS6 diff --git a/OsmAnd/res/drawable-mdpi/map_action_shuttle_bus.png b/OsmAnd/res/drawable-mdpi/map_action_shuttle_bus.png deleted file mode 100644 index 6bcbc3eb9f46885a721b13886242a0a1c61046a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-1!HlL zyA#8@b22Z19F}xPUq=Rpjs4tz5?O)#T2B|pkP61PQ*QG%DDb#On-?0nPZYdyK`^B` zO0e!ql-#5KIZxP_wp-e>G@P?nSk$>W$a1q<#EN-8Js)UVK0mr*l9c15C1DG^?g@AZ z^)O#xNMXzH5f|Y;HX-E5KJkQx?eCU74sduKpXc}9BFRx^_X0Dxo&wbB1 X>s#sB7s|L8=nw`^S3j3^P6FkJi*JIFiwaAKl$$71#Cr6 zvK)~+a|j`8}tdi zn*!#+@7|pA3Gqe9HE9y(-qK)2)82eDmS{Cpi5avvCeG|N#$-8U&@o8ct_O^? zh+XRT&}c0q9cX|{oj3QZsDo#jLpZPME4?U+> zeKBjcrVBHRw^?`{ckBxIIO$mMH_`Jijcs;LyY^rSOT1$1v9d)Q5C-Zlb7$N_@hUAnzRdF qvDQ?-I3Cb=L3+>G^I=E7R5G3mJI(wiqPraEc?M5cKbLh*2~7Yl6^tGL diff --git a/OsmAnd/res/drawable-mdpi/map_action_taxi.png b/OsmAnd/res/drawable-mdpi/map_action_taxi.png deleted file mode 100644 index 2d6d8ecb8babcc8d29bd972d7ae4fd2be1b10715..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-1!HlL zyA#8@b22Z19F}xPUq=Rpjs4tz5?O)#E1oWnAr*{oCuj2>G7vbvo|`SeK{kPrb20;8 zfx$9{C1(y6Y*>&mxuN;72Vc-GyLD?$?|U;nMlbXK_gBmbs_Y#VM-9zSu&Tb6Wv%)l z&b7{9?y0HXmXorJ-oKOD#D3z&vMPtZUpeLy zb?2nTw?iAPi}!9QQT@$!Y3F8p#|7Pd%Rd+UoYHETz*yyZe^0A>@a7e57LIF+nKn1y z2+_+eX*$2&<@|e}i+W}3H)rfUaBO>GpXR~xJ>OWGp9V|l>{oisdP!L7rm2!XO3`%CVSOh{r$*mI%k{xXp#4HqBojK3&h_?$0N zpZ&~%&w>+MbdGEGy2i5`F?0T1*L-ui>=h}2=YLO4`L(|}t$MwDZno6j{0EG;QogT= T( z-U8u{$rfFC3et1le@L2jY+C?VV~hUIDKh%Ccl;HiX0V*uehDG z`iZBWZFJRS6Mf|Omh<&o+kKHgyB=43-Ott2bo|!WX>&dbT=q_S%dxKGQq-#EXEh~P p%~Ruk{C+*nBCuuMuhx%087?Y3*!}ZdLNL%L44$rjF6*2UngH}ocVhqm diff --git a/OsmAnd/res/drawable-mdpi/map_action_ufo.png b/OsmAnd/res/drawable-mdpi/map_action_ufo.png deleted file mode 100644 index 6ab64cc2cdc0aaff52862488c884f2f0cdd8d990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 421 zcmV;W0b2fvP)I;(8P|I=Ttfp=8lFM@}-MIaUI;$ubu^^Se zS+^*1OF1ZOCW*MQi?JJ7=oC7GPH5divEUo}fZm}yW6XojRZ^HE=t*h?F2ib_qzv5tz%5@Xj~~2SqKn^T z0dVXkH{LBncIs{pp|7q2|Ik|`L2zash2B_u0c{rE83*DyayB~$f3!=cpC{#E@aGJ? P00000NkvXXu0mjfdnmD! diff --git a/OsmAnd/res/drawable-mdpi/map_action_utv.png b/OsmAnd/res/drawable-mdpi/map_action_utv.png deleted file mode 100755 index c65fd59dfa2d094f5cabe6406bae48d5e10f8168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmV;30eAk1P)M?syR zRTVV_w#POtNN)2kB|QMR2T)ZpAdqwk;39Nx@EytHk_DNH9}@xC1VX?6M^2y&YzJTk z;Dcme)j-nx`RkK)mVujUS`_tGs!rUqKM?8i*@;sz1ue-)8PHO m)z(PTWZmJ9*1Yc7E&2ns0Eig`)kw4e0000h;|nM{d}EQMHh^IvYeRBbRE`UBfW_M+e|%q3*yrZ}jsO-U&n3_mAZY?1 z2sVrzfI$fo0FwFuRt<%#%Vs3U&+-z$;)Zkp{6<@H`;@Lr>H^qCVRx~91YxE6ImwZv zt57v5zaF2DZQTRtJ+jJxRDGzVDIi+wF5FEhuC5CMLd90000e~=OTuNn_R`ve-L1PG>nVaJ`TedJ+T<6L zU%hJ?tPX^ZZivDjd=_Cc5Pi@W1?P6)1ff3fVfZ{BER=$%;C{LGst?771(M(I`}=)9 z-~ZqII8{DA*ngm(qNu^*q*)>B{`mcNG^*pK6+&thARE#}&zgl5 zXo1DEk6@0XlIPrN4cAIv=??PJR*XrvynwJNDmT&!EN2d4+J>{PZ!pjA-e+hR7|e`Z z;!8mRHr&aj5Kb?ZtIpD#qXA~*OFGxmi2@H|i*9-Iex$byrlVIU`}mk+=ne$W8O)Yb zwbB$_Kp~{%w8A>PAkkSZEyzk%%MQ~bkvU%FM4sg}UC!vdNN+z3u@-{5UNI-OZ4t>} z8W;yU$2FVHbTgAi;VdU;n#S=WCyFdVu+gHAtrqJ?hq@X}7&)OEU>EsxtkJU30yY@p z=~f6{P%7;x_M`1Yk(6;QE8v7Q&v{-PR|g&83ViFvuIQ+`7(lK9BeW1Yq#pG{T{6kt z`whiF;*I`w=#rvX^Cof@Jm}-1X)xp_4P2m0G61%%D6FU`607l&#%dZ6Sp^DEc5DgO zZP3-T8$YY^qNHZb?D&K#2;-6}j45M^niU026eUgQa*KY1E#HA%+b*%a%`Lo_s~19O zVH8#on(ubOR0ClYHBdko3Z1IcU(C2ZK+WiAT&At4O&Gf8Aeab|M|bk9ySwSN2{&B?bmPKj3n8_Q1a&o%O}@+R*a)}5_|hp{^R+iJ)Qe^-L{9R z^WW$1?OEAuSP!tY`fcLY5t*fKU3fD5a-hAsT>ItZzTa;iPOXhyel^&RmTTu@nMth` zDjP#9zx@hFkEA}&U%ubhcJq%Xu77wT|6Qv1x;OPODGXdYJC$fZy!2vbS?yoBa{bCD z`KJd{eF}efG`3de6RG_|w(V4|=FXFLkkYV&k-b R>`eUED2|uS8)IjF_zxGOeX{@n diff --git a/OsmAnd/res/drawable-mdpi/map_action_world_globe.png b/OsmAnd/res/drawable-mdpi/map_action_world_globe.png deleted file mode 100644 index f12948b7a83caa8994a73b79c945ae6248020b55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmV+q0`UEbP)g>}|k^>s3 z0828Zrq;;~Nc#CxL6!YFCbuNm25_dHoOPJTx5R2Fs<ia=rXA&!6cdcl!_+% zUjWfqXOU`|>SzgQ8dvSi1%RCp$D+0*EtHLQ$+a(8A#K)sI~TQ#>QZgJkfzagM=~Y8 zA0R5RvKl1yzN`7B)3h`Sy0U^+GYxbSK;}BDa`vwPrfnJd6Tp9GcH{plz5(@K@)>5f Re)j+X002ovPDHLkV1k1G7zD8(kQ)_N3)#V7 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 diff --git a/OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_center_small.png b/OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_center_small.png deleted file mode 100644 index 63cf879a0d07ea6ff308f88e51a83c8f683ae29b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj(>z@qLp;3SPPxc=K!L|)@#GtU zyCzz6>$9#w0w$@ z&U_ECPtJGlE{f!86f-@N{ZQ$IfPsLx^Dc(Q9UPZfTLk=+R?S;%Q`}RSEjx=nV0*`H zQHKXAXJs!-&3fgW?Xd5^)`gzFZ;5RAM}EFza$vuzyNkiXGfDEnbN4o&3mH6J{an^L HB{Ts5hQCpV diff --git a/OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_top.png b/OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_top.png deleted file mode 100644 index af86889aa7689e0b41c1914c5cad4f0f1bc3f5a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmV-g1f~0lP)iXLQ)}Mq6-%;M8pC? zMHkt+P@&g@f+)&7grxJZ6Af*g$iz-6kIHZ$4n=64N>znHsJp77?mhSWec!oNg`rnI zuve}hNdW(Mf>Huf0sjGYpf*aXhlRy84?y zv%k5#E(wf{js2ulDlPN#^EB-0^Z69HTrRl2zW%$|5TXNsc!fe?a=YCRTCFyM5Gr3^ zUz>bBpR!mihA4{qLre%!0VXCUKHxZRB1tk$5JVUuRH%rR$6_&~-|zokYzWZ+Mn*2xuKP`)A__9!ESPy7=}f6c6P4#B*6<{czF0ngpk4G@!Xir=9@~- z^Vz>46bflck|gr^d^8XU)C^HG0ElN8M(^=>;vF3ww+NvUALXny&`toMEffl&Kp+6G zU(Taufd2meUshID?kpCI5a+88H$V_hr?d6o;NT-?^;HLp)4JZ?-ad+=l2)rV`HcJ3 z2bN1++11rm>*(mH`sC!~S1t?K4%9Lqb#-;=WHOn4b8|D<+1Z);j~3zrBRfAoS5Hk% zK?^0$&d#E>2&%b-pt#9oGN@E4?Z(E&ZFhG!KrkFO{T7Vu^z>9UIXOu@JUqlhp%8pW zY8t!%UCs#d~^s{(9zB$rfD=fFBaD$c8Csul@u zA$Gl%mKI&9RML38-cL@a^K0c9B!Dk1Ej2AKFB>zN%$IC7D~fp0T8ItN)YL@C<#Nry zz(8lCdIm&S$DyDEz`>-tPLUF*tGyhGO9^l=sjgF`1nO!phvHHK g989X~lvkg?KTQ^qKx0WCtN;K207*qoM6N<$g356Sc>n+a diff --git a/OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_top_small.png b/OsmAnd/res/drawable-mdpi/map_bg_point_rhomb_top_small.png deleted file mode 100644 index 99ef0f75415a51bdc6215a9e4a08b20150c04bcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i`mP)x3?A9C ztczN$_ThSb0B=J^xZm#=v)SyN*=n_B9LHUHk+?>LaLcmJGMUU*KA(REfSIOgk#4u^ z<9YtdO|n*?COCDq3{F%uXZeZnx=)@?KW!|#&xsVbd1YUAW0I>aonjWibkGgU$)9LiaN#ZET<#OkVM1q#fvg9I@NL{V!56KreJ?1P zOeRP1cw8rh%&(~^is9jKxEl-x@7KXS32b{n5QM{MH2Tgk%xpX!hbW~F0I)Ka&#-PtFf zO=K8GaR9usdes}P2{9Pw>}f4%)W`HR6Acwcto6Nb7@C1QS~=!GZOnn%m;<#j2Wn#u z{J|B(hIPE~{UB{=k4sqvw?C+noD|;V_K3PS$hn55<qc-Bq775OT>}`Aw1lpchpR8|r@+HG56aeo)fm;a;z$2?;J+Ru8{$2w{ zk$%UptfJOpY6Ly~Wvma3mT_!<(vGs8JDNbQ1EYU+8bB9nV;5VsF$Zd64%DXPnfSMU zy72w>hnH9|lm-shkv1Dz5=cKQ6s`HQHGzn>S6{8LzPmIR+ogKC2eHlWbqY7%&7=3!e3R#^%FJMPd_2pHw0- zv}d9`iUcj=mE!-q_<4}+z0pTNTVj?$L+~Z2UX*)r`2wDVI0K7x!TQ!Q_)0|CVKx0o zU}(s7koypEHOQGrgAyS~7ox1O*xFJhpx^CIv5)(RaOE=v|B80oT*@6w5uZ9+-+Ve} z2Xx0)8OdXl(GYy9v#nxCqe91j%xvg>r>RaA+k@h(mNpE@*L14VC~6`SMP&w>^F1XK?1V!j}UeTj!*?mKoFsyltt3WaaRjQ@fkt0v%bD=GTF00000NkvXXu0mjf9C0_y diff --git a/OsmAnd/res/drawable-xhdpi/map_action_bus_dark.png b/OsmAnd/res/drawable-xhdpi/map_action_bus_dark.png deleted file mode 100644 index 01e55b411b7fc8da46d304659421648d34d2d5a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?2=RS;(M3{v?36l5$8 za(7}_cTVOdki(Mh=Kyb5}7RU}@!*X!N_3 z7huKsRz;T8OhbBt--Mh8|1=!4E(-qEn=YYQcS&4nQ%`NW`W)vc7N3_baG6or+^_qE zWv!L&KMj|=E8py!zd-&)gvim(V{DH43v5FQ>&{&e-?GTC;qmr~O#B;{&nejbDtNJ% z(;LRT?O%M%Y!;jM)w1!cOfI*6TrrWygfr(v-`bP~nu==90Zw}j?Sj(UojYRGN;1EMwi>aF+e};!ny)rxz`Wc@z*9 zf74|0j;==mKPUP%Y<|-i`(T#EKZ%R}_BXCMuc+HOcXC|X(v=={`!Y4=TwAcSV(O#I zCWV(H*k{!p2whZvebU6NV~5Q?Uo;icP*wgqVbx9lSpshvbbr}Q_~pD^Vwb_@D!wa? z*{ZzhI{W`;=4Ia5cYIesW?pevo$T?#We>&6I{EJ&jM^jw41WesS3j3^P6e{F{Fa=?Ttp>CIbQ13x_Qj@)(qNOkBL9 zQCUE}fW<9=wHN%5bYQwQp<&yTP>t>H4{@n3;pNQuJwNnCxLxesuKA5g-Wt~ diff --git a/OsmAnd/res/drawable-xhdpi/map_action_campervan.png b/OsmAnd/res/drawable-xhdpi/map_action_campervan.png deleted file mode 100644 index ea08d90a4d915881fc106837030cf2c0765849f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)6Fxo@9z7{ za$5jJQ4~d45bwRkaGp+hw}rL2qwyR&me(W&Hh9@%*ci2OGRExk!5;z9B8SmJ-Rw}r zDII9yRYLOtn-4U&`W?t}Q@WYA+A^T7wGpMM)SrGff6Tz#6K7C?k^ z-pGMxixRFNz-F(xqJ(SABfG%eNPz&F3*3#A%pQOfF_V>{6!(T67z{{k1 z6bJg`egphWsdu3Wc*B)w<7ym$A8NhP-^jtXS5K#dLT0ZQlw+I;$<8nXEcN_g;kBgU ySqn44Ru3n27@tWZ=LgGKHuKW;6h%=K`FsPn6Nj5|r5Kw40000*ThMi(UdNYXx0aqe{LG9wH<7C zaZ8cH5Xz=LbQ4TSLqL~;5R6UR!+2<^TET>d*!QAx%P?=o_8(0M}_!c&PS( zCHvlU@A=Npch2#t{=V*AbuD!Wg6xX-2uZk-?pwP9eg_|WP=rgf9ZlNRkYJ~i6Xg+LqY@Za^$_;w z{33>`N(dWd5@aG50a>+Y!UO{oeJOcjMCKH%^Eou=@X&w;Y!P*|QQhL55LUL!!@YY< zU}#yz9tmL^L8TM@Xv8o9%6M5^CMg>Ab6$#J{ha?G>Vq;t1_&RClN`@<@T3o|JQ(z5 zDj7a0#45g^6vDE$o#P22pU->q9bUs6CMb^M2+~LRd^ps=t#REJ9bC6ss}=-c$)=jK zRYONzi=t$V*&z%@x{-pGOC&Z8>sEy*NEzXXIfC+%gr>Q9m9;H93H}XZOKmGPo&!V@ zSjLzs!+K;|t6<38qaC@5FdF^^Q-wtlM+HM3(|~Trg%AdByo##uG@~ez#Im@LWoeuv zX%6Q&#fP(i0*oxtAR{SNJ6qwyG#d#BEEk}n5sHe^;TRo_MkC>vpJ8HM{%92&*DYJr zWl;64Lf;i^;E`B9Vgk`N%#>k_R=c1-YuJXBHF9VqQm#7MHmK@~k+<62GHqln08>2< zl$dE~XqjhT-695sC0R<5Xq@6$30Gtqk{~i19uOr!aWvV%W*Dr3SN<=51PqFBo8>>v zQ$2zm>25bi0ScSL1avq-CLEQzqw$Xs#Irvxbfui1?%nL#{RY~wz5o7+hhtyNj{f19 zZ$I1k%o%F(>AEYs7k~H$so%Tv2Br*u_qyj$>!)As z^UO4yUhDQ;txd1DEFGz#C-Fm5g<>~yc+cBwZA(NA9(>|-~cK0;CEOC3$zXmvR&%L#8F9vF69=ugT=Q{Vr?wow;Kzmzh znQAzdHR}az=*{AOdTRXo&zYUSHW!?m^cglYa_!pO>QKY`S1$Bg6N&ZJg@upk!bW~G c;==YO1fP8G@Yz-4L-(f?kM;?d!pBbh1G#Uo!vFvP diff --git a/OsmAnd/res/drawable-xhdpi/map_action_car_dark.png b/OsmAnd/res/drawable-xhdpi/map_action_car_dark.png deleted file mode 100644 index 60aec0a344f8dedd11ed1303832f8041a6ef219f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmV;$0XqJPP)ouD&xB1Q-szy?A-_@Og4QHW#%r{_)wxj3)<@y2!x z;5d%sI6@F{L$OCYg7zO+5QMQDowQz!q!01Pk+I8eMbO>+PZr~xhOoh=wa+C9tD zN}hQE87ubxAMD`TU!Vc?#4_^d5{w}2k0{q1rc%m2EML#^t%u4>EX0S>(mtsiE0{t_ z`>>pPHY#l&mbaJMXvjjP?UTxNn~iGNhvklK^qMO>yQ1?MU58eNfY87_Vg%KgvYZn-0+sgfS&elQwM=DXh{0WfUt^!HsjK$y*wsO>Kg$-P{gN z$8dgc(?hotQBjWR6qyH8Cv4!RH#a?}=a_RIPItHSV>oZ3^Ttx3&ObbJm%Q)uzR&M@ ze$Q9x?1j0pV_zIAlgVPOdFCQ%Rfpfv3h7%Se^4teQ$~95wDOOv0w%QXR|#v>=i~5C8Z1v(moVZsZoz79M_PxAQplDX*^Y1aIEkF zvtiGtX3cfLFAdjj(j1VmX%55-jU<>U0RM z(`gY>ttAnXWN}0XFhDR)EpR#6h@Ge536n*q&L&M}JxOAiMLSnV5N5RnH;@EjA~fm< z*6I~R+RK25Z%*<(f+e4crLz5i7J0ve=PM&!V0ZH(FSvOhl$||PbttWb^Rj$EcsX3A z;i%2P&n*XRj-U5HLwTmSr*P1bB&~BgF$C8b7{uk$Y7qkqG>8TOT!ZNegVV*pBY5_S z{0;Z1bRxy!i_oEHoMbdQ4U5nQod&@$Af?nr1B503gOP+wi|a8Ml_;X&)_J0pB1ckx zhPRIgLlPd37Vt{*HnM^*#YBo87y*KM^ugd37dN+5>Kf4>;M4hyZ(KYu!@jDc*>J4T(4{qomQdvmULbDdF5%C~pb8_p43WphW_9qX>`J4Z}QyfQAa1~;@kOkWb* zI{A9S+GSbQQFcX2T;*Nss`m1oP~B%{K#`?X6xJUzPx;7A@Hd3^v5#l>Z)pe`Cyw1(eI~W1Wc#1`Ig49L`eNgjF4aGHVZ+t+ z!kk+%zc-Y?_oolIyPVk7}w*^V7ls#1D#n{VDNt9_UfpOv;LVb`1;*Z#;)-#n01cWANott~D4 zTVLs`O*vWj!9YRFyu8N4XEWLr$??og_mO;oIC7)ly?6FDw<3KO<#*fS22Fj%W&3-k z`l54E4s4&Z*uST6@jDJW1C$M%$NKkcH}1S; zy1eF2Olw=-@zVb2-1Xhxv{T(KfId)i_zDblB( bkSk?1`$~VFk@?G;;Xkw0QfNLfcS+5EoD(d$ diff --git a/OsmAnd/res/drawable-xhdpi/map_action_fav_dark.png b/OsmAnd/res/drawable-xhdpi/map_action_fav_dark.png deleted file mode 100644 index 2a37a2dc824116fe08e9e74e79de6f02865f7e06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1887 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 MRM*(vt@1?w0V@IwQ~&?~ diff --git a/OsmAnd/res/drawable-xhdpi/map_action_gshare_dark.png b/OsmAnd/res/drawable-xhdpi/map_action_gshare_dark.png deleted file mode 100644 index 518b93603964c74e2fe1c5099d6f308b94a3dce5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1644 zcmbVMeNfY87%v6Ebran1V~!7FnNB;>B&DTIjtXfDvtXeh2(nF0lT;$KscEo*DFc*4 zCkS&l=bbtkiiaOCr|dQ-DmukEQRmm(P)~-UcyoNrG4bZV0I9T z=ro$33YMItVQ z45gQ6YAmqDWu$YMS%n-ur!YC4EX*ZQN*+5Ch!HT+fP>}5~u~E{o-y1r5pu-Nv+z;zxJr#1a1)|2AV|CxHAbmW*l5t| zU=4yBwIf)w)6El3k{Bt1j#tP z@(gc{o`h_oIc6zMC2*_*7)mn6JcEE%O%tdNp+QYFVF%SV4GE&8)()bCP8)?HYOxno z@?kvnqRE3qQjoV({?|DpM`AmAw@>Fl6rN5J?G(p{6X!(s)`1L(L|SDw;psyA-3^wc z5d8HM+G&;HiZY>ZYPif2blfH@WmlD_WmgpWBvm;w#`Xsb_ph!f4S)=XifhYiYs!up zL*A~{Pp{9)yHgi$Rp&g6?em*@_e@)-(>~!|OI7vVHv8wBZ+FFpD8|X=RyX`8`!*xA zUbk>wD(tW7Sb4IKO}&$sXsbMiH+JNq;Wvb;>Q;p*#S_+CUGa|(*0P_OqTaSg*!$*S zjxDfxz_$C$SS&N~{Kl^|xN>X31;cdz!1pSybKi|UXDuj<)BZ9lW&G{B{M&J(V*Jn7ColVL+g~@U4kmZ{b^GQ=)75_MnZE`PeDBlV zNx(m>&Wg-UpR~OIN7mk3d3u?w{A|Y-=o0>#VF?WV6q!C{+L7SE%~$@O7+Ji0!KsZc zJ{eyR2DB9?Ju32Fe?;r*@~mDX)J)j1_M4JOsBqM#^}C`zT3WoWaZdlt53Uj)e)jGs zt3vxspnuowP1=6z<7>y4*YBGNpDt-i3P`}$m{IF#T7744MUVRi_VXXbi4j-)_jPY%nv3e|-vU z?R$h%>zYF@4J`inPqH$|pjh7(rf&5)d(qi-tvjr(vi+LsTuIYJGXGZb&i3(#LN4w1 zZK^49&aDlv=CYf6!mJqw+Ura};K2BRo(A8`(pMzet&2;0cac-P|9^9QvZ>Lqu=HQ< CQ)OKM diff --git a/OsmAnd/res/drawable-xhdpi/map_action_helicopter.png b/OsmAnd/res/drawable-xhdpi/map_action_helicopter.png deleted file mode 100644 index b2cb8fe6e70b2e4500949ee993a54d05bcecd5aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmV;20eJq2P)&Gi*JzAmAm{oWoJnWAh*-a2>RfUze~XYfws zSwEOk0+yYPRXvH+_P~PM9wCqrC+3XX&NFNYX(Xf}_Q4rus&ishvFYM{`6{)Y3I2K1 z4&8a!+;&o}19{a+C4mh><7vK;04Jv1#QU~!Q^>K;=p0{iljtJ3gf57us5+7foVYy^ zM}ZJ{_SY0gj!-zbp|A`>qtD7I&zt`8TyzwQJQeLBb lA8_f{>9I>b0i~20)(d&T8Xnl01Kj`s002ovPDHLkV1mX2o>Tw; diff --git a/OsmAnd/res/drawable-xhdpi/map_action_horse.png b/OsmAnd/res/drawable-xhdpi/map_action_horse.png deleted file mode 100644 index 1a884cd8c4cdd273e2b1df08dd9be2a6dc9621b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 590 zcmV-U0MgRd%H2x8<_W~8>Oah zpJNw0B0uRVO7arFFWY$mT3VJ+O7%!y&@{;CQ<7JuL6abRyCh$#0-6HZTBy}KtkWoYB#*j0H6wuMH%N1gy+@o)@$M4xeJPHILiUVpsA#>DYMsk^D z86UBWI24-{$iNH&VwF%Afe?8a8lHihbdt?L=yg0s2?Z-3CWZqA0wP|8^v2QG1{6pH zkpp_&<|ZRYV*GL-)kxb|avUH||907*qoM6N<$fB)?!D?vQIXJMox2(4Ba!#ti6v zU@-0n?D{{jDzr9BV9YK3jlZm1c>V_M`s&k8U&79FHMF`Ce3%6NFZJF05|MOY(8dMz zmyrPN*9xt<_^5K;XEin}qk&zS2?+zXj))24DV|fqg}BY& zHtcO|j4@w>X3)YjiV~+sMUlDIY&wfyQd3eqz%)5htmta&yPdxVth*gdckwN3;)zVu zZO6j4uASdftSBC7g0a6pVLY}2^mvWMNe}J*+HvOId@7tnd1CeQ?tr3~EFb{N-smZM zMK`%apF4lS9OX#StJ<95f8D|M{DlhgSv-IMse0|ag=cU`^aw&+s>cTEUf&YJqB*2d zL-Q!SRPXOyzy`j1$yW%I`qA}Hu@TVwf0?2ChV&NYoMZeN1~Q5sx*v;0d+GR`T4C3? z3L+8L!{#IIfbsC03?dmtj}l9aE6QVoH{cl)@_N|pOf{fbi3vM@H9c&;k3R79EnQ*f loJw+SJw;IzMNyP{;Rl(!pOX?Xx?BJN002ovPDHLkV1ic;*RB8n diff --git a/OsmAnd/res/drawable-xhdpi/map_action_offroad.png b/OsmAnd/res/drawable-xhdpi/map_action_offroad.png deleted file mode 100644 index e8e70873324d688efc1f39e8ada5691aba33dfde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmV;m0ZRUfP)mFv&NLA@tg{Lk1vf&+k3 zN-3r83?g<^CMqYC(?bEx*3HvmrqWYsLC!Nspay*4ZSd%3cTlsjPo`&n;+r3!G{2il zUq^=)=d=kjHE?_H&U%lT4|9{+;~9?Lc3#S2Kx&-8xl5^sxkd^xH;u9$=2{IndfQKs z$i$?{ofwTVuXdx>2;>;4&tL4u9!KDeM#1oMk0Y?64X8~UP@D00?Cn?SU#1YxV;-p- zU_GZPB`SVO3LWSj@_9X%Ct@ckD=Pkjzr()atc?bJIqPlc`Vi^(T*2f`_22OF*`>X% zyJm-hhksskFx~`qNIM3%%(ECDF(UnNafX^cGJiCsYa(FO`zfm58<#&(ZjMyl2 zVQ37tr0cD!o_h>NN)L>3srsPF#zuqg{=wccj7UCaQ@vI`he$Q&c|XIHM8F# zzqe+`NlxUN0VN{08UtA`qe`}`K4u0%`J9GoyYn*cWGjL&I;Fa&Ck%-O80h0pd~N45nwp87c+Ya4<^9C70xBy)y$^u{Z&th+2)R6!2017qLHg|nMl-{BoRA9z zf&p_crD3kM6DLZ|>{H137XBnDXlAu4INyoQtd+n=s`@8N0ld#-*&<0AhA8G$&^-$^ z5jZbvW@atOhie^rMg-=pcOR%?a@^Quk3)}pA7~*k;PMn|J&%qgJt`?QB5*ANjMAkN zR`VpQ-j|32O(_`8<&~_&!_g$VN(wQ!sVc+YPG;(O$qAHC!0mVCN+olrP^|{nB2cR1 zjLMW#kBop-_K_Q1DNCaSQDIE3r6Yy|{vx*0%s7*bCEILJNBd5ByDA1Vl=!P#6$qJ06r zcuMzbE9DgUA)Ux|CP(regW{zgKJfUFYdydRU$_^VDI$Bo&pE&Q`=u-8LBZ!EN3j!! zDpY!`a%k{CTeMP^miC_Ir8|9Es!(YuNt#IK=CuSoXBVxMw0ue-K>0o( QNB{r;07*qoM6N<$f)LiO{{R30 diff --git a/OsmAnd/res/drawable-xhdpi/map_action_pedestrian_dark.png b/OsmAnd/res/drawable-xhdpi/map_action_pedestrian_dark.png deleted file mode 100644 index a69b18369db0df8b921dcfe52a9ef33559c8fc3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 568 zcmV-80>}M{P)L^vH@%W8$c&8-GEL|Hh>LO`C@vx5I>0J*Im9l@si2u zw|vu$DlDY2x93-Z4#O>C$DTW~I{Ar+dSH`vs|2Hp996!Zi#Y54>`Mtl+7 z2s*wYwXwyR+pA6hHhsW^6jvL3Te3xPF$Mt(G$Yiw8Xa(rhx0f+xA?#13teJrdV423 z0|T4_UM>Fry8($fkiF2yPhb+_j3I?=1w1u8^R@+x+jAf$=up5A2(A>GTKw|t6lBlm z5-@WZvm+5p$Ps+31Fs-A@VE`#bQw<*#!WP}_oY8IugW zFJPe=7eoNZHrm}ne;^`W0e0F^xdHP6v1SBtDN%1Q%lA1pi9tZ5opeB+40000Mbq1~h-bc1w*Did^ss1wjmkZeFUh&T8HGLbA~FeGPuM0^qt2|V0c zhC58O000{^lo@9X_Vz!jfeZc`_}ICMB;3;uQN*kxW;V*mbl-K|3o&{ketl%_nV2n+ zz%erSOVU-pi7l7JeiXQ>Ciq5zN3O)LBpu?FSpG?bdF<^3E2Q}(sgQ1K#@($&>1J-0 zY4);WTA~*!YK;U=#AuBK-p$xiylYKXd=L2VxWB&bf!eeLCiGNLyA%76c_;Q4kpwOY z-zKp3t_0ZYz*Xw`p1LliokF*=t+W|GBvtI)Hb39Y&=dP){Y~ti>~$LXY1$@6 zYjUTLMm`0G+Zjg!8hLDOka0i8@QUO(K+-1`7f>oqOxOyUjVfn-Zovv^g>2+6V=c>l z*y2p!KV$8Vq`^?6bjc0O4)cXfi#j?(Fw}(cv8v4Yf`n?@G!Nziie-YwHVF4+00000 LNkvXXu0mjfCR@eI diff --git a/OsmAnd/res/drawable-xhdpi/map_action_pickup_truck.png b/OsmAnd/res/drawable-xhdpi/map_action_pickup_truck.png deleted file mode 100755 index 914493aa21aea0d715063cfdd47d79c7c479f40d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmVr~1JVKM;Fx7>#v_ESS0>hs?#Catbi22A z)}4sTjg{j^BXDd5n*vRN%m}m;$_!xk@}__rLNl|(u&zjMW7if}AcMdY$=jL<>;WuE z>KSZvQb3^ZNN$4B1Lb=mH-$)!2Fc7m0i1TAw)8VLyZp5&rt0_gv4 zwJOjElq|}my;=$-g{|PC>J{i?QSDzShJa2yjd~|K0RdbV%mm+7QT{>{(3q#=TV10_ zd>xoTl)pdCoToQh^mD42X>!s8^=ni8{uJ3OEpxN|MX-_(_d^8E(DSqD;Ae{TRbu@_JwB+V?^U-6ML1Zc@`8iA70Oxdd` tkP@|$YnlQjqnWZ-Qy?X3CD&B1z&EUs-65THo<9Hp002ovPDHLkV1kqe*slNp diff --git a/OsmAnd/res/drawable-xhdpi/map_action_sail_boat_dark.png b/OsmAnd/res/drawable-xhdpi/map_action_sail_boat_dark.png deleted file mode 100644 index 7554c835beb707637cb322252c149decb6bfb81b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 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 diff --git a/OsmAnd/res/drawable-xhdpi/map_action_skiing.png b/OsmAnd/res/drawable-xhdpi/map_action_skiing.png deleted file mode 100644 index 2dce4af6b953176b3f64e7d94b58983d11832e79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 705 zcmV;y0zUnTP)xK~#7F?U{jf z+aM5z&z(TsK;6J2xEpu`b%J^WYlCJ3xf5grjgS%W2JQxbp`2a`J`j=#R^H=#j~53E zxF3$YQ$kd!R4Nq>fJV2oZZ}xobn7S=da_?;0s0{H+#_U8^eAR0oC#Idow4&D5yqTI z6B_#^Z3$|<&x4-Sw3hO)k9^m7>#u`%NeMfYD&$sd z^cXPAjN8Lr;9KCCk#fVkc@Y*Hz;4Bcy&g4am`6b< z1z>Z9^lV2Z2^b<_%JIe-*C3obRMFGWi@hK%^S(2TMO-4!537WLQ~H`Qn9s-xUVYDF zL*rUniZhwQ3ZF#00tMogt8$*}X(@WpPsqErxVVBX_9PeSBV(rAp;Fe6GVxcTuhs39 zceSN-{urBt{%dH!RFZHuUk7Y>jMef(ObGt}g#m%nY^Vg7zmx;+qskfKh-CWny&h%~ zqS)w|;fB80&PRmwSpMQ-?oLZv0X9m!Bp5z|i?>aJ@QeL~+O&X)1R>+5Tqpz{485BH z3q$W_Nf2`WEJ98RCvx<~z$Qi0-_f&yz34sWxv^N~^*#PSf*fEzV)kmh;gkE n@5>Jbo4HS$G`v!&RPOi-F_n6W>P37B00000NkvXXu0mjfQbagO diff --git a/OsmAnd/res/drawable-xhdpi/map_action_subway.png b/OsmAnd/res/drawable-xhdpi/map_action_subway.png deleted file mode 100644 index 8685bd0a42a3a8745b6142c8818005779defc117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 zcmV-C0>k}@P)gkzyPipZqyuSJ6vY{0!$Ff)q#DChla{0sLZbp- zlTH|)hJ8UO$XKO}UYiD|j)n^U8ofRS`>sqe7KY$Uy6j1FNDD9SH(KNe-A!!**zPbK zd!;~mYSAxC7#>w(7sC~u)P=S z`vTj&Si%Ma?AdIC^dt1Slo;FuG31`eLg05JF|?m-#6Jn!NHh{7wtc^XNMJjiOq_<# z=oT@WoX{fjJ^)H^_5TEs9J%7#F*CSxassKz38W?`keZx8YP{dXv5yo|@)V*Y(Wg4W zHvBtud!K-eXxcZXouD&xB1Q-szy`*rAY{TFafp2@Uy&`vS$O z!3c`I8swT^@N&tAUSni>W-cr7cJ8_0BZ&+3+#5Y+R`{SO3bP95O-v;BY``f>4=O~j|g`H14C#yMpVEQkF$>U<}N;`$ySVkKSUsI`fk(rZ}Wvu#n2 z(YUE`dL1Z@PoOkDfzm7{`X^5VEvBA+Pc5O?z2qM3(aDSbjYP+aVYvEkz?f2b9mjDV Z;{+6*Q*ElH^Z@_>002ovPDHLkV1j-+&$Ivl diff --git a/OsmAnd/res/drawable-xhdpi/map_action_train.png b/OsmAnd/res/drawable-xhdpi/map_action_train.png deleted file mode 100644 index 0467209c23aaf802ca0a6c5d1bea6e2dc18afac6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1519 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 TPoe4900000NkvXXu0mjfNh2%O diff --git a/OsmAnd/res/drawable-xhdpi/map_action_wagon.png b/OsmAnd/res/drawable-xhdpi/map_action_wagon.png deleted file mode 100755 index abc457a137033a7e81aa8aa80843839c4f359dc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmV-+0*U>JP)$uu1yKW_s+S`28tc?^{}RB+)7I}P zq^eAwAa=EG0nB28Z4_{@Kjn?7s%i%S(D&$VwO7?=5xKJbv6Myt-iLy)0W{e^XN@KX za3UffBEt7-F?oU*^dGSX;9!3aU}CN%Q^5G60#w3YGXS?kRHy(r+0OyM_-vLEf2In{ zP!Q;1KO+EFDe;lYM{7_i5kQmu8WSn+0h?V_b(PYlbbXZ|fLe|FZp>&$1$blg^;Lat zQ)V9lv~lAGwucG?iF-&2IDr)aL3(E}E(&BIHOM6u;N-;#tZi{}x-ktHZLfnO3^(?P zJFR-5E)eUk)U*|B0e*((6tuH1?z-LY8tR!S6F#l}1BGYYZO@m~0?-p*AXe$L$*rc`8TN$#&I? zOj4XCbV+7Fc*Q;L!`)8c5e~8T}vhu2& Q`~Uy|07*qoM6N<$f@DV#p#T5? diff --git a/OsmAnd/res/drawable-xhdpi/map_action_waypoint.png b/OsmAnd/res/drawable-xhdpi/map_action_waypoint.png deleted file mode 100644 index 11635e77747a98da1fecd681fa228e086cccdcfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1227 zcmbVMZ-^9S7@xb#l%q4hNSc?ujwMOXpLb?wXJ@!c_jdMlwLOo$rCaFGW@p~ro$lt( z&AjXG-KRy0inuT$O9-hCDo9A+Dfq84A~YlFLq`aH2`s^rG!QwF?47;cs}F}C8kqNe z-glng^ZcHF^Ul!V_MYyiyD5t5$?VW`Wap!I#p7fh>70LyY-@44fQP*jt{DNMl9pFQ zAmbQiltYF!IdK{FQB>DHJ72(s?8~a@Ijj-suyw~LXo~9FTK5fe3}H}2W!u&0KhJ$d z1KZN*5h=@O{S>O$JEj6OJT;g%r^ZahqPM;T`syk%;2>;(x-;&EYF(q7c2y!r*BlL+ zDtJtz7f2PdLm=e^2uN(4F(HINR#+${L_yjD1RhEpuW*oOc&I{N6?o8kXyPrfN@`9Y zX!#;1jjmwqs~lIW)!3TIdO?|kilT75zzG6FG?;MG#YUZR!;NhVIttCe_Ob1`AhKu_ zy(-pd!gL`7$IoUL4ZC40Q6yzt-S9cc@|@#DaW%C=oJ0T8SW-L8Px^?Zur%Axuk2IVtKwIxP&yQhzFuXk#;Ohz-|7ZQnNW-NL3G ziB(epGO!oqJ#W0-1w$1Ndtt@%K`Pa(I(T8kb}g?KZjQ>d5Vej1dmpj}0?z@>JgfE+ z9C(qB^D()^ScVc~BqbJS3{e&sWE2GmO&F6+M7QwP|IHsqNO4iK{HJ-^SEM5&ad8yL zVR4v{OC~5FqY_`1J5I*zW=2ou>sRM~)mC;S*L-*9&~(MF?woi^UiHkW18<9~dK>Sp zn_D}2arMmWZ{8UcE+oHs@WCJ1!|usLdw;)q?e2!hwx9U^;x4KiJlI^m|HS8)8t)$2 z)OGsc^40#S-pj{+`Y|}x=^oVP*C(FSUzz`5&yA6u;nDcDndJvWf2w@@NXKvQpV@G) zzk2rk7Y*scx*q)X{*`MA_pNQcS3dbW9iPFM8b{HFe=uk4R)RJKX4?W+$}9 Tvy^=+`n_b*gZhd7*Y^JdPXn0n diff --git a/OsmAnd/res/drawable-xhdpi/map_action_waypoints.png b/OsmAnd/res/drawable-xhdpi/map_action_waypoints.png deleted file mode 100644 index ca9aaab90cdf7762cd24a14240e2678bf2a45685..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1410 zcmbVMTTB#J7#@nDh*CmKg;J}t16oX(oy+d*?u;zR-rQA}n?x3xT4#68!erT*b!K1} z#MWSK!viFmULZhiD-Sj)Sg3ulrWT9F(rCA~q!+6x^r6`Ff-P9n#>AclmiB@8(8IV&?WW{FB zeT1Q+V8v<~FX@fgL8ItyQ^20K@|r+fD8LF>X$e{!-F7es+GGJ@dun@l)u zG8u7}G_p9$3N&s46kq~=BMAD1q@9)UCfZ}Y&MGm72dFI3wI9Ny~5Tpb@PV#<$(?J-&#Q<2`NHZj9U@U?e!1x#O!vD=5 z0Z9>wX8BL^B#&T6CdB1YfScuE0ur1c1&&H1RXU0wDQ|fkWi_$uzkK6;%2Aa&_It0m zejhfm%lGZb{x{oKui12=<7j5~=7LK-7i@KP?^TZar}NRlk?hf2pd+dZ8Sn7@A=UiD zZo|!Ob2r*v|2w>exchzo!I}O}u6y0;xr>-?Q|9MLW?}orYdJq2-m+n8!-xDno7Hlu zpM@xc6MZT@oTz}o4w#~atYGj{0V zjQN8%zD|qWx>x$FZ-<(FKmO@yB#w6Dx)VOwfMnt~kYXSj2Gb3%%RlKQrX`VkB;LRsD3gTWAxs! zL%KiQbzjZS+&Nd3$Wr1ytdvuIXHT6^&3hvyZ|b{y=_JxUioWQ@JGLhNiXLaVW7xL8 F;~(aB@X-JO diff --git a/OsmAnd/res/drawable-xhdpi/map_action_world_globe.png b/OsmAnd/res/drawable-xhdpi/map_action_world_globe.png deleted file mode 100644 index 5b2b24f48a270bab08da1201ca5afa6f46e0c836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 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 TKP$5N^*2UW(+E|nZh!YbYX>f~ diff --git a/OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_bottom.png b/OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_bottom.png deleted file mode 100644 index 172ff41fd3255e816f5402b11a1fd7b1cb80d7e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4557 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 diff --git a/OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_center_small.png b/OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_center_small.png deleted file mode 100644 index 58002636604f41ba414d8c86e2722ccb70db530c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmV;80doF{P)+(Bvci0wx5Mg^8Gz0{yx8x5?#Z>pSEy* zl)$?atOP27-~{Ru3Jx&5yb=hHFt|Y_@N9t7G<~+#_5f}GPO5qc4*TEbDG7+k7l01` z`0O(z=mJmR?;>;ws=xp~MS>g|6eMC1x!Wocrly{PKOQ124h0XSNk7-|oy z`u7g?a=G~v>br?ZZ_+Pp%*PDho4W)OBwX+z0iuK(J}f|x2*FbX0uo_(nt(%s0#6k% zNYLQv0y8A2@F@Z>Bx)R8q@M!-^U^JoZ_mx2Q rgh%^V0;36Kzpn(cCp_AJ@d^9@9ME|&C&PK`00000NkvXXu0mjfM(d$* diff --git a/OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_top.png b/OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_top.png deleted file mode 100644 index 281ad49f07756d4b5ca1d135bc80388aaf92bd60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2727 zcmbtWdpy(q7ysHubDv8R8yjW1KGVcpH!Cqb3Kd19+*)ptOSLphLsW`f7KP-J$R%r- zx#WH=myml>k6W3AttP)c|NmaUe}3onI_La%KA-bG=lweG_!IV4vQlbN00796tdBa1 z^7(%qDj|xW(<5*IAQebDYH>2seff#2ozj?E+wdDK=8c<;MX$nOmhO$9mW!X`YIC&4Fb-iA~>PEhx% ztxmJ=%A_QhCU<1cw-9UdI~aL6?=#j)1Y4Y~w+9ibN9A*+Fh`#cOvizcnGj__oZuqX zG*blD1)8K_a>o$_G1zHpaO46YMJ)rxymQ)i0*Kj;gg-T=f{?F(nUz5?Wx!J$8e1Tj z4M6u1aHe7Zr39rO^!V}PJ=g1^q~Bq5=$^T$sj00y={sw}mp|R&)E};JKAH*MyKmoC z&cM8ZG!1z-mjzj!ziLePK7;702r6}}UJa^v6y@99+)X-u`~*kIA}3 z`-0H5jSXy1PmgIIZ-3jBpw}Mtf4=_qLPmr)0|0l&jvac+=&CN%-rkZ*%EfCdB*x%ouk(mic5dE5X{n{~#3dB8TW@fn)frhQEt;h6a zcwIeD3=jW+^nh_8U)p^flnr}&dyTs~JM$|mD=mb07|}z4n6w$(aPt+-IU>SvU~o|R zGDa0w=e}jX2-BA(9E>87I zk4#KVJnb-I5W45&(C~2mZo_%uRyzZft!3UTB(+f03+W_iPTu|da#^CPi3te|{PC)2iS@eLp_lUBzVTG^IE2gug}YdeAQUzbHjX0nHIOIBUsHMMZ`9 z^%l>o-i;#I?DRF^!%ejvOQlnc#UM_$w$eBhNg5U>*6_KnyBk+>dNFT^+~VzPqc`0t z?o5Ne*$O#P7VyyT?O3DaR~8F5!i=068L@7bjGk<;F|sGO`BVldT5^3e_%t+c%Ms$} za|5}V6m(p-OGN@@;pgxF<?0J=T1tkX}wY0_Z?6|)^snMxMSiiVFghrZr#vN}{+!P)1`u>r`H z+Errk-h^$i@Y<}POP5IW5amFqCm8rFOOpTeGCH`V8g;50e8#3oP zzr^UXKE}ZA)`l&rOifNc1=&wu`!h_Z(2kxvQ(|mc&IO3mF5a_V~D> zp-rbV_z8!&;Cru`?;U+OZ_Tu-RLQdvDbM-phJh$vwKYovD#9dO7#bdKaL~{&Vxj+qEf$(1 z9s?7e^zp#(uHBlYDrVM~NNE#w*Ox{s>Fev^P85o8ocFD7tIF*cr&PWg%nY0$hZtwM zx*bf55&b@bn}!X*Dd3=IuVZvNxhRR|*CL7p`uSP=oJrMFyH{U#eQlx3 z2EzMztX+&SotT&yb};QSf{nla^Pk~?g5!NRfQI8$@5WwPnM)LUS2DDP6WVUzj38F< z3`n%i(5XGzsowayo4?ncbX%O&-xF1WHh--xx}=`_7G7)lq{rae_i>|i1q-8936$4O z2Yr8ldznn$#a+8@HXBlHE-Nd0$4yuUqMiq$J=3dB-1j#aYZman<-k1+`HJIX#Qi6% z$xRzyH1$9mDtBMn$nEz8_xU6c+linM@ToY8Eg@rJqXxONZ5L~6Yn?A! zP(I5wEabm4I6-z7a z?d@gttw%PmVGir>y6G4VnB-4`092pX+>K0Y@9FlDi?^H#bt1ksJ}~x-;_w1x1*#50Cf^Fn|D|aq#>4 zd^G!9ZTLO2$Q1x7k|Hxdl5Wo+M{R9wl{Cz*r%3ErHO1%NsnD*M>`6ghD`=3Ed1nnf zgvDCb)Yg_O0klu0MT#>1`zl3`az*4!g11~5Z~yY;OB|jy^T#b2AjIV5<-NIcN4&`2 ze~NRH-;s9#2A-bAYDTzM$~7RG?Wt3SL6btkTvwV6l&?Xc=wPwf`L)Gi z$I5e+-^W`Ym`lG}mcpC|pVwD%KSp;NH zb$s~nfg}QX#X83o1{twL@Js^~zG_vlgB4EEQX`5#u^Av__Z`sxkW>GsBHQw~EQ`*n TQm6$+ivd diff --git a/OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_top_small.png b/OsmAnd/res/drawable-xhdpi/map_bg_point_rhomb_top_small.png deleted file mode 100644 index 856ee8bc7e28177d20ba1fba53d9c950c975c0e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1231 zcmV;=1Tg!FP)?+iN)R$F6E0)~1@#sLz4R2lMpWd3hN!8L z6uzu4!9MoTOS?0(!Me+q&9+(1y7?!)`df}DL^y-jdt(W_@B@Y4Ilu4ce9!saOTjaL zsAsMp>Hz<@gLMb$4)Cl%y@hxdkau|90p2C#nV{~#=L$GCH}|$sD0~k9_k@r?*4EZe zcow^2_>(v=Gc%*l=kxk(Hk%iTL{w?L-`w2%S!f8s0VXFW^@NblR4SEY7$!{!A=}&A za;a1*5sSqi91h1XLP7`%fa3G{dS_xE2al}ehTsCRz9 z|2HmqI0INLmLG0!Z)uasbU86GkuC}Um&>7#Ae0V=L$&^ZBeJchq4D+9<{%y^~Vf2NWR03e;7o>m?l92CV9Le4KPF3z}CzUCQte2`A3LjZJx7>&li zHa0f!Izo!{Kt@DeW=0472RmStP;cXxO9c_b3Smm5N0 zrN#aI{hH(B;==FNM67lnb^z`&-PfkvX4$(9nyS~1T z@oAffvAl-3k_fq6jsV3rX=`gMUW?Ia^i8Sq7wL3bF!6#rPzFMXTrQ`hX&QUI_$4Zl zNInWJ{>cC^F+!wLDJ}NDLZSGWOeQadYMUo*p{Ee}rJRD#KplW%1?moPESTWi>kbHB tQjQ7h4sa}(;M?mC2wqZ-37@?K{{a$hzd#4$gH8Yd002ovPDHLkV1jQ>IHv#r diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_aircraft.png b/OsmAnd/res/drawable-xxhdpi/map_action_aircraft.png deleted file mode 100644 index 3d4bb83c1c544d58f6c39ca51bac4083d509c673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zRtE~x+f{eyLqx)XI{ozrVnFeo*5Nh0n*!6SiUvr=X^dX^^xaU#;QiY_;)5&JL9T) zXD`eAr6_N;JHpi@@$Y4QJ!{Rw@x8H+ZnRtMV_DngtSRgsDf}(-9e{v+skHI6N>+5=ID7ia5b9y#1(a%e79IrZ22+=_v>#T_0PTHdRi}> zS?;$4W(X(rz3ZFqyJO16(-vudtci#3Cra>TXEZwAYx`dmoe=P?VB@bTvug}HHe}^3 zmD#&4(cVKfizB4w_M&H6_3w_?tpDiz*zIv`O>M{f_07U*zn}1mADhhiu(P~d`1qYo qDgttsZ{FT&al=d$lsr^E@MrD1`N~_3w-lHT89ZJ6T-G@yGywo6$UCD%eIzz#J5w@SOd(QutpXIF=EH7cZ|f*Ja*NiTgT=GG}J+)l|nr|KHs8(UuO@rAA5 zch2?xoVR^FaB01BaeZ}-98#y-an<6k48u}$c<b)(7n>ZMF8`X;3zu(1&at)2Y+Bwh)&}U0;K$ z!FAdS+Epp&K%igoccTa%2IbNz39}Wwk8U4RyfI zr;g7Es&eR*5mY#JH!0t@u`z|aulhvc6wdJ=I>jJ2a0=cedho|NE-0KVI>jJ&UcXX$ z8s|9Xu9HRQ7~Yf4iWubXJCgp^!BRNKF?pCQI>n&I`OrHL6Tqc&9J78j&ha2R#h~BL zhmzEaj!a$bt=RoC4TY0Mrx>JNO?6WliS`c9Gli2!C-e}0i*zA8l(tiCHHOg%Jty;m z!#9Do(r)zcDYEHA`$n)rd>WyGepL#JB&$xCmyR@QgeRif^34aY8Ci9rCl%Qx0R4|% zlKoU^NS)b|_J@#FC)(4Hu|%aq`^c^nX08wSKrWK3I^p+nlGdTzj+2j?96Cc@URaSy zmG0*9{!0N3nXQ1#;ipt3yCv%s^mpIdTzdF-TG;{RBXj5brzh(( z2nq(SP1Dd=dga9Quvadx*8HEfy7F^!@2Bi-??cqT>TErE|9skJUM@~v52lml|K?xO zUujvEDC5MZ+g_qws^3^TLx^+P)TrezBfPg-n9V%Wc_nt%y4PEFpSgQydW8K4sb6wM zIdiZ0zfXP6wPI00Txk$DXD0Vz{ST3g<`rymdnLv9O!Uh7dG1#-6Kg#mL^?iSaXnw6 zlF7<>Z{2|t#htbf3-lQl=ROtsoo0DZIKb(sio)gEe_aaK8oj%#6!!Xmp3lY{WT3!` zhiKV*H}Lmw7v~*KB0L@k8&C*A*?>I#ofE9y+N)c?&7XbSPtEMw@wYFZRZW`3Kgale zzk6YS>!oi#RZHh=_bR-Tyl{){<4y(>p$4r|Yz*(LW>`hQQlw`}q+=61vXt0$VD{4_g` zrcHOVmDinFkD1K)^p?-{#`7d+ukGy97?uFW3k=yi+~A?!PC{xWt~$(696!U BC?o&? diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_camper.png b/OsmAnd/res/drawable-xxhdpi/map_action_camper.png deleted file mode 100644 index d5f89c8561035ff84215f57fef93e4027c28980e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG z}FKH!g+*u zS7V-n--5meEN|6%63iQTU$H$`PPioTqT0jz)W`p-`YLBHe%rTa_oW67ps^rOq3X=m zF7WQlhecDjnyOc?J+Ixm@)6|U~#gK$|8D%t|YyRJXDB)+-? zq^^5k;R{E0pjLxW2l=Sg+u~Hs66frB{P*5rAD@k$>;KuU5Siuvlh25G9rsc1`}bsj zMFv|vmkas2=iXP9>%r%5>^{xrmOMQClM>8Sgxe0>*)=#JS%?t`o#fWYuARU0YmRV a%wL9E*EVGpO%~V#3QbQ}KbLh*2~7Zeam&d7 diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_campervan.png b/OsmAnd/res/drawable-xxhdpi/map_action_campervan.png deleted file mode 100644 index 60c0f69634534df4be60769ce2d4a700e9f40fd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zc>C}b8Alss-gt!m-XdSv(zc*C_`1dyDA3`uRLs?Zwu0hdT~E_GP(w{jE%J#hO_q ze1Qux_f1*Vo+s+g$8%IYz5A|F(5i0Vg!wg_{^cH+@+v|4hWPw9QLft>Yd@XT3w0vAEP5n+xl7~PW}HE z;=($0^U^)D6ei3QUKy?|aN>j<)6AU?3%EXLhcU9OVqgkoXw+(O5WT^*MNs7QFru z_H@?muJ-QSd0B^l-qMhL9q(_J=*GY7y3Ng8;qMcz7Hzk&ylr0l?AeNJp;sMopGDY( z^TcAlzO9LlUtd{N*4}5@wCqmeQyxA4LM!3hU9wyU`;zSMqy%4T{;28?i^->d7@NNo U&!7MMwI4{x)78&qol`;+0PB_t^#A|> diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_cancel.png b/OsmAnd/res/drawable-xxhdpi/map_action_cancel.png deleted file mode 100644 index ea01fe05e204f00fed40b5be7a020bf523be0e1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1468 zcmbVMeM}o=7(cK~#IP+yhFi!yk8KX)^{(x;^iB%&ld@Tcd~Bd|a_zmPmvX)K?w|$# z7>sOF78GXok%)6c$g;S(IX7oA@r$o8VF8q>h&qs&MTLzB6QU+wfuetq{oy6|zVGwi z^Lsvi&-2_XdAZr~aU0?w2#U|KTk_@I9)4q2$!pQ%``PlgUa}TT1-x4d(gJ{t4DSSR z4o8=Pd_Xf*fnJafK@U{2g~d{_;~C1ub4og_qYQC=84W?{nIS*z@&XBVf-=@;K<-@q z1c6z`fb7ybaEIRvJgmK100q^#g|2F^i)4_@3^+YR$p$ze(Qt?>_lZ=Jw8U7A!z? z39MgYc^@3MNIUro$$-d_E~dcw9gbzgK5>aCnKCRy`!SUg$2cyW*Mhbv<%562SW#On ztnvdaABcQ~;F9a%PKkhJ?(Xj>tSCoA?GRYGD0I1ncU5q}C*@cSi2Oy#una|L8OG_< z=}@&!N1!B5kSIwqYE%bQKe0%^IzmH0$*$t68P868bc&)~GRRNgHlb z6Qm`A&GCs6?Q?;MZ&vobgiX6ImNE-~mUy9%=gT8qkmungUi9#O*lb>?I=pok>tpz! zm>MqAV%8QQu$6$Z2|Ncc@Jz8Q#K7oqor-Z1sEX7%QN~5cB+yzC)zeO(A_-ihb8C?$ zJoA6~!{nf_aI^fUc_LSGM~08fqaX{*!vuWt1PSt}R3u!OgrKO=9E-6qH1gYb2H|sj zZA__u?9Z+PNYVA9-7Nk`ovrB!XZQZS_@4GFaeUba`W8Kc( z-sUXRhMyGMTa)#k*3@K8YrA)#itcBlyhE;jHfc|$=IfJVU;f%5OjI8}dZIad=B4wT z_E{o9(GwTjpy+r{VS3ycI9n^Ed=?O(Tc(zq6VVrKEn^dki>8+GiB%(qEImf3y?!G4 z!I(>lz46x@vu{oxqhFkP{TG`!_}aaI7-*PZ|NE=QiG}C#2+q8PO|?HxNYBjxh~b-HhXQ%-Zgt|(B3xoY16jOT4eG~ zCVMI)z3wa3j^ncrAIY$6_McN%Jyx;J^Tu%Hcr$XAzkGMo_d}z*|Eh0j8qgQmx9D#) zbe!5L*3Wl6dEqoQ80`CE>ioJhfw>!dt!o==9$8?2u^MsVlDs^ZSPHdmtXxz6^fyfS Of0|>>wY+O8-S-buG87yD diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_car_dark.png b/OsmAnd/res/drawable-xxhdpi/map_action_car_dark.png deleted file mode 100644 index 03414f264b9f78e54a9152b5f500796399aabcc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmV;o0!aOdP)lKc0c-$FP?&&jV9p|zQ0j879lK8TpJY{W zQu+FO-)Fl82qA(oROB(E^d| zAdO4ZD~`p+c7+5|GiWX^4eDkg8MKc`b`gn)Gr_Vr&(c1yS&pPl|6JQSav~zVq9iit zgJ*JVuwkqip1AH%8X5Gv6T}-T!7NwQ@7RhKHA%~0Hif$bKB6AFvDjFnib-r0JN5KE zqaI#8eP<|v`CS;ATJ7cN%VsedH1+h=WG{!$W>e%wzJ(`KVfE^=qME%RCsv3d*vn!3 z`@^+twywn{p1vCGUICA!0H0^QWFkZ#@)9p$~!V zPbxRk4%?JHY_Fq#Y8hM%W;OPVWxV1&W3zlLn}g^W5I|}M-OCsD?z_?U-y=U+V@R!H zHl;uRd0&J43(V*kLaJDjKp_K!rgAJPF=Q|EGVXzLzd>el$B;S)Y0LEzEAY+7kfVb1 zNY*NrDv%3sX4+IXzXxkGQ%0Pm7(zZf_hJg%YA8@31q!4eyY diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_edit_dark.png b/OsmAnd/res/drawable-xxhdpi/map_action_edit_dark.png deleted file mode 100644 index 42eec822b56b648c7f8bea8c177925070ca11c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1827 zcmaJ?Yfuwc6b?{95d=f4g4iwrRMgF8HxG6rE02UgS`#pUkG57f*&B$EY?56hFlc?C z3?m2v>Wre|XccvQkD^wq)lsopijNV|Dn(JyDc~q*$LiP(i1ml#&g|ZM?mgc*-+9fJ zr0SFWeM5W&0)f9aS#99gWcNGNoBw8X9ZuqxU@mbsm&Ta6Jjw|K@ib!ukk(3N0t2Av ze8(jaBM^8MS<+{7vvt#zCdMkJ+&W^H)y|^@f|yvBoib$u4l;sFi;WcZ{CrvjS!hx; zORkgX>?)9DNiJ}Lv;uv)sUX`#(4yFBP>f5-8?XY7f?U=d8>@7YqJFzde(yd;L{Ps9 zmraTWNX^!zLMp}yAh}opnsE>V2S5Eo@fP_YEDTHSH=YqOjI{7>Vf+H88h z9Uun4GPzC@Uk`KmAehhHryaQ!c{a)vr-d&Hm7``%xmIA~v}#hs--u}ot(3`W+GtcL zU`(Nq!GuIczyv{KumYe!ZZgV%*+>uC`6yn4M&oK!qmCvB6it-j8ce2=BoK;3Ij&G? z)Pq>9jpZnt2@LwSxP1>`6F-Sns+@r07-u@er@5f>IcbD2z#Q6KpoiWH3$xDJ%s5lcLdb+-Nq5 z-r?yF@;A_@{0Se2eUOfl!U&U8A*EpoS4d$L1$;`)6o4r?FrkFpEW@Hv5yDeM+^zFL zD-9m;{psGm9}Hf2KU%=X&y$lMoU12c_dLqA>iBfm?Z5BbS*4p1>hm;LZ+PVKlXSH7 z%9za3U)wih5x=L7A6fY{owfXpcvX4-l^iGzA80#8Kt<#|4-hEv5gyn7e7q z=$ga(PoHXLdiwVCT>k#%>&Bf&UbJL)Nr{V&>b+0a)_*pt!E+8YoL)MmV#uMm`;&`9 zHTTk1hh0wy*ibpuQpO5f-ZnQEujy*&nDR&M0{q0Qiap75XD(gPre0Q^Lg=%$7kb+h z!nCK7^TM}ztS{R?y#7XTZ%E6ir*|(kPp>TWKQUJLIC;amTblN<*t0D?eWGU1DfQ*a zi$csz-t9_f(Bl&Oc-;=FWbcGA3z3XmEhUK&g@+Vm5Fi}ze4>p{joM zK^FtA`D`Dv9ZBn6KJ)6R`IVFz0Tdr#2xnq-^Sr(ex@yn-WBs| zkR?HN%k5@qDOoqEyl}BI z-eU392i9sf5S#o?{i#_9&08D)(5G&xeH7MJEdA=x`K&M^-PX`n)MT3fBtC0vn5j28Sn~szbtb zhX)x}Qz@M35Rj^)(1Wk%JG{swh4y@#cR|>=;-JpRw$iA!^B%pvEv1EqsJf^h>LVs? l18pg6bUU>uW2|_PKvs+C;s2U&8!l{{d)ys|El7 diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_fav_dark.png b/OsmAnd/res/drawable-xxhdpi/map_action_fav_dark.png deleted file mode 100644 index 2b505969b53dc048f55eca5d5cfa02a74c6d675d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2381 zcmbVOX;c$g77n5kL?nbwz`+={w2-B;kmUrOkQj(8A|RlESV<}*N)kv42uKS?)CQ48 zu~no|7y)UZRm2e#w-ZMZIEXvgAZ@?}1Y6s!X=Pw43eNoS^pB}?s@}Wr-S6J--Q}Ii z4-X5pp64xB7-V|UbCK_w7fpf4;0&*bg(KB6I0Mu`D4tX;hHxS!m;^;Y zpfoeJ9pa);=2}HmEF2pe!jY(zB+#To(kW9AGz!ICu1f(Wn;;k`hLRL2fBehVOL&|@ z>W`0Mgi=CN_>f!?l%;_pv%;bzS(_wmDSr7f99PFd3@9NO#OajDDlJFnkN;$sgUn6K zWIXPZ3cSf5|Cv;5XgH3q)<8H0$&V-j=oB22O#=KVbOzvyqf!7SnZh7b{D>5QLt$~K z0B-uhBi=Mp87D#@oc4uC{&+bIr*O#RjEoFY292cFB#{9&n@y%r$y6#4(I9FwRWPU{ zs!ndEOwIr@BL0i;o+LsFqet;Br_GDqs5vPj0WV7T%UFC|q5TT`pVvAT2c|o^k6{@CH|%}_X8o-v=GI1Y>({Xl zig7Dv5pdZAV9Vdp6KEHEzYk^;gq-vHtV=N1e_>vkw^{Hq_FQ-0fl2o?0;##E)+-lA zXqEE1teRu>Nm=R7y}bJpnmw;vZ=?0Fq44XVM^ z2!G<;vvrp{Odc*+xlL?)h_H;`q91yO?rGTNPg;!mfO^^I_O_}%(S!T_o6bCAp2Zmp zHZ=wx_(*p+tugRa#OgDKa|hkYwm0PP5Epj1vn_h_@Un)tZc)1`FI*Dll)dsb%BtU2 zRJ%P!5AToOXft>~TSTF@r8%L=*mFKVTXaPfmzYVNdAg(6gb;_^9Pf#zjl%kc`d&!3 zw8O?0TkyKH<(L>fIAEv!A;ELPEIzHRBf|R6YMdMgHvWUV#x#dLWEig*moXhj3s*Je2eXw?}u6W9Mw!& z+hmo`>u-rcE0TQjf$LY*u(BEyy}sm!bW!^h9a-&Vcar=(5Z4 zB4)q~j4^3eJ!X|m@ph5pfX8Vky6b|2nkVdt`jm?u;q52#x*e=mMZUH-+8I1{PdXXm z4vy}V67O#{PE`oIt$z*Cab|0JpC-9IUL@$_=+nC^_Fl^tw+g#Ak0oMuIC~^5OfI@P z+wBxX zMEH>CwU|(t9qvyT_XYV`cBf_H!GVb?5*Z&*#s7|{?lJ$Cmk)A0U2X)Uq~y6iUN^LIooe8swk56zS{dy9{e~yxvs5t z991eDxZ7t}QRIKJam{ef(lx~SlMPLE=-;2QZdWa~n`DOD^u=10wOuLVuUT>@0+t)I7luDi98T@nw)|uZzt^?*;J>GM)$N3J$lVq_eZAE_ejT1` ZhLRVSvVOT~H*EUB5v>Rl91qx_{|~81zLNj| diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_flag_dark.png b/OsmAnd/res/drawable-xxhdpi/map_action_flag_dark.png deleted file mode 100644 index 7096acce62cfa3b8a5d3c1f63c595fa1a22e91f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1672 zcmbVNc~BEq7>^u^Sacj64=n8(>WGw0c5`o<=)@#Qgajl}qYc*0?hB+jHYSS+P-~5f zw#XE*(+X6ic80ct2UToA9FOS;XhEVdh)5}pAk&IvTBKgRHb}I8SpVqG+kM~n-uL_N zZ}$BR-HMp#*k~4u6{AT}Wioq8@Qs?xd{^H+v4Yv=(`qBFr!2G=cLSD!q|5-)IPh$c z32-uR(?uX-vBEu8gON6B)1(CD;NU?Sj?dv@&@7g0na_n2Hb6sWkZpC!*&~f-*^rf# zv)2l>h}NY9Io6bXH_+$n3`D+-z)1G8rI5@gWfV97jYB?%-RY6~RLn($TtoyTs1%V%c_=jTuo-J^ z(jv`NB~RF5I5|6qrd?7l*X#9iynGJj&gP;RhH()dm&bz{3D}e8q;VhY^u&iWsDOuX zTV1r3aza6kxS7hOZYJ@R$`l2+t0*GZ0i3i(C1*1?9MVckNeM!V z1r`a62?SzTfMR@D!ZTZ7z(X;dG?PMr5+Oa$!y`(OLLw3iR45-sQMDLT@_87dTrQR% zLR6s?hp-x_hsK=*2-&tWwkNRs7h$Jjqh)a~u#00FFse01HL91s0fv1dI`43yk3sF&{$(OfT@* z6L|9fCXdTF#SM1Kzd9#$#I$3Od^!gV^K_DclNld3GbihIcL-Umuo{g@Ves_~m;F$r zT{W-iTG`%ZWa*BU=KZdPOXezzkEPYShSFU_@juSDB-dx`7L?w$lxH3_EdlHu)eTT_ z$<&*O)-9_UJ=}Qxd3a7pI$MAW@Ibf4gR8UATS9V_Bm2 z^&uJfb5B;r;=j8l#%+t!F|UsZZDrv;$uyT8{rzm~fF zj_k&vIRnRM+vBZ7Q7h3ur>OnQ$cCh$ZD%grs+=`Dx8iPEr{A>3pSAHsbNSl-gax;f zhZ%nRhT1Dc8{ai=k7ZFJso>a*v4`&)N9VoFYb!I{^P5hcdpA0@V%O}k{;gE`V4Ac& ziFM~e&%=THrWqr7+ltmjoRSx6sZZ-*YvHstvdK1d2(+c0w&_> zI*8&eJAd)(`_)|wqSb-uZ{p;y*zA#xq2A5iqRMMcm*&)ckaWn|x4*Gv=ZtxJE6MGc;fElj@%9V{RDtTS$5)bU%LODp+ffy6Fer1rPD zKP47aL;6DK&BpFYf5hkmriMg+)4H+gWuFeUte$nRbj#JaeI32^Kl^)X5~@=aLjBE@ pk_gRztqh(2(4J@4>WZylFR{WN<@DOy4THgdgGQ}W9bLZB{}0-7der~` diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_gshare_dark.png b/OsmAnd/res/drawable-xxhdpi/map_action_gshare_dark.png deleted file mode 100644 index 7e2c60df6bd9c6052377134c3bda45571883f9f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1890 zcmbVNeOME99G~*i!lZ^%&{EISWEjWoZaa>fPGK9iJvzV%>MD%ec5?%^o3|qdmd1Py z3k!OIB;A8rCI%#efFfi@5l^JN_<$LaT39%J5;9GrZV1*NKK{`?&)x6${r$e5@B8Pu z*OC&Rog6eHh{xki)~HoFZdLnUejxWv@m4>}Ez{ZfHS9{-%x04e#fvl11`5#F$aR#C zB278#Td74no}bg2yoOz)T`n`ywkXo46XmiwI5dy9Xo<@~8Z#&sFi`8Pb~$+ccoPU% zO>%HGrWI=)O3GqY=Q7mF+=OIfZibOCflC$xi(E3!fQ@2Fz-7y{J7q38IBHkM?S02E z2#l(*8FKJmP;0bFfRbh?0E>!-jEGbW;6xM>EtX&apyqC4*h014g36u+8SnYgF6G>ZpIi zc%Zg3Imbc4I?73BF-EQ*=DFiwu67T1b7fYBn$tPcnPmr^7VgHR9_O`0L80W(5`5jR5w8G}m* zM9R$q3Xb7T|F?KB7ZmK9l>bc5_z^dbzU_S;aKe2iQFe|#4962TO|pTb-&Tz(F4=Yd z>h9JIVVtlf>)0-!`w|U%x6KY}T>C`eeezxe5vpe}C0V9*$;ewDwVem!m1@Vky zb$NTXh)Vo%;T!xF0<8GA4Z~9cOG+w!J;Xw(0ZY)5;V#qSwN1IdckkBKJU4Z{bk+e; zl28;R49K5Yzwkrl$esOaE+g>S1p0ErX z2n%deOx=-QI{kg;-9U+Q>Xq_S9TiW%SxH=J%p>}?HgsR<=XcEXLqoMg>f#*F&MAY- zs+KxW_9dmfvO*hb-aSj+xurNsc4*OrE3!B z{oG@yaQ5A(3C+3w;axKI2}?j_f>T$quXOzz`@)-4mKC1cX^&eH>#xnN3tFq!M?~^f z&vdLhQ=&UK!uzW~qPVK|?R36s{_P1Py)EB1PB_*a;HXaM?rXhxR9celj{jxdTUXD` znC}0zq43zykw)MrjD0e7!rsz|7GZ!6Yi-(G6jJ_WSa^Tjk3C5OQMo3ePmABW(9G0* zyX=p;qMuIek8PMw=qJgsrq%Ud4YqCQ-4mI&y!i4!GyhievCfRyk^cJQpKsA5JnvrF zuYWiH-0yspEZh}V{JB1lk+i-tRfHE^sF^dU888>#S#V~G-}U$uhDgq9f6@i#pSlDh z-!&52Pg6t%?!gnXz&U43Hf%v;mxVu(>OEYTdbX{*I`rnYh~vsH=7sN4w*Yq{3Ol!b zd8#bVtnh3iG~M$m<8Qoe4HZG18xN@q3h@J7OF7AFoUQlU zd!sY8J#kb1yf@P~{&}kYlRa2@?vDObcX diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_helicopter.png b/OsmAnd/res/drawable-xxhdpi/map_action_helicopter.png deleted file mode 100644 index 207f5adc64af503104b9b3c0bd6771e16353e1f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zY1(<7Emj5!R_SFTsI#W}y14Y()z>%S`R%i1H)=EvFdDKY^~27+8x z*CdJ9#wOX~zp{?XEGiBTOdz63$>g_;^{wNRqN*=6vv7DcG(d=>Ti+~Hx=|Qe7+Em$ z^O7Bz#le1zKfUyXHCN1$->5iU{+;~dW!**c%~dh`ES8+Vz-noqw2!~;&a!`wEL+mq zKR(~q{M}W;wQ>Lb=SI&q@!r|?<$d5?hBm1>PT$$ldB+;;b0qdMFPHyu?QXs5X~$X2 z8(uGrd{B}bcDhnboB4SB9j|SSraZ@Lw@=D-C_BJ6XO-;vpMur-#S_2jY+HKR*u5nE zOw!ist<@LWtU}f{zuBfF(f58{No}#@grhks0F?S{}Q`7w>>M=j)5U-Z6 zmD?1h$!`8q!KZdKI_qUGK5rM6`Aug2&Ha3_(z4!{lg_++QlF=C=Y#pbil?7k>Z2!1 zcsKcmz9~z8wJ!`9eLH;3f1l0bs5>Jh$t0wpzz8Bh5z!F*hiTWVnV%FJPfY~zJzf1= J);T3K0RTvM=EeX3 diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_horse.png b/OsmAnd/res/drawable-xxhdpi/map_action_horse.png deleted file mode 100644 index d3682d48e3706685142fabbdb717c4163ab6c26b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51Iqk~P)kRXb&*^ zW<8c{$KIJ_W^BFj`${9?RXSI(U*Lu{5Vmmrk^TO zD-@YZE&WuHCZWkF7S-!az!3AKGsGdEOeS~BgB#$<67kTfd#60$D$onW<$t*&4%%iz zDfSOsA^R^?9Q6EXO);%r?!j&B#zhURg#)OImH2qvq2y@77p9csq~Rz9lC7H zS)d%nB=9Hts;74qtzFtw2=>o*m;32>-#v=Y6p!FZ3qX7E)O- zyMji{#|Vr#$btxDK?JfO0$C7&1VIo4Az3Z~x+yE2V=uif00000NkvXXu0mjfRkmY! diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_monowheel.png b/OsmAnd/res/drawable-xxhdpi/map_action_monowheel.png deleted file mode 100644 index fd9c518b5746df07489893a68f375443a026a843..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG z9ySnQ{h%#8g?AHUYIB~0 zIfGgwuYm9cAZAf(;Jw6~(0n|SQ^~{koZ{P^o%j7W{aX00-Ny7^v7d_&^M)&B%hw)R zU!H3|$(ncJg|LOuKh{l%k$kwtIm#>VkZw!G_erzU=5&U7DRFzM#C)Cbk6V><4(C@d z$qTO=_Q_B3IMr~E?Mv;HI}73z!UUO1RCh9ocNGS#@4R)nPV$=FiNZz?mvsk<+|AD= zu^pLi&2^HuZK}1_6SJqu5j&MDCd_$If9+9@(bomX{BAFu*0%4+$t$lMTem&eIi}nb zyio2*zuc88c^l)7YnO@}6|@ zLh&63E3ylp*mlRBthoN@g!KYvo-IKBu4umR?J^C|_2z45HkUhCOP=4_@Lu-91gF~R zk?dQhevC^wC$RnhE2ICyd>mnwy@BiJx(qz cCi3@JUNQQ2dhRY?U=m>PboFyt=akR{05pOCMgRZ+ diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_motorcycle_dark.png b/OsmAnd/res/drawable-xxhdpi/map_action_motorcycle_dark.png deleted file mode 100644 index c91d620e84d9d723601995c8991384173d30db66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zDB9b{~S^;dG+=3V^Cg|bqSyk&p0l77_8WseV9k>M>^5IfmN zaqh07d_Un`4iBdZP55^`rhSrCep_uR->-*~%l+>bdez_Ec+OUR>a|MKoE461mnXlI zzjb-flxsVs&7}4&w~;LswFpwmng39HR{tfdexrNe);=^np*t~>#Yg{~h*f*?E9J5; zD(QPSK7aPqXsh3PN2daRK?U>to}DFjJknVg_AYKb-0`!@nseaC*OF7y+Z~!Dwa=BMXE7yIDhM2i)vV#2 z@iVY4EGW&_^I&nHi0Ib`3*RnKNmsI8I)!s-s@~E?a$EWoJOg}RsvfuSs+<&9qLQk7 zoze5$q)R@1iOc>@sxrv3+_q@T-T?kN!9H#R!N0DEzYa{O*0OqWX}QVmXur9WH$7nC zeQ`Kwd&V}!tRk;~)RmXx*H{XaUfAlt`R#@|ag!F!ahs4hJI&bhQqPnp(-xcxT)!NrbiU)9vPr5{9gCr8g*lz)AyWuJm> zw50az*Ip_ww%dCi64|_C&*~(WN(Dzbj|uETPZ|--iNB+HOC>@T zXnVnyzl$oq_5DhGG?Dw;J+t>`4f0McTY9%o$x~NO_(IR_?r)3qw^p2UoLaMcmXf#b zy!rjsOJywPSf)EoTq<_na)o9)Yw9gOPtUB6bDE99*Zp%hP|c2A+46WNPtLjJyH7rM p71%mOR=aN2BySr?Oaar$Pqxzq`vec2R=N%n@^tlcS?83{1ONwf0+j#& diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_openstreetmap_logo.png b/OsmAnd/res/drawable-xxhdpi/map_action_openstreetmap_logo.png deleted file mode 100644 index 11213d270331f5b2cd5a21a0b3207c6610c1c6de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1435 zcmV;M1!Ve(P)?@3|hTcvubW{`e$bPzWSD(s;j%J z`*wbw>3*lDXZD!(ViMq;k4<0)#_uUb zM6MFiEh4&3L^sOU542O-M0;pArHIItsvWe6wx2Nbd#eG}f<)vU5#3!qTn``&O@V<9 zM+$&-K~rF0Le>RP$SHTNdC2y-oYk;QiVDK=rV*FR`c8o^Lt>4$V@*~ zp^gB`7HYt`&CJ*?q!tmub_1L2-mQ%qQAYrw(JzT3IlT-xm6#7fV&*1`2%t<0a(B-n zf{pH-vPxmqf;GVEpi@}o-gF!MvLo+7rdgUh!o?n=5w zYhLYJ1Q2{0vpQR@X{(ipV5!DL^k@gH>M=9FZFQ^whcra$oLa@OqmMLV0aRzGzi5*-I~y&JyUR^>og%HcnU)g#SV;RWgfi%0?4tH0S}!5a>_Ld|PpY ztRU2C!;=VApd)}X1R4P$O#NIbF-vCn&~y_K@!ZT@JUk2X=m*^UEGWF--y)I$zi$5( zGb5T_PlV?MQ~96_fxgPjKN}r~^+4mYO4C(}&LK0Z6;+^37t3-1O#nqC1AaZ|-^_fX zXq{+uEP?g_d8Qefc>|Ez=}^Uu4-K?s3bY3(MI(;ff=q$-0A&a?+Bjwna`%ST!C{t0 zG_!RFT*a_W!eqCKDbSt;Wvwz=9AtHTM24Da6ekXP$js(8$Fd+in33uopu<$%=v0$y)|s0m|B_qOGQz;SVD6fQXO>8ZD}u zhzROM{aR6DrwE|TGck3?T|vTCo1U}^>clG4)Q~^~y)bC5vM!*~@hqW6b*fI3w%`tc zWZu^)9mn1dmZKgQ1*~UbU<$RjSzp)BT>;v>nkOPi5t}#1 zDxWij+5?m&)FC*dB2+&&u!l5-+5?m!)Q5)CdoE@QwFhWcs1FGTZiVDnkI=h99XZt) z6>1YsN!BBpMhGx_HXjvt&5PB(MgWZnbp%emJmcpsP$eM`tAS3ASWOK}73v6}UZL)V zQ+IT^AB68XFJIpes;~NHoYgIDt3n+C)Fae0a55IL(K=M2jsS}8y0;1kP^SPzTx`p5 z0BFj^yu-b%!vP?5GaYd;YneAwmI>$XqngtD+}It(z}dEXJ9I;E08_nr;ziP)Kx>IG zWFlv7Z1h^d%;%@J8lFI3@ZF7Bjw#Uiqh~>$K%i*}N7o-T~K4_Rm zq>VzH%C$IoE|!TL&XkfaQ;a>wsZ~l3NEN>LCC4KT-?e1FlZG$|8eyJVnWDq|C#Fpq zRWzPQ%nkY~qdiSWGHxEF#uu{U_(x`Cq{9|5L(|JhhZ2stS)(Xt5BnTB?zmxeHk0?U z+;PVErHX>%2{EEk9u-|odr8wvu|#b2T+H+J1<`Z^m*ZE63DuQ!j9bxd5Rpn)#)k(L zxDC=5RV54RX4qnhXIWjls!`1PU8OC=&Ou)4V6)@wy{Rel@8{XV;?BEF30+lf1?fL^* zm*$Yi&VMj$;NhT?-Za9XHNIC&d}FJ`tWQ??*Iu;7oM84${k!hOlrCm2-L*Uk`PqC= zA=~yj1Pe_xXkWPWpaNzD@p6Jofl8Pm8MmcWo@&teC60X(BGI%Zj(Lkjw^`yikcYQA zTzOE@v+orh4WZ(HRIWvGB~aP3Pu|*)>BB3ADLCf$q?P&&des`Y(Wy1e4N@EQsblPO zQUX!GLGKjD^sfEDAuc?q=-F3yeaN1)=FMLOfD3{89?vN6UX4iehk6WJ4kS}3-n9z`7xH4!hK~>6#gSv6KKGoYea(0 z42s@=1TO-y|I~;Cn*yl}x<*9!$e?HpTCgI}Tnt*Ul|j*W(4V*#=*{Iz;J3h*Kq`a& jkH~PHK{Ya&Oy-LZ)-kXSrfuoH00000NkvXXu0mjfwR49! diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_personal_transporter.png b/OsmAnd/res/drawable-xxhdpi/map_action_personal_transporter.png deleted file mode 100644 index 9871e04ee4b8070b5f35e0f13161743803207bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmV;10(t$3P)A4Z{339d z_u3};8i2$|&Q;r}*7DDXYWJv}3ZYT0<2e0UgIZa_8HO}RZS*ZfcTcEI|D18vB9R#q z(WCb1KU0vv6~s{~1A6o5`-wzS2K4UH_XV|~Ss-=}59kiHqAV2M(5#7u(|)VhKCE$p zD1?ZLQtlWhvzP_l%N-4BL%(uI$J(ZR`jtDhEo#EkED>2Y^`PECwL4WB`bH$V)q@(< zc2zu&I87JpcFXM+a~7&ZDKL! zERj2!MPlnX;0@jES;A}S{%ZJQIQq99Q39GPCuBG+OFDr@x95nfXOu(@Xw5J>MtTrm zBd!&u({-eEtV2|>SJDeicN_DBS=8OUzBdp+%)e*KX4N8gKnF}0wSXTxAfH10n4$yP zW4c$AjBfj{(e)2X$J4hO`a2D3K>y9E?i*qal@HqAiT!G;xpMwPvp>^yoZ-KJI@NY8 gq3|Vy5JDvL1E!j?KFITdI{*Lx07*qoM6N<$f@BLGE&u=k diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_pickup_truck.png b/OsmAnd/res/drawable-xxhdpi/map_action_pickup_truck.png deleted file mode 100755 index 83984e2185de08e6bc6c6f7d46916e3453b7b958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmV;@0xkWCP)lTfS(}3#${ESaE_48_5zsZs z69K9d=$5SiI|q>rX)?200EZ)9-I8@kOfTE|bxL=!20-5dd>d)&maNwR=sken6O-2^ zS?@id!HrX4)+Jf51<+KOIlFYSUJIa7n5C2TDgaf&ES;>^1gI2dsbsw-K&3ECC2KD9 zR^9WFX;;_saJ(XUw%MToZR0;D>EZfV1ZW%3J;?(Bss!%l>y8{W0ZM>o(!Kx*Q0~b< z4w8f9pd0}?D92AZD8Nq-igV$nxA{7uRtKE}c-r3m4B#T*+Fe#n>udqEwL)iRrPaJ$ z!Wj3}MQ013gYoGJGkXKz?`zVS=(~%~;*x76H-$Qm?vzF$FRil%XlgUg^*>v2^B>IY z%SKMx9ODhi2 zkw&d`&1^B9vm1wI_HH;{@={0+#}5tMv<|qX-BLPd0S$L4pCJ#o@ky@nSp1Cg>8_kJ z?tE}kSDh~c^d!X0J^=8~TLA7XFCIn?=4bCi+$~NTCbXN*5TI7U``k`|W@b--1Sl8a za*!M(2jvLJK{Hq)$07*qoM6N<$ Eg0etEGXMYp diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_sail_boat_dark.png b/OsmAnd/res/drawable-xxhdpi/map_action_sail_boat_dark.png deleted file mode 100644 index 0668160311e064e50c53e8ac058985804c3dd711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 949 zcmV;m14{gfP)CmK~#7F?VF8t z+At8ukG>9&Zs1H%Izi0@?FinWbb`>rNjA5CkD3GdLp(fdtGDI1?X0a3TURh(HV?5Q7NBAObOnKnx-fL$p9x z^WC7`p>35XkO<|^Gg<>9h^k2Oq!qqw(JGh*9ohm5@D2ir6{v;jh||-deL<0qAwLSf z#VBMem>w0{5(0_ogMPqt`3ivq-(o2{+e;8S6Yvodan30SA5vXNse>3qAO;bLK?GtD zff(L}K$vi98rQXC_h@sNBB=(V15s>5i))O;4}04Imq1T&J#1_T zTzyal1*COPZf&cs)(D~>bWlDA*OD~XNngWlws#%m1lmCPIRB$_;HFG9t^1*3D`{K( z)8mXF+6hr|y5DnO@F^5a?uXbe#AhD4f^yUSEw`zPji7?l{lRC)neSMv#M_MRe>A=V zm6-0m{*%}IY=P;XP47Kk5i}y*|02sptpD_-3r5jWg|RyM?MkI*jQ<8wgH9{Ylj}+G zC5#t1r~e9apxhe`G+X7^XrPS9oR8f8^VM|d{K3)iCcsal!i3r;^uLB&D6>AM=;T`x ztcFO)-vjwN-Q1AVe+_~#eUw?U){Bp8l_6{7_MZ*)|2eW@pVB}Aa{JGQGAVZ0@F6W- z@t8e_wWt64lo1vCyqF%7X{*sbqs{4k2pyQsPJh6Z{ztMN?Xx2PHH7bJJdpoAovRCd zR!rks7n}4(sZeYit7L7SK?GvRDbNng#?A%3pPGL+Dvnl}sfYO+{&bepW&g8^r)B&< zs>s2xO^4V{y3aT|Q~agZo$q7U%B0~w^XV+rXT{+;x=8C XONBz$K%zd|00000NkvXXu0mjftN5`- diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_scooter.png b/OsmAnd/res/drawable-xxhdpi/map_action_scooter.png deleted file mode 100644 index 819fca32188d098843de1a5f52572f01cc32c280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 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 diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_skiing.png b/OsmAnd/res/drawable-xxhdpi/map_action_skiing.png deleted file mode 100644 index fb94b43469a2cf4cc380b6a25b46d39238bcf85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmV>G`U`9__$g z4nkQ0LP(kdHBde9?KE^D^w{8YPv-P{2{8@Kgt^|owqf^;W*BzK!J#aoX$L;n zD^5%%Jedcb9Sr9<5(7C2OxXGMR08fqu%@|TFW5)xIPN&f6ng>SP8S-Q8!(&L5YlyV zFkyFp^qwp6oOXwv0>sTL9T-~y_$!Aka?hIkfagJd^!(BWY_8znkV?!Y-0-n(%|*gr z7P)2Ect&oU(;@Kw{!}cj$1XQ~TjU&e;1{x7NH{zpLL_aYp`1auJ{024VK=7GmOkuY za+zC7gcWM+9<27*<$6;?DS=sjH6o?@FyH(JafpD;P=T(alwdgL=n@OHzbFYF!3h_` z;Ve_0H>V2NB^GK0-aJ)D*zAX0Ln*-_w0!ImJ0za?;7<+eNLy>1V+BLpsw0u+4yvA) zd=vO9!LXlpl1&A8w{MPxs+o30gv~YO%m|?d6Ehgke2lOovlpii z!j->cI(tm)y?5PDhxmL-7<~|bKYba(9D~#MS$#UpDV$eIN(i&!3B)5X@)u}X&Osrp7wCQ4cQVhX^{W7SF50U0m&|;$QFF~36$*typ-?Ck b3Mu&y3RXu`#+Lm#00000NkvXXu0mjfSWClf diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_subway.png b/OsmAnd/res/drawable-xxhdpi/map_action_subway.png deleted file mode 100644 index 996f2f75a61e3a9b13f816dce251a1f1df12c3cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 871 zcmV-t1DO1YP) zsACZM8ToagCS!E(LecU2^~55d)>2l3m*Im3(ei1o9{O zCHeFsmK|bfI*-K(GshX>{%$Eg7u1iH{LI9##6Xar)II6B4f*W5i@k@QFVXus1I^*@ zGxS_T3+dxe++Hp~#MmE0zWP>B1s(So58t387=v;O^n~%C9ZMDZAb3!8>kbNd{}+9} zttHp^uTTK(;Brx7l1@!l|65ET0TW2T1QIZT1WX_S6G*@W5-@=TOdtUhNWcUVFo6V2 zAb}!}JI3~GCl%@q z>W6#*d6pQ|HyAB$(1UL?imdPm`OCS*oH!c{kGuU>C=JCk*!hIIj{-?6sIRjW_EfO+ zu4AkVwns`JrfTjGrBSRFF%I>#m|K@|A3^$ZLTNTS}c^Q$F0x&O7{T zg6S&p`y$XndB`D7OGu=otSdK>tm6cKDH=C x=^%YE6i-&CiU}lO0tuKv0w$1Q7=~d?mOpBCWCJyv$Jzh@002ovPDHLkV1n~>gp&XO diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_taxi.png b/OsmAnd/res/drawable-xxhdpi/map_action_taxi.png deleted file mode 100644 index 3e47e4787878d518e0a97a6e91a9b63e77743107..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 751 zcmVOV;Xn-|hVo;5d%sIF92uEkHycxINH#w&7YVo#8=C*<#7?19qh64Geh!TYBiZ zgdx@fy@Q@9enZS0GpL6lYJs>?|CimPf zSF6=iM!+1%_E(b{Z`#rnjtmhBa>vDw`0 z717#EwA?WWv9v9hj%WD)b08BolH5R=%B5&xs9xqN^D+||%++egpzVWl!*z=h`1xa~ zQ9&l8Y8BH86a(DQkjk`QSlf_|II0*V&+c=v3_jJ!-~wfEfik#28C;+YE>H#+D1!@> zq4+J=LnMPPOQss!dIn{1fig%1+9|(32b07s6)3l^+u~auwlQ;`ca>N^2%o>9QRW!4 h<2a7vIF2(D9s#tMN!v<~OAG)2002ovPDHLkV1gLzQS|@- diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_train.png b/OsmAnd/res/drawable-xxhdpi/map_action_train.png deleted file mode 100644 index cba8a6ee96c318897b39be7d601ee25b7752a86f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1787 zcmbVLYfuwc6b?qk2NaEff?${E@RCh-H=Cyf4GDp00vHkK3=}rmg`_0ekSq`o5rVA* z>*%0jF;ej{W3>V@^$i`Q+M?)K)Uj2mO4U)c^--mR9nf}zVEe=IM|XDj-gEEwo%eC2 zCMWt%3!cVcFnm=>3N5`RdA=!=>Ho^d-z3sY5S5TgtswKL63j+0WH_lK0F@cbC$t2H zmlmEQVi^o(u`w-^%G9VOdeY3nJQ$9{Y^B)@M(kpT71I|G6rdyWjTR~UX?rIdFyc~n z244edta8F&Oe(VxE6S47^koHlG0t8b2gEugv;s3hVSvMIve+dKDSK3}gx-6Oxolt* zLKR5aZ=A~1qylo%MgV+{0Mx@U3<$*>m@ncX{1^a%U_KWTb72UCU&83L z_Owzf!POFWvdE^V>ybBqoJ{BL{f0b1+8arV%}5soGbu=Yk(sbiDut9y-*9jvF3}?h zgdsc}6yXFPD}CUooQt({*92sQp`KEOTa- zg&P!e6JptdwP!XYvX7&8S0VetG%W>r6+brE>ryO>UfsNKA-|&ag}b4CcchkeM86|) zhK!vw(FLs8({*U1v?(-(Vej&RW~nEExva=)*57f#=;4YxJ3Fgd`=@_ZIdq}m8LNZQ zs%})M?m{UMCxT7Po4Emoqtvd&PA_X{7SnGv3k?ck49naRpnlF^RYgnH#fgt6c6U)J z?VFC3|G~NbWbb})DD#1|UJg&snwV(%xoMsiJ>>Ne5MlD(kY^$2r0^Q$cYpOaJ`6u9 zTq3UB=Ra&3l)0H-4w>7+49ibB1N#Q5l@pSeE9>(7jLGP|5p&1+tb_L&d_eIQ{KaTA zGZ#1&o2Ia2ELsYxncO|RZ)8I~AgKIvMAc_;_Vouk4lHb4T2vWTzi7A5x#;Xo$@OhB z4>GSjDu2K{e){sj3$K^NOHuRG-NZ$H7O&<=2e_>F#`El!>@(6^foq%6TLShRseaNT z2)0aGd?Ni-_W9_zX=Oh3kwd@5Q{^d3){)M5m%@pEG24^efb7(j-*4=ts-o1h$*(0( zFNJQ@k*A8G%)3t)b`enD)yVtW)UEl~tBZP?`>)$h7*3bpUUPQWoC*7CuX#7}(gecQ zsbX1#n&>>QK3R+gwz-PJBij$xIE#a#-R`&nZ@(Avq8`wDXuasdm8m(up6lVtmk{y${;^G{UyIUJ(ym z8>JhXURO?PJQ`NR>Ynb^vn$SWN*SS%kv^BD`-!TvrF-uT+jg2Y{>H?cS?+Q_$q&uO zdw8Sw%9jU1v_ZEY@%$rbva^+CYxSX1$WPd^?By+3uJAx8K5 zp6?92^48gk!R?}L9cSV2s1)1hNj>h6$92?ez1Qt|pY%T8;`-&I=2@i`Ick+JYqUd~ dc65_olNpC|+=ZIL40=o$3{^t1q9s1p`49Z)n7RM} diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_trekking_dark.png b/OsmAnd/res/drawable-xxhdpi/map_action_trekking_dark.png deleted file mode 100644 index acaf7a697578434bfc22fa83ddc514fc69818d11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1001 zcmV0>T8i6Oc}D)fM@b5TAUf$dbYO zyr*ZLd^Xk>>3#?U6bgkxp-_kbB93jlw{3<0+1NIRp<_ibw(XFI&KVdgE#e%DG=`x; zO98V6C|WB0{v3heutrfhXipaaL_v# zDp(Rl8FG%It|IFdiv4dPTM5WD% z%_H)BgG&w zv^*%bKvSVz<&H*Z|7?AhW^nxzNV5b$?}M}sniD8%nAZqY|B})ydJ8&CQ>UGUS;M?o zAPVuyYu1p7m;!wg+SOG&EdyyDG!fcGt>lTA0!ba>T=D zW1;+Lab!P3JzoXS!R1y#ugyf;?y!EPvWL%#OEfd6=D`khd*s8K;AW7zk|%P$ydd>i z$I#%H=>J(gW~s zm3?XGi<$@J638(971O_9`p3dP;;aPXiqxv9)3eo~5hy6kXTg(kk3H8k5^5(U%Zud9 z15=202d*UVfwoi zD5#PratOp#@i8{EqKEiPn?Z)@5B6_;5lH*LS2B_cAM8X= zh+4@LsRinK2AzGF=OS1U$Ps-2!utn@`J~0Fb<*^pO@p{e&2m+ap^#9jf(yg$4;QRV8C;> zcXg0v>G|2J(|2f0e$b|P{>&RLGxbNlr&N^!-a6)7XjIGclec|w?M`BG9H;H`7UAPJ z7wG0cGYS0l!f~5pmzvLeXP%HoM%To@7Ja7rH|Xa-&nW@{V_AS_vMF?My7@TnzrM!<>c9xsw}v@ z;^Bu?$8Fx-QTTgz(b;)zi_LA-9e3$HOxf-A^R#)Vm(ZQ-;t9^LGH*8 diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_ufo.png b/OsmAnd/res/drawable-xxhdpi/map_action_ufo.png deleted file mode 100644 index 99e96616a59bbdaeb40a49bfcf8a518673e7ce2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1277 zcmVTaK~#7F?VC+* z)JPP^{|+;n8EIw+0s-Q)S+N9e(42se3(y<@2~Lpa1cVcGSg{07&>(h5K(?&hLa;zA z5;_nv0o$1B^IXowyuyX+v*i>|K376ycH6#|KkAZa!q^}1O=TS3b91KWit z3QCUaxGF-HhoN#)5U~PD&-KajyRUip3YZnHk(FEV1ICTGnO12xm!_eG6 z?YRU1wu^4^zxc|{>?;C@i6E(&jgn(x1S-onwrji2kyH@W%wh!E2Y>Gs^E%0vQ_O_! zI^K2P-~numKr)Vz{NqcK({;d}i(Dewx_Y2qPX^O4XsNN!fOd-vuAxCfNB ni1FR0cSz_#2YZkhRP@NeuMKLQZo0Mh8T zii$=6f_uTuMz>W|WD01d_!EO4t|DtdYs8-z&~O!514_l8FU^^O~7&6o4LuqXWM8+fWsm0V>3w$ISe<7ZAp6r6Nl}srYlp%%>VS0njEYvII0F z{={InP?05|A@OGq(CR8u0TPiHMD#qIoKuHGb^K{i(LE6%NBfCyX2##D)(of;%4C#D z{Ap0pJ`6RmDnN};Vk1@OpVZP9Vo^>p&A@5_NvBTFnfa=7Y;sswupipzGIMeM#SUSM z?FEG4cSLkeL^l>OK}6mW(Pu3jj6W1W@my4}MC20@b*C)*P!ADM7p!nf|3*a5ER-`n zBghfOzt>Vp+@{Sddr5EL%b;-;qqh#9}yI9GFE&g8xXSdVU zSSKQyZNBCw*6dRary5X=_2KY_svq*REgNz%Krp#Ct5Q(QY&QgD3T8eEv`oIG?~0&? zfawAhCjBP3(R41s=@_5yOLb=v8F^2(SS{$WGqw0tE*4I*s2G;w3$kV0GR$=tMdn>2 z*b8Q!^D>Q{-GIVL7Mb(Xjl$A%QJe=Ps0zh)Kvieni3yxci=nl%3s6{*Ukz}k-vOl4 z$oLU%HoKRVor|aKoQ{?8W4^B%l&mLOYMS)rt2KsGNcMmbC9l4Lr)(O8ER(^ki`jD^e4R!ubVfq3&e0W`Y)dHc3_| z!@~*zQt56A#Vg#$t6w|mfi}X$XC`(w0n!?N zjN=_pVbvUv1JXIRE65e(3epj91?l*C3~~jzf^-C2K{|f_0Ouh8SZ|R+F8}}l07*qo IM6N<$f?a3Ru>b%7 diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_wagon.png b/OsmAnd/res/drawable-xxhdpi/map_action_wagon.png deleted file mode 100755 index dd699b5580bb551eb648de0249d58eba1d5a8a17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmV-#1CacQP)>eo{1LkhfU^a6a<{98g9f4#)x7f`}`~732!C5pV_B_<0O+1-XK31YAKj zejbBdK^+yu%H+XMW;ruQf7kXO#(n_sv=*TvKq>WT7p(0cKv^v=l>&;!9_@m){U@qf zB`#$FG4m%Pin`1SvVSI`tDeDo7SP7vjQep1;I`N1Bmr#{&d5bn^wP)t290M5k_X6Bed0J0}y z_+05Y%>03fekLGDwk@tEF4v^JTGWhsZUEe`0ce<0(hNyAV(k&YRTDZyGzB!Pp0xlC z^NNZ@O|fm8E1G2 zPPtl>EPD@VMml#xxvyPK-wZ*b*0TfOA7Cj2q8BCH$3EcAcYy4mP{`QsurM5){?tcWN z1NVkqY!SzH1!XWgAO~dgG*^%-$Q5KG;0m(w^B7d1pt*W)>hT>BjU`UGxBp_>r!G&| z*t{F-K^jO$_1{dTugmH)lhoL}FExiH*HTDl(>G#fen&)qwm>3bgVyFl9lq!;Yx2I9 zolJX2)&lHOHkSeli)ycKIfe?~#~>y>1Gs3hXw8_DLSVJcrGTdHC!e3}FA|AJ;Dp}~ z9WEI)3tGBwBraCjTnb2HjNB&VzHmKUQ7^qi1e zuYhE>xfsxB-0-cmxYc+KEFUuckQk(`_i7hh+uvfd8c?l~r}~@&%Drlw>dyAE+ZE&r zvT4l~)o}zmb+2N(K6^p0lPA~m_@I5|I!nBce}gN zg3e^HNzm!$0>11e)P+np(P4-t%Q6w;GGu57@MX*52g#N>FiY@*>4?sM3q?PWeejZd z{xA3Zo|oVAJlES;Ut`MIl7k?K$y4k0!L>H^W@ka!^!rE+Ts9lk0b{QcGGe?25KdHr z0QE%p7T^QC*m3YjP>vw$+a-U%2zcvQL5Z08l#V$bQ6U;Z$}8h4FSG&!4T2U)c47~% zjAE!HI;XQJ10tls4OOfubnX!I&w!%xa-aQ42}Y1j!H-iIWsdk*tM8R~`&{ z)5H+#bMIR51y4>aY#1s_5V2Uy9J87gt%aZ%h9O7`VX@#)1J^rbgOB5~zAaxK{f8^)U2y1zpO zgb(OSR1;u5LfbN6$lc=|r4(T_Y=b7jqVR2QMTka#YXpV4*X1*1}T`2W@k>s$4e8K~dE-!;x-|a$Bny&Pux6_6*h| z>jp0iAmdwtzE`l^W3jAD1H7SVenn}^bU|ZSF%&(lsHn@8t~y%WEXkr0(|4rGw4AjY zXi_^6cWFulP4mo3Ys5fWNjqtCgm95(Y&gx>>^N_ASa84xEfghCHirPP6}$3g*paF2>L|d&>M#KrPLKviMdC^Uf~-63adZCot%Xy>o(){#TP=6G#)8)5 zrbmalyzb}6+P*0;ZRf@s)S?gTLL;wyCw~l4Y}^806wWI0P_b`L~P49r=yA;-M~ANzj^c$SzQCD*m?Z~HdidH?E1 z12YBMko{iGet+k}-M`LUJ1Kn4eLfN0`rgj_;~jNO{>H7>il(NwwO<&zUNr0LzSZ>9 zYo5kU9G`o!V0OB&?`*QPIA$Af*mLt!j<4vy8CW9UnNPd~j%OWBs!3}8NzxQ@=w`b-nw`s#m-I0qjogKmY&$ diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_waypoints.png b/OsmAnd/res/drawable-xxhdpi/map_action_waypoints.png deleted file mode 100644 index 0ba0241b028fecacd6b2c8a8014d83c0cba88d77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1677 zcmbVNeNYr-7(c~By&_Q&wM3VrDp6AteX5EVZr*}Hv#4es{bUAO~B zM}-_=)Y5Q33^gavNueS}L(|BRv=GQp(lH?#BO47&&>BZ=4>;=&$3NP6ci-oI-sksx zKeMGN$q50nmt_)(B*2_#OcVD+?>os~{4TrmS%SFD7EBq!QZ`F)Qyh?xG;0Hp*+FH4 zG(gdX>n?y;iNvpfNzV{6tQNw~Iuw*wM&WU|M6^T_yU^pJ?72XIY#^I)>g5BczLY}@ zt(ULBtfAanYD9@uZjM2!e}15VzZ{aH|z8myIZK97j+UqEf-41k4vY1 zN}Tjz%}!pRoOa-|&4{+gu=sPagn_{*9bQHwH(_sQmae_E;R5tqez!J&$Ig9~E^Fk{$A` zD12@6WLd-EU`sLH8AsmlDt2cE-#!ejZ^)b*>$iTxjPlaKPfq?6_ayG6>k}3S(H(2i zan8+CL}K3Hr0f0%BF^u(qOzhI%Ry+dwt3QTe!0x_MrpxJT`Mt5GNt*Q#yOY;7ScXGyxd^7}1k=Zu@#%$(C#7`uKMAG2A$amEBw z2|W9z&f05!vqIXL+H$&}#YBd}nMsjv&23DG{1%X*-+c8#&5;w(zF;!6uD2$wD|cn7 zsi(W5_R)e)|EfLRj}*ft&oO{ukI~NYvXUNYByn1 zyC+~tAwuf99fc*9o`)}a<_(vunJT2WXZHtnSIUU+i^tD#)@X*jD6d(1wZ6JseU)np zuPi@k@13Tr$?K?Ea9=;DtS@bak1R_b2;Xz($5iHIUF)MIt*=GAzB+$jUsXO+K3x2< z`LthO;E=2_;>?qf7dMlGZ~)vLZ(n|4)3K@p^<5!~ynD6P*TM((26RVVc~x3>e&kDi3aT5MUnk5kxsjDAfMyGp!5N1=du|7U? F%Rl+IXP*E7 diff --git a/OsmAnd/res/drawable-xxhdpi/map_action_world_globe.png b/OsmAnd/res/drawable-xxhdpi/map_action_world_globe.png deleted file mode 100644 index 3a8107e47709c287df3b0512955a62f729e7749c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1592 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 F|6g~Q(4_zX diff --git a/OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_bottom.png b/OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_bottom.png deleted file mode 100644 index 81ccbd89f1736d7cdbccb46fd40a126f4246c988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8538 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 diff --git a/OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_bottom_small.png b/OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_bottom_small.png deleted file mode 100644 index e7ef5a2473144b6eea43dfeb6b19028c76030082..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4781 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 Lria9-*oOZf5QNfb diff --git a/OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_top_small.png b/OsmAnd/res/drawable-xxhdpi/map_bg_point_rhomb_top_small.png deleted file mode 100644 index 0b26ad5bee076dd88044e94ca93e5979712b2f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2073 zcmV+!2RP)^S&U_QQ_w?!08C6wVMNyO`NeUoIwrxMCb&_fdL~-)@yhL$gvDmjOR;*AQ zm@knaLdaWAl5(o5wke7t3xXij1F2>}z>#J7w@6MtpEpd?)CLC!r@Fejf`kx@5Hdvw z`O1L;P!Z|LlPCG%;o&w}mV-zV%8lpwnkA_wK)?}2aXoqta5POTB$LT+mM>op9F)~J zgpjXYEfn)=cMfi1VxllIGSZH63kHJ-Q_YZk2kPzZZLln>o0b)DR8{@Dv$Ion;UGPL zDxVKUvd72Awc+96w}Qc7DM^AL{L$~8(1!G5{dt;TD2c>JFmHf*53mg1C`%6v(w)UeCP08ki6ckbNb zj~_q&b~qds8yXs{t5>hyT~t6@w{HFY>({UCOeSOQ+qduKjvYJb1->DK;Gl^qzwk;) za;K%zb<&;$9315S{rh$_8hxj!sYwin!}iUaH~+AxfHrR2`0HFQ*Oi+rU@jx=ITA}M7x*%^7k=L$T`T}yLavV`}Z&5I8HzxYHe-(;@-V`lZy(d zySqD>$z)b!G8xe{OPKCc<>;W zj02qFRrAP~?j%lgan=g$k(z@d|_)>y@HmM&c?TbA`dNJoww zc^QdBXkWo6o2zhRI$K)Y^8-u~=gO5UTq2Pu;n=oa;CcR&YU20;M3HRU{-t3UxG5#3 zX&Oh59(~!<(}T?-UI5Y-@X5FvIv$PSAQvxQ&qw- z$}JX){j0aP7n??0ILcrlNEi+dTRa~B ztgo*RNJtXC0;znbjMI^t;^UFir%wy1RH_3wSgmS-<9mWA8bvZqv)GeRZhd`yFXHjI z?wkW8`aNydxQ7FfefaQU;nb;9@4A!I+}!*(Ka*3l1i6u>r>8%#EUUBy*t2KPi&QE_ zOAJV~^nindM59sZ{Q2`gqc}XzYqi3uS%O^UC%3e;{KAd2d-v`aCr+He(vNaS1IG(H zaPHv2gVLEZXG+Q8c^;25{_ZsR1uTNzPw~A6RhXh23Wa`d+cy4bnZpyc&6_uWdhOaZ zBnjJq;_XR)e}C}OrAzPWx{f~+Ns_c$Uj*gCJk|YVwo;`b);^?}r>AGGQoO&jxlq5-#-WLQx z)^(kTB35)lbX_kl`S>3nnx_4umOZEZgRDmnDxU+MC%><0nkb4Q2ONA|3^|0 z27`EH(dwiJz39bvxE1lfT+K4VVn~p07gvpe8PGh642S`FD>RlMmLQfOZvreq-uze( zVhLgi@+QC%GZx^prwfgF}}M_)$E)e-c?47?`a*T^vIy7~kIQExha?!1};cbP3B+As5yQ zjLVuFSUt5G_;RcoxN@{StR`3~$l82+#&S%``qIm~uxax51vFZleQ|Dl_PuKCe~J?sm&?5eC=GdE_& z)H8ElU!AZ&UUR2Hev6MGLo&|+31)+13_T<=H}f*oStfn3lE0hAtQXv~ShiyMTk~bb zx9h~X7S9cPT=BJd4Vw(_;Rn;_)w|lg+qbjeyU365+U7q}AEKI=OI*dC<`%rYEcB>5 zXU%J!OCIql$)-EnE;jseHM>^SZE{NVW(4oFkR^%XDapA7FE0zd0jf)KwR-u~=GTJk zy*samoi^HX>)zV1)nP`SpVDM@DXq5OWqv*@vd=5JxyRM2ilt=zuihW*yHnO~bC>0f z_RJ_^_|ST)v_|)Osr^5wVwxcJb`O;zxj(1Ex=S2p$9#_0(< zRq^YD@R59iBD^A!{)h+O)5P;9SriRaqe2c5%LbU7;+UTA$7H=~#3QTQ~;$FDN* zr3JI+uUr1FJHm0dPyETzLm&S4NM34~zTB_5#QS#T#xjm4yL&o=F9{s+w{(^&@Ur54 zx^CIbr&Ch?y`1=3QZplO{)~?{2X3gcKA5)m&C&HW``+GC*WAoiwUh1HTQ=qC2Opd< znrOE$S)J=CU){_qRpEzIQ(rnAcZz!|`1^;sRZ9m5oVXz`yr5HYxul*dFjp~ny85}S Ib4q9e0D(`N)Bpeg diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_bicycle_dark.png b/OsmAnd/res/drawable-xxxhdpi/map_action_bicycle_dark.png deleted file mode 100644 index 36afa3aa50471088be70791560475c832e1a1260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1432 zcmV;J1!ww+P)@~0drDELIAGL9O(c600d`2O+f$vv5yP7z>gHqFI0&QtrT8ID1nWFDzN4mun5*{ zfD6U*OqE!(0sf|Vsu^IlK)W7d=}1UNDe@8FJd%(HXg^SpD}n?&&`Zk!|MzM>skAec z@tFynNBlr0#?k!bp~wLft^{b;#1Y@lh+$NGPl6p!<=>LxiV$vrUUFg(Bczg`d@({Q z8I&(Zh$W-)#R#DkP`((!mx9U{Be@F;ArKcdxH3Qwl26e6U5~38 z;hs$!M@L&JMwntp8JX*)e6Gl|zc!oA&Xz%ae^DPlQ(BZnF{&E?`PNsb@~^NFRQjO) z`6o5TQo~Zbm4AyWvsWL#QA4v~4g-9pG@_J$MU_3OkB=(-LGKml?OqH=$_QTH6AuA> z*ilC2T7qKN;-rAvw~W6HyYcsdm!{8@K116FI>I4#796NB(4jAT=!de?I741a%z)W| zez+MBhj=n`fV77sF+vVTBZPzxiV<=H{hM$^9E&zW^f4Uha6Udu)sa4rwH*_~JBiEq z`9-C(+G(6U>b$48!*%zn{;d1@67pr~6tsshW(PCC<5~bV0^-!|u}hd3qtN)e#4e4(BD9r1g17k8F+qqeCO2xgMcr(^uXctUyj-N4q+hv03hr+7`s zXX{+b)-Z+vhAA7`m!-)!)wwPFN8Jhfk-fidV65Z%IDhi2%Xm`>0=B73l<#c^eO?!G zo}N6xtJl#fu%jO54#}f0&C16W-8m{4kZ_y_dejV#HujD>tk6>BgZp}yESDL7 zr%J%=2FMX6*tC2`11LUFJxpf?E|gBw^05J)0}GYF)K-oe(6oGPfPW2NR=Yph($*JB zr)~K{T>-g)-Ba05BIJWTyrT9iyX=1Y=H-L7*o&i+9VOz?IiTE#tRbK4rMy`_=s+VI z1ImYO+*2VIAs_rAy$%Q%En~;L0-~ret;x5UsEpS_4x8|KQaqD>*}zYm&&t90b*!VK z*MklG5Yl_pby4Z#wT@COLO$fbVZ=q2_1Bk0$Or%1%2PREhP!wcBOl_A47uPP$)09r z5%R%5`q!5e8oHltG4dhqa*HcGBAWis66TOE^_VIr4*TFWuA^^{adP6_1G|GiS2@O+ mk+sVw2!bF8f*=UOeEbK3m|-2l{>s?^0000GZx^prwfgF}}M_)$E)e-c?47?_1UT^vIy7~kH#n|s?pg!RGdMa)}-r_5Y% zk|k6KO z*Q78!%sn)9+WOEXzr~~KxQ|_VRXnG0{rC5eUa!gj%P-!qnVKFd?-}w+bm``O+fOC8 z+j!3W+H&UAz7otiJ|PH6xAI3s@2{Uxu0l^P6tZ+O&AUgiHyGvkfG)*0cuBd(|O z1q+m(kZZ`Ft}k8nW@n1o)?ZU37{7KTuUFk)b!4OJtI25xzJA*Gde-j;|1IL%Qft3W zI+4U;Vq4FD{bKh0&qv*Fwf^(ku;zT2P$bI-iw6?RQ=V))w}EaVp-mMp3?jE zu;-QWlDBhp^qdb%PPGw9f3?Od#$2zG<%sI;XQj-ikJYAb$e90hRp-)ok9{1K-^N~X z6Pg**cC0JrWYL|7lDdR%whHS^_D#CHeN#;6-5SHC1%*25XQ~*r?r}2#1Nr8C{ujx% zOO8AF&y-<=1o=}AhF`m5+#9Z$yE7!`T~xd8YhtkdS6Mf|QQM!As|(nb*Sr@@TKuoX nB*k{=u`_G;xj=!5|9?gk_f>39UUhW>vkQZ#tDnm{r-UW|PWO%f diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_camper.png b/OsmAnd/res/drawable-xxxhdpi/map_action_camper.png deleted file mode 100644 index ddec5227fd88e3381aab7cf032cdfdac3933bd75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c?47?@-{T^vIy7~kIM^<{DtXnS}tf}yNIHiJEg zF``K}fi;1Bnge$jLs)~X1N)7GR^rz(IO=!n)D(QTJK5I4ocwI}&AoH(&0+)^3+@K51&KT(+~@fJ>3VkV!z9VPmwmPN|^P)>?7imHYEwb_-ZJ^e`OZz)Gz7 zu~*?=!sIqSpgyo>OhUU(|HZ8p?_)1ACb1~EF(lb6P;_JO5NwcO?1=SZ;Fgb-FaP-e z>-@*nTgy4SKO8##_*e43LhF{9S8JFjc)w`4?pv*Mw{Q zOC1u*cb7?O{_VNG)bhBo;644zIgod95K>Z^`%L?`|$D`^4A5{pQLk>GA0O7Pz`eGd!bHaKc5e`#&{?Bk){Lm%DRY7(z@~0drDELIAGL9O(c600d`2O+f$vv5yP9|WoZ0YG!+7Md=0000000000;6ym*8f|aR)>7LqZC?fb5>0%cH*K|`bHIsTw>bME zWSaPOzxO%cDl(W${qaLvqpc1NaZgoMJr3#ETYwOw7wIM*`}?B>xEa#%V*3G|e81v- zj2gjM*M2J;(s82z`b!V`<5}CKV5(+Fr+-^eSozNaE3IxrSFuj-1qge--*#B}wr;fu z^IaW2wjjUtF!}bHScfXC{)Hfg=r-gNz~>n0)Ugh}0AB>Dyv92CEodq1|0%4r-RKt7 z?&{Aox4_B}}g(!0~ z&+U`*!eig1d`ZVQIRPP(y}~M4O2JZ(Z*l^{N%ZPlIi*QGK8r2r`hQQj)3}*k%JIGO zCLGsFn(@6~M{JRR+MmeBYVao(zL0bZlke4HJHCzUh^tud#BZcmLoQ}cDfjrI2?)`f zi@jOy$@hvFpRSVHb$5xi;$N$lBT>Zo^abyooqIVlMT}2h_|Z-GC`YP@@wslLjESrN zouga%+lm;U>-Nmq9w+za3c9CqG2;s-dLK?;ebp?&V?NTw-jC?i#|Hoa00000000i- YFRx{_FtnHUFaQ7m07*qoM6N<$g4mCWEdT%j diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_car_dark.png b/OsmAnd/res/drawable-xxxhdpi/map_action_car_dark.png deleted file mode 100644 index c18d34b963e6c146de3fff44eb1fc3a5c8c600bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 857 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c?47?|F9x;TbZFuuL>F!#2B0PBP2itKCy3EoHR&Ik)cS%WDgH+3)6U5oA}HwwjUo z*36ps3vNfv{=m<<*Ez}Rr}P%{pMJ}4i>pklVKw>n>O0>qrgaknE{QIfT;E%!e*a}j zkFD3zqjyigu3K!Br+U8UskE1a2z4HD{hANL)-9IzsgLHeo zG*sa|-mm`Ia7(M|b{6LKeXoG3dkjn7ZC!Btz`pqz$LpT`&imwCJYjm-e^04?d3^zA z>xc{ScTTb%=@;)%v{Y|9*SWxM!}_H^K7MPgmEL2z{mT=lN5{3*+Vphm_Q)7+F=_gB zV4v9IXj&+zMXD(p6wd-}V_ z!&~YDr^$0=CEZR1#OuIBCpR*X8j^~{NBMh`NEt} zRmF4KcA1;J7WRMbwPXE+E%$`}vF-T$u}!;PO|`f^eW&K*=5_I@|1z_( zqb)bbxjg#YaHK*iN)qhy9$tfEY!b=LJsTO1-C#)0X)pu}zp*vy-fI>#>(2FkJD8wy z-cl33*dGs5cwI5weei0)wZkpUXO@geCwC&xM`< diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_helicopter.png b/OsmAnd/res/drawable-xxxhdpi/map_action_helicopter.png deleted file mode 100644 index 7184c07bd4f509c57701bf7714c2ae7da90049e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c?47?{dET^vIy7~kIM4ZQ6j(DtxYjdcmj&ZZWw zB&!B4Cw4_qm6C+=2SP6xRw%qX@QT4opjz3`U{k8+wsX77_nbe&*P~;z$?kr?pP3TS za4=9PH||^$G->0^Ny0UPGn5#TSrU2}dITE`nGD<*j-}Op{u2Cr=ftqoAwwJ|V?eTfX>$jO-VErml9lZbfkHa$xKNd3UKG@Usjg4u>g@&c=a~Wqb zEc+Vm_Q`_H#`}B7yEkrr&fAmcpHJqtcy(^l(q~WXPYBwuZJ6ltqBB0DwRBzqW7rA7 zeO>ksu!K1qI`UAR|liDJt}h4ytBSHE5qxgMWT zz4*G*L!)}dOs%g^&hM7@~0drDELIAGL9O(c600d`2O+f$vv5yP}0i2$QP^KakZGe^{p`lG^X`GHWhzGzA07?+_UMfl=@c_e} z>{^_)8HX~yg5q%|{;w&3;*h!Cbtj$y zL{e1!)YJflBlA0!F*glBVRV^%1`tTs$uFGC*a!L1bMjqt8OQeVpw*d%C)^&UGA5vY zWYP|dUu;iZnbliQ7jwh*)Xey4JzY!<+tYO>um0GkGS)y*tH12H{I`sdAeo4{T#TV( zeKZ~)epO#OJ_CvlH%tBR`CvjFo1TaQvIh0ge|C924}+&0#`u2 z4EZ_zK{p%>pxO+1#%Ef!PXKm*{0jXwRsSRBCR_c#psVf4 z)_WW362RiS4pu!hAAI#YzO>x$y$vlr2YCN3gxgd7S8b@}Fv5EPTCW8SvHDd+4`8U( zuSH`8u=*Vu0l3wVl&jz3`vJ-rfHDT4i~%TP0LmDEG6tZGXGN6Aamf=z#1){70Vrbt r${2t$2B3@qC}RLbL_|bHM3MamonTEE2#?pV00000NkvXXu0mjfYCF}c diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_monowheel.png b/OsmAnd/res/drawable-xxxhdpi/map_action_monowheel.png deleted file mode 100644 index 74ab2908479e80f329b201461848fa5d436969e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 783 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 diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_personal_transporter.png b/OsmAnd/res/drawable-xxxhdpi/map_action_personal_transporter.png deleted file mode 100644 index 4f83d12778ee671490932c517920efebdb0a9644..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 862 zcmV-k1EKthP)@~0drDELIAGL9O(c600d`2O+f$vv5yPbdak6N`MMT2X`Hi4suk0s31^5=)mqEbnvmO^m+!QUg^o=K<(aliZ* zXM#{U7sw^@t;D!DV&9GA`z*#yApsvG-zPC{A;$TBL<%e%F>DHFz(t!v0(!~!SB#rN z0)9z8^9e8yVd^2*QmC8@Yr;%I4Jca^-U*dKxVV;B3*|#v-+#&hygSN=I?Q%Ob6FGiV+WI6 z(Z%nIc;@3`u`snvIk#OAI~bd?o?8O^xWFf2>srZ%uWIJj1tn{}v5OnClraIym;hx= zfU-Fx;D;D?@dzH3d$Z&6T{Sn*5W{{WpH}euH70-FGg4#h_(FNk=|19J&Orwc~M-7G3M5UeJ3pq zS^G~JF32den1Ei|`6tHAEdl2Cidsy-A8Ds#qi+)yFT#FwdXP5W@iugX3y|-pe@lIL z)`D*q>QBb;*`cXiz}BdT)6F?t;BHawRwy6BnUK3A$zOgAIR152tR2|r*Eb|$Jp}mi oS^L_}oTf3gyojiry!F8}}l07*qoM6N<$f`hJz@&Et; diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_pickup_truck.png b/OsmAnd/res/drawable-xxxhdpi/map_action_pickup_truck.png deleted file mode 100755 index f5cfe156e162eaae60b00d965a339955f48cbd32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V4mRV;uum9_jbGn|f&nPSW1712o#tDwTQ}_r@~57zf0t+ScV&6l zr8PWKA*?-8u?H0yo=kRNU};#xV7W&|fgy$U#KWfyj0)NgeERGh43UgQ6_ySRC%7gY zKF!GF5Y`|Q$0xwBiRsCQq6UTuq6+QPnOPE|7|Xw(lZu^jGk5(A_4f=+4gP80!Wh_C zIT+qC*cfmAG2iY@X8!&%f8LW4h2^cV)uoS`MZQ{0AVL;Duq@cj^rQe0Cb)vLQJ8yuwPT6`6C|XgEfwaK#xebn+|7OW zuV_QRaP9XeThiP8Pp@Zfu-H*?ZRh5-m+#JJ`0-KR!Q(7Y?0TA*|6hJL*UPWp1W)|X zdgV_T^Nd>yjdncXcifVuxcRfTSz729-nqVSwe)N2--<2X>NUNO-yy5clwsMeZOZ>I z>e@IP{kg$kpW~@lI6@$kH>3O*#Ax{c8&S`^GU0d;eMqCk8^ju&0-fF z6gTefHvg6IESy`RY|?Sp&>ahpTHIQ3>rwmkKW)1&e_G9CutVXVlIV8vD4t(;_RnwG z9sFrEn}Nd$%?MQo`7=6o&!4y@?k{-z@!Y9=u?AiBBfCYP`MDduJ#w(LQaE&Nl(OH8 zY4>v&m|JETKh~)Wo|&Dm9D zVO{lJhV@|&Zk_*nB44!Omdlr&g{&+MHDw&|RE#Ue2xWl(+~U$V0<>7}#{sh_gQu&X J%Q~loCIF9gmm>fG diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_sail_boat_dark.png b/OsmAnd/res/drawable-xxxhdpi/map_action_sail_boat_dark.png deleted file mode 100644 index 78a4320a03e33153bf42ac536e49b39cc90b5afe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1234 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c?iTu&FrkP61Pb9)2t7znh=&lH&uA`r~Dq)A4! zrNqH%0rLW;ON6)bQq~_ZEz2(pUrj^-D4$RB7^^Eh(W|U}4 zln74cmu54Rm|)8$eS}?N)eMGHcuEAMQM-Dr9vnEF^Sk9`|;2#VXl=%EUjUNQ%{LMi98?B_(;y7E+!^vmWO_U#sW9~ z6_F1~3w=HWOrF3uW-i|%l z^>o7d?|=RWdc2k9nX1$?rjY-~o^=jB{2J#N%yxAOCNL^bzhBFm z#ImD#;_2M@#v2+Lt6n}|`bON{@ge&g+X?5C(&Pkoixe^|PhC--zJ`I%O)Ie1tW48M zO|;)&QD^M3zE_Nig(nYo96c)L6WO<|z+~Qw^0Y3XIvu@j39srJ_ORz9=Gp4<-~7F? zHMsnUj?CNROGW%d4;*}<{4#dtX4TAxFRJX8=Xk1pW#D$NF0AfkuXvK;8ewtEx9IK@ zjt2=P4<~qpg-vf=tnJBVAAiF4%%;Q_^)f~$L=PnDKoQ-o@sX z@jJY=Mq>ApGa9M4|E?C4tJ$YDOJcEU*6;A-v(4*Qbx3M0ejCsFY4fSzQ{9iJhgAF! zIx73=O6#AiJTsY1BqnGb=b9YPDU$tQzr0;T|4ivCj*n_OKR)fAY$kCp=Ke2xj_Z=I za;0=XSRJ2`9i2TdQT`>bPyD2Hb43^Sa4rC$Wej}(43^Ko;8|LD>fhr9yH5N&s2?Sm z{&~Obr1*PrmkN&jSiej8diefi7e^tdQ$=f2!t|4ZzTbFi_(%T4#0i^9wy$)xa8owkOx qANdFOE#38(y3djXmI}L1$8XgzP}~2KOBz@NF?hQAxvX@~0drDELIAGL9O(c600d`2O+f$vv5yP=dlLOxOo&<&Cib##jJjEPyci(c0AnnGF&4lW3t)@|FvbEHV*!k@0LEAVW6c-9U%bqjYrX}{Md+ab$GfDPEkZB*fM$!((@wa_BJ_A`;%~n^`jNwDNx&h=3#*C$^-)gA)%@)V zO?-o9l*zUwQq5Uk=b6QhGt`_T*}ACmhiej>+Fh<(fPS ziYUUpRIb^>(5VPtm6r`tx#|x?uO0SHpYaDtY+rhNQZ#)c=5rBpL{v3ijy{81{JLxI zVP9_hv-LOxkly45oZEg{heIIgO>V#i+B-y$-sA?H(>^x&-YC7%BA%-~lRwd-o})dJ ze@2VEbo=g-kIXsVwCGE=?<)ByG{>9PIAA-1+M~nd7n$QtYZ$OCYI_t;zW@6MmLqN` zILDjTC}3MO4sk~1{oJ*9W{12v-fA~0vAc`c53)3rnd7ZSqY}4!rOomWkwCdQ-fA)` zF}pX~?PY1`)ft~HjWp)aEntJ78>OT)_(u9l5ToGxG;JIRzXB9`;quUdTe!Mb53A|fIps?Q&40zJ9erSRYY0000GZx^prwfgF}}M_)$E)e-c?47?{?0x;TbZFuuLh82H#gfc1jB7KiK)s~xW! zRzKJww5~aZwS_CAQEY`m0Hf*=SqJvhTq0~elT{}!ojU1%n#s(<6IqY*Z=R9h5fDTM z7dOs|v{z6P|MkiJ_|iVU%VcBLvyc9_blo%^l`G?^+3U5$(1 z8R`*!8o^H*75$|KkH--T5tWbeQKI_kEW>BKv9es{hXG7%lae*nbhZrM&po zulv=kN4T%pE-Rm1{hWR6_y1n~i~NpH_EEp`D!}9Q-~4??oR)2NNL>4U|4*Uc|C$fY zP@S{o-v4LbEy^z^Je9F~T>L~P@c;TJZ|79)cK@ucS$poz!mt1CAJyN~!CPmu>RMrR m#HZqrRbT&gcEG_3KmC`55t^UMA8rArV+K!GKbLh*2~7a;|7PO= diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_skiing.png b/OsmAnd/res/drawable-xxxhdpi/map_action_skiing.png deleted file mode 100644 index 9484e68c425f16488d3acf2c2b062268899f9f48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1247 zcmV<51R(o~P)@~0drDELIAGL9O(c600d`2O+f$vv5yPPLOOsJ3+bu-5}lI+6j^k{*@~EVG{@Rg)HEH@9E{k z7{Q%%I^7)*34$O9f*=TjAP9mW2!cQWYSo@pWAt>Y-K$oSFb`U|R?uUxRs@xZz4$v? zAXfMccN!`QeL-gz*Dh_UdJ6wUO(kGQ&ybhmM#(#<>pUQgj!Ix+^ytqHR4|yf`(u2h zTLR-5xX_|dvxGPf6u<{c$4}LMI2?CSjj<53e`;C+NNASSXI~K~_;b3m^ZM?DkF+EZV3u$>LiMPBLVD`K zHS)yqTKQ$hf?TjS`3yH0X7>1wP9NGU*Qoo{%0A7s(;|Mv*`Qc7@H0!POwKi!whGM1 ze#C8gp&PKHf`D0cA5^=^re>!g!P_h)gM=O!Z|8`Nknk4xyRD*tIY0)pL|X=ZBD}@; z4tO@RL|aAO`xjjL_>7Tw5N0w9LTG|o_PXRIl za>;P>pw?C_@IHu->$mX8C97jUJD!(Ocnwn$kR}4k@JNin&wXvN<|=3y?<5uMA}pB2 z*f+1RUbBR_Qjj2FAx!a%HJT;NlV)U0%m#!P;Q^pfnog}B9!lneAbSN*f1nL!_3NKp+@Irix@3-xh%;zxKJ zwfz6&3-T!<);t|O`g2W()|88po7ew8P$sM*I{4#V_k(e>l-2Y!E;pE25jw2kwN6kV zcsu*_@7YX`OB{Wuh-`H|=+_CJx-g0Wmu9J^T)@44b4Z6g>w{~FdXmyZBe1|X?YfiS$ zsfb9y!+v-Dl@2iLgUilwOcC|qd@aIZY$2sM1o0k|-gPzzkNqtBxvf+rP(+B}ua=^0 z8pOMX%HUyJkf|E5&-d-%0LuR0O%9rj4)UfkpRSdOuEoO_7JfoPz1xi ziHn4A5MEe&P6zWoQSE*0NBY{^V;Y!UJR`#OUDXSUV1jfy0bfx(ueSZMfA4LpM!xfH zx7!_Q>mdINpE^i{_AMC{(TU(4K%DD(4TiY0e!wiAdPaoSx@tNk9`T!eOCXHLQmdxl zc>amZ!djgja$10YtM*s5U%IIU_LT%d5ClOG1VIo4K@bEXkbi}JWdd=HtIPlZ002ov JPDHLkV1jN~IiLUl diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_subway.png b/OsmAnd/res/drawable-xxxhdpi/map_action_subway.png deleted file mode 100644 index 2643a0c73eb9343b50233558ae0e164719e6983f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c@NTt-h9$B+ufw{sgqr44!7rtafo5H65*Fty;#q=%mmuS!%jX|neHq60{_vbP?8{Y-F_lRc)p(m7zMJZG z?a;c$-S2;tT5T#m(eO&Zr8P%m=A^A3>~^Z}z9KWru0iO@pY>C04*V{)D|S1!_aWC5 zf$t1FjMJk3O1=@lBfZZf-B*e6(FEgWgZTUIVkyffDQ0eAc=tzKOhF)V3Xt(XVnVHy zu}m-TA)9CB4|Fn5yh~tdX6-O;5Svr_ei<-Fdq|yq{XXf6d3`%c?&fE4VvrhTP%T z#qD!Gc)ilhIGAkzEcw_$?PJrGHh4&g@$5g|x=m)w0@k+FNZ)xU)){UID>gX)>aA`@ zI~(7yP}*I#FvwlImUpMGXxQPPCx z468ooSV(qwa~2psd3I!$#v#=c6MyqPJ(!vPe$L7_{2Gt#N_*{W9i$BE54}^;{ayHq zy_O}z!EKXh$QhXw73us>elvaxp0HT+kavq=!VEq8Mut_t!{pP&6+#&-gt5@kTTk=?VP|mu@l4i56uH z3hOlOs7(w9GY zvq9i_ls-_lGP{91YH#}O*hiBYhXteV6v@XW{ zgP%XwA3ri#*XuZY&ELg>x-H3Hqfa#aU=*3Q@UZS>Cm!d+7m}IRZF{o3Qt4Ef1J|?V z&b80=4aFI?#1|Z{ITxR##T26B(EfAo{v$ptD@~0drDELIAGL9O(c600d`2O+f$vv5yP(sBGmG9N>0XbMv>@z>FO{6tbQ zhK@ZKbeVYV2l}y{`FRO_wLfSe+?(5G5&@d(PDf=hCz+ZGcD*%bfXi6-8v0zuy2b0Qu^So=XwDDZt+Q}lp=iApJ_Evj^5&%j8;lQfThLa$ zl4t!qH)Xuh^+wA4E3z8aa%8>8#OnctaW}LvY=AO0Kp7jLj15r61}I|#l(7NI*Z^g0 zfHF2f*;`bWdv3&<+ULGF1C+4=%Gdy9OBzu0KgTwp>h>;az+=X`KhZv0+biRZs)t;n z3+oJMoXPE-ih4*CvXKr3KRUJTB_bjsA|fIpqB{NpA{{@_IaoP>00000NkvXXu0mjf D{Ew%$ diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_trekking_dark.png b/OsmAnd/res/drawable-xxxhdpi/map_action_trekking_dark.png deleted file mode 100644 index 5e938c8fb9a9a6d653380c5c45012cc1e9fbb47a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1266 zcmV@~0drDELIAGL9O(c600d`2O+f$vv5yP2#6p2PJyf|3qz z{3{CQN<~Nrh28m&JON5P){uteG$@RxsE;p@bBw~MQGnNw^A3ga1eM|92qJi5K|$2$ z0eeM_0<@5Gjl!r=fM1YPoB-89+tPy+10^17$TOPG8I&}TmLitNixA=oXKMTzp>1j6 zC;jgc8*lgqilQjWUgHO314WJ>Owa9c;|Egr`eV$nw(Z0o>jznn`}qV)INtc19ckp% zK>wow!_$Be1`3bA)5kb|(Epsm*w`ax{opX5-FJV-X|L}IP2)yI7=gmpc#nJiH#8lw z2;7MgNeSiXCZNx)`^O7mFdbKlSWgv!_%WnKBqa#&HlR;e$8R74c)+b) z#_j&lSBRq%VMSpX((D2(N?`n7_xf+BEG`hq(jL$R^ttQ3Hz+dZ0c0gz+H8m(tllZG~s(HFo#fHhLl`$2OF5HjEn(Z72Qrqex)9N&HTcg8qh_{SW|=cYowLE+K~#;0_5WS%4H( z(3k<36Ck=0>c}C0bO7!fPr49eAjdH6(J81ShXB%8dD(j}odcXx;d_H}2q1Z;>$@F* zFMB^r!&tWjX)qnbw6{pW>;hOr{SNI(sbsT!ogJzY8F8&mdX9uP}x2$%o@UjzAFmDozpPaRRL(bdN#(;vje9T#(Lzs+=j6Y5>fgXz{USZvr)hN_#HfM zP~H{ivkbtF(golQ(GGp+=Mk6SSqZOuFamHM(2lgd2S54SRj0~Q33Ze%09S>%v^z%e7dn34reEv)4%#3_oRD2k#e cigK9z1qc3@D(Ibz{Qv*}07*qoM6N<$f?fPLxc~qF diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_truck_dark.png b/OsmAnd/res/drawable-xxxhdpi/map_action_truck_dark.png deleted file mode 100644 index 5d33244bc5ae36770496f67bada16a61268fb655..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c?47?^H)x;TbZFuuLhUwGL-4MY`j;%gd$f{={F~{QCX#bLr>&Zl(Xv>5Ry70h$a3 z2dcMcRW%mptzEr-SIuSB$>n)VRTj=(C0q5#{#DlM({2W{PHi!5sNeNVhkNobz8?a& zR;d49uJhqZbj9Rt^ZxjRyGO3jyu%pnXtaE4f zCIdHyV;l!07^m!b$7Z|k`Q#4;=Xc$C#r`6u>H(j`I*A=tKN#1X<51}Hsj_obYp5`* z{l)yNVTaXs_B)KKtEYWg`n_>``8$4&1^egf^*6qqS@MEEqseO*&xs!&KPP?jc+s{0 zvi#T8FVh7aJg*BH+84eRxN&ur{Q^!Y5C0F%>*`p_w!Y%$P+;OsT)ujLW9&?mFYG3c zstTa``F)v>ppY&b^XriFEg&l8#m~=+MWQh)^ffw zT$~f+Jb&dY{r~f3FB3oV>u4_TOtDMHuDp7GndRxi-nzaN?O(T6tv^yZ?IVyI_SK!+ zVeQhr??rFRr`A*+{kC;Wdiefj`&a)cKCAvee#^4&>3K`+f5tfdU2ZwSlvU<6-y!k( zHI?;h%CoEgPIuy4cQ3#Es^6>q*LUUI{i(IOreDSA`!D_QLzBCgUw!NUcRhd7<42zV z-tH-0|G!AU+Wd}R&zZgdPCJT(2hG2|v!eg!_n`B8{|T4p1%H?AvfptfH?4Q)_5X+D xPaG4ks123G$kWx&Wt~$(697Lrdc^<$ diff --git a/OsmAnd/res/drawable-xxxhdpi/map_action_ufo.png b/OsmAnd/res/drawable-xxxhdpi/map_action_ufo.png deleted file mode 100644 index 4a857f367efe87746318d168ce4e8dccc0bc5725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1767 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 X;R#Wl&i~E800000NkvXXu0mjfg^$&G diff --git a/OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_bottom.png b/OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_bottom.png deleted file mode 100644 index d6093d048ad2788db729a6a54e365ee8af9742cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13574 zcmdU0ofLto3I zK>xSqf9qF|=Pf*%aXS=aaTL1ZwH8ybn4oDOrB9z@E&9Ae3*NI232(7vycOqndr;Mb zK(kHd9v!Gl>I35_{9atO>k%0W<;a@Dn;qWb$+@M-%9mi$v40>BQ+8M&a@1d9Z64nc z%@)sk@Xat)WAe%TOK5%m-Tx}*0RG5q}B-zrozjpQ*ip77obPuZ%dwZTnQWxid^GZh49Y zAl*(+*L#J*H9D{$XM~k;^UdP*HE|Vq3Hf;NoiN0r7)#w(nz&yK+esU{maw-iFSBSF z$#`>;YlKo`GmbWXP#Zbpigc=58<#rAq6+s~wc&`)!J}bKG|G!S={@0XfVl+{tkq!O{1>WR${M)uNze@~RHRR(mruF71SZfW1A9(+oQ!A>sBk&GvKbBLdi`OyO*?Q8^>W4giiQ&=eb7I-@xVBcnxqE*N zN>l8Jl3(ka_%T`*Wdv%$^^!2LzoEEW9NMuoQ*1op+^P(+woHK{{4Mh zC0!NPSr#$she+gs+a0B zkzpC>R~YhTY5q2=ocWSEYzvN24E^wO&okQ-{$LLDgp-$>yBY!x5zr2giNR!pUoJJj z>lU;hGwcAWkOXE#xKLMckPgO*DVjgz)tlr<++|aN7^inQP&9Q|?xWDr)D-i-KCXuI z4Gs<}AcO4eSUhjew#6V85E?7`i+{d31q8vK*xKWE--z|VyJ`}-HHnFdJDwVu3GfEm|D@McyPx#(?*R^CZc zb1GOhK|-05!9fRo76iiEKHDC}34aR1m5DB!+QZ|)ev|*pE|*ay@&1!VtG6^MEJAhn z;DIw;T`>6J!0PEh0aw~ngeEEVG7@YnkaadRr0Qa4ht4YJ<>B!)c9%fD92ncC+%Mtg zO8jkSSjtAtFU#vJtQ?5f_QyVK&((V-VL59_<*$aZ=@9$Ul4j-PU@7bn#z4edXPku7 zMz=$2J0EX-?rv{8{H5g^nwpSHq8k*bmj#}N?c=f?-F zlfVgDY6^)IJcQ5v)o*doWPAe!=vLhlQ{&rlH@;)Th)bNnP#1jqdnAuKN zJM)Q9I}qV!^X%T&GvSK2GKY?9&g3q(wF{ThUf77l!`(yfo^0gJ&n!Wvt-s^>xQX%c zVuFH#n9#?rF3|epTM^3Je%_#e7YVRVE;i2Ya|;WL?Eo3v)dDQlG)Z{l9Zs5;)F-GRa9yYCCv0{ozgXRkenPGIm)V-1iZimsHc)s%aFY7{XV{(BB8 zi~9TC-rhp>Qh6NSp4|95#xkA!Ag8}$xjHLpjsh!Eva(M-nVt9Bf00aVy>d9{VcWo( zJRFpL{C770&0Y=DEy?$wuP=NHgUMFic#E)`vxPZ-ms9Dq7>s8;P`nQV>wcpNy=MN2 zxqh<0FW*QqnWxK<9&5~z&KEA5KQ1}xFfAT$3>VGp6cShFcZ;W|$ysW_= z^jT2M#>S>wzk-O12sU7j0b9qZ#>zS7UPY>5m>u;>?C~_eP z`BRKFG9MowdpmpkQ6M&>zb*=`s~XXnaHP}K7E{`Q_#4)J-?(xfk-pi3ly~0`IJNKx zxd+kT`(lUh0)ePdz7Q`bI~%-%`&u9iqCjI37%I!Elegsd$G~;)1!mB~%nTYDg251< zAz^S+9EmP1E$u;&+&@Qd6R0&H2To}FGB2XEYr0nyqzBSj&*Wn75KyFx(&dtsZ12XP z@$C}#zj_P8aTWQL@SGzZx;D14!SE-iFw@d+ufoiwc{`?h$%L)@@!>8wmXI!g+}Nhx zgq&3lh&MLo@_C>waW+r^o@|^yL3Cg%9*tQ$ELCxIp!`Ig8z)ZgU3x4Ow3R5j~20y);$6d#?ATP;S)6X<9<>r zB5w|Ub!>_V*N4!f8qk4EK2vk}EXYysg@ptr5Is?E0%X#D*==TNvV?Du^yF}Ia%u}k ztX^OiO|o^<_p%lwv$GD5_%;p?tKDlCS()O`#y!4W97?7o>Uyo?uCTUeZ|nW< zIiGAVjiNu>2I~6LHgE9F*4o-yWTb>Ekvt}q>5CT?J>uw$L^5)~-p4@`S$Avl8<)N| z&ef|+MiMizwfIsu5*pE zpBmVjOy-Je`h(~8Gd>I>_whXG3mWSnOfMc@URIR%U+1~-7mbXJdTKjv_fyS|PDQ?8 z5ilH`oM1SEW4@~MWOCx-;+EOl+oJ^Hu_)!bXDPJS5IE$+KfKnrdh1#9$Ed8!+W@5I zk!5IiGymH2>kOmFUnH_A>=j|}dV)&v`AyjK0D?Tjic7nb>5C0pVGy|{+-+VlPD;e1{hko!xd z4>AunJI~KFgv#c*-h)O|&HAdIEM)<4_wPsk!=b%S@U8;w?Ok=iXUYdI8BBOVYCM1J zQ6;df*+UdY@V#|V#>lJOnC9`;J5S2CPtlJ?7oD8-5C8 z<#2)+#Wr&ul>)lxN4m)woQzdNk`M(6iEwqnE_yw%Zi}8p9uYvCt?wz{(`mMz&R2|%B43<=Zn3z|+UAo!Ryz#RXi)jL#XgJchuS1o3&BnJ7+@gH7BzpxiCfTHjoSTwM?WUbrNRzf1e&>>BM8 zQswl9FiR8N4dVdM#W?CZ`}a8Snr)Vu4kDS2PEU$vJX9$*Gem6!FNNyW)w9#|+q8|$ z9QY!MlJL=IP@Ykg4kUB>v%sflH{CvrQ}juiolzBF%B#$Ie74SS5T`e0A&XPxe5<<$ zKk*!;Xjn1CQ-`-EilS>Z3^9-8wtlmu305hL99K8k3^e5u!B;tz-fOniibTJ-ALZWlS zoc`dm(TIFmqEov}d2bPFWlQN5I*N}Iz$ z+-rY&s#^W+B3Gek?Ex`$s19CS|JMS2MjbwJakYdlI7J%IOsojKKVwHvc2!&Kg7b`x z@V$6-6^LSUPM1=QU|piUPPssISDmNv-q#VT#&dCiQlD^lRp5mQ`}5;@`L}foQA?=U zMS5)jTKelDA_e3yzcv#=7PX`|5lYAwcjwc?$>@K9p?+51#OBuSc0b#H<^!wTC_7?! z(>SrlJ3!7>;jLAVhf6W5Vjv4EYs3m(4C6rNuMhngl~b-buEpxz>Zbuh6x`o*;D-B! zh4io#b!n8E!I%1?icSIOxeywoRY8yG-3RB{15<4jq}-fh!1NM#J4xSec=5A%j>56Y zNxj%BU!rf}3o$dzFFskGw1A`12y|a(!BS?0RyQ*En{pbDy|@E8B?hX?K|9hjc#9W1 z)DoU-OfNKC)Z_M9@LIceh|~oc-#mA?M7DwdZF;`=u8_Kazqv~rYsM-$o6lfdI0|;bvc4GvV z|I*`?2^`uQPp(AH*h}N#je&uo&~vmt@Og|X%%m`%io;5`kuaa=yg2$$z?k~&5 zcKh|pT|Tb##l*WJ$Qt(RZ!gk}?Ys)51^P9GJRJ$CDhOASv5v1|@s|6jSMJTsv{6d# zwFTmp^Mfju7#xH|L`W#e$uTWkJcm*0v5jc)Y2Ey}b~@j$cM&((#B1`abC#Cd1qIRA zm=6~{3rT!a)qmDHYiT<1!!#tYk_{wBYv`<2AK_xalVNpxRq!$50n&31Am^b|{c##Y z&ll^fWb2ugzQS7(HdIi^SGF&5&&dTQ-VB5Q~?PkRWbgU{H5K*QkWJ5$}EW>Jzq?OWXYv zap?`okJq)1y-?<4Q}B&%xT?6d`%J6_x898ZlHvN?`hb?{*GQg&NU4Z_71UPiNL6m$ zxtibb7GEhEl%1&4u=(M1bMDESxOpLNKq{+ zh>#SHvhrPzxC5x}F{2qX=<1yV%h_t+iT~;y>9MlKPrGk!h$(Xw_zg-jp`J{|!8hrz zeOeK6S_Yur8!y3*-<^c==yAA%q^n^cMqzXh{<^;+BvwvqgDxvq!+Y0p&AOLbh}qKB zPga7T9`fy?KHj77d}jB^XLcI(-T6uG)LYK_T;1;D$!sUg+MA3I({*ViTq2WxJslt? z0PV5}0dPj4&hGAH@tsTO!xgRT^6a9{2Vyaw6Xw3)S6*hpcSNu=N6zKNFGROaB4h#&8^pK!gP&@yT%M|g8*Vk30M|?(tfyv1Q zojcg89x&+9cF}see9Fy@m^mRq0zD%S+Ds7TF@5oN1-9gW((Y4JQ41szZ(?F1 zy}4N&D!7l%@nyBVW~CDU$}UpjQw<0mXIcjF4wx?8e7P_v4lZsScntzoKmxd1fsl~U zbpfjTj>!7;>+KEFj?;*zx|SAGMPl*-U4|5sy!`yy_{2mb;EjgKWde|O0i~3}ty*__ zC_h6o2$XXlf~FMO2XU?+}rzw`6_ zr~A!v+%vbdP>eiJ}9@AB`rSgrn?rGKN1KAUm$@@gP|cVaU8d(ISn_2=Y0 z2;W=i2SHSH`FH?R%Q6ipgb5hS&l#$RfLOA7=uumwlE7&ziQA9$Qx* zj$2os9@Q^p8k+8)8>2hplX2y+)pxY5o{QcRM4eia43QfI0%X`k#|Ad7;(axJ+j47%Rz5G{& zx@=vyDhw$?Ye_jEAPIa_(>yYOJd&ZJX@*=Uf$KIkf?RW{Kz_Oem^gUlWo4`vW0EIb zxX|>`*Y=K%F%EdSxw&d4Px6Hz>Vj2j*`WK0KY#vo{~|-b#;Tno=6QGYgZ8wx+~q!10f`G>ikyi2s$f1c$o()= z>M&SBIb5Fp9z)DfUga22O@|uD9i17C^7bR#GkMbO-3i!81?X&bU-5S*s zrRQn4I4KW^uiL6j;BH=07@B5kH&+PQFG?QSyYBY><;y}T0RjD^<6~v7kCfnaJ&k>D zP5qo;y5tXD+}AY(befU;Dyoqo*#Ak?_MVrxQYGhiH6;F4bqhKO5zxZQ4wf?C^T`YHi%-+iAXH4(-3kSM||#EL_1P8ML_@ zy0};exDG@yiX1*G?^)UK$hs^BqM56x?4AvYF$;U?_Y`X32M~t7y}|LHDAW>DmK}94 zI7Y`;Et^^gA|Cw+3VQc~B*68#(#HP|^Yf6z38A3Jx?Su}hWRXeWj+r*__O_E#qWT) zi>C3OI7FuIzU!&(vFl;av*q{dDlT(56a)Ixf*9;|5GqdCrhNJ^geHH1k(^J``|;q- zS*W~g=Y#ii)BJC|AhZHE2Z1cCQb43trhU#q%!c|HM+}QdRAnNN-{7Lcku<`j$P6NR z%$y*=U)Qz{?z;CT%0rs_%m2=I8tP`TOU3G*d+q!0C0_^2h(m zWyAqH4<`pQ0g6<>H4|&-V1OfOgOKZ~R8tsR^m#gbWIurfQB(9xktY)s>&wN}6&Sqk z$@UD50>&pS9Kq+HyA5(k^4c`_esow3d=DnWu4kj|f~_k@P8;cI!xxHFDLtX0X$7sV zl!<%{@(#%nKi!~)F{(_VXKIR(P?#L1cAnJxHDE{I+ihM=$ky7f2eVV*7^{~OxXI>% z`d{%ACMe_YhcoDgnX`e?P^+f^#T*{2Of(cBV15l9Gba*9yooI6 z;<%Qp^R%mRX+g*U#q*zrg+7&0xXq9uP0SS=pmq#Q6JY2 zdv9(4#QqF{MDLz+4;InYN89P4Ed}kcueA~uMB>?Z(PolV7Z5NH5@8joP5^p7=n-CF z7`m-e?S{vS_=&l8rY6=WhPg(mE6q=|^{3tj_l_DTW}7!%9pZ>Lq8L5po>R3cR=IoC z6~;fZyu3_o{m5xtgIHD2qfK7n3%7M}D2Hr@d+#||bJeL3So?Xz3!Dr8oZuFHV!>J6 zr-X+d0Pfr|gbasxnrILT`2gd`t9(3-k_~TOh)%P1a2S$vXsE5l^~4NU){{hZ>J5;c zgTKshY-1Kc`d_6K;H~)IBi&ae1^@{s|LI?f3Qb6_#&&$&1@sE_s;Z`j1RWh+edrK; zMYj~w$+#aDt)rrXp&bTNr$q@~Lly<6k_0JCY^%JA_8ZDO(FU2K@!FNwi}47ixijay z#2Bn5`h|;)9U)(+>*ej85#I9Shp6xN2=Oh=1ys9W-To(b9KSyiD~eJSuo(ARQ$amX zN3OwlOjH(PZ6jx>=ctc(+bEBqo|&G@5QF%@PoF-8ZN_O+&j2bdsH7h@Z0bfhQ2-8I{-I>N2LxF7dJv6sYTHX?4S18j(e){@vNh>FAK*Q(h;W z=)#IrL`Xw|-3SnZeeb~%*npR}LpexR_ZM)5TpFSxvWuhfN(Lxds)# zz@CkFn~P^ampFhBCc+i$Woug!%AOK^Z4(9xG;x3jD3Ho#{=-CmStvda(YahT9m@s> znr=hN%fi!G^=v*s(cRUkBNT)ax9}_Eav&cm1cihkDq_$<6EOt=8O-^O0GSg{Z|@#f zRXEa}0It?3N%bn~`n8%%{p-kkgB;rAD4U0LO_neR+yXo*tDXmh+LCuEX$J^I)cxOC zfP(lObHzzC6XeVBB-BWkUvvi@rzNM$XgH z8G!$4*vHV{A3_MJLJ3Or+3Qqtfd=04Zv%^04igl$%hc5g7-s=*S|e2Z*SEJwn43Xw zn5O4vW+FmJ-F(?`lhsS>8ki%cnNHn&Wv`pZ(^mt|wKR9TZB-lK7>+5B7dnYiXa?v% zbMZg-6l=vj9Bh`&%fK10U&+&)Ulbir0!D2bDI!AtiB2;ugyHA-_~vCAsWnVkV1R%c zEVU1fkdFbBQT47w_g&<_O$_g&g-hBWRD>=)7?w?L>-jW+7kXlCZr;mWHJf7WJa18c zL{Th(Z-F;~3avi^D$3V;K)V+Z7Dn@Zfg(t1E7~BvH5bDNtjyZ?-N*Ru-?6o)s)H+Y zK*xb>`b!ip$9g^uoMl|VH-8PMo%lpbN?MtNEYfAo zUhcS@H6shh2$KCSky1{jK%Ir5JYr3}Cc%}(lRT+XQbTHoPS5bH#Zx~mL1W(M^r0)vag8}9;~UIXkkVy=W*7ayoFNBs-$&*KGZY_(*RPoYB;$aN zA~5i!e8=oa-|*ePjecVq|3iL7|L9TPCaaf0CVoFJL#H&b#w4yY8d!ccXFB zP>iftdMN32*55oQey?{QT^Vp)+022BEk z!(vNkgWR9`N<2(RG}3-+HLb@^!@J3! zMWH`1%HZ`Tn%7rXMGE-t1P=+!Y z%6ZrZ$VqV40}!0-eeqA`$`Gw9UR9lBg4q7EZJqP-vtRI3k1HcZ8N@z3I&A%ZPe1pI zRJHM=mBu7J5`rXmgQ5w$#WUM*U0@O|l<8M6!JN9tdtwlC`C{%xujNZ(SLobSIGTSu zm_=JYkU9M-*3{^_XLFFFB#e}`_W96-db|5indJrcA1fa}k!snK@$B|DB74<&U%yj9 z1YA6SJ-lzwuNo$&M-_z{C@A}>6zA~faF4=A>=ox!o=*uRVM=zW1W)uGwRqo z8s(#jGM?%OX(ZX1<8#*0cE$w`3p=En&9&1|)9hle>ViQ*I?oGmlZ1cIW{b&ijB=VW zg^R*eryYGObwV@3WUB+fzU)=Dlv)~AHqIs0MWKokD)1RwwhAHv((>QBp}>sM-6n^M zqyPc;q~ng~d7`^5bcw!BHHCGzi#@~uq|#GwGnh@nu&w)d)VxbOAc)FA)0NJM^=qpx ztnX&>2jOaQVkZ08^Fm>p_NFhDHKzy1E;MMz$9dm-kW;6l#?Jk^^OCOdh!f5j|&8|q4@3>5n zv`Bi=!879hy`nSRn-qsPJTK0w>!em*uIZx^K@`!!;4Pa==fUZ$9^#VAU&HjlFLbi} zx6rni<+}(a%y@Bwt<&svJ*v$m2jk=XQ&~Y(RDn>n*rV3g))+Wz1GIu`(}ggN)p`LE z>lA8+8TIEZY&_|dSxky(K(PU%9H&o&c;BsbhoTGnkr1%n0gu0xV4$Ag{Ova|>4S*c> zFWuvYFCzWGdSISvrdQN8@3)3h!an_?7T^MEwth%iw@ByUvGwUc3tIslBt<9H!Bv!% zqs1IN-BYtVz@ipyuG1IU!9F@xK?-KjU`Y;;9K$^EiS@*DiEtI+tUHm%NNv~^X7WAC z=UNZFgi46M?f9^O{&q!cSlj0o*uO-LcH~jJk9;D>ct(e>T+^dyS_5#@J?=G_&V=Yusb17 zf|yQ+IeN8~&C$~}jd+38Z5 zAo2I;CEfvcp!z0&6n-VU2Z4NgVkeJ_^$`bLeU3NeY^@*>$1choFQ4ULF8lO zqRX?;gE0ek)LoH~RYrmERJh~-U|5jbeA|w-jc500z~?q50kI4pNoXUP<0F!i?Yhb%(+tW=Bkv>jlJd z|4vBnSi)giLS8Yp=TBx@7o!cAFd8IE*ANwhoc_13RN_ern}UMn7G|_a;Vq8d>-hwc zt=#NvzZ(F?r%+h-oJXGlq~;lV*uuJ(Lhi^q^U`<^FL?hq<h5dsHX0J%o)~JwU zAP2o{>c(}ohuX>rNXLy4?vkp?C8#K{=z;Xni_deq*#8l-y+j97E6~N_@H@-5XsH%T z?@n)Vwjnp-tW#tHr2WI!i7;@e-1vc6-CtxxJ9MxJ4bAYBus8zFk}>wi2`C4UY}_NH z>h70Ru_Cx!@LTsT&K_dk9m;Dun=h~r&kXswN}}O0yCpSQCx01A12+Z#uAb|Dmnlof z7=I#%s_Y3}4HJv1rJJOGX3i?17%py@L2o>usqayg|9&Sc_&RGmVCO_qQquK>tBsMd z@v1DKNeABz>ja(o@BC}6Q+W{-E-dHxnaKn=camN#xpocl)zq_o`}XJ23~Er){_-Bl z*LS`jsm%5^8I4wp6~D9WtVScg-@a)~1%Ip?!y4Z^Ex$3<`j#wQSS$4jOYg&4#4}R! z*U93qmjdDn@B%P)V9nL@rDU|M=#N)`BN7z!_U+-Sa`B|u#y_zT59q_j#>SIm@Z-H} z5WqVh(B%`7S)yniMU3t3S#Qr7hm|hSvC6xwWApOzIHH{aIPAXo_C@CU1nS za5o3fGuZX&WZL=XLD$d5{`DCu~-OTLjfF2)7AUYe2JvVYktW z7!F}Lo?J`5!5=w)vPp#Vc&*_)ubioI6I(*DC#Pn$e%-sy*G_9S87fPKW3xkE&(|y{ z__f6_9j!bp*-nV!SLkmn9@+ntWcX^HKu-?R%{BzE#3m^so1`7cer}1}wnj?tzf_8D z51;3}-Auo48LM_|&vYFm?D~Ej%TZ`>Av|6cccgV29;)*BpsD_mVQQ1m$yz^G(<2+qH0O8CgDA z2(6nIh4D-IIHBq}GqtNjy;uEuj)u z(`TqG-8jte+{epHZ=S(2N{)zNla`FEU{x*Cu26`Q``H|nOIs5BO)x^wQj zvtdBv5oSR|z9zR%_S7$*11^1R#ozS$^dr)zU8pn9NO_u^$x8FA0o|02@aup;^9S-O zrrnPgkqcnk_+~xcw2&`#un6#Xs=vz5`_@&gg1Tt-Cb-Uh=S4vwxV;C^9lrGWmolBC zZ58#0cAKWoWYfd!8VyHWoxIv0pKD)eyYW{|IXYw7lF#t{cxsH#Is${J6!zGyY;U!ZVXN$&MS z_H~Cdy)NqMK!DmWQ{U$q_42wFC{1z#pWyeQ04gUq2H?)b#>Oj9?_CMTBybG)S-0{# z%Yf4H*#1}D<~(J4kgX+#iU{a%@e4?7PNIN2{S>|}$4~|j8*dA2?aTrfb(fY~KzssT@zP-H-_wf#lRAOdNL5c)-}qHs zE4R%8ZR8>RBog%O)OrR+*786IDZm-Si6UKAq;M1Cdl<`=%mv1Pfl?zlOnyj>{(F<( zIVkI62b@n8X2f@ZNblyh=CAJ%&(!!jYB^TZknz`DiQ*ACvVZXXx)nT~6MhTfBd{xh zaEaCMZT^atS(j(kDgTDr^ibh*s;!Lc5?4XBSemgCjb%NxXne4l2` zq0U@L77X=gVtHtXhX1?*IPZl`d>9i`MLHryAPjh)->Jqh&Y)=p&7PDRyaF82M65)@ zk9`wR-#p7FU_@GO7grxi(!xPsCQi=*fNnm(!XREgAs}g52i|4y($`LkIph)g5V)SI z$r)7}vC09rp)j-gC+wrlIv%ef?Dut6?29f z?LU^aPM*b$a|Uz46x_)d?JtFyLyH2#gp)tK7rCHV&WG~$F?rRrmmVCP%tUC89_Fc! zWcQwpUMO9AGE_X8rP;R!p0{8AVD0)&+ieoKNNcB!f_;^X~q8HODtizPbA58Y4$du0sb)A^Emi@bsL%*pBrKwGCmiLKz zQ0?AmfPkZEm}Hdkhk#ol{%n(*Z6ViPamt09$eM-+%dJRha-*SmfvM1z(_UThIPs*W zL8RiX*WA}Jf)AzFsvND_QBu_nb1lbLi|y$7L%_&9+a_ifSQKih#aH5^wyR%)4Zb1y zg84=j;e~E&Nk_ICwxY%RqU>XPec9z?WffScasF6>dl@$vcPfyRq{;92u=rw8YDsXfAMGaK!%A-V^7rNT{R8K3HDJo#mf?ccTM z^~vYIIjnt-NO%tF-f_YFjKp1%(k?^@6VTWHov)MJ3FMS-hY3N zpfqcvz0}qJS*ot{`-Ny@5(#*Dt)D7DIoKM9`5zIqlZPljn&&g#IFx1g0BqUjbt0G6r-Zfu(NIRzr&kda9taF0c{A0 zd+}FaxTHnmwEq%2-k=wD$8wVN9HC{ohR)+kutDJ)7dWh3jQ~1ss^*{DXb#-6ac*|L z`Yh@M+^~5&t-f&3unjXoa~O60CfcsYX-#ZhZ1mf*j2pOP12=Q|)V`Ns3KXII{^3f( zxfyJPvf#0JsO35h6!}x0-Z1Al3S7;Z$XK*<^(!{&;^=i!+H2Tuod2{^4iu@=<8-W@$^hCc;QsMz<>LR)#nUI0YT?-BG@L3D;C>TG MO-Wm^M&3H~e`3?THvj+t diff --git a/OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_bottom_small.png b/OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_bottom_small.png deleted file mode 100644 index e4f752e880e6d80df863127746a3234e347a44af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7394 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 Ujl5}UK>z>%07*qoM6N<$g4bRKBme*a diff --git a/OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_center.png b/OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_center.png deleted file mode 100644 index 29993b2a5217cbaf48dba4a86347fca645861bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1848 zcmd^A>r+!l9Nl}lV6F)of|Ou+BoM)h3KmB|3V{$zctZ-(T7gt~l&XL{gn>3(NHn4h zL{I_I!CD5ats;Wd^1QKvc8Y?CBNQ+RG6s1_Dqtc+((ClUXg}=knR9+;&wkkbZE-{x z&vfm^wEzIqKt5MMtoVmPG9hNc*x@w*m>2@Neo?t`bC*=vqr2zI$`>4ctqO3;fPTCw^LEmM`Ht7d@8Fe=e_$*`Fv--sbDa&0g+HLiz-(H{Y?+OalkP0GLmjjJSVy&b9z?hv*p5JZ zkk$;s#ch}cM*hx-h(#ZE^77?I9G90NX5+Vv7A4V}iPQ)fxkHOmX&mGLr7Ai6JxX4Y zErCLOdkN%BW8l*ClDlPyCCeAfk<+Di=p#M`?niJ5bv=!NWrk5itX!wU4seCoV+WK1 z-6Ib0yY|+)+(vwoi5qJ7C3Y8v34oHl;vOo1Jt536ePX*);aPyQr&9L@!B!AfK-Fig z@1?<@V1r&jtFi<-p4`QuFojTPdK#_D0_ZC6v^cnes1WEvgN0#0S!*n6rd82^F8R2k z4oO15>Q+rn1ug+K4`1GxX;U=YGrERF-G;>W@vd{WVidYi|LzcOz~k~_4z;hwl2i@1 zW20u5Hn{jc*%^N^Q*m&OTK5Xgoi8{t`ZjU7`n;Fe7+UwMPtKnKn>*iRl2l!j$SF%< z^N4;Vd%U4Mc(d-W)7_?9;;{OZwjyZD>YzUR(2X5 zx6bvGx78+$OypovsWf^1eOln4k`;+&#cG!q7o!%*)E+WkBaG~;_tE)CG#8iaJo{rh zz9 zUsi0R9O69L$#-R!Cn?=;8!_biNiTJXJWT*nrAg*;YkiWjZ_y;JN}^~1d|3$Gtf{dC zsAI5jqX>m$!WQJEs?rRgS2oG8_#nWdZ!M(gGhl{aBO=fQuf-6{O)_!(Ucl1TBITN3 zGKLs}8078_z!%Opdv}I=+O2b4N*Nedh2K9dIu*6-V)!W^@o;21LK?e#9+oqD;v|9_ zZe$|5bVb5`SgE$UYzUNJMeu_9yki*Ihh716E{i1~W*6c>1BP>@W|!5aSJP3fyCEK# zDqwkhXZWUAu?x~0wFO`h(?VCeL$iL?0x~g)mLa&^<4<6&BpM^oh!e~;X+3~q1>8!K zt9^?_5YRj1bFnk>>wH*QJHUiPNNL7I#JyE2@jA(bjJEk>2y;6F(l||U|Qwr;uum9_x9FBUnfU_)`zhf z4%Qo4R=B)v&|y{J)hSsJrlfkK(}W@0?BEgcsodqy<`}l8-+lN`KH2BSoG(pcCoa5{ zn#aQMPk_UL;Q`ZwkGB{Y8@L;eXEU=f=rPEx=M`Ys!BDZsj3h~eJqMCD&hTA+IW+sN z-qMoGQMaGYiO*iEf7t)5C?_9vD(9iE!z|0|ZU-lrY zLPSkCOL0TcDQB;jl{d_n%GlT1$UVRPwk-W;-WkSer=Lb==cfG>2uuHdTWt2(w7k+f z`|C0brd-mIKk(yC?b@%`irUx@xbNSc{8M0B`t>MZ>6vo(4!`if@Lrz3xS_5)*J$RR z$T~0H^L1PH<)-spcswQOm+!W^#k!ZWW3&IhWV@Gf{vnfqz(Li0r|TW>+iN+R9n{@t z?a<&`(96%L;8xJj&#d6maHO3{K=Ht%!;BmP3qEQxG;n_pVvT%DYvGoK~P}D<93D}OpSJR5)Iq}PDl7z4Hy)C{uD5z zE3|aU3q5H0Frj##ee920&*$9dZ$EtNmss?C+i$1eT0h))|3|&0KSP2iBL_nagH4>Y z0z(1ghl<<=h6Ahz9&cr2Vi0HOzs^Roq&?&AJ-h{6A$x*>iI>6C)z4*}Q$iB}aLgVG diff --git a/OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_top.png b/OsmAnd/res/drawable-xxxhdpi/map_bg_point_rhomb_top.png deleted file mode 100644 index e62a7647e5cc8b7359d7db3ee3eba039dd699469..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7254 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 K%Cr*UmGmD#?w5D~ diff --git a/OsmAnd/res/drawable/map_action_ski_touring.xml b/OsmAnd/res/drawable/map_action_ski_touring.xml deleted file mode 100644 index f771350bd8..0000000000 --- a/OsmAnd/res/drawable/map_action_ski_touring.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/OsmAnd/res/drawable/map_action_snowmobile.xml b/OsmAnd/res/drawable/map_action_snowmobile.xml deleted file mode 100644 index 83463f1f5f..0000000000 --- a/OsmAnd/res/drawable/map_action_snowmobile.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - diff --git a/OsmAnd/res/layout/context_menu_action_item.xml b/OsmAnd/res/layout/context_menu_action_item.xml index 25c18a1845..6eb801d41a 100644 --- a/OsmAnd/res/layout/context_menu_action_item.xml +++ b/OsmAnd/res/layout/context_menu_action_item.xml @@ -12,10 +12,9 @@ + android:layout_width="@dimen/standard_icon_size" + android:layout_height="@dimen/standard_icon_size" + android:layout_marginBottom="@dimen/context_menu_main_actions_icon_margin" /> @@ -64,48 +68,58 @@ diff --git a/OsmAnd/res/layout/favorites_list_item.xml b/OsmAnd/res/layout/favorites_list_item.xml index cd227db55b..dd037282dd 100644 --- a/OsmAnd/res/layout/favorites_list_item.xml +++ b/OsmAnd/res/layout/favorites_list_item.xml @@ -30,10 +30,10 @@ android:minHeight="@dimen/favorites_list_item_height" android:layout_gravity="center_vertical" android:orientation="horizontal" - android:paddingStart="@dimen/list_header_text_left_margin" - android:paddingLeft="@dimen/list_header_text_left_margin" - android:paddingEnd="@dimen/list_header_text_left_margin" - android:paddingRight="@dimen/list_header_text_left_margin"> + android:paddingStart="@dimen/content_padding_small" + android:paddingLeft="@dimen/content_padding_small" + android:paddingEnd="@dimen/content_padding_small" + android:paddingRight="@dimen/content_padding_small"> @@ -57,7 +57,6 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:contentDescription="@string/favorite" - android:scaleType="center" tools:src="@drawable/bg_point_circle"/> diff --git a/OsmAnd/res/layout/first_usage_wizard_fragment.xml b/OsmAnd/res/layout/first_usage_wizard_fragment.xml index 815570c6fa..a77d8636de 100644 --- a/OsmAnd/res/layout/first_usage_wizard_fragment.xml +++ b/OsmAnd/res/layout/first_usage_wizard_fragment.xml @@ -638,7 +638,7 @@ android:layout_width="44dp" android:layout_height="44dp" android:contentDescription="@string/shared_string_cancel" - android:src="@drawable/map_action_cancel" + android:src="@drawable/ic_action_close" android:tint="@color/icon_color_default_light"/> diff --git a/OsmAnd/res/layout/global_preference_toolbar.xml b/OsmAnd/res/layout/global_preference_toolbar.xml index cf43da3dcc..2a8b388692 100644 --- a/OsmAnd/res/layout/global_preference_toolbar.xml +++ b/OsmAnd/res/layout/global_preference_toolbar.xml @@ -6,21 +6,27 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/actionModeBackground" - android:minHeight="@dimen/toolbar_height" app:contentInsetLeft="0dp" - app:contentInsetStart="0dp"> + app:contentInsetStart="0dp" + app:theme="@style/ThemeOverlay.AppCompat.ActionBar"> + app:contentInsetStart="0dp" + app:theme="@style/ThemeOverlay.AppCompat.ActionBar"> @@ -20,22 +20,22 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" - android:minHeight="48dp" + android:minHeight="@dimen/bottom_sheet_list_item_height" android:background="?attr/bg_color" android:gravity="center" android:orientation="horizontal" android:paddingLeft="@dimen/content_padding" android:paddingRight="@dimen/content_padding" - android:paddingStart="@dimen/content_padding" - android:paddingEnd="@dimen/content_padding"> + android:paddingStart="@dimen/content_padding" + android:paddingEnd="@dimen/content_padding"> diff --git a/OsmAnd/res/layout/list_item_icon_and_menu.xml b/OsmAnd/res/layout/list_item_icon_and_menu.xml index b3ad8c8cbe..d0703ebb18 100644 --- a/OsmAnd/res/layout/list_item_icon_and_menu.xml +++ b/OsmAnd/res/layout/list_item_icon_and_menu.xml @@ -6,13 +6,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/bg_color" - android:minHeight="60dp" - tools:layout_height="60dp"> + android:minHeight="@dimen/setting_profile_item_height" + tools:layout_height="@dimen/setting_profile_item_height"> diff --git a/OsmAnd/res/layout/list_item_import.xml b/OsmAnd/res/layout/list_item_import.xml index 5d1e845d6b..862178e640 100644 --- a/OsmAnd/res/layout/list_item_import.xml +++ b/OsmAnd/res/layout/list_item_import.xml @@ -21,8 +21,8 @@ + android:layout_marginLeft="@dimen/content_padding" + android:layout_marginStart="@dimen/content_padding"> + android:orientation="horizontal"> diff --git a/OsmAnd/res/layout/map_context_menu_fragment.xml b/OsmAnd/res/layout/map_context_menu_fragment.xml index 6089fbc5e2..9616fb24ad 100644 --- a/OsmAnd/res/layout/map_context_menu_fragment.xml +++ b/OsmAnd/res/layout/map_context_menu_fragment.xml @@ -397,7 +397,7 @@ android:background="?attr/selectableItemBackground" android:contentDescription="@string/shared_string_close" android:scaleType="center" - tools:src="@drawable/map_action_cancel"/> + tools:src="@drawable/ic_action_close" /> diff --git a/OsmAnd/res/layout/mode_view.xml b/OsmAnd/res/layout/mode_view.xml index 4e53f468f7..990ba068cd 100644 --- a/OsmAnd/res/layout/mode_view.xml +++ b/OsmAnd/res/layout/mode_view.xml @@ -6,11 +6,11 @@ + android:background="?attr/dashboard_button" /> + tools:src="@drawable/ic_dashboard_dark" /> - \ No newline at end of file diff --git a/OsmAnd/res/layout/plan_route_info.xml b/OsmAnd/res/layout/plan_route_info.xml index 710606677b..c3c7c545d1 100644 --- a/OsmAnd/res/layout/plan_route_info.xml +++ b/OsmAnd/res/layout/plan_route_info.xml @@ -503,14 +503,14 @@ + android:layout_width="@dimen/standard_icon_size" + android:layout_height="@dimen/standard_icon_size" + android:layout_gravity="center" + android:layout_marginStart="@dimen/content_padding_small" + android:layout_marginLeft="@dimen/content_padding_small" + android:layout_marginEnd="@dimen/route_info_buttons_padding_top_bottom" + android:layout_marginRight="@dimen/route_info_buttons_padding_top_bottom" + tools:src="@drawable/ic_action_settings" /> diff --git a/OsmAnd/res/layout/profile_preference_toolbar.xml b/OsmAnd/res/layout/profile_preference_toolbar.xml index 45e7db5c82..3bc38a9655 100644 --- a/OsmAnd/res/layout/profile_preference_toolbar.xml +++ b/OsmAnd/res/layout/profile_preference_toolbar.xml @@ -4,7 +4,6 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:minHeight="@dimen/dashboard_map_toolbar" osmand:contentInsetLeft="0dp" osmand:contentInsetStart="0dp" osmand:theme="@style/ThemeOverlay.AppCompat.ActionBar"> @@ -12,6 +11,7 @@ @@ -19,9 +19,14 @@ diff --git a/OsmAnd/res/layout/profile_preference_toolbar_with_switch.xml b/OsmAnd/res/layout/profile_preference_toolbar_with_switch.xml index f825535ef3..6173b3a258 100644 --- a/OsmAnd/res/layout/profile_preference_toolbar_with_switch.xml +++ b/OsmAnd/res/layout/profile_preference_toolbar_with_switch.xml @@ -17,6 +17,7 @@ @@ -24,9 +25,14 @@ @@ -71,8 +77,8 @@ diff --git a/OsmAnd/res/values-large/sizes.xml b/OsmAnd/res/values-large/sizes.xml index 131f2840a2..155aac492a 100644 --- a/OsmAnd/res/values-large/sizes.xml +++ b/OsmAnd/res/values-large/sizes.xml @@ -31,7 +31,7 @@ 140dp 81dp - 32dp + 36dp 48dp 120dp 17dp @@ -96,9 +96,12 @@ 65dp 60dp + 60dp 480dp 480dp - + 84dp + 13dp + 22sp 18sp 16sp @@ -154,6 +157,7 @@ 78dp 66dp 72dp + 96dp 36dp 11dp 12dp @@ -238,6 +242,7 @@ 21dp + 96dp 108dp 108dp diff --git a/OsmAnd/res/values/sizes.xml b/OsmAnd/res/values/sizes.xml index b579010a6d..ea9f61267a 100644 --- a/OsmAnd/res/values/sizes.xml +++ b/OsmAnd/res/values/sizes.xml @@ -32,7 +32,9 @@ 15dp 32dp - 50dp + 50dp + 150dp + 40dp 240dp 360dp diff --git a/OsmAnd/src/net/osmand/plus/ApplicationMode.java b/OsmAnd/src/net/osmand/plus/ApplicationMode.java index 7b86740c72..19efee355e 100644 --- a/OsmAnd/src/net/osmand/plus/ApplicationMode.java +++ b/OsmAnd/src/net/osmand/plus/ApplicationMode.java @@ -64,7 +64,7 @@ public class ApplicationMode { private ApplicationMode parentAppMode; private int iconRes = R.drawable.ic_world_globe_dark; - private int iconMapRes = R.drawable.map_world_globe_dark; + private int iconMapRes = R.drawable.ic_world_globe_dark; private int minDistanceForTurn = 50; private int arrivalDistance = 90; @@ -80,40 +80,40 @@ public class ApplicationMode { */ public static final ApplicationMode DEFAULT = createBase(R.string.app_mode_default, "default") .distanceForTurn(5).arrivalDistance(90) - .icon(R.drawable.ic_world_globe_dark, R.drawable.map_world_globe_dark).reg(); + .icon(R.drawable.ic_world_globe_dark, R.drawable.ic_world_globe_dark).reg(); public static final ApplicationMode CAR = createBase(R.string.app_mode_car, "car") .distanceForTurn(35) - .icon(R.drawable.ic_action_car_dark, R.drawable.map_action_car_dark) + .icon(R.drawable.ic_action_car_dark, R.drawable.ic_action_car_dark) .description(R.string.base_profile_descr_car).reg(); public static final ApplicationMode BICYCLE = createBase(R.string.app_mode_bicycle, "bicycle") .distanceForTurn(15).arrivalDistance(60).offRouteDistance(50) - .icon(R.drawable.ic_action_bicycle_dark, R.drawable.map_action_bicycle_dark) + .icon(R.drawable.ic_action_bicycle_dark, R.drawable.ic_action_bicycle_dark) .description(R.string.base_profile_descr_bicycle).reg(); public static final ApplicationMode PEDESTRIAN = createBase(R.string.app_mode_pedestrian, "pedestrian") .distanceForTurn(5).arrivalDistance(45).offRouteDistance(20) - .icon(R.drawable.ic_action_pedestrian_dark, R.drawable.map_action_pedestrian_dark) + .icon(R.drawable.ic_action_pedestrian_dark, R.drawable.ic_action_pedestrian_dark) .description(R.string.base_profile_descr_pedestrian).reg(); public static final ApplicationMode PUBLIC_TRANSPORT = createBase(R.string.app_mode_public_transport, "public_transport") - .icon(R.drawable.ic_action_bus_dark, R.drawable.map_action_bus_dark) + .icon(R.drawable.ic_action_bus_dark, R.drawable.ic_action_bus_dark) .description(R.string.base_profile_descr_public_transport).reg(); public static final ApplicationMode BOAT = createBase(R.string.app_mode_boat, "boat") .distanceForTurn(20) - .icon(R.drawable.ic_action_sail_boat_dark, R.drawable.map_action_sail_boat_dark) + .icon(R.drawable.ic_action_sail_boat_dark, R.drawable.ic_action_sail_boat_dark) .description(R.string.base_profile_descr_boat).reg(); public static final ApplicationMode AIRCRAFT = createBase(R.string.app_mode_aircraft, "aircraft") .distanceForTurn(100) - .icon(R.drawable.ic_action_aircraft, R.drawable.map_action_aircraft) + .icon(R.drawable.ic_action_aircraft, R.drawable.ic_action_aircraft) .description(R.string.base_profile_descr_aircraft).reg(); public static final ApplicationMode SKI = createBase(R.string.app_mode_skiing, "ski") .distanceForTurn(15).arrivalDistance(60).offRouteDistance(50) - .icon(R.drawable.ic_action_skiing, R.drawable.map_action_skiing) + .icon(R.drawable.ic_action_skiing, R.drawable.ic_action_skiing) .description(R.string.base_profile_descr_ski).reg(); public static List values(OsmandApplication app) { @@ -362,7 +362,8 @@ public class ApplicationMode { String iconResName = app.getSettings().ICON_RES_NAME.getModeValue(this); try { int iconRes = app.getResources().getIdentifier(iconResName, "drawable", app.getPackageName()); - int iconMapRes = app.getResources().getIdentifier(iconResName.replace("ic_", "map_"), "drawable", app.getPackageName()); +// int iconMapRes = app.getResources().getIdentifier(iconResName.replace("ic_", "map_"), "drawable", app.getPackageName()); + int iconMapRes = iconRes; //app.getResources().getIdentifier(iconResName.replace("ic_", "map_"), "drawable", app.getPackageName()); if (iconRes != 0 && iconMapRes != 0) { this.iconRes = iconRes; this.iconMapRes = iconMapRes; diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index fb088a3124..c3c8656684 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -386,9 +386,8 @@ public class ContextMenuAdapter { Drawable drawable = item.getIcon() != ContextMenuItem.INVALID_ID ? mIconsCache.getIcon(item.getIcon(), color) : null; if (drawable != null && tv != null) { - float density = getContext().getResources().getDisplayMetrics().density; - int paddingInPixels = (int) (24 * density); - int drawableSizeInPixels = (int) (24 * density); // 32 + int paddingInPixels = (int) getContext().getResources().getDimension(R.dimen.bottom_sheet_icon_margin); + int drawableSizeInPixels = (int) getContext().getResources().getDimension(R.dimen.standard_icon_size); drawable.setBounds(0, 0, drawableSizeInPixels, drawableSizeInPixels); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { tv.setCompoundDrawablesRelative(drawable, null, null, null); diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java index 2388e0ffe8..21c0b88e8f 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java @@ -22,6 +22,7 @@ import android.widget.CheckBox; import android.widget.ExpandableListView; import android.widget.Filter; import android.widget.Filterable; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -66,6 +67,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import static android.view.Gravity.CENTER; import static net.osmand.plus.myplaces.FavoritesActivity.FAV_TAB; import static net.osmand.plus.myplaces.FavoritesActivity.TAB_ID; @@ -961,8 +963,14 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen if(model.getBackgroundType().equals(FavouritePoint.BackgroundType.CIRCLE)){ int color = visible ? model.getColor() : getResources().getColor(disabledIconColor); int col = color == 0 || color == Color.BLACK ? getResources().getColor(R.color.color_favorite) : color; + int iconSize = (int) getResources().getDimension(R.dimen.standard_icon_size); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(iconSize, iconSize, CENTER); + icon.setLayoutParams(lp); icon.setImageDrawable(UiUtilities.createTintedDrawable(getActivity(),model.getIconId(),col)); }else { + int iconSize = (int) getResources().getDimension(R.dimen.favorites_icon_size); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(iconSize, iconSize, CENTER); + icon.setLayoutParams(lp); icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(), visible ? model.getColor() : getResources().getColor(disabledIconColor), false, model)); } diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index ef9f6f9f6c..8cf474df8b 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -348,19 +348,19 @@ public class MapActivityActions implements DialogProvider { adapter.addItem(itemBuilder .setTitleId(R.string.shared_string_add, mapActivity) .setId(MAP_CONTEXT_MENU_ADD_ID) - .setIcon(R.drawable.map_action_fav_dark) + .setIcon(R.drawable.ic_action_fav_dark) .setOrder(0) .createItem()); adapter.addItem(itemBuilder .setTitleId(R.string.shared_string_marker, mapActivity) .setId(MAP_CONTEXT_MENU_MARKER_ID) - .setIcon(R.drawable.map_action_flag_dark) + .setIcon(R.drawable.ic_action_flag_dark) .setOrder(1) .createItem()); adapter.addItem(itemBuilder .setTitleId(R.string.shared_string_share, mapActivity) .setId(MAP_CONTEXT_MENU_SHARE_ID) - .setIcon(R.drawable.map_action_gshare_dark) + .setIcon(R.drawable.ic_action_gshare_dark) .setOrder(2) .createItem()); adapter.addItem(itemBuilder diff --git a/OsmAnd/src/net/osmand/plus/activities/actions/AppModeDialog.java b/OsmAnd/src/net/osmand/plus/activities/actions/AppModeDialog.java index db1243321b..e906e13d1a 100644 --- a/OsmAnd/src/net/osmand/plus/activities/actions/AppModeDialog.java +++ b/OsmAnd/src/net/osmand/plus/activities/actions/AppModeDialog.java @@ -170,13 +170,13 @@ public class AppModeDialog { final ApplicationMode mode = visible.get(i); final boolean checked = selected.contains(mode); ImageView iv = (ImageView) tb.findViewById(R.id.app_mode_icon); - View selection = tb.findViewById(R.id.selection); + ImageView selection = tb.findViewById(R.id.selection); Drawable drawable = ctx.getUIUtilities().getIcon(mode.getIconRes(), mode.getIconColorInfo().getColor(nightMode)); if (checked) { iv.setImageDrawable(drawable); iv.setContentDescription(String.format("%s %s", mode.toHumanString(), ctx.getString(R.string.item_checked))); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { - AndroidUtils.setBackground(ctx, iv, nightMode, R.drawable.btn_checked_border_light, R.drawable.btn_checked_border_light); + selection.setImageDrawable(ctx.getDrawable(R.drawable.btn_checked_border_light)); AndroidUtils.setBackground(ctx, selection, nightMode, R.drawable.ripple_light, R.drawable.ripple_light); } else { AndroidUtils.setBackground(ctx, selection, nightMode, R.drawable.btn_border_trans_light, R.drawable.btn_border_trans_light); @@ -189,7 +189,7 @@ public class AppModeDialog { } iv.setImageDrawable(drawable); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { - AndroidUtils.setBackground(ctx, iv, nightMode, R.drawable.btn_border_pressed_light, R.drawable.btn_border_pressed_light); + selection.setImageDrawable(ctx.getDrawable(R.drawable.btn_border_pressed_light)); AndroidUtils.setBackground(ctx, selection, nightMode, R.drawable.ripple_light, R.drawable.ripple_light); } else { AndroidUtils.setBackground(ctx, selection, nightMode, R.drawable.btn_border_pressed_trans_light, R.drawable.btn_border_pressed_trans_light); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java index 914e739ee6..bd5260d4b9 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java @@ -908,8 +908,8 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL favActionIconId = menuController.getFavActionIconId(); waypointActionIconId = menuController.getWaypointActionIconId(); } else { - favActionIconId = R.drawable.map_action_fav_dark; - waypointActionIconId = R.drawable.map_action_flag_dark; + favActionIconId = R.drawable.ic_action_fav_dark; + waypointActionIconId = R.drawable.ic_action_flag_dark; } } @@ -919,7 +919,7 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL if (mapActivity != null) { RoutingHelper routingHelper = mapActivity.getMyApplication().getRoutingHelper(); if (routingHelper.isFollowingMode() || routingHelper.isRoutePlanningMode()) { - res = R.drawable.map_action_waypoint; + res = R.drawable.ic_action_waypoint; } } return res; diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index ab8f716b4f..164663bd2b 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -610,7 +610,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo TextView directionsButton = (TextView) view.findViewById(R.id.context_menu_directions_button); int iconResId = R.drawable.map_directions; if (menu.navigateInPedestrianMode()) { - iconResId = R.drawable.map_action_pedestrian_dark; + iconResId = R.drawable.ic_action_pedestrian_dark; } Drawable drawable = getIcon(iconResId, bottomButtonsColor); directionsButton.setTextColor(ContextCompat.getColor(mapActivity, bottomButtonsColor)); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java index 112e315968..3e1dbd23bc 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java @@ -504,7 +504,7 @@ public abstract class MenuController extends BaseMenuController implements Colla } public int getFavActionIconId() { - return R.drawable.map_action_fav_dark; + return R.drawable.ic_action_fav_dark; } public int getFavActionStringId() { @@ -516,7 +516,7 @@ public abstract class MenuController extends BaseMenuController implements Colla } public int getWaypointActionIconId() { - return R.drawable.map_action_flag_dark; + return R.drawable.ic_action_flag_dark; } public int getWaypointActionStringId() { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java index c62e72a566..a0681bc441 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java @@ -155,7 +155,7 @@ public class FavouritePointMenuController extends MenuController { @Override public int getFavActionIconId() { - return R.drawable.map_action_edit_dark; + return R.drawable.ic_action_edit_dark; } @Override diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java index e16c872c91..a5be9a9706 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java @@ -973,9 +973,9 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener LinearLayout optionsButton = (LinearLayout) mainView.findViewById(R.id.map_options_route_button); TextView optionsTitle = (TextView) mainView.findViewById(R.id.map_options_route_button_title); ImageView optionsIcon = (ImageView) mainView.findViewById(R.id.map_options_route_button_icon); - Drawable drawable = app.getUIUtilities().getIcon(R.drawable.map_action_settings, nightMode ? R.color.route_info_control_icon_color_dark : R.color.route_info_control_icon_color_light); + Drawable drawable = app.getUIUtilities().getIcon(R.drawable.ic_action_settings, nightMode ? R.color.route_info_control_icon_color_dark : R.color.route_info_control_icon_color_light); if (Build.VERSION.SDK_INT >= 21) { - Drawable active = app.getUIUtilities().getIcon(R.drawable.map_action_settings, nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light); + Drawable active = app.getUIUtilities().getIcon(R.drawable.ic_action_settings, nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light); drawable = AndroidUtils.createPressedStateListDrawable(drawable, active); } optionsIcon.setImageDrawable(drawable); diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java index 57f4b56e4a..610e2a3958 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java @@ -943,12 +943,12 @@ public class RoutingOptionsHelper { @Override public int getActiveIconId() { - return R.drawable.map_action_settings; + return R.drawable.ic_action_settings; } @Override public int getDisabledIconId() { - return R.drawable.map_action_settings; + return R.drawable.ic_action_settings; } } diff --git a/OsmAnd/src/net/osmand/plus/settings/ImportedSettingsItemsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/ImportedSettingsItemsAdapter.java index dcb86fa87c..3059f6d01d 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ImportedSettingsItemsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/ImportedSettingsItemsAdapter.java @@ -10,7 +10,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import net.osmand.AndroidUtils; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; @@ -80,7 +79,7 @@ public class ImportedSettingsItemsAdapter extends switch (currentItemType) { case PROFILE: - holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.map_action_settings, activeColorRes)); + holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_action_settings, activeColorRes)); holder.title.setText(R.string.shared_string_settings); break; case QUICK_ACTIONS: diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index 4adf60c2c5..1f145c58c9 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -8,9 +8,12 @@ import android.animation.ObjectAnimator; import android.annotation.SuppressLint; import android.content.DialogInterface; import android.content.pm.PackageManager; +import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.PointF; +import android.graphics.PorterDuff; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.view.MotionEvent; @@ -259,7 +262,7 @@ public class MapControlsLayer extends OsmandMapLayer { private void initTopControls() { View configureMap = mapActivity.findViewById(R.id.map_layers_button); - layersHud = createHudButton(configureMap, R.drawable.map_world_globe_dark, LAYERS_HUD_ID) + layersHud = createHudButton(configureMap, R.drawable.ic_world_globe_dark, LAYERS_HUD_ID) .setIconColorId(R.color.on_map_icon_color, 0) .setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night); controls.add(layersHud); @@ -1159,10 +1162,19 @@ public class MapControlsLayer extends OsmandMapLayer { } if (iv instanceof ImageView) { + int iconSize = (int) ctx.getResources().getDimension(R.dimen.standard_icon_size); + Bitmap bitmap = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888); + if (d != null) { + bitmap = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + canvas.drawColor(0, PorterDuff.Mode.CLEAR); + d.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + d.draw(canvas); + } if (compass) { ((ImageView) iv).setImageDrawable(new CompassDrawable(d)); } else { - ((ImageView) iv).setImageDrawable(d); + ((ImageView) iv).setImageDrawable(new BitmapDrawable(ctx.getResources(), bitmap)); } } else if (iv instanceof TextView) { ((TextView) iv).setCompoundDrawablesWithIntrinsicBounds( diff --git a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java index c7f01306f0..0c136f029d 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java @@ -282,7 +282,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe private void updateQuickActionButton(boolean widgetVisible) { quickActionButton.setImageDrawable(app.getUIUtilities().getMapIcon( - !widgetVisible ? R.drawable.map_quick_action : R.drawable.map_action_cancel, !nightMode)); + !widgetVisible ? R.drawable.map_quick_action : R.drawable.ic_action_close, !nightMode)); quickActionButton.setBackgroundResource( nightMode ? R.drawable.btn_circle_night : R.drawable.btn_circle_trans); quickActionButton.setContentDescription(mapActivity.getString(!widgetVisible ? R.string.configure_screen_quick_action : R.string.shared_string_cancel)); From 32e9d6e314521fcc9d8994fa1a950a8a91f84e4a Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 4 May 2020 21:17:28 +0300 Subject: [PATCH 11/54] Remove iconMapRes --- .../src/net/osmand/plus/ApplicationMode.java | 30 +++++++------------ .../activities/FavoritesTreeFragment.java | 10 +++---- .../plus/mapmarkers/PlanRouteFragment.java | 2 +- .../MeasurementToolFragment.java | 2 +- .../MapRouteInfoMenu.java | 2 +- .../osmand/plus/views/MapControlsLayer.java | 21 ++++++------- 6 files changed, 26 insertions(+), 41 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/ApplicationMode.java b/OsmAnd/src/net/osmand/plus/ApplicationMode.java index 19efee355e..48bfff7a4d 100644 --- a/OsmAnd/src/net/osmand/plus/ApplicationMode.java +++ b/OsmAnd/src/net/osmand/plus/ApplicationMode.java @@ -64,7 +64,6 @@ public class ApplicationMode { private ApplicationMode parentAppMode; private int iconRes = R.drawable.ic_world_globe_dark; - private int iconMapRes = R.drawable.ic_world_globe_dark; private int minDistanceForTurn = 50; private int arrivalDistance = 90; @@ -80,40 +79,40 @@ public class ApplicationMode { */ public static final ApplicationMode DEFAULT = createBase(R.string.app_mode_default, "default") .distanceForTurn(5).arrivalDistance(90) - .icon(R.drawable.ic_world_globe_dark, R.drawable.ic_world_globe_dark).reg(); + .icon(R.drawable.ic_world_globe_dark).reg(); public static final ApplicationMode CAR = createBase(R.string.app_mode_car, "car") .distanceForTurn(35) - .icon(R.drawable.ic_action_car_dark, R.drawable.ic_action_car_dark) + .icon(R.drawable.ic_action_car_dark) .description(R.string.base_profile_descr_car).reg(); public static final ApplicationMode BICYCLE = createBase(R.string.app_mode_bicycle, "bicycle") .distanceForTurn(15).arrivalDistance(60).offRouteDistance(50) - .icon(R.drawable.ic_action_bicycle_dark, R.drawable.ic_action_bicycle_dark) + .icon(R.drawable.ic_action_bicycle_dark) .description(R.string.base_profile_descr_bicycle).reg(); public static final ApplicationMode PEDESTRIAN = createBase(R.string.app_mode_pedestrian, "pedestrian") .distanceForTurn(5).arrivalDistance(45).offRouteDistance(20) - .icon(R.drawable.ic_action_pedestrian_dark, R.drawable.ic_action_pedestrian_dark) + .icon(R.drawable.ic_action_pedestrian_dark) .description(R.string.base_profile_descr_pedestrian).reg(); public static final ApplicationMode PUBLIC_TRANSPORT = createBase(R.string.app_mode_public_transport, "public_transport") - .icon(R.drawable.ic_action_bus_dark, R.drawable.ic_action_bus_dark) + .icon(R.drawable.ic_action_bus_dark) .description(R.string.base_profile_descr_public_transport).reg(); public static final ApplicationMode BOAT = createBase(R.string.app_mode_boat, "boat") .distanceForTurn(20) - .icon(R.drawable.ic_action_sail_boat_dark, R.drawable.ic_action_sail_boat_dark) + .icon(R.drawable.ic_action_sail_boat_dark) .description(R.string.base_profile_descr_boat).reg(); public static final ApplicationMode AIRCRAFT = createBase(R.string.app_mode_aircraft, "aircraft") .distanceForTurn(100) - .icon(R.drawable.ic_action_aircraft, R.drawable.ic_action_aircraft) + .icon(R.drawable.ic_action_aircraft) .description(R.string.base_profile_descr_aircraft).reg(); public static final ApplicationMode SKI = createBase(R.string.app_mode_skiing, "ski") .distanceForTurn(15).arrivalDistance(60).offRouteDistance(50) - .icon(R.drawable.ic_action_skiing, R.drawable.ic_action_skiing) + .icon(R.drawable.ic_action_skiing) .description(R.string.base_profile_descr_ski).reg(); public static List values(OsmandApplication app) { @@ -347,11 +346,6 @@ public class ApplicationMode { return iconRes; } - @DrawableRes - public int getMapIconRes() { - return iconMapRes; - } - public void setIconResName(String iconResName) { if (!Algorithms.isEmpty(iconResName)) { app.getSettings().ICON_RES_NAME.setModeValue(this, iconResName); @@ -362,11 +356,8 @@ public class ApplicationMode { String iconResName = app.getSettings().ICON_RES_NAME.getModeValue(this); try { int iconRes = app.getResources().getIdentifier(iconResName, "drawable", app.getPackageName()); -// int iconMapRes = app.getResources().getIdentifier(iconResName.replace("ic_", "map_"), "drawable", app.getPackageName()); - int iconMapRes = iconRes; //app.getResources().getIdentifier(iconResName.replace("ic_", "map_"), "drawable", app.getPackageName()); - if (iconRes != 0 && iconMapRes != 0) { + if (iconRes != 0) { this.iconRes = iconRes; - this.iconMapRes = iconMapRes; } } catch (Exception e) { // return R.drawable.map_world_globe_dark; @@ -730,8 +721,7 @@ public class ApplicationMode { return applicationMode; } - public ApplicationModeBuilder icon(int iconRes, int iconMapRes) { - applicationMode.iconMapRes = iconMapRes; + public ApplicationModeBuilder icon(int iconRes) { applicationMode.iconRes = iconRes; return this; } diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java index 21c0b88e8f..7ebfac8005 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java @@ -960,20 +960,18 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen if (model.isAddressSpecified()) { distanceText.setText(String.format(getString(R.string.ltr_or_rtl_combine_via_comma), distance.trim(), model.getAddress())); } + int iconSize = (int) getResources().getDimension(R.dimen.favorites_icon_size); if(model.getBackgroundType().equals(FavouritePoint.BackgroundType.CIRCLE)){ int color = visible ? model.getColor() : getResources().getColor(disabledIconColor); int col = color == 0 || color == Color.BLACK ? getResources().getColor(R.color.color_favorite) : color; - int iconSize = (int) getResources().getDimension(R.dimen.standard_icon_size); - FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(iconSize, iconSize, CENTER); - icon.setLayoutParams(lp); icon.setImageDrawable(UiUtilities.createTintedDrawable(getActivity(),model.getIconId(),col)); + iconSize = (int) getResources().getDimension(R.dimen.standard_icon_size); }else { - int iconSize = (int) getResources().getDimension(R.dimen.favorites_icon_size); - FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(iconSize, iconSize, CENTER); - icon.setLayoutParams(lp); icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(), visible ? model.getColor() : getResources().getColor(disabledIconColor), false, model)); } + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(iconSize, iconSize, CENTER); + icon.setLayoutParams(lp); if (visible) { distanceText.setTextColor(getResources().getColor(R.color.color_distance)); } else { diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java b/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java index 6c23918c90..24b60b262a 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java @@ -664,7 +664,7 @@ public class PlanRouteFragment extends BaseOsmAndFragment implements OsmAndLocat if (mapActivity != null) { final ImageButton appModesBtn = (ImageButton) mapActivity.findViewById(R.id.snap_to_road_image_button); appModesBtn.setBackgroundResource(nightMode ? R.drawable.btn_circle_night : R.drawable.btn_circle); - appModesBtn.setImageDrawable(getActiveIcon(planRouteContext.getSnappedMode().getMapIconRes())); + appModesBtn.setImageDrawable(getActiveIcon(planRouteContext.getSnappedMode().getIconRes())); appModesBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index c084448d7d..3afdbbe550 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -805,7 +805,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment { ImageButton snapToRoadBtn = (ImageButton) mapActivity.findViewById(R.id.snap_to_road_image_button); snapToRoadBtn.setBackgroundResource(nightMode ? R.drawable.btn_circle_night : R.drawable.btn_circle); - snapToRoadBtn.setImageDrawable(getIcon(appMode.getMapIconRes(), appMode.getIconColorInfo().getColor(nightMode))); + snapToRoadBtn.setImageDrawable(getIcon(appMode.getIconRes(), appMode.getIconColorInfo().getColor(nightMode))); snapToRoadBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java index a5be9a9706..b8b62fb46c 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java @@ -2292,7 +2292,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener case ROUTE_INFO: return 0; case ROUTE_DETAILS: - return app != null ? app.getRoutingHelper().getAppMode().getMapIconRes() : R.drawable.map_directions; + return app != null ? app.getRoutingHelper().getAppMode().getIconRes() : R.drawable.map_directions; default: return 0; } diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index 0614b54eb3..f0b0d988eb 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -821,7 +821,7 @@ public class MapControlsLayer extends OsmandMapLayer { ApplicationMode appMode = settings.getApplicationMode(); layersHud.setIconColorId(appMode.getIconColorInfo().getColor(isNight)); - if (layersHud.setIconResId(appMode.getMapIconRes())) { + if (layersHud.setIconResId(appMode.getIconRes())) { layersHud.update(app, isNight); } layersHud.updateVisibility(!routeDialogOpened && !trackDialogOpened && !isInMeasurementToolMode() && !isInPlanRouteMode() @@ -1162,20 +1162,18 @@ public class MapControlsLayer extends OsmandMapLayer { } else if (resId != 0) { d = ctx.getUIUtilities().getIcon(resId, nightMode ? resClrDark : resClrLight); } - if (iv instanceof ImageView) { - int iconSize = (int) ctx.getResources().getDimension(R.dimen.standard_icon_size); - Bitmap bitmap = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888); - if (d != null) { - bitmap = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - canvas.drawColor(0, PorterDuff.Mode.CLEAR); - d.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); - d.draw(canvas); - } if (compass) { ((ImageView) iv).setImageDrawable(new CompassDrawable(d)); } else { + int iconSize = (int) ctx.getResources().getDimension(R.dimen.standard_icon_size); + Bitmap bitmap = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + canvas.drawColor(0, PorterDuff.Mode.CLEAR); + if (d != null) { + d.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + d.draw(canvas); + } ((ImageView) iv).setImageDrawable(new BitmapDrawable(ctx.getResources(), bitmap)); } } else if (iv instanceof TextView) { @@ -1183,7 +1181,6 @@ public class MapControlsLayer extends OsmandMapLayer { d, null, null, null); } } - } private String getZoomLevel(@NonNull RotatedTileBox tb) { From 23a7b701a7c964bc494ae994ad1b625180892535 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Tue, 5 May 2020 11:38:27 +0300 Subject: [PATCH 12/54] refactor ContextMenuItemsPreference, corrections --- OsmAnd/src/net/osmand/aidl/ConnectedApp.java | 3 +- .../net/osmand/plus/ContextMenuAdapter.java | 62 ++++++++----- .../src/net/osmand/plus/ContextMenuItem.java | 2 +- .../src/net/osmand/plus/OsmandSettings.java | 93 ++++++++++++------- .../plus/activities/MapActivityActions.java | 30 ++---- .../osmand/plus/dialogs/ConfigureMapMenu.java | 1 - .../MapContextMenuFragment.java | 10 +- .../settings/ConfigureMenuItemsFragment.java | 40 ++++---- .../settings/RearrangeMenuItemsAdapter.java | 2 - 9 files changed, 128 insertions(+), 115 deletions(-) diff --git a/OsmAnd/src/net/osmand/aidl/ConnectedApp.java b/OsmAnd/src/net/osmand/aidl/ConnectedApp.java index bebccd4097..c10e7a38b0 100644 --- a/OsmAnd/src/net/osmand/aidl/ConnectedApp.java +++ b/OsmAnd/src/net/osmand/aidl/ConnectedApp.java @@ -27,6 +27,7 @@ import net.osmand.util.Algorithms; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.CONFIGURE_MAP_ITEM_ID_SCHEME; public class ConnectedApp implements Comparable { @@ -156,7 +157,7 @@ public class ConnectedApp implements Comparable { }; boolean layersEnabled = layersPref.get(); menuAdapter.addItem(new ContextMenuItem.ItemBuilder() - .setId(AIDL_LAYERS_PREFIX + pack) + .setId(CONFIGURE_MAP_ITEM_ID_SCHEME + AIDL_LAYERS_PREFIX + pack) .setTitle(name) .setListener(listener) .setSelected(layersEnabled) diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index ac769d8d6d..7caba071a1 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -49,7 +49,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import static net.osmand.aidl.ConnectedApp.AIDL_LAYERS_PREFIX; import static net.osmand.aidlapi.OsmAndCustomizationConstants.APP_PROFILES_ID; public class ContextMenuAdapter { @@ -59,6 +58,7 @@ public class ContextMenuAdapter { public static final int PROFILES_NORMAL_PROFILE_TAG = 0; public static final int PROFILES_CHOSEN_PROFILE_TAG = 1; public static final int PROFILES_CONTROL_BUTTON_TAG = 2; + private static final int ITEMS_ORDER_STEP = 10; @LayoutRes private int DEFAULT_LAYOUT_ID = R.layout.list_menu_item_native; @@ -85,14 +85,15 @@ public class ContextMenuAdapter { } public void addItem(ContextMenuItem item) { - try { - String id = item.getId(); - if (id != null) { - item.setHidden(isItemHidden(id)); - item.setOrder(getItemOrder(id, item.getOrder())); - } + String id = item.getId(); + if (id != null) { + item.setHidden(isItemHidden(id)); + item.setOrder(getItemOrder(id, item.getOrder())); + } + int pos = item.getPos(); + if (pos >= 0 && pos < items.size()) { items.add(item.getPos(), item); - } catch (IndexOutOfBoundsException ex) { + } else { items.add(item); } sortItemsByOrder(); @@ -132,7 +133,7 @@ public class ContextMenuAdapter { this.changeAppModeListener = changeAppModeListener; } - public void sortItemsByOrder() { + private void sortItemsByOrder() { Collections.sort(items, new Comparator() { @Override public int compare(ContextMenuItem item1, ContextMenuItem item2) { @@ -162,18 +163,25 @@ public class ContextMenuAdapter { private int getItemOrder(@NonNull String id, int defaultOrder) { ContextMenuItemsPreference contextMenuItemsPreference = app.getSettings().getContextMenuItemsPreference(id); - if (contextMenuItemsPreference == null) { - return defaultOrder; - } - List orderIds = contextMenuItemsPreference.get().getOrderIds(); - if (!Algorithms.isEmpty(orderIds)) { - int order = orderIds.indexOf(id); - if (order != -1) { - return order; - } - } - return defaultOrder == -1 ? items.size() - 1 : defaultOrder; - } + if (contextMenuItemsPreference != null) { + List orderIds = contextMenuItemsPreference.get().getOrderIds(); + if (!Algorithms.isEmpty(orderIds)) { + int index = orderIds.indexOf(id); + if (index != -1) { + return index + ITEMS_ORDER_STEP; + } + } + } + return getDefaultOrder(defaultOrder); + } + + private int getDefaultOrder(int defaultOrder) { + if (defaultOrder == 0 && !items.isEmpty()) { + return items.get(items.size() - 1).getOrder() + ITEMS_ORDER_STEP; + } else { + return defaultOrder; + } + } public ArrayAdapter createListAdapter(final Activity activity, final boolean lightTheme) { final int layoutId = DEFAULT_LAYOUT_ID; @@ -580,7 +588,7 @@ public class ContextMenuAdapter { List items = new ArrayList<>(); for (ContextMenuItem item : this.items) { String id = item.getId(); - if (id != null && (id.startsWith(idScheme) && !APP_PROFILES_ID.equals(id) || id.startsWith(AIDL_LAYERS_PREFIX))) { + if (id != null && (id.startsWith(idScheme) && !APP_PROFILES_ID.equals(id))) { items.add(item); } } @@ -600,4 +608,14 @@ public class ContextMenuAdapter { } return idScheme; } + + public List getVisibleItems() { + List visible = new ArrayList<>(); + for (ContextMenuItem item : items) { + if (!item.isHidden()) { + visible.add(item); + } + } + return visible; + } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java index b3d38dd37a..87a9874993 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java @@ -268,7 +268,7 @@ public class ContextMenuItem { private boolean mIsCategory = false; private boolean mIsClickable = true; private int mPosition = -1; - private int mOrder = -1; + private int mOrder = 0; private String mDescription = null; private ContextMenuAdapter.ItemClickListener mItemClickListener = null; private ContextMenuAdapter.OnIntegerValueChangedListener mIntegerListener = null; diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index 54d441f32a..1823a10c3b 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -1141,8 +1141,8 @@ public class OsmandSettings { @NonNull private String idScheme; - private ContextMenuItemsPreference(String id, @NonNull String idScheme) { - super(id, new ContextMenuItemsSettings()); + private ContextMenuItemsPreference(String id, @NonNull String idScheme, @NonNull ContextMenuItemsSettings defValue) { + super(id, defValue); this.idScheme = idScheme; } @@ -1163,7 +1163,7 @@ public class OsmandSettings { } private ContextMenuItemsSettings readValue(String s) { - ContextMenuItemsSettings value = new ContextMenuItemsSettings(); + ContextMenuItemsSettings value = getDefaultValue().newInstance(); value.readFromJsonString(s, idScheme); return value; } @@ -1175,12 +1175,10 @@ public class OsmandSettings { } public static class ContextMenuItemsSettings implements Serializable { - public static final String HIDDEN = "hidden"; - public static final String ORDER = "order"; - public static final String MAIN_ACTIONS = "main_actions"; + private static final String HIDDEN = "hidden"; + private static final String ORDER = "order"; private List hiddenIds = new ArrayList<>(); private List orderIds = new ArrayList<>(); - private List mainActionIds = new ArrayList<>(); public ContextMenuItemsSettings() { @@ -1191,10 +1189,8 @@ public class OsmandSettings { this.orderIds = orderIds; } - public ContextMenuItemsSettings(@NonNull List mainActionIds, @NonNull List hiddenIds, @NonNull List orderIds) { - this.mainActionIds = mainActionIds; - this.hiddenIds = hiddenIds; - this.orderIds = orderIds; + public ContextMenuItemsSettings newInstance() { + return new ContextMenuItemsSettings(); } public void readFromJsonString(String jsonString, @NonNull String idScheme) { @@ -1203,26 +1199,23 @@ public class OsmandSettings { } try { JSONObject json = new JSONObject(jsonString); - hiddenIds = readIdsList(json.optJSONArray(HIDDEN), idScheme); - orderIds = readIdsList(json.optJSONArray(ORDER), idScheme); - if (idScheme.equals(MAP_CONTEXT_MENU_ACTIONS)) { - mainActionIds = readIdsList(json.optJSONArray(MAIN_ACTIONS), idScheme); - } + readFromJson(json, idScheme); } catch (JSONException e) { LOG.error("Error converting to json string: " + e); } } - private List readIdsList(JSONArray jsonArray, @NonNull String idScheme) { + public void readFromJson(JSONObject json, String idScheme) { + hiddenIds = readIdsList(json.optJSONArray(HIDDEN), idScheme); + orderIds = readIdsList(json.optJSONArray(ORDER), idScheme); + } + + protected List readIdsList(JSONArray jsonArray, @NonNull String idScheme) { List list = new ArrayList<>(); if (jsonArray != null) { for (int i = 0; i < jsonArray.length(); i++) { String id = jsonArray.optString(i); - if (id.startsWith(AIDL_LAYERS_PREFIX)) { - list.add(id); - } else { - list.add(idScheme + id); - } + list.add(idScheme + id); } } return list; @@ -1231,11 +1224,7 @@ public class OsmandSettings { public String writeToJsonString(@NonNull String idScheme) { try { JSONObject json = new JSONObject(); - json.put(HIDDEN, getJsonArray(hiddenIds, idScheme)); - json.put(ORDER, getJsonArray(orderIds, idScheme)); - if (idScheme.equals(MAP_CONTEXT_MENU_ACTIONS)) { - json.put(MAIN_ACTIONS, getJsonArray(mainActionIds, idScheme)); - } + writeToJson(json, idScheme); return json.toString(); } catch (JSONException e) { LOG.error("Error converting to json string: " + e); @@ -1243,7 +1232,12 @@ public class OsmandSettings { return ""; } - private JSONArray getJsonArray(List ids, @NonNull String idScheme) { + public void writeToJson(JSONObject json, String idScheme) throws JSONException { + json.put(HIDDEN, getJsonArray(hiddenIds, idScheme)); + json.put(ORDER, getJsonArray(orderIds, idScheme)); + } + + protected JSONArray getJsonArray(List ids, @NonNull String idScheme) { JSONArray jsonArray = new JSONArray(); if (ids != null && !ids.isEmpty()) { for (String id : ids) { @@ -1260,6 +1254,37 @@ public class OsmandSettings { public List getOrderIds() { return Collections.unmodifiableList(orderIds); } + } + + public static class MapContextMenuItemsSettings extends ContextMenuItemsSettings { + private static final String MAIN_ACTIONS = "main_actions"; + private List mainActionIds = new ArrayList<>(); + + public MapContextMenuItemsSettings() { + + } + + public MapContextMenuItemsSettings(@NonNull List mainActionIds, @NonNull List hiddenIds, @NonNull List orderIds) { + super(hiddenIds, orderIds); + this.mainActionIds = mainActionIds; + } + + @Override + public ContextMenuItemsSettings newInstance() { + return new MapContextMenuItemsSettings(); + } + + @Override + public void readFromJson(JSONObject json, String idScheme) { + super.readFromJson(json, idScheme); + mainActionIds = readIdsList(json.optJSONArray(MAIN_ACTIONS), idScheme); + } + + @Override + public void writeToJson(JSONObject json, String idScheme) throws JSONException { + super.writeToJson(json, idScheme); + json.put(MAIN_ACTIONS, getJsonArray(mainActionIds, idScheme)); + } public List getMainActionIds() { return Collections.unmodifiableList(mainActionIds); @@ -3592,21 +3617,21 @@ public class OsmandSettings { new ListStringPreference("inactive_poi_filters", null, ",,").makeProfile().cache(); public final ContextMenuItemsPreference DRAWER_ITEMS = - (ContextMenuItemsPreference) new ContextMenuItemsPreference("drawer_items", DRAWER_ITEM_ID_SCHEME).makeProfile().cache(); + (ContextMenuItemsPreference) new ContextMenuItemsPreference("drawer_items", DRAWER_ITEM_ID_SCHEME, new ContextMenuItemsSettings()) + .makeProfile().cache(); public final ContextMenuItemsPreference CONFIGURE_MAP_ITEMS = - (ContextMenuItemsPreference) new ContextMenuItemsPreference("context_menu_items", CONFIGURE_MAP_ITEM_ID_SCHEME).makeProfile().cache(); + (ContextMenuItemsPreference) new ContextMenuItemsPreference("context_menu_items", CONFIGURE_MAP_ITEM_ID_SCHEME, new ContextMenuItemsSettings()) + .makeProfile().cache(); public final ContextMenuItemsPreference CONTEXT_MENU_ACTIONS_ITEMS = - (ContextMenuItemsPreference) new ContextMenuItemsPreference("configure_map_items", MAP_CONTEXT_MENU_ACTIONS).makeProfile().cache(); + (ContextMenuItemsPreference) new ContextMenuItemsPreference("configure_map_items", MAP_CONTEXT_MENU_ACTIONS, new MapContextMenuItemsSettings()) + .makeProfile().cache(); public final List CONTEXT_MENU_ITEMS_PREFERENCES = Arrays.asList(DRAWER_ITEMS, CONFIGURE_MAP_ITEMS, CONTEXT_MENU_ACTIONS_ITEMS); @Nullable public ContextMenuItemsPreference getContextMenuItemsPreference(@NonNull String id) { - if (id.startsWith(AIDL_LAYERS_PREFIX)) { - return CONFIGURE_MAP_ITEMS; - } for (ContextMenuItemsPreference preference : CONTEXT_MENU_ITEMS_PREFERENCES) { if (id.startsWith(preference.idScheme)) { return preference; diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 6fc213a82a..fdae459a41 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -350,25 +350,25 @@ public class MapActivityActions implements DialogProvider { .setTitleId(selectedObj instanceof FavouritePoint ? R.string.favourites_context_menu_edit : R.string.shared_string_add, mapActivity) .setId(MAP_CONTEXT_MENU_ADD_ID) .setIcon(R.drawable.map_action_fav_dark) - .setOrder(0) + .setOrder(10) .createItem()); adapter.addItem(itemBuilder .setTitleId(R.string.shared_string_marker, mapActivity) .setId(MAP_CONTEXT_MENU_MARKER_ID) .setIcon(R.drawable.map_action_flag_dark) - .setOrder(1) + .setOrder(20) .createItem()); adapter.addItem(itemBuilder .setTitleId(R.string.shared_string_share, mapActivity) .setId(MAP_CONTEXT_MENU_SHARE_ID) .setIcon(R.drawable.map_action_gshare_dark) - .setOrder(2) + .setOrder(30) .createItem()); adapter.addItem(itemBuilder .setTitleId(R.string.shared_string_actions, mapActivity) .setId(MAP_CONTEXT_MENU_MORE_ID) .setIcon(R.drawable.map_overflow_menu_white) - .setOrder(3) + .setOrder(40) .createItem()); adapter.addItem(itemBuilder @@ -435,8 +435,6 @@ public class MapActivityActions implements DialogProvider { .setIcon(R.drawable.ic_action_alert) .setOrder(AVOID_ROAD_ITEM_ORDER) .createItem()); - - adapter.sortItemsByOrder(); } public void contextMenuPoint(final double latitude, final double longitude, final ContextMenuAdapter iadapter, Object selectedObj) { @@ -941,6 +939,10 @@ public class MapActivityActions implements DialogProvider { app.getAidlApi().registerNavDrawerItems(mapActivity, optionsMenuHelper); + optionsMenuHelper.addItem(new ItemBuilder().setLayout(R.layout.drawer_divider) + .setId(DRAWER_DIVIDER_ID) + .createItem()); + optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.layer_map_appearance, mapActivity) .setId(DRAWER_CONFIGURE_SCREEN_ID) .setIcon(R.drawable.ic_configure_screen_dark) @@ -1027,22 +1029,6 @@ public class MapActivityActions implements DialogProvider { //////////// Others OsmandPlugin.registerOptionsMenu(mapActivity, optionsMenuHelper); - // Place divider between functionality and configuration related menu items - int dividerItemIndex = -1; - for (int i = 0; i < optionsMenuHelper.length(); i++) { - if (optionsMenuHelper.getItem(i).getTitleId() == R.string.layer_map_appearance) { - dividerItemIndex = i; - break; - } - } - - ItemBuilder divider = new ItemBuilder().setLayout(R.layout.drawer_divider); - divider.setId(DRAWER_DIVIDER_ID); - int position = dividerItemIndex >= 0 ? dividerItemIndex : 8; - divider.setPosition(position); - divider.setOrder(position); - optionsMenuHelper.addItem(divider.createItem()); - return optionsMenuHelper; } diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index c8af92ab1d..224226f818 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -911,7 +911,6 @@ public class ConfigureMapMenu { .setCategory(true).setLayout(R.layout.list_group_title_with_switch).createItem()); createCustomRenderingProperties(adapter, activity, customRules, app, selectedProfileColor, nightMode, themeRes); } - adapter.sortItemsByOrder(); } public static String[] mapNamesIds = new String[]{"", "en", "af", "als", "ar", "az", "be", "ber", "bg", "bn", "bpy", "br", "bs", "ca", "ceb", "cs", "cy", "da", "de", "el", "eo", "es", "et", "eu", "fa", "fi", "fr", "fy", "ga", "gl", "he", "hi", "hsb", "hr", "ht", "hu", "hy", "id", "is", "it", "ja", "ka", "kab", "ko", "ku", "la", "lb", "lo", "lt", "lv", "mk", "ml", "mr", "ms", "nds", "new", "nl", "nn", "no", "nv", "oc", "os", "pl", "pms", "pt", "ro", "ru", "sc", "sh", "sk", "sl", "sq", "sr", "sv", "sw", "ta", "te", "th", "tl", "tr", "uk", "vi", "vo", "zh"}; diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 1ab65cdaa9..f998c97e7e 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -565,15 +565,9 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo } // Action buttons -// TODO refactor section ContextMenuAdapter adapter = menu.getActionsContextMenuAdapter(false); - List items = new ArrayList<>(); - List mainIds = app.getSettings().CONTEXT_MENU_ACTIONS_ITEMS.get().getMainActionIds(); - for (ContextMenuItem item : adapter.getItems()) { - if (!item.isHidden()) { - items.add(item); - } - } + List items = adapter.getVisibleItems(); + List mainIds = ((OsmandSettings.MapContextMenuItemsSettings) app.getSettings().CONTEXT_MENU_ACTIONS_ITEMS.get()).getMainActionIds(); ContextMenuAdapter mainAdapter = new ContextMenuAdapter(requireMyApplication()); ContextMenuAdapter additionalAdapter = new ContextMenuAdapter(requireMyApplication()); diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index e9e81b13ce..2c96c6dbe9 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -159,11 +159,13 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment private void initDefaultMainActions() { List defItems = contextMenuAdapter.getDefaultItems(); - initDefaultOrders(defItems); - mainActionItems = new ArrayList<>(getSettingForScreen(app, screenType).getModeValue(appMode).getMainActionIds()); - if (mainActionItems.isEmpty()) { - for (int i = 0; i < MAIN_BUTTONS_QUANTITY; i++) { - mainActionItems.add(defItems.get(i).getId()); + OsmandSettings.ContextMenuItemsSettings pref = getSettingForScreen(app, screenType).getModeValue(appMode); + if (pref instanceof OsmandSettings.MapContextMenuItemsSettings) { + mainActionItems = new ArrayList<>(((OsmandSettings.MapContextMenuItemsSettings) pref).getMainActionIds()); + if (mainActionItems.isEmpty()) { + for (int i = 0; i < MAIN_BUTTONS_QUANTITY; i++) { + mainActionItems.add(defItems.get(i).getId()); + } } } } @@ -240,7 +242,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment FragmentManager fm = getFragmentManager(); OsmandSettings.ContextMenuItemsSettings prefToSave; if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { - prefToSave = new OsmandSettings.ContextMenuItemsSettings(mainActionItems, hiddenMenuItems, ids); + prefToSave = new OsmandSettings.MapContextMenuItemsSettings(mainActionItems, hiddenMenuItems, ids); } else { prefToSave = new OsmandSettings.ContextMenuItemsSettings(hiddenMenuItems, ids); } @@ -276,10 +278,8 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment super.onActivityCreated(savedInstanceState); instantiateContextMenuAdapter(); if (menuItemsOrder.isEmpty()) { - List defItems = contextMenuAdapter.getDefaultItems(); - initDefaultOrders(defItems); - for (int i = 0; i < defItems.size(); i++) { - menuItemsOrder.put(defItems.get(i).getId(), i); + for (ContextMenuItem item : contextMenuAdapter.getDefaultItems()) { + menuItemsOrder.put(item.getId(), item.getOrder()); } } if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { @@ -363,8 +363,8 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment List items = new ArrayList<>(); items.add(new RearrangeMenuAdapterItem(DESCRIPTION, screenType)); - List visible = getItemsForRearrangeAdapter(hiddenMenuItems, wasReset ? null : menuItemsOrder, false); - List hiddenItems = getItemsForRearrangeAdapter(hiddenMenuItems, wasReset ? null : menuItemsOrder, true); + List visible = getItemsForRearrangeAdapter(hiddenMenuItems, menuItemsOrder, false); + List hiddenItems = getItemsForRearrangeAdapter(hiddenMenuItems, menuItemsOrder, true); if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { int buttonMoreIndex = MAIN_BUTTONS_QUANTITY - 1; for (int i = 0; i < visible.size(); i++) { @@ -468,11 +468,11 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment wasReset = true; isChanged = true; getSettingForScreen(app, screenType).resetModeToDefault(appMode); - instantiateContextMenuAdapter(); if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { mainActionItems.clear(); - initDefaultMainActions(); } + instantiateContextMenuAdapter(); + initDefaultMainActions(); rearrangeAdapter.updateItems(getAdapterItems()); } }); @@ -513,17 +513,9 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } } - private void initDefaultOrders(@NonNull List items) { - for (int i = 0; i < items.size(); i++) { - items.get(i).setOrder(i); - } - } - - public List getItemsForRearrangeAdapter(@Nullable List hiddenItemsIds, @Nullable HashMap itemsOrderIds, boolean hidden) { + private List getItemsForRearrangeAdapter(List hiddenItemsIds, HashMap itemsOrderIds, boolean hidden) { List defItems = contextMenuAdapter.getDefaultItems(); - if (itemsOrderIds == null || itemsOrderIds.isEmpty()) { - initDefaultOrders(defItems); - } else { + if (!itemsOrderIds.isEmpty()) { sortByCustomOrder(defItems, itemsOrderIds); } List visibleItems = new ArrayList<>(); diff --git a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java index 403b15195d..6e1452343a 100644 --- a/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/RearrangeMenuItemsAdapter.java @@ -278,8 +278,6 @@ public class RearrangeMenuItemsAdapter extends RecyclerView.Adapter Date: Tue, 5 May 2020 11:52:51 +0300 Subject: [PATCH 13/54] remove position --- OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java | 7 +------ .../net/osmand/plus/audionotes/AudioVideoNotesPlugin.java | 1 - .../net/osmand/plus/download/ui/LocalIndexesFragment.java | 8 ++++---- OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java | 1 - OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java | 3 --- .../osmand/plus/rastermaps/OsmandRasterMapsPlugin.java | 2 -- OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java | 2 -- 7 files changed, 5 insertions(+), 19 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index 7caba071a1..27181c67a5 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -90,12 +90,7 @@ public class ContextMenuAdapter { item.setHidden(isItemHidden(id)); item.setOrder(getItemOrder(id, item.getOrder())); } - int pos = item.getPos(); - if (pos >= 0 && pos < items.size()) { - items.add(item.getPos(), item); - } else { - items.add(item); - } + items.add(item); sortItemsByOrder(); } diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index fc70ac67ca..ba8dc4c8b8 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -652,7 +652,6 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { .setSelected(SHOW_RECORDINGS.get()) .setIcon(R.drawable.ic_action_micro_dark) .setColor(SHOW_RECORDINGS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) - .setPosition(12) .setListener(listener).createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java index cffef21b6e..bbb0f694e9 100644 --- a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java @@ -196,26 +196,26 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement adapter.addItem(new ContextMenuItem.ItemBuilder() .setTitleId(R.string.local_index_mi_backup, getContext()) .setListener(listener) - .setPosition(1).createItem()); + .createItem()); } } if (info.isBackupedData()) { adapter.addItem(new ContextMenuItem.ItemBuilder() .setTitleId(R.string.local_index_mi_restore, getContext()) .setListener(listener) - .setPosition(2).createItem()); + .createItem()); } if (info.getType() != LocalIndexType.TTS_VOICE_DATA && info.getType() != LocalIndexType.VOICE_DATA && info.getType() != LocalIndexType.FONT_DATA) { adapter.addItem(new ContextMenuItem.ItemBuilder() .setTitleId(R.string.shared_string_rename, getContext()) .setListener(listener) - .setPosition(3).createItem()); + .createItem()); } adapter.addItem(new ContextMenuItem.ItemBuilder() .setTitleId(R.string.shared_string_delete, getContext()) .setListener(listener) - .setPosition(4).createItem()); + .createItem()); } private boolean performBasicOperation(int resId, final LocalIndexInfo info) { diff --git a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java index 0f8dd0ffca..60fd23c047 100644 --- a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java +++ b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java @@ -186,7 +186,6 @@ public class MapillaryPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_action_mapillary) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener) - .setPosition(11) .createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java index 7657e99abc..7a0f79e1c2 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java @@ -364,7 +364,6 @@ public class OsmEditingPlugin extends OsmandPlugin { return true; } }) - .setPosition(16) .createItem()); adapter.addItem(new ContextMenuItem.ItemBuilder() @@ -386,7 +385,6 @@ public class OsmEditingPlugin extends OsmandPlugin { return true; } }) - .setPosition(17) .createItem()); } @@ -434,7 +432,6 @@ public class OsmEditingPlugin extends OsmandPlugin { return true; } }) - .setPosition(5) .createItem()); } } diff --git a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java index c64bc6b475..3172bf0416 100644 --- a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java +++ b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java @@ -358,7 +358,6 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_layer_top) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener) - .setPosition(14) .createItem()); String underlayMapDescr = settings.MAP_UNDERLAY.get(); if (underlayMapDescr!=null && underlayMapDescr.contains(".sqlitedb")) { @@ -374,7 +373,6 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_layer_bottom) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener) - .setPosition(15) .createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java index bdcdb63506..4c0cdf30db 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java @@ -348,7 +348,6 @@ public class SRTMPlugin extends OsmandPlugin { .setDescription(app.getString(R.string.display_zoom_level, descr)) .setColor(contourLinesSelected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setSecondaryIcon(R.drawable.ic_action_additional_option) - .setPosition(12) .setListener(listener).createItem()); } boolean terrainEnabled = settings.TERRAIN.get(); @@ -364,7 +363,6 @@ public class SRTMPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_action_hillshade_dark) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener) - .setPosition(13) .createItem() ); } From 9bd626178e300f014f4844f06ce9534b75aeadb5 Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Tue, 5 May 2020 13:17:46 +0300 Subject: [PATCH 14/54] Fix #8600 --- OsmAnd/res/values/strings.xml | 4 + .../src/net/osmand/plus/OsmandSettings.java | 3 + .../osmand/plus/dialogs/ConfigureMapMenu.java | 226 ++++------------- .../plus/quickaction/QuickActionRegistry.java | 2 + .../actions/ShowHideTransportLinesAction.java | 61 +++++ .../plus/transport/TransportLinesMenu.java | 238 ++++++++++++++++++ 6 files changed, 357 insertions(+), 177 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/quickaction/actions/ShowHideTransportLinesAction.java create mode 100644 OsmAnd/src/net/osmand/plus/transport/TransportLinesMenu.java diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 000888d3fd..a4b152b3be 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,10 @@ Thx - Hardy --> + A button to show or hide public transport on the map. + Show/hide public transport + Show public transport + Hide public transport • New offline Slope maps\n\n • Full customization of Favorites and GPX Waypoints – custom colors, icons, shapes\n\n diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index 7e9a6742c1..1dbfa86691 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -3747,6 +3747,9 @@ public class OsmandSettings { public final ListStringPreference TRANSPORT_DEFAULT_SETTINGS = (ListStringPreference) new ListStringPreference("transport_default_settings", "transportStops", ",").makeProfile(); + + public final ListStringPreference DISPLAYED_TRANSPORT_SETTINGS = (ListStringPreference) + new ListStringPreference("displayed_transport_settings", null, ",").makeProfile(); public final OsmandPreference SHOW_ARRIVAL_TIME_OTHERWISE_EXPECTED_TIME = new BooleanPreference("show_arrival_time", true).makeProfile(); diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 224226f818..e8bf1d7ff1 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -11,8 +11,6 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; -import android.widget.ImageView; -import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; @@ -53,8 +51,8 @@ import net.osmand.plus.inapp.InAppPurchaseHelper; import net.osmand.plus.poi.PoiFiltersHelper; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.render.RendererRegistry; -import net.osmand.plus.settings.ConfigureMenuRootFragment.ScreenType; import net.osmand.plus.srtmplugin.SRTMPlugin; +import net.osmand.plus.transport.TransportLinesMenu; import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.corenative.NativeCoreContext; import net.osmand.plus.wikipedia.WikipediaPoiMenu; @@ -141,10 +139,20 @@ public class ConfigureMapMenu { ma.getDashboard().updateListAdapter(createListAdapter(ma)); } }); + List customRules = getCustomRules(app); + adapter.setProfileDependent(true); + adapter.setNightMode(nightMode); + createLayersItems(customRules, adapter, ma, themeRes, nightMode); + createRenderingAttributeItems(customRules, adapter, ma, themeRes, nightMode); + return adapter; + } + + public static List getCustomRules(OsmandApplication app) { RenderingRulesStorage renderer = app.getRendererRegistry().getCurrentSelectedRenderer(); List customRules = new ArrayList<>(); boolean useDepthContours = app.getResourceManager().hasDepthContours() - && (InAppPurchaseHelper.isSubscribedToLiveUpdates(app) || InAppPurchaseHelper.isDepthContoursPurchased(app)); + && (InAppPurchaseHelper.isSubscribedToLiveUpdates(app) + || InAppPurchaseHelper.isDepthContoursPurchased(app)); if (renderer != null) { for (RenderingRuleProperty p : renderer.PROPS.getCustomRules()) { if (!RenderingRuleStorageProperties.UI_CATEGORY_HIDDEN.equals(p.getCategory()) @@ -153,11 +161,7 @@ public class ConfigureMapMenu { } } } - adapter.setProfileDependent(true); - adapter.setNightMode(nightMode); - createLayersItems(customRules, adapter, ma, themeRes, nightMode); - createRenderingAttributeItems(customRules, adapter, ma, themeRes, nightMode); - return adapter; + return customRules; } private final class LayerMenuListener extends OnRowItemClick { @@ -193,7 +197,7 @@ public class ConfigureMapMenu { } @Override - public boolean onRowItemClick(ArrayAdapter adapter, View view, int itemId, int pos) { + public boolean onRowItemClick(final ArrayAdapter adapter, View view, int itemId, int pos) { if (itemId == R.string.layer_poi) { showPoiFilterDialog(adapter, adapter.getItem(pos)); return false; @@ -204,6 +208,26 @@ public class ConfigureMapMenu { ma.getDashboard().setDashboardVisibility(true, DashboardOnMap.DashboardType.WIKIPEDIA, AndroidUtils.getCenterViewCoordinates(view)); return false; + } else if (itemId == R.string.rendering_category_transport) { + final ContextMenuItem item = adapter.getItem(pos); + TransportLinesMenu.showTransportsDialog(ma, new CallbackWithObject() { + @Override + public boolean processResult(Boolean result) { + if (item != null) { + item.setSelected(result); + item.setColorRes(result ? R.color.osmand_orange : ContextMenuItem.INVALID_ID); + adapter.notifyDataSetChanged(); + } + return true; + } + }); + boolean selected = TransportLinesMenu.isShowLines(ma.getMyApplication()); + if (!selected && item != null) { + item.setSelected(true); + item.setColorRes(R.color.osmand_orange); + adapter.notifyDataSetChanged(); + } + return false; } else { CompoundButton btn = (CompoundButton) view.findViewById(R.id.toggle_item); if (btn != null && btn.getVisibility() == View.VISIBLE) { @@ -257,6 +281,17 @@ public class ConfigureMapMenu { return true; } }); + } else if (itemId == R.string.rendering_category_transport) { + boolean selected = TransportLinesMenu.isShowLines(ma.getMyApplication()); + TransportLinesMenu.toggleTransportLines(ma, !selected, new CallbackWithObject() { + @Override + public boolean processResult(Boolean result) { + item.setSelected(result); + item.setColorRes(result ? R.color.osmand_orange : ContextMenuItem.INVALID_ID); + adapter.notifyDataSetChanged(); + return true; + } + }); } else if (itemId == R.string.map_markers) { settings.SHOW_MAP_MARKERS.set(isChecked); } else if (itemId == R.string.layer_map) { @@ -364,179 +399,16 @@ public class ConfigureMapMenu { } */ - final List transportRules = new ArrayList<>(); - final List> transportPrefs = new ArrayList<>(); - Iterator it = customRules.iterator(); - while (it.hasNext()) { - RenderingRuleProperty p = it.next(); - if ("transport".equals(p.getCategory()) && p.isBoolean()) { - transportRules.add(p); - final OsmandSettings.CommonPreference pref = activity.getMyApplication().getSettings() - .getCustomRenderBooleanProperty(p.getAttrName()); - transportPrefs.add(pref); - it.remove(); - } - } - selected = false; - for (OsmandSettings.CommonPreference p : transportPrefs) { - if (p.get()) { - selected = true; - break; - } - } - final boolean transportSelected = selected; + selected = TransportLinesMenu.isShowLines(app); adapter.addItem(new ContextMenuItem.ItemBuilder() .setId(TRANSPORT_ID) .setTitleId(R.string.rendering_category_transport, activity) .setIcon(R.drawable.ic_action_transport_bus) .setSecondaryIcon(R.drawable.ic_action_additional_option) - .setSelected(transportSelected) - .setColor(transportSelected ? selectedProfileColorRes : ContextMenuItem.INVALID_ID) - .setListener(new ContextMenuAdapter.OnRowItemClick() { - ArrayAdapter adapter; - boolean transportSelectedInner = transportSelected; + .setSelected(selected) + .setColor(selected ? selectedProfileColorRes : ContextMenuItem.INVALID_ID) + .setListener(l).createItem()); - @Override - public boolean onRowItemClick(ArrayAdapter adapter, View view, int itemId, int position) { - if (transportSelectedInner) { - showTransportDialog(adapter, position); - return false; - } else { - CompoundButton btn = (CompoundButton) view.findViewById(R.id.toggle_item); - if (btn != null && btn.getVisibility() == View.VISIBLE) { - btn.setChecked(!btn.isChecked()); - adapter.getItem(position).setColorRes(btn.isChecked() ? selectedProfileColorRes : ContextMenuItem.INVALID_ID); - adapter.notifyDataSetChanged(); - return false; - } else { - return onContextMenuClick(adapter, itemId, position, false, null); - } - } - } - - @Override - public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, - final int pos, boolean isChecked, int[] viewCoordinates) { - if (transportSelectedInner) { - for (int i = 0; i < transportPrefs.size(); i++) { - transportPrefs.get(i).set(false); - } - transportSelectedInner = false; - ad.getItem(pos).setColorRes(ContextMenuItem.INVALID_ID); - refreshMapComplete(activity); - activity.getMapLayers().updateLayers(activity.getMapView()); - } else { - ad.getItem(pos).setColorRes(selectedProfileColorRes); - showTransportDialog(ad, pos); - } - ad.notifyDataSetChanged(); - return false; - } - - private void showTransportDialog(final ArrayAdapter ad, final int pos) { - final AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(activity, themeRes)); - b.setTitle(activity.getString(R.string.rendering_category_transport)); - - final int[] iconIds = new int[transportPrefs.size()]; - final boolean[] checkedItems = new boolean[transportPrefs.size()]; - for (int i = 0; i < transportPrefs.size(); i++) { - checkedItems[i] = transportPrefs.get(i).get(); - } - final String[] vals = new String[transportRules.size()]; - for (int i = 0; i < transportRules.size(); i++) { - RenderingRuleProperty p = transportRules.get(i); - String propertyName = SettingsActivity.getStringPropertyName(activity, p.getAttrName(), - p.getName()); - vals[i] = propertyName; - if ("transportStops".equals(p.getAttrName())) { - iconIds[i] = R.drawable.ic_action_transport_stop; - } else if ("publicTransportMode".equals(p.getAttrName())) { - iconIds[i] = R.drawable.ic_action_transport_bus; - } else if ("tramTrainRoutes".equals(p.getAttrName())) { - iconIds[i] = R.drawable.ic_action_transport_tram; - } else if ("subwayMode".equals(p.getAttrName())) { - iconIds[i] = R.drawable.ic_action_transport_subway; - } else { - iconIds[i] = R.drawable.ic_action_transport_bus; - } - } - - adapter = new ArrayAdapter(new ContextThemeWrapper(activity, themeRes), R.layout.popup_list_item_icon24_and_menu, R.id.title, vals) { - @NonNull - @Override - public View getView(final int position, View convertView, ViewGroup parent) { - View v = super.getView(position, convertView, parent); - final ImageView icon = (ImageView) v.findViewById(R.id.icon); - if (checkedItems[position]) { - icon.setImageDrawable(app.getUIUtilities().getIcon(iconIds[position], selectedProfileColorRes)); - } else { - icon.setImageDrawable(app.getUIUtilities().getThemedIcon(iconIds[position])); - } - v.findViewById(R.id.divider).setVisibility(View.GONE); - v.findViewById(R.id.description).setVisibility(View.GONE); - v.findViewById(R.id.secondary_icon).setVisibility(View.GONE); - final SwitchCompat check = (SwitchCompat) v.findViewById(R.id.toggle_item); - check.setOnCheckedChangeListener(null); - check.setChecked(checkedItems[position]); - check.setOnCheckedChangeListener(new OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - checkedItems[position] = isChecked; - if (checkedItems[position]) { - icon.setImageDrawable(app.getUIUtilities().getIcon(iconIds[position], selectedProfileColorRes)); - } else { - icon.setImageDrawable(app.getUIUtilities().getThemedIcon(iconIds[position])); - } - } - }); - UiUtilities.setupCompoundButton(nightMode, selectedProfileColor, check); - return v; - } - }; - - final ListView listView = new ListView(activity); - listView.setDivider(null); - listView.setClickable(true); - listView.setAdapter(adapter); - listView.setOnItemClickListener(new ListView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - checkedItems[position] = !checkedItems[position]; - adapter.notifyDataSetChanged(); - } - }); - b.setView(listView); - - b.setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - ContextMenuItem item = ad.getItem(pos); - if (item != null) { - item.setSelected(transportSelectedInner); - item.setColorRes(transportSelectedInner ? selectedProfileColorRes : ContextMenuItem.INVALID_ID); - ad.notifyDataSetChanged(); - } - - } - }); - b.setNegativeButton(R.string.shared_string_cancel, null); - b.setPositiveButton(R.string.shared_string_apply, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - transportSelectedInner = false; - for (int i = 0; i < transportPrefs.size(); i++) { - transportPrefs.get(i).set(checkedItems[i]); - if (!transportSelectedInner && checkedItems[i]) { - transportSelectedInner = true; - } - } - refreshMapComplete(activity); - activity.getMapLayers().updateLayers(activity.getMapView()); - } - }); - b.show(); - } - }).createItem()); selected = app.getSelectedGpxHelper().isShowingAnyGpxFiles(); adapter.addItem(new ContextMenuItem.ItemBuilder() .setId(GPX_FILES_ID) diff --git a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionRegistry.java b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionRegistry.java index 714abee320..e778b5e0b7 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionRegistry.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionRegistry.java @@ -34,6 +34,7 @@ import net.osmand.plus.quickaction.actions.NewAction; import net.osmand.plus.quickaction.actions.ShowHideFavoritesAction; import net.osmand.plus.quickaction.actions.ShowHideGpxTracksAction; import net.osmand.plus.quickaction.actions.ShowHidePoiAction; +import net.osmand.plus.quickaction.actions.ShowHideTransportLinesAction; import net.osmand.util.Algorithms; import java.lang.reflect.Type; @@ -223,6 +224,7 @@ public class QuickActionRegistry { quickActionTypes.add(ShowHidePoiAction.TYPE); quickActionTypes.add(MapStyleAction.TYPE); quickActionTypes.add(DayNightModeAction.TYPE); + quickActionTypes.add(ShowHideTransportLinesAction.TYPE); // navigation quickActionTypes.add(NavVoiceAction.TYPE); quickActionTypes.add(NavDirectionsFromAction.TYPE); diff --git a/OsmAnd/src/net/osmand/plus/quickaction/actions/ShowHideTransportLinesAction.java b/OsmAnd/src/net/osmand/plus/quickaction/actions/ShowHideTransportLinesAction.java new file mode 100644 index 0000000000..61f04f2c6f --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/quickaction/actions/ShowHideTransportLinesAction.java @@ -0,0 +1,61 @@ +package net.osmand.plus.quickaction.actions; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.quickaction.QuickAction; +import net.osmand.plus.quickaction.QuickActionType; +import net.osmand.plus.transport.TransportLinesMenu; + +public class ShowHideTransportLinesAction extends QuickAction { + + public static final QuickActionType TYPE = new QuickActionType(31, + "transport.showhide", ShowHideTransportLinesAction.class) + .nameRes(R.string.quick_action_show_hide_transport) + .iconRes(R.drawable.ic_action_transport_bus).nonEditable() + .category(QuickActionType.CONFIGURE_MAP); + + public ShowHideTransportLinesAction() { + super(TYPE); + } + + public ShowHideTransportLinesAction(QuickAction quickAction) { + super(quickAction); + } + + @Override + public void execute(final MapActivity activity) { + boolean enabled = TransportLinesMenu.isShowLines(activity.getMyApplication()); + TransportLinesMenu.toggleTransportLines(activity, !enabled, null); + } + + @Override + public void drawUI(ViewGroup parent, MapActivity activity) { + + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.quick_action_with_text, parent, false); + + ((TextView) view.findViewById(R.id.text)).setText( + R.string.quick_action_transport_descr); + + parent.addView(view); + } + + @Override + public String getActionText(OsmandApplication application) { + + return TransportLinesMenu.isShowLines(application) + ? application.getString(R.string.quick_action_transport_hide) + : application.getString(R.string.quick_action_transport_show); + } + + @Override + public boolean isActionWithSlash(OsmandApplication application) { + return TransportLinesMenu.isShowLines(application); + } +} diff --git a/OsmAnd/src/net/osmand/plus/transport/TransportLinesMenu.java b/OsmAnd/src/net/osmand/plus/transport/TransportLinesMenu.java new file mode 100644 index 0000000000..8c47ed2838 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/transport/TransportLinesMenu.java @@ -0,0 +1,238 @@ +package net.osmand.plus.transport; + +import android.content.Context; +import android.content.DialogInterface; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.CompoundButton; +import android.widget.ImageView; +import android.widget.ListView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.widget.SwitchCompat; +import androidx.core.content.ContextCompat; + +import net.osmand.CallbackWithObject; +import net.osmand.plus.ApplicationMode; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandSettings; +import net.osmand.plus.OsmandSettings.CommonPreference; +import net.osmand.plus.R; +import net.osmand.plus.UiUtilities; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.activities.SettingsActivity; +import net.osmand.plus.dialogs.ConfigureMapMenu; +import net.osmand.render.RenderingRuleProperty; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class TransportLinesMenu { + + public static final String TRANSPORT_RENDERING_CATEGORY = "transport"; + + public static final String PT_TRANSPORT_STOPS = "transportStops"; + public static final String PT_PUBLIC_TRANSPORT_MODE = "publicTransportMode"; + public static final String PT_TRAM_TRAIN_ROUTES = "tramTrainRoutes"; + public static final String PT_SUBWAY_MODE = "subwayMode"; + + public static void toggleTransportLines(@NonNull MapActivity mapActivity, boolean enable, + @Nullable CallbackWithObject callback) { + OsmandApplication app = mapActivity.getMyApplication(); + OsmandSettings settings = app.getSettings(); + if (enable) { + List enabledTransportIds = settings.DISPLAYED_TRANSPORT_SETTINGS.getStringsList(); + if (enabledTransportIds != null) { + for (CommonPreference pref : getTransportPrefs(app, null)) { + boolean selected = enabledTransportIds.contains(pref.getId()); + pref.set(selected); + } + refreshMap(mapActivity); + } else { + showTransportsDialog(mapActivity, callback); + } + } else { + for (CommonPreference pref : getTransportPrefs(app, null)) { + pref.set(false); + } + refreshMap(mapActivity); + if (callback != null) { + callback.processResult(false); + } + } + } + + public static void showTransportsDialog(@NonNull final MapActivity mapActivity, + @Nullable final CallbackWithObject callback) { + final OsmandApplication app = mapActivity.getMyApplication(); + final OsmandSettings settings = app.getSettings(); + final ApplicationMode appMode = settings.getApplicationMode(); + + final List enabledTransportIds = app.getSettings().DISPLAYED_TRANSPORT_SETTINGS.getStringsList(); + final List transportRules = getTransportRules(app); + final List> transportPrefs = getTransportPrefs(app, transportRules); + + final boolean nightMode = app.getDaynightHelper().isNightModeForMapControls(); + final Context themedCtx = UiUtilities.getThemedContext(mapActivity, nightMode); + final int profileColorResId = appMode.getIconColorInfo().getColor(nightMode); + final int profileColor = ContextCompat.getColor(themedCtx, profileColorResId); + + final AlertDialog.Builder b = new AlertDialog.Builder(themedCtx); + b.setTitle(themedCtx.getString(R.string.rendering_category_transport)); + + final boolean[] checkedItems = new boolean[transportPrefs.size()]; + for (int i = 0; i < transportPrefs.size(); i++) { + boolean selected = enabledTransportIds != null + && enabledTransportIds.contains(transportPrefs.get(i).getId()); + checkedItems[i] = selected; + } + + final int[] iconIds = new int[transportPrefs.size()]; + final String[] vals = new String[transportRules.size()]; + + final Map transportIcons = new HashMap<>(); + transportIcons.put(PT_TRANSPORT_STOPS, R.drawable.ic_action_transport_stop); + transportIcons.put(PT_PUBLIC_TRANSPORT_MODE, R.drawable.ic_action_transport_bus); + transportIcons.put(PT_TRAM_TRAIN_ROUTES, R.drawable.ic_action_transport_tram); + transportIcons.put(PT_SUBWAY_MODE, R.drawable.ic_action_transport_subway); + + for (int i = 0; i < transportRules.size(); i++) { + RenderingRuleProperty p = transportRules.get(i); + String attrName = p.getAttrName(); + String propertyName = SettingsActivity + .getStringPropertyName(themedCtx, attrName, p.getName()); + vals[i] = propertyName; + Integer iconId = transportIcons.get(attrName); + if (iconId != null) { + iconIds[i] = iconId; + } else { + iconIds[i] = R.drawable.ic_action_transport_bus; + } + } + + final ArrayAdapter adapter = new ArrayAdapter(themedCtx, + R.layout.popup_list_item_icon24_and_menu, R.id.title, vals) { + @NonNull + @Override + public View getView(final int position, View convertView, ViewGroup parent) { + View v = super.getView(position, convertView, parent); + final ImageView icon = (ImageView) v.findViewById(R.id.icon); + if (checkedItems[position]) { + icon.setImageDrawable(app.getUIUtilities().getIcon(iconIds[position], profileColorResId)); + } else { + icon.setImageDrawable(app.getUIUtilities().getThemedIcon(iconIds[position])); + } + v.findViewById(R.id.divider).setVisibility(View.GONE); + v.findViewById(R.id.description).setVisibility(View.GONE); + v.findViewById(R.id.secondary_icon).setVisibility(View.GONE); + final SwitchCompat check = (SwitchCompat) v.findViewById(R.id.toggle_item); + check.setOnCheckedChangeListener(null); + check.setChecked(checkedItems[position]); + check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + checkedItems[position] = isChecked; + if (checkedItems[position]) { + icon.setImageDrawable(app.getUIUtilities().getIcon(iconIds[position], profileColorResId)); + } else { + icon.setImageDrawable(app.getUIUtilities().getThemedIcon(iconIds[position])); + } + } + }); + UiUtilities.setupCompoundButton(nightMode, profileColor, check); + return v; + } + }; + + final ListView listView = new ListView(themedCtx); + listView.setDivider(null); + listView.setClickable(true); + listView.setAdapter(adapter); + listView.setOnItemClickListener(new ListView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + checkedItems[position] = !checkedItems[position]; + adapter.notifyDataSetChanged(); + } + }); + b.setView(listView); + + b.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + if (callback != null) { + callback.processResult(isShowLines(app)); + } + } + }); + + b.setNegativeButton(R.string.shared_string_cancel, null); + b.setPositiveButton(R.string.shared_string_apply, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + List transportIdsToSave = new ArrayList<>(); + for (int i = 0; i < transportPrefs.size(); i++) { + CommonPreference pref = transportPrefs.get(i); + boolean selected = checkedItems[i]; + if (selected) { + transportIdsToSave.add(pref.getId()); + } + pref.set(selected); + } + settings.DISPLAYED_TRANSPORT_SETTINGS.setStringsListForProfile(appMode, + transportIdsToSave.size() > 0 ? transportIdsToSave : null); + if (callback != null) { + callback.processResult(transportIdsToSave.size() > 0); + } + refreshMap(mapActivity); + } + }); + b.show(); + } + + public static List getTransportRules(OsmandApplication app) { + List transportRules = new ArrayList<>(); + for (RenderingRuleProperty property : ConfigureMapMenu.getCustomRules(app)) { + if (TRANSPORT_RENDERING_CATEGORY.equals(property.getCategory()) && property.isBoolean()) { + transportRules.add(property); + } + } + return transportRules; + } + + public static List> getTransportPrefs(@NonNull OsmandApplication app, + List transportRules) { + if (transportRules == null) { + transportRules = getTransportRules(app); + } + List> transportPrefs = new ArrayList<>(); + for (RenderingRuleProperty property : transportRules) { + final CommonPreference pref = app.getSettings() + .getCustomRenderBooleanProperty(property.getAttrName()); + transportPrefs.add(pref); + } + return transportPrefs; + } + + + private static void refreshMap(MapActivity mapActivity) { + ConfigureMapMenu.refreshMapComplete(mapActivity); + mapActivity.getMapLayers().updateLayers(mapActivity.getMapView()); + } + + public static boolean isShowLines(@NonNull OsmandApplication app) { + ApplicationMode appMode = app.getSettings().getApplicationMode(); + for (CommonPreference pref : getTransportPrefs(app, null)) { + if (pref.getModeValue(appMode)) { + return true; + } + } + return false; + } +} From edbb876830ba405d7b5d6b05f55d6c44cabafa76 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Tue, 5 May 2020 15:50:33 +0300 Subject: [PATCH 15/54] reset configure map item if hidden --- OsmAnd/res/values/strings.xml | 1 + .../src/net/osmand/plus/ContextMenuItem.java | 12 ++-- .../audionotes/AudioVideoNotesPlugin.java | 2 + .../osmand/plus/dialogs/ConfigureMapMenu.java | 60 ++++++++++++++-- .../plus/mapillary/MapillaryPlugin.java | 3 + .../osmand/plus/osmedit/OsmEditingPlugin.java | 4 ++ .../rastermaps/OsmandRasterMapsPlugin.java | 4 ++ .../settings/ConfigureMenuItemsFragment.java | 71 +++++++++++++++++-- .../ChangeGeneralProfilesPrefBottomSheet.java | 6 +- .../osmand/plus/srtmplugin/SRTMPlugin.java | 3 + 10 files changed, 146 insertions(+), 20 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index d87c0fe778..3318a15b13 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,7 @@ Thx - Hardy --> + Reset hidden items? Add / Edit Parking positions Create/Edit POI diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java index 80f7bf87af..9863b31e65 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java @@ -278,7 +278,7 @@ public class ContextMenuItem { private ContextMenuAdapter.ItemClickListener mItemClickListener = null; private ContextMenuAdapter.OnIntegerValueChangedListener mIntegerListener = null; private ContextMenuAdapter.ProgressListener mProgressListener = null; - private OnItemDeleteAction itemDeleteAction; + private OnItemDeleteAction mItemDeleteAction = null; private boolean mSkipPaintingWithoutColor; private boolean mHideDivider; private boolean mHideCompoundButton; @@ -380,8 +380,9 @@ public class ContextMenuItem { return this; } - public void setItemDeleteAction(OnItemDeleteAction itemDeleteAction) { - this.itemDeleteAction = itemDeleteAction; + public ItemBuilder setItemDeleteAction(OnItemDeleteAction itemDeleteAction) { + this.mItemDeleteAction = itemDeleteAction; + return this; } public ItemBuilder hideDivider(boolean hideDivider) { @@ -416,14 +417,13 @@ public class ContextMenuItem { public ContextMenuItem createItem() { return new ContextMenuItem(mTitleId, mTitle, mIcon, mColorRes, mSecondaryIcon, mSelected, mProgress, mLayout, mLoading, mIsCategory, mIsClickable, mSkipPaintingWithoutColor, - mPosition, mOrder, mDescription, mItemClickListener, mIntegerListener, mProgressListener, itemDeleteAction, + mPosition, mOrder, mDescription, mItemClickListener, mIntegerListener, mProgressListener, mItemDeleteAction, mHideDivider, mHideCompoundButton, mMinHeight, mTag, mId); } } - // when action is deleted or reset public interface OnItemDeleteAction { - boolean itemWasDeleted(boolean profileOnly); + void itemWasDeleted(ApplicationMode appMode, boolean profileOnly); } } diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index ba8dc4c8b8..a1432fce3b 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -61,6 +61,7 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.SavingTrackHelper; import net.osmand.plus.activities.TabActivity.TabItem; import net.osmand.plus.dashboard.tools.DashFragmentData; +import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.helpers.AndroidUiHelper; import net.osmand.plus.mapcontextmenu.MapContextMenu; import net.osmand.plus.monitoring.OsmandMonitoringPlugin; @@ -652,6 +653,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { .setSelected(SHOW_RECORDINGS.get()) .setIcon(R.drawable.ic_action_micro_dark) .setColor(SHOW_RECORDINGS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(SHOW_RECORDINGS))) .setListener(listener).createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 224226f818..32c4e48086 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -31,6 +31,7 @@ import net.osmand.CallbackWithObject; import net.osmand.GPXUtilities; import net.osmand.PlatformUtil; import net.osmand.core.android.MapRendererContext; +import net.osmand.plus.ApplicationMode; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuAdapter.ItemClickListener; import net.osmand.plus.ContextMenuAdapter.OnRowItemClick; @@ -40,6 +41,7 @@ import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandSettings; +import net.osmand.plus.OsmandSettings.OsmandPreference; import net.osmand.plus.OsmandSettings.CommonPreference; import net.osmand.plus.OsmandSettings.ListStringPreference; import net.osmand.plus.R; @@ -53,7 +55,6 @@ import net.osmand.plus.inapp.InAppPurchaseHelper; import net.osmand.plus.poi.PoiFiltersHelper; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.render.RendererRegistry; -import net.osmand.plus.settings.ConfigureMenuRootFragment.ScreenType; import net.osmand.plus.srtmplugin.SRTMPlugin; import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.corenative.NativeCoreContext; @@ -317,6 +318,32 @@ public class ConfigureMapMenu { } } + public static final class ItemResetListener implements ContextMenuItem.OnItemDeleteAction { + + private List prefs; + + public ItemResetListener(@NonNull List prefs) { + this.prefs = prefs; + } + + @Override + public void itemWasDeleted(@NonNull ApplicationMode appMode, boolean profileOnly) { + for (OsmandSettings.OsmandPreference pref : prefs) { + resetSetting(appMode, pref, profileOnly); + } + } + + private void resetSetting(ApplicationMode appMode, OsmandPreference preference, boolean profileOnly) { + if (profileOnly) { + preference.resetModeToDefault(appMode); + } else { + for (ApplicationMode mode : ApplicationMode.allPossibleValues()) { + preference.resetModeToDefault(mode); + } + } + } + } + private void createLayersItems(List customRules, ContextMenuAdapter adapter, final MapActivity activity, final int themeRes, final boolean nightMode) { final OsmandApplication app = activity.getMyApplication(); @@ -336,7 +363,9 @@ public class ConfigureMapMenu { .setSelected(settings.SHOW_FAVORITES.get()) .setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_fav_dark) - .setListener(l).createItem()); + .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.SHOW_FAVORITES))) + .setListener(l) + .createItem()); selected = app.getPoiFilters().isShowingAnyPoi(PoiTemplateList.POI); adapter.addItem(new ContextMenuItem.ItemBuilder() .setId(POI_OVERLAY_ID) @@ -354,6 +383,7 @@ public class ConfigureMapMenu { .setSelected(settings.SHOW_POI_LABEL.get()) .setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_text_dark) + .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.SHOW_POI_LABEL))) .setListener(l).createItem()); /* @@ -392,6 +422,7 @@ public class ConfigureMapMenu { .setSecondaryIcon(R.drawable.ic_action_additional_option) .setSelected(transportSelected) .setColor(transportSelected ? selectedProfileColorRes : ContextMenuItem.INVALID_ID) + .setItemDeleteAction(new ItemResetListener(new ArrayList(transportPrefs))) .setListener(new ContextMenuAdapter.OnRowItemClick() { ArrayAdapter adapter; boolean transportSelectedInner = transportSelected; @@ -557,6 +588,7 @@ public class ConfigureMapMenu { .setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_plugin_wikipedia) .setSecondaryIcon(R.drawable.ic_action_additional_option) + .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.SHOW_WIKIPEDIA_POI))) .setListener(l).createItem()); selected = settings.SHOW_MAP_MARKERS.get(); @@ -566,6 +598,7 @@ public class ConfigureMapMenu { .setSelected(selected) .setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_flag_dark) + .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.SHOW_MAP_MARKERS))) .setListener(l).createItem()); adapter.addItem(new ContextMenuItem.ItemBuilder() @@ -573,6 +606,7 @@ public class ConfigureMapMenu { .setTitleId(R.string.layer_map, activity) .setIcon(R.drawable.ic_world_globe_dark) .setDescription(settings.MAP_ONLINE_DATA.get() ? settings.MAP_TILE_SOURCES.get() : null) + .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.MAP_ONLINE_DATA, settings.MAP_TILE_SOURCES))) .setListener(l).createItem()); OsmandPlugin.registerLayerContextMenu(activity.getMapView(), adapter, activity); @@ -615,7 +649,9 @@ public class ConfigureMapMenu { SelectMapStyleBottomSheetDialogFragment.TAG); return false; } - }).createItem()); + }) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.RENDERER))) + .createItem()); String description = ""; SunriseSunset sunriseSunset = activity.getMyApplication().getDaynightHelper().getSunriseSunset(); @@ -670,7 +706,9 @@ public class ConfigureMapMenu { dialogAdapter.setDialog(bld.show()); return false; } - }).createItem()); + }) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.DAYNIGHT_MODE))) + .createItem()); adapter.addItem(new ContextMenuItem.ItemBuilder() .setId(MAP_MAGNIFIER_ID) @@ -734,7 +772,9 @@ public class ConfigureMapMenu { dialogAdapter.setDialog(bld.show()); return false; } - }).createItem()); + }) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.MAP_DENSITY))) + .createItem()); ContextMenuItem props; props = createRenderingProperty(customRules, adapter, activity, R.drawable.ic_action_intersection, ROAD_STYLE_ATTR, ROAD_STYLE_ID, app, selectedProfileColor, nightMode, themeRes); @@ -778,7 +818,9 @@ public class ConfigureMapMenu { dialogAdapter.setDialog(b.show()); return false; } - }).createItem()); + }) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.TEXT_SCALE))) + .createItem()); String localeDescr = activity.getMyApplication().getSettings().MAP_PREFERRED_LOCALE.get(); localeDescr = localeDescr == null || localeDescr.equals("") ? activity.getString(R.string.local_map_names) @@ -876,7 +918,9 @@ public class ConfigureMapMenu { b.show(); return false; } - }).createItem()); + }) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.MAP_PREFERRED_LOCALE))) + .createItem()); props = createProperties(customRules, null, R.string.rendering_category_transport, R.drawable.ic_action_transport_bus, "transport", null, adapter, activity, true, TRANSPORT_RENDERING_ID, themeRes, nightMode, selectedProfileColor); @@ -1063,6 +1107,7 @@ public class ConfigureMapMenu { builder.setSecondaryIcon(R.drawable.ic_action_additional_option); builder.setSelected(selected); } + builder.setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(new ArrayList(prefs))); return builder.createItem(); // createCustomRenderingProperties(adapter, activity, ps); } @@ -1399,6 +1444,7 @@ public class ConfigureMapMenu { } }) .setDescription(descr) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(pref))) .setLayout(R.layout.list_item_single_line_descrition_narrow); if (icon != 0) { builder.setIcon(icon); diff --git a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java index 60fd23c047..2796379235 100644 --- a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java +++ b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java @@ -31,6 +31,7 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivityLayers; import net.osmand.plus.base.BottomSheetDialogFragment; import net.osmand.plus.dashboard.DashboardOnMap; +import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.views.MapInfoLayer; import net.osmand.plus.views.MapTileLayer; import net.osmand.plus.views.OsmandMapTileView; @@ -39,6 +40,7 @@ import net.osmand.plus.views.mapwidgets.TextInfoWidget; import net.osmand.util.Algorithms; import java.text.MessageFormat; +import java.util.Arrays; import java.util.List; import static android.content.Intent.ACTION_VIEW; @@ -185,6 +187,7 @@ public class MapillaryPlugin extends OsmandPlugin { .setColor(settings.SHOW_MAPILLARY.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_mapillary) .setSecondaryIcon(R.drawable.ic_action_additional_option) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.SHOW_MAPILLARY))) .setListener(listener) .createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java index 7a0f79e1c2..8e4014706c 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java @@ -38,6 +38,7 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.TabActivity; import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; import net.osmand.plus.dashboard.tools.DashFragmentData; +import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.myplaces.AvailableGPXFragment; import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo; import net.osmand.plus.myplaces.FavoritesActivity; @@ -50,6 +51,7 @@ import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_CREATE_POI; @@ -364,6 +366,7 @@ public class OsmEditingPlugin extends OsmandPlugin { return true; } }) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.SHOW_OSM_BUGS))) .createItem()); adapter.addItem(new ContextMenuItem.ItemBuilder() @@ -385,6 +388,7 @@ public class OsmEditingPlugin extends OsmandPlugin { return true; } }) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.SHOW_OSM_EDITS))) .createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java index 3172bf0416..223159d990 100644 --- a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java +++ b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java @@ -45,6 +45,7 @@ import net.osmand.plus.activities.DownloadTilesDialog; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivityLayers; import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; +import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.dialogs.RasterMapMenu; import net.osmand.plus.quickaction.QuickActionType; import net.osmand.plus.views.MapTileLayer; @@ -53,6 +54,7 @@ import net.osmand.util.Algorithms; import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -358,6 +360,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_layer_top) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.MAP_OVERLAY, settings.MAP_OVERLAY_PREVIOUS, settings.MAP_OVERLAY_TRANSPARENCY))) .createItem()); String underlayMapDescr = settings.MAP_UNDERLAY.get(); if (underlayMapDescr!=null && underlayMapDescr.contains(".sqlitedb")) { @@ -373,6 +376,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_layer_bottom) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.MAP_UNDERLAY, settings.MAP_UNDERLAY_PREVIOUS))) .createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index c29b0e2f3e..c3d96d2e94 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -51,7 +51,33 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.CONTOUR_LINES; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.DETAILS_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.FAVORITES_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.GPX_FILES_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.HIDE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAPILLARY; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MORE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_LANGUAGE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_MAGNIFIER_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_MARKERS_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_MODE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_SOURCE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_STYLE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_EDITS; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_NOTES; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.OVERLAY_MAP; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.POI_OVERLAY_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.POI_OVERLAY_LABELS_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.RECORDING_LAYER; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.ROAD_STYLE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.ROUTES_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.TERRAIN; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.TEXT_SIZE_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.TRANSPORT_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.TRANSPORT_RENDERING_ID; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.UNDERLAY_MAP; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.WIKIPEDIA_ID; import static net.osmand.plus.settings.RearrangeMenuItemsAdapter.AdapterItemType.BUTTON; import static net.osmand.plus.settings.RearrangeMenuItemsAdapter.AdapterItemType.DESCRIPTION; import static net.osmand.plus.settings.RearrangeMenuItemsAdapter.AdapterItemType.DIVIDER; @@ -239,7 +265,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } } FragmentManager fm = getFragmentManager(); - OsmandSettings.ContextMenuItemsSettings prefToSave; + final OsmandSettings.ContextMenuItemsSettings prefToSave; if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { prefToSave = new OsmandSettings.MapContextMenuItemsSettings(mainActionItems, hiddenMenuItems, ids); } else { @@ -254,8 +280,12 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment appMode, new ChangeGeneralProfilesPrefBottomSheet.OnChangeSettingListener() { @Override - public void onApplied() { - dismissFragment(); + public void onApplied(boolean profileOnly) { + if (screenType == ScreenType.CONFIGURE_MAP && !hiddenMenuItems.isEmpty()) { + showResetConfigureMapItemsDialog(profileOnly); + } else { + dismissFragment(); + } } @Override @@ -397,7 +427,9 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment items.addAll(visible); } if (!hiddenItems.isEmpty()) { - items.add(new RearrangeMenuAdapterItem(HEADER, new RearrangeMenuItemsAdapter.HeaderItem(R.string.shared_string_hidden, R.string.hidden_items_descr))); + items.add(new RearrangeMenuAdapterItem(HEADER, + new RearrangeMenuItemsAdapter.HeaderItem(R.string.shared_string_hidden, + screenType == ScreenType.CONFIGURE_MAP ? R.string.reset_items_descr : R.string.hidden_items_descr))); items.addAll(hiddenItems); } items.add(new RearrangeMenuAdapterItem(DIVIDER, 1)); @@ -478,6 +510,27 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment dismissDialog.show(); } + public void showResetConfigureMapItemsDialog(final boolean profileOnly) { + Context themedContext = UiUtilities.getThemedContext(getActivity(), nightMode); + final AlertDialog.Builder dismissDialog = new AlertDialog.Builder(themedContext); + dismissDialog.setTitle(getString(R.string.shared_string_reset)); + dismissDialog.setMessage(getString(R.string.reset_hidden_items)); + dismissDialog.setNegativeButton(R.string.shared_string_cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + dismissFragment(); + } + }); + dismissDialog.setPositiveButton(R.string.shared_string_reset, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + resetHiddenItems(profileOnly); + dismissFragment(); + } + }); + dismissDialog.show(); + } + private void dismissFragment() { FragmentManager fm = getFragmentManager(); if (fm != null && !fm.isStateSaved()) { @@ -548,4 +601,14 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } }); } + + private void resetHiddenItems(boolean profileOnly) { + for (ContextMenuItem item : contextMenuAdapter.getItems()) { + if (hiddenMenuItems.contains(item.getId())) { + if (item.getItemDeleteAction() != null) { + item.getItemDeleteAction().itemWasDeleted(appMode, profileOnly); + } + } + } + } } diff --git a/OsmAnd/src/net/osmand/plus/settings/bottomsheets/ChangeGeneralProfilesPrefBottomSheet.java b/OsmAnd/src/net/osmand/plus/settings/bottomsheets/ChangeGeneralProfilesPrefBottomSheet.java index 5e50dd5820..7efd6c3d6d 100644 --- a/OsmAnd/src/net/osmand/plus/settings/bottomsheets/ChangeGeneralProfilesPrefBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/settings/bottomsheets/ChangeGeneralProfilesPrefBottomSheet.java @@ -69,7 +69,7 @@ public class ChangeGeneralProfilesPrefBottomSheet extends BasePreferenceBottomSh app.getSettings().setPreferenceForAllModes(prefId, newValue); updateTargetSettings(false, true); if (listener != null) { - listener.onApplied(); + listener.onApplied(false); } dismiss(); } @@ -89,7 +89,7 @@ public class ChangeGeneralProfilesPrefBottomSheet extends BasePreferenceBottomSh app.getSettings().setPreference(prefId, newValue, getAppMode()); updateTargetSettings(false, false); if (listener != null) { - listener.onApplied(); + listener.onApplied(true); } dismiss(); } @@ -195,7 +195,7 @@ public class ChangeGeneralProfilesPrefBottomSheet extends BasePreferenceBottomSh } public interface OnChangeSettingListener { - void onApplied(); + void onApplied(boolean profileOnly); void onDiscard(); } diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java index 4c0cdf30db..9321aa5c61 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java @@ -27,6 +27,7 @@ import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.SettingsActivity; import net.osmand.plus.dashboard.DashboardOnMap; +import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.download.DownloadActivityType; import net.osmand.plus.download.DownloadIndexesThread; import net.osmand.plus.download.DownloadResources; @@ -347,6 +348,7 @@ public class SRTMPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_plugin_srtm) .setDescription(app.getString(R.string.display_zoom_level, descr)) .setColor(contourLinesSelected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.CONTOUR_LINES_ZOOM))) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener).createItem()); } @@ -362,6 +364,7 @@ public class SRTMPlugin extends OsmandPlugin { .setColor(terrainEnabled ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_hillshade_dark) .setSecondaryIcon(R.drawable.ic_action_additional_option) + .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.TERRAIN, settings.TERRAIN_MODE))) .setListener(listener) .createItem() ); From 9fa44b199c4fb689814b48670c6679f81f961526 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 5 May 2020 16:02:05 +0300 Subject: [PATCH 16/54] Fix #8774 --- OsmAnd/res/layout/dialog_list_item_with_compound_button.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/layout/dialog_list_item_with_compound_button.xml b/OsmAnd/res/layout/dialog_list_item_with_compound_button.xml index 3f1b5a9451..53ca8d39a7 100644 --- a/OsmAnd/res/layout/dialog_list_item_with_compound_button.xml +++ b/OsmAnd/res/layout/dialog_list_item_with_compound_button.xml @@ -14,7 +14,8 @@ From 8b10342d33a6f99fb90e593a92f8e4c6a430b00c Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Tue, 5 May 2020 17:37:59 +0300 Subject: [PATCH 17/54] remove APP_PROFILES_ID check from ContextMenuAdapter --- .../net/osmand/plus/ContextMenuAdapter.java | 4 +- .../settings/ConfigureMenuItemsFragment.java | 46 ++++++------------- .../settings/ConfigureMenuRootFragment.java | 2 +- 3 files changed, 18 insertions(+), 34 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index 7b3100f0ba..3773e195ec 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -163,7 +163,7 @@ public class ContextMenuAdapter { if (!Algorithms.isEmpty(orderIds)) { int index = orderIds.indexOf(id); if (index != -1) { - return index + ITEMS_ORDER_STEP; + return index; } } } @@ -584,7 +584,7 @@ public class ContextMenuAdapter { List items = new ArrayList<>(); for (ContextMenuItem item : this.items) { String id = item.getId(); - if (id != null && (id.startsWith(idScheme) && !APP_PROFILES_ID.equals(id))) { + if (id != null && (id.startsWith(idScheme))) { items.add(item); } } diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index c3d96d2e94..c7acef5698 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -32,7 +32,6 @@ import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.activities.MapActivityActions; import net.osmand.plus.base.BaseOsmAndFragment; import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.mapcontextmenu.MapContextMenu; @@ -51,33 +50,8 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.CONTOUR_LINES; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.DETAILS_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.FAVORITES_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.GPX_FILES_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.HIDE_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAPILLARY; +import static net.osmand.aidlapi.OsmAndCustomizationConstants.APP_PROFILES_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MORE_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_LANGUAGE_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_MAGNIFIER_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_MARKERS_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_MODE_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_SOURCE_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_STYLE_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_EDITS; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_NOTES; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.OVERLAY_MAP; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.POI_OVERLAY_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.POI_OVERLAY_LABELS_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.RECORDING_LAYER; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.ROAD_STYLE_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.ROUTES_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.TERRAIN; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.TEXT_SIZE_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.TRANSPORT_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.TRANSPORT_RENDERING_ID; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.UNDERLAY_MAP; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.WIKIPEDIA_ID; import static net.osmand.plus.settings.RearrangeMenuItemsAdapter.AdapterItemType.BUTTON; import static net.osmand.plus.settings.RearrangeMenuItemsAdapter.AdapterItemType.DESCRIPTION; import static net.osmand.plus.settings.RearrangeMenuItemsAdapter.AdapterItemType.DIVIDER; @@ -184,7 +158,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } private void initDefaultMainActions() { - List defItems = contextMenuAdapter.getDefaultItems(); + List defItems = getCustomizableDefaultItems(contextMenuAdapter.getDefaultItems()); OsmandSettings.ContextMenuItemsSettings pref = getSettingForScreen(app, screenType).getModeValue(appMode); if (pref instanceof OsmandSettings.MapContextMenuItemsSettings) { mainActionItems = new ArrayList<>(((OsmandSettings.MapContextMenuItemsSettings) pref).getMainActionIds()); @@ -196,6 +170,16 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } } + public static List getCustomizableDefaultItems(List defItems) { + List items = new ArrayList<>(); + for (ContextMenuItem item : defItems) { + if (!APP_PROFILES_ID.equals(item.getId())) { + items.add(item); + } + } + return items; + } + private void instantiateContextMenuAdapter() { if (activity instanceof MapActivity) { switch (screenType) { @@ -256,7 +240,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment applyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - List defItems = contextMenuAdapter.getDefaultItems(); + List defItems = getCustomizableDefaultItems(contextMenuAdapter.getDefaultItems()); List ids = new ArrayList<>(); if (!menuItemsOrder.isEmpty()) { sortByCustomOrder(defItems, menuItemsOrder); @@ -307,7 +291,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment super.onActivityCreated(savedInstanceState); instantiateContextMenuAdapter(); if (menuItemsOrder.isEmpty()) { - for (ContextMenuItem item : contextMenuAdapter.getDefaultItems()) { + for (ContextMenuItem item : getCustomizableDefaultItems(contextMenuAdapter.getDefaultItems())) { menuItemsOrder.put(item.getId(), item.getOrder()); } } @@ -566,7 +550,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } private List getItemsForRearrangeAdapter(List hiddenItemsIds, HashMap itemsOrderIds, boolean hidden) { - List defItems = contextMenuAdapter.getDefaultItems(); + List defItems = getCustomizableDefaultItems(contextMenuAdapter.getDefaultItems()); if (!itemsOrderIds.isEmpty()) { sortByCustomOrder(defItems, itemsOrderIds); } diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java index e438823e07..671cc952c9 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuRootFragment.java @@ -285,7 +285,7 @@ public class ConfigureMenuRootFragment extends BaseOsmAndFragment { break; } int hiddenCount = ConfigureMenuItemsFragment.getSettingForScreen(app, type).getModeValue(appMode).getHiddenIds().size(); - int allCount = contextMenuAdapter.getDefaultItems().size(); + int allCount = ConfigureMenuItemsFragment.getCustomizableDefaultItems(contextMenuAdapter.getDefaultItems()).size(); String amount = getString(R.string.n_items_of_z, String.valueOf(allCount - hiddenCount), String.valueOf(allCount)); return getString(R.string.ltr_or_rtl_combine_via_colon, getString(R.string.shared_string_items), amount); } From 0802aa5c345cc844b5b4900190f7cabf00afa8c2 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 5 May 2020 18:50:38 +0300 Subject: [PATCH 18/54] Update public transport shield icons, replace Add and Public transport icon with vector --- OsmAnd/res/drawable-hdpi/ic_action_add.png | Bin 607 -> 0 bytes .../ic_action_transport_stop.png | Bin 1231 -> 0 bytes .../drawable-hdpi/map_transport_stop_bg.png | Bin 1568 -> 903 bytes .../drawable-hdpi/map_transport_stop_bus.png | Bin 1824 -> 1173 bytes .../drawable-hdpi/map_transport_stop_tram.png | Bin 2006 -> 1183 bytes OsmAnd/res/drawable-mdpi/ic_action_add.png | Bin 396 -> 0 bytes .../ic_action_transport_stop.png | Bin 1129 -> 0 bytes .../drawable-mdpi/map_transport_stop_bg.png | Bin 1385 -> 547 bytes .../drawable-mdpi/map_transport_stop_bus.png | Bin 1493 -> 723 bytes .../drawable-mdpi/map_transport_stop_tram.png | Bin 1560 -> 738 bytes OsmAnd/res/drawable-xhdpi/ic_action_add.png | Bin 839 -> 0 bytes .../ic_action_transport_stop.png | Bin 1278 -> 0 bytes .../drawable-xhdpi/map_transport_stop_bg.png | Bin 1908 -> 1352 bytes .../drawable-xhdpi/map_transport_stop_bus.png | Bin 2074 -> 1572 bytes .../map_transport_stop_tram.png | Bin 2343 -> 1664 bytes OsmAnd/res/drawable-xxhdpi/ic_action_add.png | Bin 1187 -> 0 bytes .../ic_action_transport_stop.png | Bin 1427 -> 0 bytes .../drawable-xxhdpi/map_transport_stop_bg.png | Bin 2344 -> 2559 bytes .../map_transport_stop_bus.png | Bin 2700 -> 2959 bytes .../map_transport_stop_tram.png | Bin 3135 -> 3018 bytes OsmAnd/res/drawable-xxxhdpi/ic_action_add.png | Bin 1662 -> 0 bytes OsmAnd/res/drawable/ic_action_add.xml | 15 +++++++++ .../res/drawable/ic_action_transport_stop.xml | 29 ++++++++++++++++++ 23 files changed, 44 insertions(+) delete mode 100644 OsmAnd/res/drawable-hdpi/ic_action_add.png delete mode 100644 OsmAnd/res/drawable-hdpi/ic_action_transport_stop.png delete mode 100644 OsmAnd/res/drawable-mdpi/ic_action_add.png delete mode 100644 OsmAnd/res/drawable-mdpi/ic_action_transport_stop.png delete mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_add.png delete mode 100644 OsmAnd/res/drawable-xhdpi/ic_action_transport_stop.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/ic_action_add.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/ic_action_transport_stop.png delete mode 100644 OsmAnd/res/drawable-xxxhdpi/ic_action_add.png create mode 100644 OsmAnd/res/drawable/ic_action_add.xml create mode 100644 OsmAnd/res/drawable/ic_action_transport_stop.xml diff --git a/OsmAnd/res/drawable-hdpi/ic_action_add.png b/OsmAnd/res/drawable-hdpi/ic_action_add.png deleted file mode 100644 index 7c02df72077203bacbfed07fa3840575696d9102..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607 zcmV-l0-*hgP)uMB15QV>kq9_X9Fer+Gp!h=&d<}gK-^sj&&mjm3LO=*a5)%!mkw_$=GPOKq?IZ# zSAmrZMBkp@fseqhB)?Bt3MwKDbA13zeRBhCO4`j(^+H9&jiOG*U*DV^NgI8WI-w%s z7I3A{$-wU&%Jr@_txyYAsLs%-SR+(KTn26@74Wn6tjv81Y$exiNZM(dI|mgJr+|Ba zUo&P958G-PnRQMduO#{Pm^DFND<>`E*mK50d96?6oU%<&4+f|-6{=CKV^9%s0l1Tu zsPY_*3Eym+HA#EbJ?l_oa?+IWnPpqjyDq4^!1>>-)V`!QT~H5Ot`Z;n$1Sjr01w-X zGMc77Z%G$Nl3sQ}&79Yr+M!S76!R&2(&Rvrf6Py-KT}HywUptz51btsqp7EFPtw|7 zmlB)~oEC=IRHfcZ`qZVAYi(aMvzj{tHwEfI((C#rfBHh+lC+tD8miV=1Y_X*;vHw;8Q~xsh-WcxeEfVLp^XZmvOS1586z9h9=!+24P3c$_TX8^TBY tE8r~c0xk_R+hY_|CInOF{D;b__XAay%q8P%Mw9>m002ovPDHLkV1ndJ4Fv!I diff --git a/OsmAnd/res/drawable-hdpi/ic_action_transport_stop.png b/OsmAnd/res/drawable-hdpi/ic_action_transport_stop.png deleted file mode 100644 index d05d6e3424404df5bc68a2d6c30952d32f27fe75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1231 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 XH)YYjj`6-lv46JR=Cn4?%CGnbCu~5E diff --git a/OsmAnd/res/drawable-hdpi/map_transport_stop_bus.png b/OsmAnd/res/drawable-hdpi/map_transport_stop_bus.png index 917fbe34aae58048e3bfcd89f4a7f73ea263f9a9..8692bac4674be0a8ac737926987e4987e49c6289 100644 GIT binary patch literal 1173 zcmV;G1Zw+)5dquXlHL`rgE|9jA#i+s0`>X*9F*-tK(+-rM(P7T_TR zyHEK>$b$FCjT4S}vADSCEG#T=9Qut$BN+8Q_G&ygH)qamY=LegJ>ACS`rc-<>0!@D z9P*c7Mo$9&$jj&7b9nFuPE}#5kXaR%?bi!KrHPvG|E6pF^Q68b1ZWBuL4Y zm#?43i!;Pg6LNaJ9`E=2Wd>|kvM_3Q1?p13O^XzhjFFGRj4?JFhG991qBSC=f;veO za#=`Yfu59-h)mN$lHm(OmaShQnG&oAI8zbcZns_E_c`n;#$K2V;%Guj3dM8IPD8D) ztWvF3*YOwOS22oz8k> z(*y>!&3&-H?&NQC@>meuXpa-xU(e$b$|YtMm$WvLAzhY#S+U)VjA8z;=fTc_JSFex zQ~&1Yc=*+i!{H$@NbQY53+(>06^YWuJ~{rn4`yi=|`^`hhOGE5O!mag?X z|9t=V@9&;X)AWCwx`k~`yM_|oEV}IgTIx~Pb!$QhDh*>XhVxR0O>>q9)o6A|_2g9Nt$NP)epgw?4R00000NkvXXu0mjf@U<`I literal 1824 zcmbVNX;2eq7>)uVP*Dr0Eka#l5iD+YH)KP0fg&Va3WyPbY895<1y)HmBx@3aS~(oV zVbt+N0jo#{ThvmiI0da2pm@{@QXLd)@j_99wW5}e?FPa2hvScaGvB%I^S;k}&6Xs@ zN4YqAI12;qms98slOKA>Br!yICh}hb6Objqoh&UOI zgX45cI*W<6=;?Wu_(amOl*A};=%+xi8Rr#fXpR8Pnry8BH;0Ia^y2*4_6&)EArWqA zi1;L7K@cDilOU)fK#I-)q%eX)Fa{wo2qQQG<5CzH9%9~_p31=0 zs>oqm{4GSB#c?_uf=nip#1tT5^_dWYVHgBUA*mGPB|t;2mLtrd)-ZKMgNingdPc`F ztQN3oB+}VsT!@%w`q~AJE-vnkVy$5~P<+TBGogbJ2@Gj8Hou0X4V;?(m&RMA4T-rr z8dB2+cA1{!^N}%i1kA_o-G*#}JR5wDp5c>1WUE+mnTFPKF{%(T|3yME6s}OfZ~%%b zKt!QHKopiCU^+(1L4};6Ghiu(krXka=WY0KSc%DDI9w?YL=hwc#V|Nh86d-?m?}~g z31cJJ7_EULv?M)Zo8fH_W5eEw#g%%R;8=Yk%Vv*MK|&VGv4$*G2Pl=ctjhquWJXJ| zCc|`FnqGUYqVR^ZaE-_mYUid^JG=&Hh^J&vwqcF%>fvNYL~Sv{w> zq(zsWJ+ar`=aWRAQ4^Tm%fB}c#+gp%E?bzltFHF|z41!r_7zRm!`7p@0moctP2b%3 zSZ~r%=N7upM1?22amkaDY)=w0zW5(LAJk-75 z?tsiRW>I}tU!xOJVri;WV>?P6T34_~k~clM<0JRkohfQ8Tz%@S5IxK9o_G^X2V>iX6~cAVLIG*_q1TF-1A|6t92mX4FnnvyVhKDNOHenUr{Ak z)V(TE=e5xqI`4kV$3-r7IWJwAUffCYFf`BQ#1=IAPVE@~Bi)q=*E++NSbmyG^-iqp zSWt=@)NH*EHr;-4R_4kowsz z#+x=hKH68ke}BoEO;h$(*ZMx_Zua~vh`erYya&~6rZZjUuyxjd=a zB5DVVcmH*r+1pvQzE<^ISNB2rDc9$9g@N-Wl&Ulx;>Q@uSlxYf?^tXUVfbc(H^z_GyQ~rd>NcS z;ox~;@ZA=pC2CxL$9#v;995yzL1T}ndVwxh9kG#D%rm+Eftd8)Z)+P4nDZrDZzuoClyDf}2V+dI|kcRNx5 zSo=GDs$1sDOTRXHN3HDdt8^H%uh{FHmoNYhEnf={<_eRflC`A@$Exam6%SYc?Yq(m Z7VHdKc<)-qxx2Q1R!l^^>Ogo}!9Na@x>^7L diff --git a/OsmAnd/res/drawable-hdpi/map_transport_stop_tram.png b/OsmAnd/res/drawable-hdpi/map_transport_stop_tram.png index 3bda97a73bde6f8b0003b3d8de141e469ade0032..9eeb78c2589b3218b413c8100778ef043cec8b0c 100644 GIT binary patch literal 1183 zcmV;Q1YrA#P)deW;3%}J)uK>P*iojS5?1$?^V6726)84 z9#Fm;GUph%yMvn#YinzKb#>Lnrr&5Zf^qF*t=cOqD`wyB66iA4(`7=g$2OZy4{LYK zA$tjC)Fkkazp?%ycY}AZs|tlecBM$Z`u)=B_wXUcB1}RKu|Ixt{d3O4bJc@S416z? zP#}^dVx5f}fk?JK{p07epI}!+q{w7|W^`Mv)&k?f*=p@b{N(ac6w18ulM_sWlx$<; z#yNcWj5umSyw~fw{eHj9fGtWEM(wUZT?)9ONHNJ6`6wJR#umdcEJsnaO{7#%CrLss z3#l#8lTs3qA}u5tzAy}jqbDR&f>D4o72)l6+wpzhg@=lX7bb%!E}BH%^F!gA3zfxb z{io0OHX%RM`ifAsT4g&sJCGOO{SptTK3r$~BXv?RH@veEriv z5qk4v5ZvC7!}Uvp!Oc5!5z4&d!j$8CFDyOA`1!X=;R_AtzL>lC@qq)n{m=g*z3}Bu zWJ|DCt3jvJxp!=1P}_`yS!8yDbVwI0Kx-oz;=!_97RRy8Sg;{8k1mWnCFk1e6wEq) zW`W}B)a!l#Igwe&)@4P2yhA%3OhUFUD+-uG)aK&wh+vei#^(^^-1^Oi<4}z3rvo`K zwosNj801JDw0m;ypglqHJGPKiF2jJzGae{Ky!%nVKTA$B(g90Q{OTCWQU|iMc3bl~ z*Ew?nX1eUmi6F>hLBm2>P)lTKh4jmjN(^)zsJ6z{XC*S=*7Sj3D%=T6mq66{r z-y%8oqT~JeYaDNF%ZYKG$Kcd!e(=|oH2wFg5H@p?h4iswW_#$$ z;1}@n5r^9nGS5KM&sG*%C^NQHALYQK&(Dq%)M1_rEJ^L=#cVGr+h-G^*{m!?mf0_l zJqXOyQRqEvFHHUX&|q{!DfmV`MPJG&2m^QslmL1%;2>V7gJoO0hQ7`g(QQj;smC41sRAw&bB0v|vn&){7c)gw=GKa^iA{a)~mkNym&qX_BUb^D9EQ29cmsS&_ja%>P4dY^iWuySl$rDyhY1T_z2= x#I~B#)WtsitjQ6fv|g_d@ET7<)SnL$+yy!r(g+l=;Y0uc002ovPDHLkV1j7KFY^EZ literal 2006 zcmbVNZB!Fi8cx9v#G=3=Xj{XO_yN>OW&#PBKom#_#BBg0ny8=-$&jRyOw0rlkN~Yw zo9>ntx>5>)3NBiDq_nZM6*MlgRYVb}T2=}kD4+srJ+ypU>_o-gAD;f$IcMg+_ult; z-tRNE#Q0bb_t)Gh6pDv9PADbU0O#vAkNnE|8*y@3W{i;=H{xkV6KcRHQA#`&1H@WX zg-J0~nYFtai=a?kGc`$aqg?V9Pl0P0s8few*6K+#g%YvOtVb2QFe8wPsWdu1?P0xx z256Lgnv5-hBzgg+*2HBSu#MUANs8=U3Ped;w-$&n^GE_MW<&wAHeE;X%zWBYULGks zkC`;!sfuwIpZ3ftxg-$~;06p}GdQ3EhG8HKVZdx|2#dW2U_mgO2_Z}v0wI_OLp&A) zJb!4UHG?vZCl!jG+ah;-n%Zd8^O#JN$;2>)FmQv42_p!?gjh@#3nVo_B1>mP&7h8; z&oT%xLSfM8jT&4BI2qAYJj2MRk)A#aL93TYUJ&bu=ZPXy#x$dPCd`1CTCFp#r`m*3 ziv8D(mueG9S$d2q#RxpZpdjm!MxOVPf zP->JsE*FAA*laEcbGb0chC*R56;W_NE=P%_K`aDODA8G-m*Jx!0m6YGk$@A%hT#}C zf{=1ZD8fR7BB2OEX0c)&VMKKbY}U4hwEY|#^QTyzz<{Af+>nIh>9bvssK$*rp~m%q zK;W!;C=e*q=#;pL2y&L`S=2(zpvlCPA_J}kp5~dSd5I4ghJ~R@1O>U60tJ=q&{Pn? zU^WUm8iG@)~=37_fDd|3&d}bb885wDvK}{{+*LJP{{9oR5c5u-VkHxe{2b!!OxvgEc zaaD{t0o9tT+Uj<}?vkHT6l|Bg*rWRs*8o;rI@NmutQ zUYZ~8O}FjwcBjmF^9zPoZgGld!?1kCls>a%)ZgFMG_~C~S~8){47&feokL{z^|dFI z{^mHYInh|`mA=RjYo)Rh9!891;bZ&Sh1ZIg#dvJX-K$UEc=8{$X?Vh6J~25m|A6{L zNj`_bH`Rny-B|8pg z+;rLb1O2^*>FP@Z3)Pkk_kDfKPF{u=@%8;QDp=&QO*y@J1+$>)3gsLAzWxzyiC^s{!%jec&z?X-929%lT>i)2 zy&k*O_`{gIi2a_gsFNMGThVhjpAFEu-1;`OS0s88+3=|7(yNODzJvGG{T#_Dty64J zA9A%Vyjt>3+nCp}GO)8ISlIRM=nOhpj{{Wy{HWyfo#@t_b^PBuu z_g}AFUMUMubQQELP<>v8yuz#g?e)`%D%mfe^>#+C79>7SR0W=%n3tO4{q-a9mQfZq zbZ|qV&3aTiw&oOgRNG^n_~iDb$F15*6?9-J(buLjuo-a9%bvWejoZJRpUb5S->CEPVzNm@3zFLYarA~V~x=XX? Qg7Z%+j)@o6M(=$04{l#5*#H0l diff --git a/OsmAnd/res/drawable-mdpi/ic_action_add.png b/OsmAnd/res/drawable-mdpi/ic_action_add.png deleted file mode 100644 index 7f96ff2f30e515ccc829577b981a75960ddff27e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)`|S*? q1KxpGU=ozGErb94>95n}IOYrST6h_bgqVK-0000^4xCU%GaB7#<8H-y{Fu@BjR*OqS2?8yFd& zC~9A^pjF5^6uf=A$@fb$xlWd0oU7p}RL4!-gH#$I1JXrXpN18vgZA88I7U&S%T~39 zYo!U*L^h`fHeAbg37VqD##^p#&Ol5XaN2T`%#RnZ7}^3!=6tjyl-w+AScL@-PA!zH z=E97r0A@TzkF``nU_-3aEqm7S)mD<}@Tz1VT=NXwF~KuQW;3W-X_C$&57JRC#+sri z(s6|oqlt(VJxxo3807_p7X?-jRZ&nSf$lyG@#cZLTG8@dU*wcz8W_7O&o`S*t{LHw zH_eNRqVR&mOA<>gSikLHy~R5IXpcdIzUf&mwva;yjJkp5agrgCZl++nrP3C$<97>1 zO2)TzmlrvKx9uRWjMU{bq(I|>X*H0n9eB2Cd} zHDu1)(7{D5$&f!Buz)H>;))KS$O1VLVWA{L)-Vl;mFoZq2~*Nd0rq&d!z+)UhhcO8@(yNveJQ^OCxAA0mM z2g1*Ht|7UN#hZ)Y4%{(@t}T5mJgKMF&y@#E=F=YS=kn6T(Xib=cz=2D@Wl1wk3YOw z96ff=zx&|9EuI^?p@mm3oH@F;R;a#9e7i!0FHwD|<2J~C9tp%>%$2ognM;em0Tk9{ AS^xk5 diff --git a/OsmAnd/res/drawable-mdpi/map_transport_stop_bg.png b/OsmAnd/res/drawable-mdpi/map_transport_stop_bg.png index f90c9a215bd1aa8fcd722c5bc6ed75139a1124b8..95b0e8bf47f5c2d042997960e0ac53c7124d6488 100644 GIT binary patch delta 522 zcmV+l0`>jr3Zn#&B!3BTNLh0L01FcU01FcV0GgZ_00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj6xJg7oRCockRl82ZFckG8&r;~bR@fN$2ZnqA11l>Gd?Vmwf(gtL-vwLyBwH>W_UZ4nNs{XgE+30*(4Reee zU*uEv^mt8fF84NJ_S=CU4r7%vKAxoRmzp9w(a5C0Q&^~EwKpjAPs#aMP{v$EDIJAj zI84(tK>!*Afqzre(+@0=ri;E^UyP-!UqnjjS3Dct`qmtjs{S&OgPJ!>js_Vnt#nQszmVy5=mSa0pwsXDB}0K zQz^?s?gZp?vUiW`K_C-L<{8cWZgE2cym+FAdZWi(K!X(hIcLU61u3 zY*ZE^>YTU_b8ZPPd;hQ*GaQ<21{daJ8JjLKA;Aw2-Dcvl=w6%-w72JgvV9d0X-j1S#}2a;udo1uBnf(Vkd>)jZfTFAL9xn846w z6}8)gtvD6*H=|xz0Vr*8-~wfHp-#p^(TvM#uR^UPtgD>}^u+ICY)yH`-_{AbhBI^=uHkZw2#eoA* zxE%-~JR~q7Tp(%EYPY&5t5eAEtcTy}vfJ%m8%J{WPKv5`F%)O@(qtV;JL+hcm(E~) zv4qOU1dy>ULEEcX?<29SR{^{#D*;*V$#g+;L{{ZQM2@3guTga;TIuHnDP{<_8--el zn*)mUJP;ccIf^c4nw8e^!b&?`c7Yafr`-WFAUJ6}C5%0KhNSrz$ZN6)54 zw%j;=yGNfsVs2`RGfbJ!Heh* z&Z6|uu-#pav{w&KlD70vd+bN^?1ft;5l9>ynHspWbZPdcse16-Pfu38|NZn=GrL~P z(bMU$wsgxpb&uGSd})T8Sh#ez?Yr~3-ZB2g;0xcra_r#n;g1#<=19)xaiwjx=EEl@ gFZ^weIBHW_$XM{bs}p(Si^k8-SKq{)+Sxhu50b&{0ssI2 diff --git a/OsmAnd/res/drawable-mdpi/map_transport_stop_bus.png b/OsmAnd/res/drawable-mdpi/map_transport_stop_bus.png index 75c625ffa61bd92b31a007265d664c432b0bc120..3968b969fb3285ac7b5706468f9ead6b318a034e 100644 GIT binary patch literal 723 zcmV;^0xbQBP)^!t51?wmcX zYxZ?e^~eH{QhrQDcS?KRbPOnqSm?0^pJ=?b3 zFbo4Epq6FnxqHQd8K>#&T-DF6g~&fd2w`S^s<`b&V(UQljGj)rKZ}#Ara4&Q+_C?x zu1A|meE(@2*PV;wID0<}Q4~du9-KJF(N%Kcitm5jk^;*a)j2k8{IFQ@>WZy32WuCHJ9YX8x4KJBXV4~+FvT|4gMUR~6A5s!S5=fJ znas&STPT{KLL`}zTRqsg5e9#wt00REoAVO+wk_oPCA(AAqwc$xmu($X6-k}U!NbjQ zv^L=8xy!ykt-rI;>B3&zbPht4UAF8dla?Gjf0c}JRQ2cAgCS`_ag&P%v+GraH@P4{ zO5YO{u176z0+!kO|1;Tm|Y8u!r~KGmK9#hDE$^ z7i-;x?#9*cyD*L&PofTHQrRnkd#GoOC6M62^E@o;^cSb{5XtyR>T3W1002ovPDHLk FV1lX`Pz3-0 literal 1493 zcmbVMeN5D596r<`5*Zo8FVxx9NO00?dt8t9U1IWhH z#UK;Vtf%4_e3nmFl8J(=JVMR6EW)a7z%T`^iwDn@aNqEJkS>U4-|fyf>~q1}ieFZDB6fy_vp zL*YaL@-fnOag$<#RizUl@Q&2fDPlpMOq7~3)J;23T#KPR?~7~PT2?Z_zcQX_EoXZi z0L=ulxJhEvdK4}7gVo$U-;vKyRbxz-IJGErxm9E~@jy^)Ruim#(Xt$CBuNa5AqWz| zNfJj0OphaWiZLLhfdxgFj-nWr_VYXoZzc_f*jNi?F~kx$o{4bR%n3%e&3wxdlE}N7i+XgfL25)TNKOvU64^CDxzE>Iv|V1S9LuUmCFgN=#rQF z$}|zR6-b;Du!)k$L*scia?j8J0EneoibhDl&M0?`AOCTKlP;Dj3g1fKoB z`9oDvsIOW6(>(rHYDfCEQ=_0BriKX!>I6yZsGJWlNg7SSLz^`|+kLIA!IYf8HvGca zA73@1JL*HKYhlCBpT7OW*_JlpyfZqyFMM%9Lcyv04_3a`x?uqBw{M&6^}g6Y^8m4Z z#%^x}QS$zL=0WwPhXq|V!C_qko)J&y(_cm_E_)vRjo#GP?m3X~<@)5D^+)zuBW|-- zzNm^m@k)m+DzCZ$EdG4;@wy+|mCnIgwIA*X>VBdLT)Vu{JNDk1{r8qEIrtdo2fc3v zM+B`(_jHCVjQq7q=>7i0OFuP#GjjBp(6HR{h@M~C+M3hu4I56H)wiJ;yE9nzq-{<+ z|L&y~GfL#7Tc?lhEd}e&?i%{Ulo5J0C(P45?TY(i#NBPOQqX$7pVUt~?Wy0}8&KB2 zt1oJgoA+`zP8DYSb!SEJg?{OJP~W1KYfXn!s`3+WjXXY=-n4jNf8uXBj^pM7x1I4p zqi-%7!o`rI_Iqq&Q}wzh)31jwxSja>{f-;;N1kpk?f#awI2JnPu?l7L$b;PSV`K4` zN#>(@&NHDi8#mwVsKesSefE>zp%=T(7M2dT*QH3IFBHxhI5(J9J2!WyE^y0w>u`^y zd`ojf{=CRp`~E!Kck)W$$=U00eA!rG@y0cG4!P#Mvuvw#wB~;A2z^dmoh3Kz?5W#$ zoFKa+O$SGIe>PO#(sO8c&tTTaRbtZ1*RRr*(PuQ*_8+~w=+&sLz8|eEAT@LB+izZ6dI(}j6DO@x>rdYuJJDX^+*X7#6|a^tn^c~qLm9_O zANV8o@xv?f`q{aoFuQBQ$AGp-nX$a*TEEl?*+og16!a7fg)HtfFLV;g{5YbFS&CBH zavZ1Wy6zAiP}{c6m|nVJiZq?>i~8xYl<|*9DFxb246EA2K6$XXl$Xz68|;#LXa`71 z)vZK>CyyKEg|k9z+#L<;*89G%e_Dsg^Sn|97uSVYTjjjrOv*Q9v)K#$$IpF#);=MG z0w=oe5v2^e9WL_5^H^K8I4Ng9QU>U)G6!YxF6JcQVQjuVmT2q>7YDYH;J$ zXwW^w#b(bB#$g;v%c7)n+Ty*J!MJQ6gh(GYeUeE<4pxpBnq{{m{;2swElR&_D^bmOr{RTO-MzsCa5NtTU9 zBj|6xy)R{W#W3x|WDbCh(a)Xtk6`Gbm_GDP&iM*F63g&5*ijTw!!RiH85@uZ$XQJc!9=i>{sEog%@UO0=j-h|hUC)ams9A7+zI_ODZE(6Y?o-r0cf`|Qne-Hir24y)I ULx;GQp8x;=07*qoM6N<$f)P1P&j0`b literal 1560 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n9DLlB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk&``nLQqR!T z!q~`EN5ROz&{W^RQs2-(*TB%q(7?*bKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD#PU%0_}#n6BP2AO_EVu8M)o`HUDF34YC)x{-2sR(CaRb3oXS&*t9 zlvIBp4nO9trn3tRivpW-LH&m}PUcFY%MX8A;`9&f5`8lvu z5Rj2yl3$#WU!dUZ42pFV1`yp;U%VogvqL456!T9jFqn&MWJpQ`{4XRAysZb(f{ zHBU^jOw_eVO-|HJF*QljwM;cM)ip^?Ni-5)VuW zm?A+;cvb*%;F&2k5150BfLTTCa?4)^1||zn7srr_TU(}{%@%f)I5z+0-I|<9zMm6k ziwUn<#(Q-^yVj*{xg*Yk{BkT8_aCkf)R(j2{>R+(Adp4BOT5=|OHhX9!flVrgD$1b zZpm4^`?2-y&gE)};-3#3-gNp*|J?6$E889hbZyZ(`@nZjj<@w8AExG%W*PPNr{?-X z2Hku7^Cs<{)gsaQb9Z^r%x>>4DW5~_GP`$gkJi1vTF1W1Ykl>sn5r0u;K|&jw$tu@ zVt%(}U+=}_&Oc6nD%Y<|{J5OO^kHz)x|p>ZOIMwA<6WEiP(_K8dDh#8_iq;ce#*}G zi$_#v885Sz$(v8CDr@xSTyo!TxnonqlPiWTc5CGJ$uC`)(EjW1yoQf6qK(2|&&~*c z{eo|nxxgGhg$)&*OLL`b_I0ovWZuFQw)$|?ZI|NY?(JdME`H*%GjG4KQfARL#y7pW zCdHF4OuxQkWoANE$I8u@JF3{amzw+hsrxXaUTaQ6+|M4r_cyI`mVfR@aA5Dh(z`k* zDNSnPM-iqc32MC$ZZh>`u&fent+Hvp;Bw1$XY?T!xQJ7 zRF0aH>ZWy$X}$M~S-O8_O1W43*3RD_-S|@S&c+8Ff3^Pn5nW$t`-sa;#kFnAXZe{; zM@47;ns(x{-|ycu;%Ck9?rGzxiJttRmh0tjC4bFdX*F!Mu`GM{xW1Vf>zflY{bf8O Z8$*!Cncznk7x;q8YEM@`mvv4FO#ofJOi};< diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_add.png b/OsmAnd/res/drawable-xhdpi/ic_action_add.png deleted file mode 100644 index 4617bdd1333b9d71f674ad8b2b4187e7c7fdf83b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmV-N1GxN&P)C;6uad=Y?|Nx?e+?zWUo)k`q@0KSvd=Pbzr2#Vheif3)yd1x;eWHNx6 z$>R4jEbf8I3-X3wl4TNrnXOc`dQ8b(lG~{SNdV!|`i5h<)xD^b3Gld}i_#ldxGnj?r0NPhE<(9)+-UD_X^J0RJ8=E*c!Wg6?V)xTVwOml)+Z%QJU(x_V3*}sS6O&s_H`R z_SpmLwGBfLqyi`o1fe%Dix4$-o7IN9jmBoSh~wlQo6%;@GjEues?gQwSliqE1@M#P zj;BKrK!^#=j5N6@89n|Ntl{m9`#vD45~o@qj35P~R5{fnviL6mJ1J*9rc+W7rvRCm zvQ+b`RUXoxUbRZ3tgL$&?!AZI0aeN#*;y!e@kKmW%>#>2_QC^aW#zGbPXQL!{V^vX R;^+VX002ovPDHLkV1hTXb-n-q diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_transport_stop.png b/OsmAnd/res/drawable-xhdpi/ic_action_transport_stop.png deleted file mode 100644 index 03c5bf0994c26de176a466580ecdbf1fa1250df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1278 zcmbVMZD<>19Dg!(&fsJ+QFOH)SIeyKaxb|{a!1lN$)#Cj$!Z!*kSe{GC+*qZU3zzE z(ps@-sVkEeb=G|mR61Cd4yp`Sd}Ru8;+Qg=peufn&JUtrs$*pgpG%YKhq4bI-1GYX z{a=3n|Noik$s~7rAMgSIcBT%9Su|7bzhgTZ^V_byjHdgYM8WAbi%vzdAc(4_46&3h z4Ztjv)UlCsFbu#gqgt-u6w(I;#ngS0E90x`C4>ebyuVtKlp*L~G91v12>$2CpW~RO zM({kBrqZQ29MlesTd;RLlT*fr6kf&mcVgkHfE4J^k+7;hY}i6Ig4gv5Xzd=8I93;N zh9dZeQ-yR77B?-3alQbd&@_z&c^}P%{0z4bVeyqil=#m zD$-qUwgTF0HWM^Z2U)09!kIUQ0PwV?#AvSi)9=TZ?mCO@nm)2{XZM@J@|pF{=jS@7 zW{#|^^iACTP;z_u;#BJ$LwmZ8#;%js?t7e^`1D5p-=0do z_5pw5>a(xRM9P;YM%JF5-SJy&^<40vIkoWBr7P3Bz#pGI)-Qv5y#1eyw4I)RiCh2X zy(MMwt=$)r9^Kg|%(kqEt$zoE(J!ahM!%I-I~C`h!MF3Pk=Mbw!UmjNBhFwg~KoWdhC2hZ%aq~=f%kxPyNk7Ls#($|LVOb0q`DPx#1ZP1_ zK>z@;j|==^1poj9-AP12RCodHTFq-@MG)_PUo#<-WJZl{Oah6-bqUMv!IR)&u6j?7 zUJT^qSr8$~(X%2b_!s2r)zgArgwch7m;tjGjLYa`lFVd2-hW41zn<>ip6BH1yas>J z>F(;+Jyox&y1HM5vHvk!@Vf?t5S)OTp;k1Or`<7^@$my9_giAh8l33?bY85>#h3}R z?6lwVa(#YycnF$L69cLvs!LSMqT1!n&CSxr#)hVsts-gb>+5JoXs@lUnK86!4cSMn z)`;}lD4=P&`hPu)gBO1azY`kZJ3Bkx@$qr+cK!3sxy7}wIpdFryu@Y(U4HbW2#ilcTwVS3)4NZQLDz10VO5+Gt;@DMyUo6UrL6{aMe zgVEdfs?};Z7!1mK;vg<%-F`|t!F2EcFA+ta-k}z$nxitH0u7{rdd5rB)F%N-dQu!` zT>HqZF@G9mb{9Ot+$C?=mN;!&*mM0TihNdlfJYxZQ|(C&oSmJa!_{D+ftNfQjXcHk zL}1WD6dlqZC@9Ld7C_9;&zr#_gWkTZ&(F_MaV-Gv^?HKT5d#FAh8I4!p&SI$DP7Tm~;0Q!bc>T$w^ z)a_9seFuo5mt>@zmt z7vw7`a(rIy=5D=g5#%ROKB~*PUkUugi+{pmND;^V2@&wJv2&6SaQoXRJ}qWx(nk)8 zwOgm9{KQ!xO=Eu5{!QjBM#DDc?pRi-R8q1U1TvGrKxPJdS$=K3{`k$uAAQ5UpioXB zvZQzV^Oqk!|NXlLb^oS3S(j2xLz(H=-rn|Ft(IRdm&4neXG!n+*^l$pt<^BBynoJS zj4VrTN5jsq&8J^{dinf^CRxdKk|h0hyFHSLaP^$bP?8xfkbS*G?U#Mum-#3cc`>g>9TR2EH!yzg3MA#uhqyb6lFDxv0H#awiaoPb`x7%fQ+b*W%1f3?B rpyzph4I36sC;?EQmRJdu>9zj>N@GG4RE1t;00000NkvXXu0mjfSv-W) literal 1908 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 diff --git a/OsmAnd/res/drawable-xhdpi/map_transport_stop_tram.png b/OsmAnd/res/drawable-xhdpi/map_transport_stop_tram.png index b8278cdae2391efdb7950779bbdb2cb35ba67be8..5bc8cb3c81828f33879a6190133786dd98040977 100644 GIT binary patch literal 1664 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 diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_add.png b/OsmAnd/res/drawable-xxhdpi/ic_action_add.png deleted file mode 100644 index b7305551e9f6c3e140aae4cf195e43d6ce6508db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1187 zcmV;U1YG-xP)D2k$>D2jrh8}Ppya070@b+`dH;0FBf1{8#dVjvI*7!wExND1DXNlC6U>KM)M$5Jpte> zfKvd@05}bRzvJg+I|Oh9;4grE0KWhnhzLJ7vnC#7pj-xU&Kx-%B&eS}M1%mVT2(-* zN>8~~0E!I)VSN{o-?b=J0n`A@Di3-?VasA8d443Mfa z$1t3jaC;izFzg5`+p+wLi&<2$xH?GVBoN_c{9UpJr+_lAXU9SU_uTJ@#w@I z1xQsdnt4v>4aJ=I62J>{!8-u2V=j(3mlMj}(DQ=-o9nD+HNK3>fQYPzv>gOURnG&s6VhPfIUg+7Jxy#cDiwN;8#awH;av4EaL_HatFh-{+R>CsY&hAOonj7xe&S73!Cv1p#W{MXk$UtQz#HN5ueQH7jcqYZQu4NhQ&eg)dyp-}x31 zb5Gd%^T~)bPPf*9v>K1VtFJg#sRO8EV$H}Z) zJFZSdd(aXj3Tmrw362UZD(@tXVyitjwL|oz(IF+nVV{#cXel3YWTR#@YPcm;*B9}i zS$?!E|itGQI{>_diNA=&|bYBw4l)m zy0Fb9q8~PNOJJxYB2&a|Q4%l_BrNLOMwW^A5?IhEbDNonF$SL&ihdyb;3fAw|L3{? z@ArSd!_Kne#Q5}hg+h^NFR@m@y(Ij`#lp4v=1?)*9+qt`xl;7VK~@3^GcURUV)wFj zpaQUb%hQt}U!mC8EL6E!?FsKSV1O`8z^>mTLeq;s$ks&xGC@9z_v> zH=#8;2jTD+f_kB(RRWc*WmQ~j14r}djwg})5CaLkKxUDUx6v11LMAlA%Ro7NjiX3J zMQ$*mD^9r_PNYzj0HRatF^(ij#6YV_ol!&S@(_w3bvQxeB!LkmLlO){Agd1wtx3Fx zsjwEU+JYw&S})6f2FHWJpgO2gi&7m<(lm_|6i!hX)W8BQKA8<+zJMyqUlT}26AC?D3Bl`kIM#@Lfz?F8l;I)PkCSQw_j z1C$nEZq7|%S`W_?Mvh`R0z`S%!y9Og(NF{zvrR{mHob*3m@PW3MN>puizvbz#oB!V zne}lXYFmJ|SFzMRu}q-^SXq>+M6og21SAI?U~%HJDLL7--(0*Sht3bQRD4-~8dw zDLmXP|7o7+73|2cxHby#ur^G<2Pa5^qmq^wpP*1|7_wW*S9M*;ej=2cmpX1q-k$l%#O;*4g%78;b)?;p z?~dpEwEJZn+Sg^D8+_o%z^pd^&8NndFCsBnebb$>%&#vQxBNI;G1KwPode66N|oF4 zc?Ug+coN=Ai9g%^-S`K_)Xc~Dzg{&e{{{o?=f}(Mmo^W7(Q`dF5bHSHFfmtpr2jP4 zS8x8TM@K$5;ZEVYij{3jYxd2L#*p?C?y~ZdOl^zQ6do`D*8aYLEGijK#s~`P^$l@vV;&o19%g zcmKJ6^xNsT>(01#ouf+0n5?)+@XDzoK6zhFYH#<|j+j$R)18-&FZQ2r-M6*(g|V5h zA32x7^20zwv@n R^-cIUX}6VG&su8R{sCU%^&bEL diff --git a/OsmAnd/res/drawable-xxhdpi/map_transport_stop_bg.png b/OsmAnd/res/drawable-xxhdpi/map_transport_stop_bg.png index 7136521acaabda58e5b98569fd81ada2f5f4dcd2..1679401d7b0582563162c993580679babbe82047 100644 GIT binary patch delta 2549 zcmVPx#1ZP1_ zK>z@;j|==^1pojElu1NERCodHTuW>mNg1x{?&WR@B&`I{}8nL&w%?IV>r_Ub)E2B9?dJ;dSwnf zx0*9`Wt_}ep1ah~*mpPnI=uQ^2J3u|j@7m$19#ZtYHq^;&z|7qju68a5?!^Lv@`ucj` zFMIX=#>Pg^t^sR_?b<@SR#k_nI?ORc$aje@~oYky_oGgscwVf4CI!Rx9CV9a}I za`M(6etrAx&CShhcXv0ZRwQF{2f9?&M2322XNO7g)o*Nnarx3~?+~fJq?!oEJUBjj z?>q1Q?nn2jmMV)Rf?VX8lR+eJeB?wIFJA068aV)3+w#h*zk22J?IG2`Zozr;6KNm$ z{Ruhf0DlC&`Ak24v=<-j|Et7iYa%Sg!vp_w^5Ck1_ zY50X%o~Qco;C_$WqV6{-iz(%Mdwb^Iy?f3qV1EQziW2HUTUUpj%QESwRz903VoR7l z>Ujr~X=wLLt1r(Sf`a(#>ReMpU}vQ5GUX%4R>a;xTkOv{O(K(|MkPtEngC%Gm|h$f z+7=cTIuQZo;hj5oKrFmi$1cQPZ2R>4eITgg4<4W8K#rvzqo40YWRm9kbW;3hlbGq8 zo`0T34<9}ZeY{9P6KUzeU=WPQW1*rNXaI}NS;KTX?eu!RkZ>T}#Qh@m#1;|@T3F4S zvk8cKI>d1tOePbJq&)i&6vPsnOmZM7ux&M(s$obf{nKZ&nXDVQP^9V|1#$QN{e3Qw zkkVO}HJoA$Ycjv3)9L6WNl?^;3oZC?GJi-qo}HaZ$5sK>OvJ%ua)e#GAjrq2A#AF~ zgVtq_KofCr;o#r^89(kmU6& zrrV_13NnZREVj6~D4MJW84dHrs)nLi(uV9H7Yp%O%uqa}yz|&xsAn-KDqXRI0K{S} zph(TnnXzFkHiv?&7OU=RSUX5t1b;Q3#p)@j(&js>j1<^Gstqt-28l1m{#e0Tg`tQX zR;6k>lqd+A8)_b9#DkRG)nEkCj;dIZ&wMPTX&}Ke{DH|Mh9ZX;4-XH0)o!SB>-;fm z`!Nnk9y@LBTn&K7VybN*?iDmSG`htJZyY)SZCT8SzOkP3LL|nN^|L-n_r< z1MpeQS8c5fw_4ERYQPTi<3ZZr)tDcXZhW|-aNNV}n``c%e1ESPAUbvv8B! zJY)(YSA#oAJg60hVo6B*aew&o*0b5!+2LIciYT@xXs@e>7o;pI9^i*uWmmPWU_^@z zhr?=2TAiEOTH>;*=}^OB&|)xk$a$~08p3z7?a@|sZ)D@p4|gz#i|-ptZ32=(rf%&H zLDpH-b#d7?0AgU`i%W-Gb?&|-y%qEwU@Ra7kl*nT*lsei2emGHA4?f~$% z4_VW#71D6G`u)DTd-txp%u=A5w%S5a^H$Xtj=&Vc9mvrE5?wVNs)XQcu|m+^k07$s z+QwZCg23+0qwKc73g@Kd@K7sYPDByxwi=)bVJo7$n&J)iy?uFpvB}cN7>cjMC6vI$>|^E+34d3v1$}( zb28d@L9Z;G{9V~?pRzCJF0&vlFE5+p<6~TjHq-IppQ6Fy6+9e0`bRg^p}MfVo`m7^ zt>LmP(I=z5_+wg=v>iYG>o4Ls&h6m^L&TB`iwT*5e>#J~pno?SjqsI%!OHOR=f3*2 z?VpEH_tUDukY&?@-@miF7i75_wnCl(cwCaru0Ach`v# zW-;t$;43ZUlRQJt)sJEFcUM%D_gSP=7k5bkghfP9~Gdcw=MZj5K;m zz8EN~aBp5d@B!+Xkwl-6&ryh#M<#&Y-O#(|Q0Fvf0+~Z~ ztZPchnNgSr1Kby2{2wbXFu=Eih|EOwM#+^>}=kn*o?}LKK2<9~r#pJ|JthFuDkb`?FuGYT*1HM^X!1I@800000 LNkvXXu0mjf&tv$u literal 2344 zcmbVOc~nzZ8h@w}1(8)mMCKVdY?|a{C5a$}1PEdvtip(v@bZ9&$qPv!0oi1*RNO!m zwX%t*C{?rwID!R*f-s>C=8WEP7>f+!>kg@7Rl$|RXeq#?+ZHuD;I zh!R#v*FEM+8(NKPUXA(B+8jq5#HsR~5? z?Z#)(%HSk9LJCBbXo3R9>Je=-FO22xe;d*QF>l!Z3JF#e(M}!;CrA;Q%7^EQ$8LyX ziI~k4Q>jcUl|n!m2$?`b;3z^A%!(qw5FMh>C`>ZN8J^ekIe89;#q?xyxe(9OnN0R% zvdBCNmkx0tI)g)Ja_RH3J~E|BB!iK8+Y-#SC&h!uqj4dK$L0N3SvFUJh*YQ|7)5u^ zcY!b#RiVmQR1R{v+NwK)4gwJ@k!hKZ+CqJZn};YQiHO)sfl9&mnPy8q;{}E8%%s6| znBYufU>Sg&>4Yc-wumWIF&RO`G&+ln|0pm1e=|tJoFZx4z?Vl zn3#v*FPW%4tlqZb`}z}kcHz5z%1)nwHt@_)VvUK!P{CR=h2~97G0MOR1eGpipo6FPvDi1JzwKY-K%GAJY{CCGQO-Z82Ww%8rhqRoYUE*ojq z)XmV%$Bkjt6EO0wXK1Fntx+GK-xzoSt=SsHP2O=i$1%j=dp>h$*Lb=l%0)e4kiFc` zUNn>#o*=7%X5XN0=?xaZ4#3l~W~TD^(%eicIM}~ydiv?<`m;|aiS2eyO~z$`4V0}xN&}vkALt3KF~TjoY&{a08s0Ua zn93h6yRt2xdDPl>|7>0@|K$CVrcm#Flb4q}l;csybiM&ZJM7zUXVz=>@Is~T$X497 zqw*!E>iZU!XCJQf)n(vn+3u{9XOCO!iYykjA~nMu@!3~7^xYOVl75Nlb%FIN<9qj( z_UJ74>Z=l&8fNa?XS=R%J*aA$yqG}>dB;YFIgDVs8XmNsTq zy|KcuAc5du2>~Xs9@3A&Ee^mtv9nLibM@)MaO{)oq!e9bfUQXz-d+_7FnW_Nh zp<=b7$7!&bP@Mj9|35CQyuY_{-SdWO&m(2dfx~dz$xU~TOcAB8qygj2)$v1fvrYo5 zU%RvMk{9VI?!|@|s^-#$e;HWVm6AnXrFgv9X?<5&QT@5@R~L85oz|3;Z|~fOT80RR zdiAcqRa>)%e{28k*h@|Auw+o0ZIGWV>b$Ud>0c(2fBomgI_lHEpGK3Q#iq46AzSpT zQDR3b_`t?BamAjX<~_xe{hbWn#YJ1(=n-!=*cBJu9!q~q&yGHK7-&O|rVRdkK0keZ z+7*kY0LMWA)RA@maz>zWmhA&t#?lU}lvmGeY&O`H@C`;a8O-yqA09btRMwgV*M$EO zllHFnR-La~swVX6k2A^LYpv)VLVNd3J{OMfU2sNkdAX3;805cfyspBc)tT5^@zYJf zB4l(?K_}Tf%p_9y<*hT~SjgfVVBv_~dt*sPSy@ehOg>sFKXoSU ziwRtB1ip>l;@axrJHa*y`J0jZlk!5QS(wS1$b{4!j!h?w+tihF(D!ylSI+H(yRnD< nzty#WfV)G&8zf2>6OfciYoVjtZ_U+>1>Bqa|5t;cXW7D(i diff --git a/OsmAnd/res/drawable-xxhdpi/map_transport_stop_bus.png b/OsmAnd/res/drawable-xxhdpi/map_transport_stop_bus.png index 17c397c3b78133212fc99491594c46b1b17b4b1f..5d1636ae9e913bbc6ca027cbc50cec2c25b8f96f 100644 GIT binary patch literal 2959 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 FV1j@FwN?NC literal 2700 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 diff --git a/OsmAnd/res/drawable-xxhdpi/map_transport_stop_tram.png b/OsmAnd/res/drawable-xxhdpi/map_transport_stop_tram.png index 51afe238b5273e81ffb0d80f8d29437bad46ed3b..327e5250d24c93007c3ddd6b979fc123a7c40de0 100644 GIT binary patch literal 3018 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 literal 3135 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 LuEcWNkktPG0^&nv diff --git a/OsmAnd/res/drawable-xxxhdpi/ic_action_add.png b/OsmAnd/res/drawable-xxxhdpi/ic_action_add.png deleted file mode 100644 index e36d623ad068dcd1fdfb7f5920923a096fb26124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1662 zcmV-^27&pBP)NklD!M9`_$s;@{TgA%J@T`18L1{XYPAMTCDdSxjlb zO5o1|cy5P~bA?DCgz*o6+m?Ws0N|WsFFy<58363{t;v=eIC^>0+xRXoR@lfb09SgLrRD&fbF}m9^;&j5mj#EegwRwQngQ^({uS?JbA@1` z-VG7C(&|B)0PrT~Z2(WUdhpKoy#wG<3zJkGfEWI|h8=A#J38p!YeT3C;E094K&uX+ z8h{fJeiH~)0GyEUt3#*-;Qb?VxUoKhj`?Eg#9lD~=iF;YFw~3{`u4iwA!-o-KefOJ zw|8M+_cefbe02R2fbRfwpUd&V+KpTRWCQSapQfjGgiGQ7uwz<-^ZlPIKw!lDTki0* z1i)JWp3fy;Q14p+pYEyu3xF>Q?wwne)7ckuDrW&uG(CLBpAWn!wcxWHK~$)7IcMG| z7r=*#k?tV?l;bBAgqd>-25B@!N%`kw0M0p1u+a`{6{`R!59Sh*1_DU{j09Yk0kHR< zPtk%@0L*A<3_I7_W*I=T7Ni2uwEYVN>i`~#$hlbi91XxZ#~~+&p4!Da0Lq6`6daKS zO9}v*9-1KSG6H~GB62B4P*DJUdhw%}8+N#61OU;_I2M2v^AifhG~Iw00eseTp`a{ig8a&5u5z$aMsUK5 ztb%?Z27vb5&ldbh0JyU5V6r9#z#9NwveNwn)6tejL41~*B69hV>|y{cX+J9rM$&*_ zq9z8wdwzdb34m=5x8zek9J2S-9N02l$6UOm<|+U_E_n+8hjO@u zw{Bj&IL9m^yvN=WqXDG=LN>d(6bl+C&M{j6@Z&%`V|KAB$}w92@I8Q1Eh^~5MOEpH zzbd&y4FDe$ZkRr0CmhU<#rS|y0PH}7@a2I8RVAIQc3s+iF0%Tj!YaEvB66YB3C}<* zA90mHY)(bw1E?|;!EL6m=RZUBnxSEB(Ws^J(*_r6#rObA=}5|FBmlwH5itNb4PhlA zKN^7Ygbd%m-00^cdQvlEp zaAicvv~)-tWB)%2fS~=42H?$*)|R9#m=OR(nV(buJkO0$v33~&K$Q7O0^qfvG&@!U zo^=3Gqn||(QBHWd*ueIr5#oTP&3dT-EI4D!8o+~N8U03|z?cNUn<4FmT9yG^6%ihT z8C`M!Pz$(JWqWjRbfbkAS_P0~`?Gw&$`@#E)(hpBwPr(;Y=02|Z;G@MHHUJ{#W~ze z?Tp@%w7q|_30i3Z&jOu?bpQ_lTu5=eYY5o@ycTFBYt}jDnmODY1;{cz#U^N_3Cxxe z#3>ft1Dm`Sa8yKpz%N)hr4n565F?Bt6SVOMgrGGvjd|Ca*CYpA`x>tTz-t1X@+m;5 zCVa}R8h{glP*wQV0USAm>cVdVU+!4l zfL)FH1O5oYLOwZGF1(Hr?llp)o>D3G+U5XOCW#O + + + diff --git a/OsmAnd/res/drawable/ic_action_transport_stop.xml b/OsmAnd/res/drawable/ic_action_transport_stop.xml new file mode 100644 index 0000000000..4464902bd7 --- /dev/null +++ b/OsmAnd/res/drawable/ic_action_transport_stop.xml @@ -0,0 +1,29 @@ + + + + + + + From 880778f4b01a72a60ecdb8b69cbcfad337d18edd Mon Sep 17 00:00:00 2001 From: ssantos Date: Mon, 4 May 2020 20:03:37 +0000 Subject: [PATCH 19/54] Translated using Weblate (Portuguese) Currently translated at 91.4% (3041 of 3324 strings) --- OsmAnd/res/values-pt/strings.xml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index fd346fe37b..4e3964bf2c 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -3653,11 +3653,9 @@ Perfis de navegação Pesquisar tipos de poi %1$s / %2$s - O pagamento será cobrado na sua conta do Google Play na confirmação da compra. -\n -\nA assinatura é renovada automaticamente, a menos que seja cancelada antes da data de renovação. Sua conta será cobrada pelo período de renovação (mensal/trimestrial/anual) somente na data de renovação. -\n -\nPode gerir e cancelar suas assinaturas acessando as configurações do Google Play. + A sua conta Google Play é cobrada no momento da compra de uma assinatura +\ne quando expirar (mês/três mês/ano), +\nnão se renovará se cancelado antes disso a partir das suas configurações do Google Play. Ação %1$s não suportada Mapas adicionais Alguns artigos da Wikipédia podem não estar disponíveis no seu idioma. @@ -3689,4 +3687,5 @@ Aragonês Lombardo Cor customizada + Combinar tipos de POI de diferentes categorias. Toque em \"Trocar\" para selecionar tudo, toque no lado esquerdo para seleção da categoria. \ No newline at end of file From 83cc8a8217af370ce9a08cdbd8f07bb3530e6571 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Mon, 4 May 2020 12:06:10 +0000 Subject: [PATCH 20/54] Translated using Weblate (Turkish) Currently translated at 99.9% (3323 of 3324 strings) --- OsmAnd/res/values-tr/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index ae0427a04c..9305b0f2c6 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -2420,7 +2420,7 @@ %s modu Kaçınılacak taşıma türleri… Yürü - Toplu taşıma rotaları beta aşamasındadır. + Toplu taşıma navigasyonu şu anda beta testindedir, hatalar ve yanlışlıklar olabilir. Ara nokta ekle Kalkış ve varış noktası ekle Kalkış noktası ekle @@ -2695,7 +2695,7 @@ Kamp aracı (RV) Haritada Düşük Emisyon Bölgelerini göster. Yönlendirmeyi etkilemez. Düşük Emisyon Bölgelerini göster - Geçici sınırlamaları göz önünde bulundurun + Geçici sınırlamaları göz önünde bulundur Öntanımlı Vagon Kamyonet From cc5631bbf749495deb513ec50fe3312126be5314 Mon Sep 17 00:00:00 2001 From: Athoss Date: Mon, 4 May 2020 09:35:34 +0000 Subject: [PATCH 21/54] Translated using Weblate (Hungarian) Currently translated at 95.6% (3178 of 3324 strings) --- OsmAnd/res/values-hu/strings.xml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 1f905224ba..00db7c05f5 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -3532,9 +3532,9 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Túrasízés Motoros hószán Egyéni OsmAnd bővítmény - %1$s olvasása sikertelen. - %1$s írása sikertelen. - %1$s importálása sikertelen. + Sikertelen olvasás innen: \'%1$s\'. + Sikertelen írás ide: \'%1$s\'. + Sikertelen importálás innen: \'%1$s\'. Felhasználói felület testreszabása Menü %1$s: elemek átrendezése vagy elrejtése. @@ -3548,9 +3548,9 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Rendezés kategória szerint Antarktika Rejtett - A beállítások az eredeti állapotba fognak visszaállni elrejtés után. + A beállítások elrejtése visszaállítja őket az eredeti állapotukba. Fő műveletek - Ezekhez a műveletekhez a \"Műveletek\" gombra koppintva férhet hozzá. + Ezekhez a műveletekhez a \"További műveletek\" gombra koppintva férhet hozzá. Csak ezen a kategórián belül lehetséges az elemek áthelyezése. Fejlesztő bővítmény Másik pont lecserélése erre @@ -3563,7 +3563,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Opciók menü elemei Személyre szabhatja az elemek számát a Menüben, a Térkép beállításában és az Opciókban. \n -\nA használaton kívüli bővítmények letiltásával elrejtheti őket a %1$s menüből. +\nA használaton kívüli bővítmények kikapcsolásával elrejtheti őket a %1$s menüből. Menü elemek, Opciók Jelölje ki a térképen megjelenő Wikipédia szócikkek nyelvét. A szócikk olvasása közben válthat valamennyi elérhető nyelv között. Előfordulhat, hogy néhány Wikipédia szócikk nem érhető el az ön nyelvén. @@ -3597,4 +3597,16 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük lombard Egyéni szín Egyéb térképek + OsmAnd helymegosztás + OsmAnd + Mapillary + Gyorsművelet + Sugaras vonalzó + Távolságmérés + Utazás (Wikivoyage és Wikipédia) + Térképjelölők + Kedvencek + Előfizetés - OsmAnd Live + OsmAnd vásárlások + Útmutató a térkép szimbolikájához + Navigációs profilok \ No newline at end of file From 0b4a96761ee9b6956a002649d4d782511f9a6d6c Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Mon, 4 May 2020 19:44:28 +0000 Subject: [PATCH 22/54] Translated using Weblate (Ukrainian) Currently translated at 99.8% (3318 of 3324 strings) --- OsmAnd/res/values-uk/strings.xml | 107 +++++++++++++++++-------------- 1 file changed, 60 insertions(+), 47 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 41ded8daa3..ba4b8c4826 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -918,26 +918,27 @@ OsmAnd+ Мапи і Навігація Шар рельєфа місцевості Стандартна мапа - OsmAnd (OSM Automated Navigation Directions) -\n -\n OsmAnd — навігаційне програмне забезпечення з відкритим кодом з доступом до різноманітних картографічних даних від OSM. Всі землеписні дані (векторні та растрові) можуть бути збережені на карті пам’яті телефону для подальшого автономного використання. Також пропонується функція маршрутизації в автономному режимі та в мережевому режимі, включаючи покрокові голосові підказки. -\n -\n Кілька основних можливостей: -\n - повноцінна робота без інтернет-з’єднання (просто збережіть векторні чи растрові дані на пристрій) -\n - доступні компактні автономні векторні мапи всього світу -\n - завантаження мап країн чи областей безпосередньо в програмі -\n - можливе накладання декількох шарів мапи, такі як GPX- або навігаційні треки, POI, Закладки, горизонталі, зупинки громадського транспорту, додаткові мапи з налаштовуваною прозорістю -\n - автономний пошук адрес та POI -\n - автономне прокладання маршрутів середньої дальності -\n - режими для пішохідної, автомобільної та велонавігації з опціональними: - автоматичним перемиканням до денного/нічного режиму мапи -\n - самостійним масштабуванням мапи відповідно до швидкості руху -\n - можливістю орієнтації мапи за компасом чи напрямком руху -\n - веденням по смугах руху, відображенням обмежень швидкості, записаними та синтезованими голосами супроводу -\n -\n Обмеження цієї безкоштовної версії OsmAnd: -\n - кількість завантажень мап є обмеженою -\n - відсутній автономний доступ до POI з Вікіпедії -\n + OsmAnd (OSM Automated Navigation Directions) +\n +\n OsmAnd — навігаційне програмне забезпечення з відкритим кодом з доступом до різноманітних картографічних даних від OSM. Всі землеписні дані (векторні та растрові) можуть бути збережені на карті пам’яті телефону для подальшого автономного користування. Також пропонується функція маршрутизації в автономному режимі та в мережевому режимі, включно з покроковими голосовими підказками. +\n +\n Кілька основних можливостей: +\n - повноцінна робота без інтернет-з’єднання (просто збережіть векторні чи растрові дані на пристрій) +\n - доступні компактні автономні векторні мапи всього світу +\n - завантаження мап країн чи областей безпосередньо в програмі +\n - можливе накладання декількох шарів мапи, такі як GPX- або навігаційні треки, POI, Закладки, горизонталі, зупинки громадського транспорту, додаткові мапи з налаштовуваною прозорістю +\n - автономний пошук адрес та POI +\n - автономне прокладання маршрутів середньої дальності +\n - режими для пішохідної, автомобільної та велонавігації з опціональними: +\n - автоматичним перемиканням денного/нічного режиму мапи +\n - самостійним масштабуванням мапи відповідно до швидкості руху +\n - можливістю орієнтації мапи за компасом чи напрямком руху +\n - веденням по смугах руху, показом обмежень швидкості, записаними та синтезованими голосами супроводу +\n +\n Обмеження цієї безкоштовної версії OsmAnd: +\n - кількість завантажень мап є обмеженою +\n - відсутній автономний доступ до POI з Вікіпедії +\n \n OsmAnd активно розвивається, і наш проєкт та його подальший розвиток покладається на фінансові внески на розробку та тестування. Будь ласка, розгляньте можливість придбання OsmAnd+, профінансуйте конкретні нові можливості програми або зробіть благодійний внесок на https://osmand.net. OsmAnd+ (OSM Automated Navigation Directions) \n @@ -1778,7 +1779,7 @@ Питання та відповіді Часті запитання Перегляд мапи - Пошук мапи + Пошук на мапі Встановлення та вирішення проблем Технічні статті Версії @@ -2003,7 +2004,7 @@ Ви досі не маєте жодних GPX-файлів Ви також можете додати GPX-файли до теки Додати ще… - Вигляд + Зовнішній вигляд Ввімкнути швидкий запуск запису Показувати сповіщення, яке дозволить почати запис мандрівки. Повідомлення @@ -2054,7 +2055,7 @@ У Вас немає завантажених мап. Ви можете вибрати мапу зі списку або завантажити її пізніше за допомогою меню — %1$s. Виберіть інший регіон Пошук мапи… - OsmAnd визначить Ваше місце розташування і запропонує завантажити мапи для цього регіону. + OsmAnd визначить ваше місце розташування і запропонує завантажити мапи для цього регіону. Неможливо визначити місце розташування З’єднання з Інтернетом відсутнє Необхідно завантажити мапи. @@ -3090,24 +3091,26 @@ Збій Під час останнього запуску OsmAnd сталася помилка. Допоможіть нам покращити OsmAnd - надішліть повідомлення про помилку. НЛО - • Профілі застосунку: створюйте довільний профіль з довільною піктограмою та кольором для Ваших особистих потреб + • Профілі застосунку: створюйте власний профіль з довільною піктограмою та кольором для ваших особистих потреб \n -\n• Налаштовуйте типову та мінімальну/максимальну швидкості профілю +\n• Налаштуйте типову мінімальну/максимальну швидкості профілю \n \n• Додано віджет з поточними координатами \n -\n• Додано можливість відображати на мапі компас і радіус-лінійку +\n• Додано можливість показувати на мапі компас і радіус-лінійку \n -\n• Виправлено записування треку у тлі +\n• Виправлено записування шляху у тлі \n \n• Покращено завантаження мап у тлі +\n +\n• Повернено параметр \'Увімкнути екран\' \n \n• Виправлено вибір мови Wikipedia \n -\n• Виправлено поведінку кнопки компасу під час навігації -\n -\n• Інші виправлення помилок +\n• Виправлено поведінку кнопки компаса під час навігації \n +\n• Інші виправлення помилок +\n \n Особистий перевізник Одноколісний @@ -3443,7 +3446,7 @@ OSM Значок відображається під час навігації чи переміщення. Значок показано в спокої. - Перевіряти та обмінюватися докладними журналами застосунку + Перевіряти та обмінюватися докладними журналами програми Не вдалося розібрати метод \'%s\'. Для використання цього параметра потрібен дозвіл. Це низькошвидкісний відсічний фільтр, щоб не записувати точки нижче певної швидкості. Це може призвести до плавнішого вигляду записаних треків при перегляді на мапі. @@ -3519,7 +3522,7 @@ Укажіть назву профілю Відкрити налаштування Втулок вимкнено - Цей втулок - окремий застосунок, його потрібно буде видалити окремо, якщо Ви більше не плануєте ним користуватися. + Цей плагін є окремою програмою, якщо ви не плануєте користуватися ним надалі, його потрібно буде видалити окремо. \n \nВтулок залишиться на пристрої після видалення OsmAnd. Меню @@ -3562,12 +3565,12 @@ Ви впевнені, що хочете очистити записані дані\? Імпорт даних з %1$s Імпорт - OsmAnd перевірить %1$s на наявність подвоєнь із наявними елементами у застосунку. -\n + OsmAnd перевірить %1$s на наявність подвоєнь із наявними елементами у програмі. +\n \nЦе може зайняти деякий час. Елементи додано Імпорт завершено - Усі дані з %1$s імпортуються, Ви можете використовувати кнопки нижче, щоб відкрити необхідну частину застосунку для управління ними. + Усі дані з %1$s імпортовано, ви можете користуватися іншими кнопками, щоби відкрити потрібну частину програми для керування нею. Маршрут буде перераховано, якщо відстань від маршруту до поточного місця розташування перевищує вибране значення. Виберіть відстань, після якого маршрут буде перераховано. Перерахунок маршруту у випадку відхилення @@ -3602,18 +3605,18 @@ Гірськолижний туризм Снігохід Користувацький втулок OsmAnd - Зміни застосовано до профілю %1$s. - Не вдається прочитати %1$s. - Не вдалося записати %1$s. - Не вдалося імпортувати %1$s. + Зміни застосовано до профілю \'%1$s\'. + Не вдається прочитати з \'%1$s\'. + Не вдалося записати до \'%1$s\'. + Не вдалося імпортувати з \'%1$s\'. Виберіть файл треку Мови Мова Усі мови Для перегляду POI Вікіпедії на мапі потрібні додаткові мапи. - Налаштуйте кількість елементів у скриньці, Налаштування мапи та контекстного меню. -\n -\nВи можете вимкнути невикористані втулки, щоб приховати всі їх елементи керування від застосунку. + Налаштуйте кількість елементів у скриньці, налаштуйте мапу та контекстне меню. +\n +\nВи можете вимкнути непотрібні плагіни, щоби приховати всі їхні елементи керування у програмі%1$s. Елементи скриньки, контекстне меню Налаштування інтерфейсу Скринька @@ -3622,15 +3625,15 @@ Дільник Елементи нижче цієї точки розділені дільником. Приховано - Ці елементи приховані від меню, але подані параметри або втулки залишаться справними. - Після приховування налаштування буде повернено до початкового стану. - Основні дії містять лише 4 кнопки. + Ці елементи приховані з меню, але встановлені параметри або плагіни продовжать роботу. + Приховування налаштувань призведе до скидання до їхнього початкового стану. + \'Основні дії\' містять лише 4 кнопки. Основні дії - Ви можете отримати доступ до цих дій, натиснувши кнопку «Дії». + Ви можете отримати доступ до цих дій, торкнувшись кнопки \"Дії\". Ви можете переміщувати елементи лише всередині цієї категорії. Втулок розробника Елементи - Виберіть мови, якими статті на Вікіпедії з’являться на мапі. Під час читання статті ви можете переключатися між усіма доступними мовами. + Виберіть мови, якими статті на Вікіпедії з’являться на мапі. Під час читання статті ви можете перемикатися між усіма доступними мовами. Деякі статті у Вікіпедії можуть бути недоступними вашою мовою. Кантонська Південний Мін @@ -3662,4 +3665,14 @@ Користувацький колір Додаткові мапи Непідтримувана дія %1$s + %1$s / %2$s + OsmAnd трекер + OsmAnd + Mapillary + Швидка дія + Радіусна лінійка + Вимірювання відстані + Подорожі (Wikivoyage та Wikipedia) + Позначки + Закладки + Передплата - OsmAnd Live \ No newline at end of file From 64072140c68e2ed812b1db1c157d8bd7da301d79 Mon Sep 17 00:00:00 2001 From: Piotr Kubowicz Date: Tue, 5 May 2020 05:31:35 +0000 Subject: [PATCH 23/54] Translated using Weblate (Polish) Currently translated at 99.8% (3320 of 3324 strings) --- OsmAnd/res/values-pl/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index e4c11b6107..ca15f647d8 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -2442,8 +2442,8 @@ Reprezentuje obszar: %1$s x %2$s Porządkowanie według: Linie przewodnie Strzałki na mapie - Wyświetl ominięte - Ukryj ominięte + Wyświetl odwiedzone + Ukryj odwiedzone Wprowadź współrzędne Znaczniki Format współrzędnych @@ -2564,8 +2564,8 @@ Reprezentuje obszar: %1$s x %2$s Z lewej Wyświetl klawiaturę numeryczną Przesuń cel w górę i utwórz go - Na tym ekranie zostaną wyświetlone znaczniki oznaczone jako pominięte. - Oznacz jako pominięty + Na tym ekranie zostaną wyświetlone znaczniki oznaczone jako odwiedzone. + Oznacz jako odwiedzony Wprowadź długość geograficzną Wprowadź szerokość geograficzną Wprowadź szerokość i długość @@ -2841,14 +2841,14 @@ Reprezentuje obszar: %1$s x %2$s \n Czarny Przywróć - Zachowanie miniętych znaczników na mapie + Pokazuj na mapie odwiedzone znaczniki Na tym przystanku można skorzystać z większej ilości środków transportu. Usunąć znacznik mapy „%s”\? Edytuj znacznik mapy Aplikacja innej firmy Wyszukaj ulicę Najpierw wybierz miasto/miejscowość - Znaczniki dodane jako grupa ulubionych lub punkty trasy GPX oznaczone jako przekazane pozostaną na mapie. Jeśli grupa nie jest aktywna, znaczniki znikną z mapy. + Znaczniki dodane jako grupa ulubionych lub punkty trasy GPX oznaczone jako odwiedzone pozostaną na mapie. Jeśli grupa nie jest aktywna, znaczniki znikną z mapy. Plan i ceny Co miesiąc Raz na 3 miesiące From 1ab67e2554d4da784ed74188a23ee508f539de58 Mon Sep 17 00:00:00 2001 From: Ahmad Alfrhood Date: Mon, 4 May 2020 09:47:32 +0000 Subject: [PATCH 24/54] Translated using Weblate (Arabic) Currently translated at 100.0% (3324 of 3324 strings) --- OsmAnd/res/values-ar/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 96035f7ad2..03c6d76e4a 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -2926,7 +2926,7 @@ تغيير قياس زاوية الازيموث. طول \"%s\" قيمة تعرف على المزيد حول كيفية حساب أوسماند للطرق في مدونتنا. - يخضع التنقل في وسائل النقل العام حالياً للاختبار التجريبي ، ويتوقع الأخطاء . + يخضع التنقل في وسائل النقل العام حاليًا للاختبار التجريبي ، ويتوقع أن يكون فيه أخطاء . إضافة نقطة وسيطة %1$d تحويلات ضبط From 81e684901e495a1ae2993dd9462f24ea72bf173c Mon Sep 17 00:00:00 2001 From: iman Date: Mon, 4 May 2020 04:17:42 +0000 Subject: [PATCH 25/54] Translated using Weblate (Persian) Currently translated at 99.7% (3317 of 3324 strings) --- OsmAnd/res/values-fa/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index 914d9d73e3..d13dc50574 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -3714,4 +3714,7 @@ برگزیده‌ها اشتراک - OsmAnd Live خریدهای OsmAnd + سیسیلی + قزاقی + پنجابی \ No newline at end of file From c184908c7a7baf8709a0a29ec830c16a9eb6a541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Kotr=C4=8D?= Date: Mon, 4 May 2020 08:51:54 +0000 Subject: [PATCH 26/54] Translated using Weblate (Czech) Currently translated at 82.2% (2733 of 3324 strings) --- OsmAnd/res/values-cs/strings.xml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index 23778a717e..9396605251 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -3425,4 +3425,23 @@ Zobrazená oblast: %1$s x %2$s Zkombinujte body zájmu různých kategorií. Klepnutím na přepínač vyberete všechny, klepnutím na levou stranu vyberete kategorie. Další mapy Nepodporovaná akce %1$s + Akce kontextového menu + Seřaďte nebo skryjte položky z %1$s. + Oddělovač + Na této pozici bude umístěn oddělovač. + Skryté + Tyto položky jsou skryté z menu, ale příslušná nastavení a moduly zůstanou funkční. + Skrytá nastavení se resetují do svého původního stavu. + Stopování OsmAnd + OsmAnd + Mapillary + Rychlá akce + Kruhové pravítko + Měřit vzdálenost + Cestování (Wikivoyage a Wikipedie) + Mapové značky + Oblíbené + Předplatné - OsmAnd Live + Nákupy v OsmAnd + Průvodce symboly na mapě + Navigační profily \ No newline at end of file From 9dbcab3e4ee555ad779f67b79591aabac1e38183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Sun, 3 May 2020 20:52:42 +0000 Subject: [PATCH 27/54] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 5.5% (183 of 3324 strings) --- OsmAnd/res/values-nb/strings.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index 822889407a..0eff9ac927 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -3535,4 +3535,14 @@ Tilbakestill programtilleggsinnstillinger til forvalg Ustøttet handling %1$s Ekstra kart + Inndeler + Det kan hende noen Wikipedia-artikler ikke finnes på norsk. + Egendefinert farge + Søk etter interessepunkttyper + Hurtighandling + OsmAnd-kjøp + Favoritter + Kartmarkører + Mål avstand + Reising (Wikivoyage og Wikipedia) \ No newline at end of file From 71a37ca79f9ed9f2a559729a012b988063f16935 Mon Sep 17 00:00:00 2001 From: Rami Lehtinen Date: Tue, 5 May 2020 19:28:18 +0000 Subject: [PATCH 28/54] Translated using Weblate (Finnish) Currently translated at 64.1% (2131 of 3324 strings) --- OsmAnd/res/values-fi/strings.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/OsmAnd/res/values-fi/strings.xml b/OsmAnd/res/values-fi/strings.xml index 2992238c53..a77d2ff006 100644 --- a/OsmAnd/res/values-fi/strings.xml +++ b/OsmAnd/res/values-fi/strings.xml @@ -2537,4 +2537,11 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Suosi päällystämättömiä teitä Suosi päällystämättömiä teitä Perillä %1$s + Mittaa etäisyys + Karttamarkkerit + Suosikit + Tilaus - OsmAnd Live + OsmAnd ostot + Kartan symboliikkaopas + Navigointiprofiilit \ No newline at end of file From 93ca4ab0eb1669cb0cdb522741444e95828de129 Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Mon, 4 May 2020 20:39:17 +0000 Subject: [PATCH 29/54] Translated using Weblate (Sardinian) Currently translated at 99.3% (3304 of 3324 strings) --- OsmAnd/res/values-sc/strings.xml | 42 ++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index c85a056a12..c3fa7477a8 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -1144,8 +1144,8 @@ Chirca indiritzu… Chirca indiritzu cun OSM Nominatim Chirca in lìnia: nùmeru tzìvicu, carrera, tzitade - Chene lìnia - Ìnternet + Chirca chene lìnia + Chirca in lìnia Max ismanniamentu in lìnia Non chircare mapas a tasseddos pro ismanniamentos prus mannos de custu. Distàntzia totale %1$s, longària de su biàgiu %2$d h %3$d min. @@ -1744,7 +1744,7 @@ Lon %2$s Preguntas fitianas (FAQ) Dimandas fitianas Visione de sa mapa - Chircare in sa mapa + Chirchende in sa mapa Pranificare unu biàgiu Installatzione e solutziones a sos problemas Artìculos tècnicos @@ -3610,10 +3610,10 @@ Pro praghere iscrie su còdighe intreu Iscì-alpinismu Motoislita Estensione de OsmAnd personalizada - Modìficas aplicadas a su profilu %1$s. - Leghidura de %1$s fallida. - Iscritura de %1$s fallida. - Importatzione de %1$s fallida. + Modìficas aplicadas a su profilu \'%1$s\'. + Leghidura dae \'%1$s\' fallida. + Iscritura in \'%1$s\' fallida. + Importatzione dae \'%1$s\' fallida. Ischerta su documentu de sa rasta Limbas Limba @@ -3631,10 +3631,10 @@ Pro praghere iscrie su còdighe intreu Elementos in suta de custu puntu iscrobados dae unu separadore. Cuadu Custos elementos sunt cuados dae su menù, ma sas optziones o sas estensiones rapresentadas ant a sighire a funtzionare. - Sas impostatziones ant a torrare a sos valores predefinidos a pustis de sa cuadura. - Sas atziones printzipales cuntenent 4 butones ebbia. + Cuende sas impostatziones las as a torrare a sos istados predefinidos issoro. + Sas \'atziones printzipales\' cuntenent 4 butones ebbia. Atziones printzipales - Podes atzèdere a custas atziones incarchende su butone \"Atziones\". + Podes atzèdere a custas atziones incarchende su butone \"Atziones additzionales\". Podes mòere elementos in intro de custa categoria ebbia. Estensione pro sos isvilupadores Elementos @@ -3670,12 +3670,22 @@ Pro praghere iscrie su còdighe intreu Colore personalizadu Mapas additzionales Atzione %1$s non suportada - Su pagamentu at a èssere addebitadu a su contu tuo de Google Play cando sa còmpora at a èssere cunfirmada. -\n -\nS\'abbonamentu si rinnovat a sa sola automaticamente, francu chi siat istadu annulladu in antis de sa die de su rinnovu. Su contu tuo at a bènnere addebitadu pro su perìodu de rinnovu (mese/tres meses/annu) in sa die de rinnovu ebbia. -\n -\nPodes amministrare e annullare sos abbonamentos tuos intrende in sas impostatziones de Google Play tuas. + Su pagamentu at a èssere addebitadu a su contu tuo de Google Play cando as a comporare un\'abbonamentu +\ne cando at a iscadire su tempus (unu mese/tres meses/un\'annu), +\nno at a èssere rinnovadu si l\'as a àere annulladu, in antis de cussu momentu, dae sas impostatziones de Google Play tuas. Chirca castas de PDI - Cumbina castas de PDI de catogorias diferentes. Incarca su buone pro ischertare totu, incarca s\'ala a manca pro sa seletzione de sas categorias. + Cumbina castas de PDI de catogorias diferentes. Incarca su butone pro ischertare totu, incarca s\'ala a manca pro sa seletzione de sas categorias. %1$s / %2$s + Arrastadore de OsmAnd + OsmAnd + Mapillary + Atzione lestra + Medidura cun su raju + Medi una distàntzia + Biàgiu (Wikivoyage e Wikipedia) + Marcadores mapa + Preferidos + Abbonamentos - OsmAnd Live + Còmporas de OsmAnd + Sa ghia pro sa simbologia de sa mapa + Profilos de navigatzione \ No newline at end of file From bb270e76c0ec0b634532bc28d89a5c7a00c084ac Mon Sep 17 00:00:00 2001 From: Franco Date: Tue, 5 May 2020 12:02:37 +0000 Subject: [PATCH 30/54] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (3324 of 3324 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index a8f7fb2916..47bb12fb3e 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -2915,7 +2915,7 @@ Lon %2$s En %1$s Giro a giro Tipos de caminos - Bajarse en + Bajar en Esperar en la parada Mostrar/ocultar trazas GPX Un botón que muestra u oculta las trazas GPX elegidas en el mapa. @@ -2989,7 +2989,7 @@ Lon %2$s Lea más sobre el cálculo de las rutas de OsmAnd en nuestro blog. La navegación en transporte público se encuentra actualmente en fase de pruebas beta, se esperan errores e imprecisiones. Añadir punto intermedio - A pie + Caminar Acorte la longitud de la etiqueta «%s» a menos de 255 caracteres. Longitud del valor de «%s» Marca los tipos de transporte público a evitar para la navegación: From e424508e4014d1c0776ebd0a9d62ce70338c6304 Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Mon, 4 May 2020 14:12:58 +0000 Subject: [PATCH 31/54] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3324 of 3324 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 22dfe120c6..eb6f0e1a50 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -2976,7 +2976,7 @@ Pôr do Sol: %2$s Leia mais sobre o roteamento OsmAnd em nosso blog. A navegação de transporte público está atualmente em teste beta, espere erros e imprecisões. Adicionar ponto intermediário - Ande + A pé Reduza o comprimento da tag \"%s\" para menos de 255 caracteres. Comprimento do valor \"%s\" Selecione os tipos de transporte público a evitar para navegação: From 6418cadae53e930b4da751dc7b06229559445812 Mon Sep 17 00:00:00 2001 From: Franco Date: Tue, 5 May 2020 12:06:48 +0000 Subject: [PATCH 32/54] Translated using Weblate (Spanish (American)) Currently translated at 100.0% (3324 of 3324 strings) --- OsmAnd/res/values-es-rUS/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml index 10a3aaabf8..6515e13a3c 100644 --- a/OsmAnd/res/values-es-rUS/strings.xml +++ b/OsmAnd/res/values-es-rUS/strings.xml @@ -2915,7 +2915,7 @@ Lon %2$s En %1$s Giro a giro Tipos de caminos - Bajarse en + Bajar en Esperar en la parada Mostrar/ocultar trazas GPX Un botón que muestra u oculta las trazas GPX elegidas en el mapa. @@ -2989,7 +2989,7 @@ Lon %2$s Lea más sobre el cálculo de las rutas de OsmAnd en nuestro blog. La navegación en transporte público se encuentra actualmente en fase de pruebas beta, se esperan errores e imprecisiones. Añadir punto intermedio - A pie + Caminar Acorte la longitud de la etiqueta «%s» a menos de 255 caracteres. Longitud del valor de «%s» Marca los tipos de transporte público a evitar para la navegación: From e7da7c5c221f43c18f705f0b38ab1930b31d140d Mon Sep 17 00:00:00 2001 From: ssantos Date: Mon, 4 May 2020 19:49:16 +0000 Subject: [PATCH 33/54] Translated using Weblate (Portuguese) Currently translated at 100.0% (3798 of 3798 strings) --- OsmAnd/res/values-pt/phrases.xml | 38 ++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-pt/phrases.xml b/OsmAnd/res/values-pt/phrases.xml index f75dc4d647..203eb822d2 100644 --- a/OsmAnd/res/values-pt/phrases.xml +++ b/OsmAnd/res/values-pt/phrases.xml @@ -820,8 +820,8 @@ Acesso à Internet: serviço Com acesso à Internet Sem acesso à Internet - Acesso à Internet pago - Acesso à Internet grátis + Acesso à Internet: taxa paga + Acesso à Internet: grátis Mosteiro Área religiosa Cruz de beira de estrada @@ -3769,4 +3769,38 @@ Ativo Inativo Quantidade de erupções + Rede de reabastecimento de água potável + Reabastecimento de água potável: não + Reabastecimento de água potável: sim + Obstrução + Nível da água: abaixo do nível médio da água + Nível da água: acima do nível médio da água + Nível da água: flutuante + Nível da água: inundações + Nível da água: inundado + Nível da água: cobre + Nível de água: seco + Nível da água: submerso + Nível da água: parcialmente submerso + Incorreto + Primitivo + Contrastado + Somente quando é permitido caminhar + Sinal para encontrar o poste + Não + Sim + Tipo de cabine + Cabine + Não + Sim + Centro de mergulho Scuba + Base de caça + Número de referência da pista + Centro de boliche + Loja de segurança + Resgate na montanha + Paintball + Bicicleta fantasma + Vídeo + SMS \ No newline at end of file From 5d5cff6c4116c92c51e96129c8271aff502b3d73 Mon Sep 17 00:00:00 2001 From: Gilbert Lowel Date: Mon, 4 May 2020 07:12:31 +0000 Subject: [PATCH 34/54] Translated using Weblate (Dutch) Currently translated at 93.1% (3096 of 3324 strings) --- OsmAnd/res/values-nl/strings.xml | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-nl/strings.xml b/OsmAnd/res/values-nl/strings.xml index 1899ba99af..844e106bd4 100644 --- a/OsmAnd/res/values-nl/strings.xml +++ b/OsmAnd/res/values-nl/strings.xml @@ -2270,10 +2270,9 @@ voor Gebied: %1$s x %2$s Ga ook over privé-terreinen. Zoomniveau weergave: %1$s Voor grote afstanden: voeg tussenpunten toe als binnen de 10 minuten geen route berekend is. - OsmAnd (OSM, Automated Navigation Directions) is een kaart- en navigatieprogramma dat de gratis, wereldwijde en gedetailleerde OpenStreetMap (OSM) data gebruikt. -\n -\n -\nGebruikt visuele en gesproken navigatie, toont POI\'s (point of interest), maakt en volgt GPX-tracks, toont hoogtelijnen en hoogte informatie (via plug-in), kiest tussen auto, fiets, wandelen of andere, je kan de OSM-kaart bewerken en nog veel meer. + "OsmAnd (OSM, Automated Navigation Directions) is een kaart- en navigatieprogramma dat de gratis, wereldwijde en gedetailleerde OpenStreetMap (OSM) data gebruikt. +\n +\nGebruikt visuele en gesproken navigatie, toont POI\'s (point of interest), maakt en volgt GPX-tracks, toont hoogtelijnen en hoogte informatie (via plug-in), kiest tussen auto, fiets, wandelen of andere, je kan de OSM-kaart bewerken en nog veel meer." " GPS-navigatie • Offline (geen datakosten) of online (snellere) routeberekening @@ -2565,7 +2564,7 @@ voor Gebied: %1$s x %2$s Kaartupdates: Elk uur In-app aankoop Eenmalige betaling - "Eens aangekocht, kun je het permanent blijven gebruiken." + Eens aangekocht, kun je het permanent blijven gebruiken. %1$s Kopen Wikivoyage offline Onbeperkte downloads @@ -3371,9 +3370,9 @@ voor Gebied: %1$s x %2$s Kies een naam voor het profiel Open instellingen Plugin uitgeschakeld - Deze plugin is een afzonderlijke App. Je zal die afzonderlijk dienen te verwijderen als je die niet meer nodig denkt te hebben. -\n -\nDe plugin blijft op je toestel bij het verwijderen van OsmAnd. + "Deze plug-in is een afzonderlijke App, je zal die afzonderlijk dienen te verwijderen als je die niet meer nodig denkt te hebben. +\n +\nDe plug-in blijft op je toestel bij het verwijderen van OsmAnd." Menu %1$s — %2$s — %3$s Routering @@ -3423,4 +3422,19 @@ voor Gebied: %1$s x %2$s cirkel Ruit Min + Combineer POI-types uit verschillende categorieën. Tik op \"Schakelen\" om alles te selecteren, tik op de linkerkant voor de categoriekeuze. + Extra kaarten + Niet ondersteunde actie %1$s + OsmAnd zoeker + OsmAnd & Mapillary + Snelle actie + Radius liniaal + Afstand meten + Reizen (Wikivoyage en Wikipedia) + Markeervlaggetjes + Favorieten + Abonnement - OsmAnd Live + OsmAnd aankopen + De gids voor de kaartsymbolen + Navigatieprofielen \ No newline at end of file From 125ede4e5d8e4ae94eccda6bcd5253f9fa537b56 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 11:29:42 +0300 Subject: [PATCH 35/54] refactor MainContextMenuItemsSettings --- .../src/net/osmand/plus/OsmandSettings.java | 25 +++++++++---------- .../MapContextMenuFragment.java | 2 +- .../settings/ConfigureMenuItemsFragment.java | 6 ++--- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index 5c3b1d3d2e..e9fda99925 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -81,7 +81,6 @@ import java.util.Map; import java.util.Set; import java.util.StringTokenizer; -import static net.osmand.aidl.ConnectedApp.AIDL_LAYERS_PREFIX; import static net.osmand.aidlapi.OsmAndCustomizationConstants.CONFIGURE_MAP_ITEM_ID_SCHEME; import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_ITEM_ID_SCHEME; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ACTIONS; @@ -1288,38 +1287,38 @@ public class OsmandSettings { } } - public static class MapContextMenuItemsSettings extends ContextMenuItemsSettings { - private static final String MAIN_ACTIONS = "main_actions"; - private List mainActionIds = new ArrayList<>(); + public static class MainContextMenuItemsSettings extends ContextMenuItemsSettings { + private static final String MAIN = "main"; + private List mainIds = new ArrayList<>(); - public MapContextMenuItemsSettings() { + public MainContextMenuItemsSettings() { } - public MapContextMenuItemsSettings(@NonNull List mainActionIds, @NonNull List hiddenIds, @NonNull List orderIds) { + public MainContextMenuItemsSettings(@NonNull List mainIds, @NonNull List hiddenIds, @NonNull List orderIds) { super(hiddenIds, orderIds); - this.mainActionIds = mainActionIds; + this.mainIds = mainIds; } @Override public ContextMenuItemsSettings newInstance() { - return new MapContextMenuItemsSettings(); + return new MainContextMenuItemsSettings(); } @Override public void readFromJson(JSONObject json, String idScheme) { super.readFromJson(json, idScheme); - mainActionIds = readIdsList(json.optJSONArray(MAIN_ACTIONS), idScheme); + mainIds = readIdsList(json.optJSONArray(MAIN), idScheme); } @Override public void writeToJson(JSONObject json, String idScheme) throws JSONException { super.writeToJson(json, idScheme); - json.put(MAIN_ACTIONS, getJsonArray(mainActionIds, idScheme)); + json.put(MAIN, getJsonArray(mainIds, idScheme)); } - public List getMainActionIds() { - return Collections.unmodifiableList(mainActionIds); + public List getMainIds() { + return Collections.unmodifiableList(mainIds); } } @@ -3655,7 +3654,7 @@ public class OsmandSettings { .makeProfile().cache(); public final ContextMenuItemsPreference CONTEXT_MENU_ACTIONS_ITEMS = - (ContextMenuItemsPreference) new ContextMenuItemsPreference("configure_map_items", MAP_CONTEXT_MENU_ACTIONS, new MapContextMenuItemsSettings()) + (ContextMenuItemsPreference) new ContextMenuItemsPreference("configure_map_items", MAP_CONTEXT_MENU_ACTIONS, new MainContextMenuItemsSettings()) .makeProfile().cache(); public final List CONTEXT_MENU_ITEMS_PREFERENCES = Arrays.asList(DRAWER_ITEMS, CONFIGURE_MAP_ITEMS, CONTEXT_MENU_ACTIONS_ITEMS); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 630fa3f752..ce81198be0 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -568,7 +568,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo // Action buttons ContextMenuAdapter adapter = menu.getActionsContextMenuAdapter(false); List items = adapter.getVisibleItems(); - List mainIds = ((OsmandSettings.MapContextMenuItemsSettings) app.getSettings().CONTEXT_MENU_ACTIONS_ITEMS.get()).getMainActionIds(); + List mainIds = ((OsmandSettings.MainContextMenuItemsSettings) app.getSettings().CONTEXT_MENU_ACTIONS_ITEMS.get()).getMainIds(); ContextMenuAdapter mainAdapter = new ContextMenuAdapter(requireMyApplication()); ContextMenuAdapter additionalAdapter = new ContextMenuAdapter(requireMyApplication()); diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index fd699dc4f3..68e2418f47 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -160,8 +160,8 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment private void initDefaultMainActions() { List defItems = getCustomizableDefaultItems(contextMenuAdapter.getDefaultItems()); OsmandSettings.ContextMenuItemsSettings pref = getSettingForScreen(app, screenType).getModeValue(appMode); - if (pref instanceof OsmandSettings.MapContextMenuItemsSettings) { - mainActionItems = new ArrayList<>(((OsmandSettings.MapContextMenuItemsSettings) pref).getMainActionIds()); + if (pref instanceof OsmandSettings.MainContextMenuItemsSettings) { + mainActionItems = new ArrayList<>(((OsmandSettings.MainContextMenuItemsSettings) pref).getMainIds()); if (mainActionItems.isEmpty()) { for (int i = 0; i < MAIN_BUTTONS_QUANTITY; i++) { mainActionItems.add(defItems.get(i).getId()); @@ -253,7 +253,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment FragmentManager fm = getFragmentManager(); final OsmandSettings.ContextMenuItemsSettings prefToSave; if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { - prefToSave = new OsmandSettings.MapContextMenuItemsSettings(mainActionItems, hiddenMenuItems, ids); + prefToSave = new OsmandSettings.MainContextMenuItemsSettings(mainActionItems, hiddenMenuItems, ids); } else { prefToSave = new OsmandSettings.ContextMenuItemsSettings(hiddenMenuItems, ids); } From e1b1756dd8cfe1b3f3e9ed12ec2719453d248218 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 12:51:10 +0300 Subject: [PATCH 36/54] remove position from ContextMenuItem --- OsmAnd/src/net/osmand/plus/ContextMenuItem.java | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java index 9863b31e65..a5da0f5308 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java @@ -31,7 +31,6 @@ public class ContextMenuItem { private final boolean clickable; private final boolean skipPaintingWithoutColor; private boolean hidden; - private final int pos; private int order; private String description; private final ContextMenuAdapter.ItemClickListener itemClickListener; @@ -56,7 +55,6 @@ public class ContextMenuItem { boolean category, boolean clickable, boolean skipPaintingWithoutColor, - int pos, int order, String description, ContextMenuAdapter.ItemClickListener itemClickListener, @@ -80,7 +78,6 @@ public class ContextMenuItem { this.category = category; this.clickable = clickable; this.skipPaintingWithoutColor = skipPaintingWithoutColor; - this.pos = pos; this.order = order; this.description = description; this.itemClickListener = itemClickListener; @@ -161,10 +158,6 @@ public class ContextMenuItem { return hidden; } - public int getPos() { - return pos; - } - public int getOrder() { return order; } @@ -272,7 +265,6 @@ public class ContextMenuItem { private boolean mLoading = false; private boolean mIsCategory = false; private boolean mIsClickable = true; - private int mPosition = -1; private int mOrder = 0; private String mDescription = null; private ContextMenuAdapter.ItemClickListener mItemClickListener = null; @@ -345,11 +337,6 @@ public class ContextMenuItem { return this; } - public ItemBuilder setPosition(int position) { - mPosition = position; - return this; - } - public ItemBuilder setOrder(int order) { mOrder = order; return this; @@ -417,7 +404,7 @@ public class ContextMenuItem { public ContextMenuItem createItem() { return new ContextMenuItem(mTitleId, mTitle, mIcon, mColorRes, mSecondaryIcon, mSelected, mProgress, mLayout, mLoading, mIsCategory, mIsClickable, mSkipPaintingWithoutColor, - mPosition, mOrder, mDescription, mItemClickListener, mIntegerListener, mProgressListener, mItemDeleteAction, + mOrder, mDescription, mItemClickListener, mIntegerListener, mProgressListener, mItemDeleteAction, mHideDivider, mHideCompoundButton, mMinHeight, mTag, mId); } } From df79d568fdf22cedde6ed77c417fb9eac2a15a4b Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 12:52:10 +0300 Subject: [PATCH 37/54] fix string add/edit --- OsmAnd/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 3318a15b13..ad8078b10d 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -12,7 +12,7 @@ --> Reset hidden items? - Add / Edit + Add / Edit Favorite Parking positions Create/Edit POI From dadfc2556a6a95f5bae2ac9bc689f4547005c938 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 12:56:32 +0300 Subject: [PATCH 38/54] fix wrong settings keys --- OsmAnd/src/net/osmand/plus/OsmandSettings.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index e9fda99925..ec6b4b072b 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -3650,11 +3650,11 @@ public class OsmandSettings { .makeProfile().cache(); public final ContextMenuItemsPreference CONFIGURE_MAP_ITEMS = - (ContextMenuItemsPreference) new ContextMenuItemsPreference("context_menu_items", CONFIGURE_MAP_ITEM_ID_SCHEME, new ContextMenuItemsSettings()) + (ContextMenuItemsPreference) new ContextMenuItemsPreference("configure_map_items", CONFIGURE_MAP_ITEM_ID_SCHEME, new ContextMenuItemsSettings()) .makeProfile().cache(); public final ContextMenuItemsPreference CONTEXT_MENU_ACTIONS_ITEMS = - (ContextMenuItemsPreference) new ContextMenuItemsPreference("configure_map_items", MAP_CONTEXT_MENU_ACTIONS, new MainContextMenuItemsSettings()) + (ContextMenuItemsPreference) new ContextMenuItemsPreference("context_menu_items", MAP_CONTEXT_MENU_ACTIONS, new MainContextMenuItemsSettings()) .makeProfile().cache(); public final List CONTEXT_MENU_ITEMS_PREFERENCES = Arrays.asList(DRAWER_ITEMS, CONFIGURE_MAP_ITEMS, CONTEXT_MENU_ACTIONS_ITEMS); From 7f470613791eae077e2f2f73b57063e210dd321d Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 13:02:59 +0300 Subject: [PATCH 39/54] remove reset items call --- .../settings/ConfigureMenuItemsFragment.java | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index 68e2418f47..642e2c1570 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -267,11 +267,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment new ChangeGeneralProfilesPrefBottomSheet.OnChangeSettingListener() { @Override public void onApplied(boolean profileOnly) { - if (screenType == ScreenType.CONFIGURE_MAP && !hiddenMenuItems.isEmpty()) { - showResetConfigureMapItemsDialog(profileOnly); - } else { - dismissFragment(); - } + dismissFragment(); } @Override @@ -496,27 +492,6 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment dismissDialog.show(); } - public void showResetConfigureMapItemsDialog(final boolean profileOnly) { - Context themedContext = UiUtilities.getThemedContext(getActivity(), nightMode); - final AlertDialog.Builder dismissDialog = new AlertDialog.Builder(themedContext); - dismissDialog.setTitle(getString(R.string.shared_string_reset)); - dismissDialog.setMessage(getString(R.string.reset_hidden_items)); - dismissDialog.setNegativeButton(R.string.shared_string_cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - dismissFragment(); - } - }); - dismissDialog.setPositiveButton(R.string.shared_string_reset, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - resetHiddenItems(profileOnly); - dismissFragment(); - } - }); - dismissDialog.show(); - } - private void dismissFragment() { FragmentManager fm = getFragmentManager(); if (fm != null && !fm.isStateSaved()) { From 3d7a6341cca27fe981a7a57c2d7bedf71406b728 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 13:17:45 +0300 Subject: [PATCH 40/54] change reset dialog message --- OsmAnd/res/values/strings.xml | 2 +- .../net/osmand/plus/settings/ConfigureMenuItemsFragment.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index ad8078b10d..41fc2ca4a0 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,7 +11,7 @@ Thx - Hardy --> - Reset hidden items? + Restore default items order Add / Edit Favorite Parking positions Create/Edit POI diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index 642e2c1570..9604e733ae 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -471,7 +471,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment Context themedContext = UiUtilities.getThemedContext(getActivity(), nightMode); AlertDialog.Builder dismissDialog = new AlertDialog.Builder(themedContext); dismissDialog.setTitle(getString(R.string.shared_string_reset)); - dismissDialog.setMessage(getString(R.string.reset_to_default)); + dismissDialog.setMessage(getString(R.string.reset_deafult_order)); dismissDialog.setNegativeButton(R.string.shared_string_cancel, null); dismissDialog.setPositiveButton(R.string.shared_string_reset, new DialogInterface.OnClickListener() { @Override From ee0d9677afa5c594816daab01bdbd42a02041e01 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 13:35:57 +0300 Subject: [PATCH 41/54] possibility to change dialog cancel button title --- OsmAnd/res/values/strings.xml | 1 + .../settings/ConfigureMenuItemsFragment.java | 1 + .../ChangeGeneralProfilesPrefBottomSheet.java | 50 ++++++++++--------- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 41fc2ca4a0..18f639eb97 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,7 @@ Thx - Hardy --> + Back to editing Restore default items order Add / Edit Favorite Parking positions diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index 9604e733ae..226ac5ef30 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -263,6 +263,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment prefToSave, getTargetFragment(), false, + R.string.back_to_editing, appMode, new ChangeGeneralProfilesPrefBottomSheet.OnChangeSettingListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/settings/bottomsheets/ChangeGeneralProfilesPrefBottomSheet.java b/OsmAnd/src/net/osmand/plus/settings/bottomsheets/ChangeGeneralProfilesPrefBottomSheet.java index 7efd6c3d6d..4895924bb6 100644 --- a/OsmAnd/src/net/osmand/plus/settings/bottomsheets/ChangeGeneralProfilesPrefBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/settings/bottomsheets/ChangeGeneralProfilesPrefBottomSheet.java @@ -5,6 +5,7 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.StringRes; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -21,9 +22,6 @@ import net.osmand.plus.settings.BaseSettingsFragment; import org.apache.commons.logging.Log; import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; public class ChangeGeneralProfilesPrefBottomSheet extends BasePreferenceBottomSheet { @@ -33,6 +31,8 @@ public class ChangeGeneralProfilesPrefBottomSheet extends BasePreferenceBottomSh private static final String NEW_VALUE_KEY = "new_value_key"; + private static final String CANCEL_TITLE_RES_KEY = "cancel_title_res_key"; + @Nullable private Serializable newValue; @@ -50,6 +50,7 @@ public class ChangeGeneralProfilesPrefBottomSheet extends BasePreferenceBottomSh if (app == null || args == null) { return; } + int cancelTitleRes = args.getInt(CANCEL_TITLE_RES_KEY); final String prefId = args.getString(PREFERENCE_ID); newValue = args.getSerializable(NEW_VALUE_KEY); if (newValue == null || prefId == null) { @@ -98,7 +99,7 @@ public class ChangeGeneralProfilesPrefBottomSheet extends BasePreferenceBottomSh items.add(applyToCurrentProfile); BaseBottomSheetItem discardChanges = new SimpleBottomSheetItem.Builder() - .setTitle(getString(R.string.discard_changes)) + .setTitle(cancelTitleRes == 0 ? getString(R.string.discard_changes) : getString(cancelTitleRes)) .setIcon(getActiveIcon(R.drawable.ic_action_undo_dark)) .setLayoutId(R.layout.bottom_sheet_item_simple) .setOnClickListener(new View.OnClickListener() { @@ -150,36 +151,39 @@ public class ChangeGeneralProfilesPrefBottomSheet extends BasePreferenceBottomSh } public static void showInstance(@NonNull FragmentManager fm, - @Nullable String prefId, - @Nullable Serializable newValue, - Fragment target, - boolean usedOnMap, - @Nullable ApplicationMode appMode) { - showFragmentInstance(fm, prefId, newValue, target, usedOnMap, appMode, null); + @Nullable String prefId, + @Nullable Serializable newValue, + Fragment target, + boolean usedOnMap, + @Nullable ApplicationMode appMode) { + showFragmentInstance(fm, prefId, newValue, target, usedOnMap, 0, appMode, null); } public static void showInstance(@NonNull FragmentManager fm, - @Nullable String prefId, - @Nullable Serializable newValue, - Fragment target, - boolean usedOnMap, - @Nullable ApplicationMode appMode, - @Nullable OnChangeSettingListener listener) { - showFragmentInstance(fm, prefId, newValue, target, usedOnMap, appMode, listener); + @Nullable String prefId, + @Nullable Serializable newValue, + Fragment target, + boolean usedOnMap, + @StringRes int cancelTitleRes, + @Nullable ApplicationMode appMode, + @Nullable OnChangeSettingListener listener) { + showFragmentInstance(fm, prefId, newValue, target, usedOnMap, cancelTitleRes, appMode, listener); } private static void showFragmentInstance(@NonNull FragmentManager fm, - @Nullable String prefId, - @Nullable Serializable newValue, - Fragment target, - boolean usedOnMap, - @Nullable ApplicationMode appMode, - @Nullable OnChangeSettingListener listener) { + @Nullable String prefId, + @Nullable Serializable newValue, + Fragment target, + boolean usedOnMap, + @StringRes int cancelTitleRes, + @Nullable ApplicationMode appMode, + @Nullable OnChangeSettingListener listener) { try { if (fm.findFragmentByTag(ChangeGeneralProfilesPrefBottomSheet.TAG) == null) { Bundle args = new Bundle(); args.putString(PREFERENCE_ID, prefId); args.putSerializable(NEW_VALUE_KEY, newValue); + args.putInt(CANCEL_TITLE_RES_KEY, cancelTitleRes); ChangeGeneralProfilesPrefBottomSheet fragment = new ChangeGeneralProfilesPrefBottomSheet(); fragment.setArguments(args); From 100561be7b5e7241c5f8e657f92432576098577d Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 6 May 2020 13:57:16 +0300 Subject: [PATCH 42/54] Update tracker aidl --- .../net/osmand/aidl/IOsmAndAidlInterface.aidl | 37 ++++++----- .../customization/ProfileSettingsParams.aidl | 3 + .../customization/ProfileSettingsParams.java | 64 +++++++++++++++++++ 3 files changed, 87 insertions(+), 17 deletions(-) create mode 100644 OsmAnd-telegram/src/net/osmand/aidl/customization/ProfileSettingsParams.aidl create mode 100644 OsmAnd-telegram/src/net/osmand/aidl/customization/ProfileSettingsParams.java diff --git a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl b/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl index 541194e18d..b4394d647a 100644 --- a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl +++ b/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl @@ -73,6 +73,7 @@ import net.osmand.aidl.customization.SetWidgetsParams; import net.osmand.aidl.customization.OsmandSettingsParams; import net.osmand.aidl.customization.OsmandSettingsInfoParams; import net.osmand.aidl.customization.CustomizationInfoParams; +import net.osmand.aidl.customization.ProfileSettingsParams; import net.osmand.aidl.gpx.AGpxFile; import net.osmand.aidl.gpx.AGpxFileDetails; @@ -305,6 +306,13 @@ interface IOsmAndAidlInterface { */ boolean addFavoriteGroup(in AddFavoriteGroupParams params); + /** + * Remove favorite group with given name. + * + * @param name (String) - name of favorite group. + */ + boolean removeFavoriteGroup(in RemoveFavoriteGroupParams params); + /** * Update favorite group with given params. * @@ -315,13 +323,6 @@ interface IOsmAndAidlInterface { * @param colorNew (String) - group color (new). * @param visibleNew (boolean) - group visibility (new). */ - boolean removeFavoriteGroup(in RemoveFavoriteGroupParams params); - - /** - * Remove favorite group with given name. - * - * @param name (String) - name of favorite group. - */ boolean updateFavoriteGroup(in UpdateFavoriteGroupParams params); /** @@ -338,6 +339,16 @@ interface IOsmAndAidlInterface { */ boolean addFavorite(in AddFavoriteParams params); + /** + * Remove favorite at given location with given params. + * + * @param lat (double) - latitude. + * @param lon (double) - longitude. + * @param name (String) - name of favorite item. + * @param category (String) - category of favorite item. + */ + boolean removeFavorite(in RemoveFavoriteParams params); + /** * Update favorite at given location with given params. * @@ -356,16 +367,6 @@ interface IOsmAndAidlInterface { * "lightgreen", "green", "lightblue", "blue", "purple", "pink", "brown". * @param visibleNew (boolean) - should new category be visible after creation. */ - boolean removeFavorite(in RemoveFavoriteParams params); - - /** - * Remove favorite at given location with given params. - * - * @param lat (double) - latitude. - * @param lon (double) - longitude. - * @param name (String) - name of favorite item. - * @param category (String) - category of favorite item. - */ boolean updateFavorite(in UpdateFavoriteParams params); /** @@ -846,4 +847,6 @@ interface IOsmAndAidlInterface { * */ boolean getGpxColor(inout GpxColorParams params); + + boolean importProfile(in ProfileSettingsParams params); } diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/ProfileSettingsParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/customization/ProfileSettingsParams.aidl new file mode 100644 index 0000000000..9e21787596 --- /dev/null +++ b/OsmAnd-telegram/src/net/osmand/aidl/customization/ProfileSettingsParams.aidl @@ -0,0 +1,3 @@ +package net.osmand.aidl.customization; + +parcelable ProfileSettingsParams; \ No newline at end of file diff --git a/OsmAnd-telegram/src/net/osmand/aidl/customization/ProfileSettingsParams.java b/OsmAnd-telegram/src/net/osmand/aidl/customization/ProfileSettingsParams.java new file mode 100644 index 0000000000..6c2f82cd8f --- /dev/null +++ b/OsmAnd-telegram/src/net/osmand/aidl/customization/ProfileSettingsParams.java @@ -0,0 +1,64 @@ +package net.osmand.aidl.customization; + +import android.net.Uri; +import android.os.Parcel; +import android.os.Parcelable; + +public class ProfileSettingsParams implements Parcelable { + + private Uri profileSettingsUri; + private String latestChanges; + private int version; + + public ProfileSettingsParams(Uri profileSettingsUri, String latestChanges, int version) { + this.profileSettingsUri = profileSettingsUri; + this.latestChanges = latestChanges; + this.version = version; + } + + public ProfileSettingsParams(Parcel in) { + readFromParcel(in); + } + + public static final Creator CREATOR = new Creator() { + @Override + public ProfileSettingsParams createFromParcel(Parcel in) { + return new ProfileSettingsParams(in); + } + + @Override + public ProfileSettingsParams[] newArray(int size) { + return new ProfileSettingsParams[size]; + } + }; + + public int getVersion() { + return version; + } + + public String getLatestChanges() { + return latestChanges; + } + + public Uri getProfileSettingsUri() { + return profileSettingsUri; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(version); + out.writeString(latestChanges); + out.writeParcelable(profileSettingsUri, flags); + } + + private void readFromParcel(Parcel in) { + version = in.readInt(); + latestChanges = in.readString(); + profileSettingsUri = in.readParcelable(Uri.class.getClassLoader()); + } + + @Override + public int describeContents() { + return 0; + } +} \ No newline at end of file From da1a06584672cafd7b7d6fcdeae88cda305084a7 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 6 May 2020 14:01:51 +0300 Subject: [PATCH 43/54] Fix #8862 --- .../osmand/aidlapi/IOsmAndAidlInterface.aidl | 4 ++ .../quickaction/QuickActionParams.aidl | 3 ++ .../quickaction/QuickActionParams.java | 45 ++++++++++++++++++ .../net/osmand/aidl/IOsmAndAidlInterface.aidl | 4 ++ OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java | 32 +++++++++++++ .../net/osmand/aidl/OsmandAidlService.java | 12 +++++ .../net/osmand/aidl/OsmandAidlServiceV2.java | 12 +++++ .../aidl/quickaction/QuickActionParams.aidl | 3 ++ .../aidl/quickaction/QuickActionParams.java | 47 +++++++++++++++++++ 9 files changed, 162 insertions(+) create mode 100644 OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionParams.aidl create mode 100644 OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionParams.java create mode 100644 OsmAnd/src/net/osmand/aidl/quickaction/QuickActionParams.aidl create mode 100644 OsmAnd/src/net/osmand/aidl/quickaction/QuickActionParams.java diff --git a/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl b/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl index f628f6804a..095b92d241 100644 --- a/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl +++ b/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl @@ -93,6 +93,8 @@ import net.osmand.aidlapi.contextmenu.RemoveContextMenuButtonsParams; import net.osmand.aidlapi.mapmarker.RemoveMapMarkersParams; +import net.osmand.aidlapi.quickaction.QuickActionParams; + // NOTE: Add new methods at the end of file!!! interface IOsmAndAidlInterface { @@ -834,4 +836,6 @@ interface IOsmAndAidlInterface { boolean removeAllActiveMapMarkers(in RemoveMapMarkersParams params); boolean importProfile(in ProfileSettingsParams params); + + boolean executeQuickAction(in QuickActionParams params); } \ No newline at end of file diff --git a/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionParams.aidl new file mode 100644 index 0000000000..fa32216ce0 --- /dev/null +++ b/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionParams.aidl @@ -0,0 +1,3 @@ +package net.osmand.aidlapi.quickaction; + +parcelable QuickActionParams; \ No newline at end of file diff --git a/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionParams.java b/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionParams.java new file mode 100644 index 0000000000..927ba128c0 --- /dev/null +++ b/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionParams.java @@ -0,0 +1,45 @@ +package net.osmand.aidlapi.quickaction; + +import android.os.Bundle; +import android.os.Parcel; + +import net.osmand.aidlapi.AidlParams; + +public class QuickActionParams extends AidlParams { + + private int actionNumber; + + public QuickActionParams(int actionNumber) { + this.actionNumber = actionNumber; + } + + public QuickActionParams(Parcel in) { + readFromParcel(in); + } + + public static final Creator CREATOR = new Creator() { + @Override + public QuickActionParams createFromParcel(Parcel in) { + return new QuickActionParams(in); + } + + @Override + public QuickActionParams[] newArray(int size) { + return new QuickActionParams[size]; + } + }; + + public int getActionNumber() { + return actionNumber; + } + + @Override + public void writeToBundle(Bundle bundle) { + bundle.putInt("actionNumber", actionNumber); + } + + @Override + protected void readFromBundle(Bundle bundle) { + actionNumber = bundle.getInt("actionNumber"); + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl b/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl index d01667b04d..c5603a5914 100644 --- a/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl +++ b/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl @@ -94,6 +94,8 @@ import net.osmand.aidl.contextmenu.RemoveContextMenuButtonsParams; import net.osmand.aidl.mapmarker.RemoveMapMarkersParams; +import net.osmand.aidl.quickaction.QuickActionParams; + // NOTE: Add new methods at the end of file!!! interface IOsmAndAidlInterface { @@ -849,4 +851,6 @@ interface IOsmAndAidlInterface { boolean getGpxColor(inout GpxColorParams params); boolean importProfile(in ProfileSettingsParams params); + + boolean executeQuickAction(in QuickActionParams params); } diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java index 9404442c1d..e2b91edc81 100644 --- a/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java +++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java @@ -63,6 +63,8 @@ import net.osmand.plus.mapcontextmenu.MapContextMenu; import net.osmand.plus.mapcontextmenu.other.IContextMenuButtonListener; import net.osmand.plus.monitoring.OsmandMonitoringPlugin; import net.osmand.plus.myplaces.TrackBitmapDrawer; +import net.osmand.plus.quickaction.QuickAction; +import net.osmand.plus.quickaction.QuickActionRegistry; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.routing.IRoutingDataUpdateListener; import net.osmand.plus.routing.RouteCalculationResult.NextDirectionInfo; @@ -167,6 +169,9 @@ public class OsmandAidlApi { private static final String AIDL_HIDE_SQLITEDB_FILE = "aidl_hide_sqlitedb_file"; private static final String AIDL_FILE_NAME = "aidl_file_name"; + private static final String AIDL_EXECUTE_QUICK_ACTION = "aidl_execute_quick_action"; + private static final String AIDL_QUICK_ACTION_NUMBER = "aidl_quick_action_number"; + private static final ApplicationMode DEFAULT_PROFILE = ApplicationMode.CAR; @@ -216,6 +221,7 @@ public class OsmandAidlApi { registerUnmuteNavigationReceiver(mapActivity); registerShowSqliteDbFileReceiver(mapActivity); registerHideSqliteDbFileReceiver(mapActivity); + registerExecuteQuickActionReceiver(mapActivity); initOsmandTelegram(); app.getAppCustomization().addListener(mapActivity); aMapPointUpdateListener = mapActivity; @@ -824,6 +830,24 @@ public class OsmandAidlApi { registerReceiver(hideSqliteDbFileReceiver, mapActivity, AIDL_HIDE_SQLITEDB_FILE); } + private void registerExecuteQuickActionReceiver(MapActivity mapActivity) { + final WeakReference mapActivityRef = new WeakReference<>(mapActivity); + BroadcastReceiver executeQuickActionReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + int actionNumber = intent.getIntExtra(AIDL_QUICK_ACTION_NUMBER, -1); + MapActivity mapActivity = mapActivityRef.get(); + if (actionNumber != -1 && mapActivity != null) { + List actionsList = app.getQuickActionRegistry().getFilteredQuickActions(); + if (actionNumber < actionsList.size()) { + QuickActionRegistry.produceAction(actionsList.get(actionNumber)).execute(mapActivity); + } + } + } + }; + registerReceiver(executeQuickActionReceiver, mapActivity, AIDL_EXECUTE_QUICK_ACTION); + } + public void registerMapLayers(@NonNull MapActivity mapActivity) { for (ConnectedApp connectedApp : connectedApps.values()) { connectedApp.registerMapLayers(mapActivity); @@ -2110,6 +2134,14 @@ public class OsmandAidlApi { } } + public boolean executeQuickAction(int actionNumber) { + Intent intent = new Intent(); + intent.setAction(AIDL_EXECUTE_QUICK_ACTION); + intent.putExtra(AIDL_QUICK_ACTION_NUMBER, actionNumber); + app.sendBroadcast(intent); + return true; + } + private class FileCopyInfo { long startTime; long lastAccessTime; diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java index 6fc69f9328..69c46c0db6 100644 --- a/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java +++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java @@ -80,6 +80,7 @@ import net.osmand.aidl.note.StartVideoRecordingParams; import net.osmand.aidl.note.StopRecordingParams; import net.osmand.aidl.note.TakePhotoNoteParams; import net.osmand.aidl.plugins.PluginParams; +import net.osmand.aidl.quickaction.QuickActionParams; import net.osmand.aidl.search.SearchParams; import net.osmand.aidl.search.SearchResult; import net.osmand.aidl.tiles.ASqliteDbFile; @@ -1302,6 +1303,17 @@ public class OsmandAidlService extends Service implements AidlCallbackListener { return false; } } + + @Override + public boolean executeQuickAction(QuickActionParams params) { + try { + OsmandAidlApi api = getApi("executeQuickAction"); + return api != null && api.executeQuickAction(params.getActionNumber()); + } catch (Exception e) { + handleException(e); + return false; + } + } }; private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) { diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java index 21b80c229d..6d0f545d34 100644 --- a/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java +++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java @@ -81,6 +81,7 @@ import net.osmand.aidlapi.note.StartVideoRecordingParams; import net.osmand.aidlapi.note.StopRecordingParams; import net.osmand.aidlapi.note.TakePhotoNoteParams; import net.osmand.aidlapi.plugins.PluginParams; +import net.osmand.aidlapi.quickaction.QuickActionParams; import net.osmand.aidlapi.search.SearchParams; import net.osmand.aidlapi.search.SearchResult; import net.osmand.aidlapi.tiles.ASqliteDbFile; @@ -1235,6 +1236,17 @@ public class OsmandAidlServiceV2 extends Service implements AidlCallbackListener return false; } } + + @Override + public boolean executeQuickAction(QuickActionParams params) { + try { + OsmandAidlApi api = getApi("executeQuickAction"); + return api != null && api.executeQuickAction(params.getActionNumber()); + } catch (Exception e) { + handleException(e); + return false; + } + } }; private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) { diff --git a/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionParams.aidl b/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionParams.aidl new file mode 100644 index 0000000000..2a2fca38d8 --- /dev/null +++ b/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionParams.aidl @@ -0,0 +1,3 @@ +package net.osmand.aidl.quickaction; + +parcelable QuickActionParams; \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionParams.java b/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionParams.java new file mode 100644 index 0000000000..b9fd262600 --- /dev/null +++ b/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionParams.java @@ -0,0 +1,47 @@ +package net.osmand.aidl.quickaction; + +import android.os.Parcel; +import android.os.Parcelable; + +public class QuickActionParams implements Parcelable { + + private int actionNumber; + + public QuickActionParams(int actionNumber) { + this.actionNumber = actionNumber; + } + + public QuickActionParams(Parcel in) { + readFromParcel(in); + } + + public static final Creator CREATOR = new Creator() { + @Override + public QuickActionParams createFromParcel(Parcel in) { + return new QuickActionParams(in); + } + + @Override + public QuickActionParams[] newArray(int size) { + return new QuickActionParams[size]; + } + }; + + public int getActionNumber() { + return actionNumber; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(actionNumber); + } + + private void readFromParcel(Parcel in) { + actionNumber = in.readInt(); + } + + @Override + public int describeContents() { + return 0; + } +} \ No newline at end of file From 9d5dc7e4d33a06d7434b7392c8985ba019663649 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 6 May 2020 14:24:39 +0300 Subject: [PATCH 44/54] Fix #8726 --- OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java b/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java index 1012b0d52b..0ef65fa255 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java @@ -105,6 +105,8 @@ public class ExternalApiHelper { public static final String PARAM_CATEGORY = "category"; public static final String PARAM_LAT = "lat"; public static final String PARAM_LON = "lon"; + public static final String PARAM_MAP_LAT = "map_lat"; + public static final String PARAM_MAP_LON = "map_lon"; public static final String PARAM_COLOR = "color"; public static final String PARAM_VISIBLE = "visible"; @@ -445,6 +447,12 @@ public class ExternalApiHelper { result.putExtra(PARAM_LON, location.getLongitude()); } + LatLon mapLocation = mapActivity.getMapLocation(); + if (location != null) { + result.putExtra(PARAM_MAP_LAT, mapLocation.getLatitude()); + result.putExtra(PARAM_MAP_LON, mapLocation.getLongitude()); + } + final RoutingHelper routingHelper = app.getRoutingHelper(); if (routingHelper.isRouteCalculated()) { int time = routingHelper.getLeftTime(); From 9c7597f0cb548343b7de22eddbd2756cf28bc509 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 14:37:40 +0300 Subject: [PATCH 45/54] refactor OnItemDeleteAction --- .../net/osmand/plus/ContextMenuAdapter.java | 33 +++++++++++- .../src/net/osmand/plus/ContextMenuItem.java | 6 +-- .../audionotes/AudioVideoNotesPlugin.java | 4 +- .../osmand/plus/dialogs/ConfigureMapMenu.java | 54 +++++-------------- .../plus/mapillary/MapillaryPlugin.java | 5 +- .../osmand/plus/osmedit/OsmEditingPlugin.java | 7 ++- .../rastermaps/OsmandRasterMapsPlugin.java | 7 ++- .../osmand/plus/srtmplugin/SRTMPlugin.java | 6 +-- 8 files changed, 59 insertions(+), 63 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index 3773e195ec..d1bc1ae036 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -37,6 +37,7 @@ import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.dialogs.HelpArticleDialogFragment; import net.osmand.plus.helpers.AndroidUiHelper; import net.osmand.plus.OsmandSettings.ContextMenuItemsPreference; +import net.osmand.plus.OsmandSettings.OsmandPreference; import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; @@ -49,8 +50,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import static net.osmand.aidlapi.OsmAndCustomizationConstants.APP_PROFILES_ID; - public class ContextMenuAdapter { private static final Log LOG = PlatformUtil.getLog(ContextMenuAdapter.class); @@ -614,4 +613,34 @@ public class ContextMenuAdapter { } return visible; } + + public static OnItemDeleteAction makeDeleteAction(final OsmandPreference... prefs) { + return new OnItemDeleteAction() { + @Override + public void itemWasDeleted(ApplicationMode appMode, boolean profileOnly) { + for (OsmandPreference pref : prefs) { + resetSetting(appMode, pref, profileOnly); + } + } + }; + } + + public static OnItemDeleteAction makeDeleteAction(final List prefs) { + return makeDeleteAction(prefs.toArray(new OsmandPreference[prefs.size()])); + } + + private static void resetSetting(ApplicationMode appMode, OsmandSettings.OsmandPreference preference, boolean profileOnly) { + if (profileOnly) { + preference.resetModeToDefault(appMode); + } else { + for (ApplicationMode mode : ApplicationMode.allPossibleValues()) { + preference.resetModeToDefault(mode); + } + } + } + + // when action is deleted or reset + public interface OnItemDeleteAction { + void itemWasDeleted(ApplicationMode appMode, boolean profileOnly); + } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java index a5da0f5308..3a5b391a67 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java @@ -9,6 +9,7 @@ import androidx.annotation.LayoutRes; import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.core.content.ContextCompat; +import net.osmand.plus.ContextMenuAdapter.OnItemDeleteAction; public class ContextMenuItem { public static final int INVALID_ID = -1; @@ -408,9 +409,4 @@ public class ContextMenuItem { mHideDivider, mHideCompoundButton, mMinHeight, mTag, mId); } } - - // when action is deleted or reset - public interface OnItemDeleteAction { - void itemWasDeleted(ApplicationMode appMode, boolean profileOnly); - } } diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index a1432fce3b..8144059a39 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -61,7 +61,6 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.SavingTrackHelper; import net.osmand.plus.activities.TabActivity.TabItem; import net.osmand.plus.dashboard.tools.DashFragmentData; -import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.helpers.AndroidUiHelper; import net.osmand.plus.mapcontextmenu.MapContextMenu; import net.osmand.plus.monitoring.OsmandMonitoringPlugin; @@ -101,6 +100,7 @@ import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_A import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_PHOTO_NOTE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_VIDEO_NOTE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.RECORDING_LAYER; +import static net.osmand.plus.ContextMenuAdapter.makeDeleteAction; public class AudioVideoNotesPlugin extends OsmandPlugin { @@ -653,7 +653,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { .setSelected(SHOW_RECORDINGS.get()) .setIcon(R.drawable.ic_action_micro_dark) .setColor(SHOW_RECORDINGS.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(SHOW_RECORDINGS))) + .setItemDeleteAction(makeDeleteAction(SHOW_RECORDINGS)) .setListener(listener).createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 32c4e48086..9818dfafde 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -31,7 +31,6 @@ import net.osmand.CallbackWithObject; import net.osmand.GPXUtilities; import net.osmand.PlatformUtil; import net.osmand.core.android.MapRendererContext; -import net.osmand.plus.ApplicationMode; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuAdapter.ItemClickListener; import net.osmand.plus.ContextMenuAdapter.OnRowItemClick; @@ -104,6 +103,7 @@ import static net.osmand.aidlapi.OsmAndCustomizationConstants.TEXT_SIZE_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.TRANSPORT_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.TRANSPORT_RENDERING_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.WIKIPEDIA_ID; +import static net.osmand.plus.ContextMenuAdapter.makeDeleteAction; import static net.osmand.plus.poi.PoiFiltersHelper.PoiTemplateList; import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_DENSITY_ATTR; import static net.osmand.plus.srtmplugin.SRTMPlugin.CONTOUR_LINES_ATTR; @@ -318,32 +318,6 @@ public class ConfigureMapMenu { } } - public static final class ItemResetListener implements ContextMenuItem.OnItemDeleteAction { - - private List prefs; - - public ItemResetListener(@NonNull List prefs) { - this.prefs = prefs; - } - - @Override - public void itemWasDeleted(@NonNull ApplicationMode appMode, boolean profileOnly) { - for (OsmandSettings.OsmandPreference pref : prefs) { - resetSetting(appMode, pref, profileOnly); - } - } - - private void resetSetting(ApplicationMode appMode, OsmandPreference preference, boolean profileOnly) { - if (profileOnly) { - preference.resetModeToDefault(appMode); - } else { - for (ApplicationMode mode : ApplicationMode.allPossibleValues()) { - preference.resetModeToDefault(mode); - } - } - } - } - private void createLayersItems(List customRules, ContextMenuAdapter adapter, final MapActivity activity, final int themeRes, final boolean nightMode) { final OsmandApplication app = activity.getMyApplication(); @@ -363,7 +337,7 @@ public class ConfigureMapMenu { .setSelected(settings.SHOW_FAVORITES.get()) .setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_fav_dark) - .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.SHOW_FAVORITES))) + .setItemDeleteAction(makeDeleteAction(settings.SHOW_FAVORITES)) .setListener(l) .createItem()); selected = app.getPoiFilters().isShowingAnyPoi(PoiTemplateList.POI); @@ -383,7 +357,7 @@ public class ConfigureMapMenu { .setSelected(settings.SHOW_POI_LABEL.get()) .setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_text_dark) - .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.SHOW_POI_LABEL))) + .setItemDeleteAction(makeDeleteAction(settings.SHOW_POI_LABEL)) .setListener(l).createItem()); /* @@ -422,7 +396,7 @@ public class ConfigureMapMenu { .setSecondaryIcon(R.drawable.ic_action_additional_option) .setSelected(transportSelected) .setColor(transportSelected ? selectedProfileColorRes : ContextMenuItem.INVALID_ID) - .setItemDeleteAction(new ItemResetListener(new ArrayList(transportPrefs))) + .setItemDeleteAction(makeDeleteAction(new ArrayList(transportPrefs))) .setListener(new ContextMenuAdapter.OnRowItemClick() { ArrayAdapter adapter; boolean transportSelectedInner = transportSelected; @@ -588,7 +562,7 @@ public class ConfigureMapMenu { .setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_plugin_wikipedia) .setSecondaryIcon(R.drawable.ic_action_additional_option) - .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.SHOW_WIKIPEDIA_POI))) + .setItemDeleteAction(makeDeleteAction(settings.SHOW_WIKIPEDIA_POI)) .setListener(l).createItem()); selected = settings.SHOW_MAP_MARKERS.get(); @@ -598,7 +572,7 @@ public class ConfigureMapMenu { .setSelected(selected) .setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_flag_dark) - .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.SHOW_MAP_MARKERS))) + .setItemDeleteAction(makeDeleteAction(settings.SHOW_MAP_MARKERS)) .setListener(l).createItem()); adapter.addItem(new ContextMenuItem.ItemBuilder() @@ -606,7 +580,7 @@ public class ConfigureMapMenu { .setTitleId(R.string.layer_map, activity) .setIcon(R.drawable.ic_world_globe_dark) .setDescription(settings.MAP_ONLINE_DATA.get() ? settings.MAP_TILE_SOURCES.get() : null) - .setItemDeleteAction(new ItemResetListener(Arrays.asList(settings.MAP_ONLINE_DATA, settings.MAP_TILE_SOURCES))) + .setItemDeleteAction(makeDeleteAction(settings.MAP_ONLINE_DATA, settings.MAP_TILE_SOURCES)) .setListener(l).createItem()); OsmandPlugin.registerLayerContextMenu(activity.getMapView(), adapter, activity); @@ -650,7 +624,7 @@ public class ConfigureMapMenu { return false; } }) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.RENDERER))) + .setItemDeleteAction(makeDeleteAction(settings.RENDERER)) .createItem()); String description = ""; @@ -707,7 +681,7 @@ public class ConfigureMapMenu { return false; } }) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.DAYNIGHT_MODE))) + .setItemDeleteAction(makeDeleteAction(settings.DAYNIGHT_MODE)) .createItem()); adapter.addItem(new ContextMenuItem.ItemBuilder() @@ -773,7 +747,7 @@ public class ConfigureMapMenu { return false; } }) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.MAP_DENSITY))) + .setItemDeleteAction(makeDeleteAction(settings.MAP_DENSITY)) .createItem()); ContextMenuItem props; @@ -819,7 +793,7 @@ public class ConfigureMapMenu { return false; } }) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.TEXT_SCALE))) + .setItemDeleteAction(makeDeleteAction(settings.TEXT_SCALE)) .createItem()); String localeDescr = activity.getMyApplication().getSettings().MAP_PREFERRED_LOCALE.get(); @@ -919,7 +893,7 @@ public class ConfigureMapMenu { return false; } }) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.MAP_PREFERRED_LOCALE))) + .setItemDeleteAction(makeDeleteAction(settings.MAP_PREFERRED_LOCALE)) .createItem()); props = createProperties(customRules, null, R.string.rendering_category_transport, R.drawable.ic_action_transport_bus, @@ -1107,7 +1081,7 @@ public class ConfigureMapMenu { builder.setSecondaryIcon(R.drawable.ic_action_additional_option); builder.setSelected(selected); } - builder.setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(new ArrayList(prefs))); + builder.setItemDeleteAction(makeDeleteAction(new ArrayList(prefs))); return builder.createItem(); // createCustomRenderingProperties(adapter, activity, ps); } @@ -1444,7 +1418,7 @@ public class ConfigureMapMenu { } }) .setDescription(descr) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(pref))) + .setItemDeleteAction(makeDeleteAction(pref)) .setLayout(R.layout.list_item_single_line_descrition_narrow); if (icon != 0) { builder.setIcon(icon); diff --git a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java index 2796379235..16e7a76882 100644 --- a/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java +++ b/OsmAnd/src/net/osmand/plus/mapillary/MapillaryPlugin.java @@ -31,7 +31,6 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivityLayers; import net.osmand.plus.base.BottomSheetDialogFragment; import net.osmand.plus.dashboard.DashboardOnMap; -import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.views.MapInfoLayer; import net.osmand.plus.views.MapTileLayer; import net.osmand.plus.views.OsmandMapTileView; @@ -40,11 +39,11 @@ import net.osmand.plus.views.mapwidgets.TextInfoWidget; import net.osmand.util.Algorithms; import java.text.MessageFormat; -import java.util.Arrays; import java.util.List; import static android.content.Intent.ACTION_VIEW; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAPILLARY; +import static net.osmand.plus.ContextMenuAdapter.makeDeleteAction; public class MapillaryPlugin extends OsmandPlugin { @@ -187,7 +186,7 @@ public class MapillaryPlugin extends OsmandPlugin { .setColor(settings.SHOW_MAPILLARY.get() ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_mapillary) .setSecondaryIcon(R.drawable.ic_action_additional_option) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.SHOW_MAPILLARY))) + .setItemDeleteAction(makeDeleteAction(settings.SHOW_MAPILLARY)) .setListener(listener) .createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java index 8e4014706c..ff71aace3c 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingPlugin.java @@ -38,7 +38,6 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.TabActivity; import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; import net.osmand.plus.dashboard.tools.DashFragmentData; -import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.myplaces.AvailableGPXFragment; import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo; import net.osmand.plus.myplaces.FavoritesActivity; @@ -51,7 +50,6 @@ import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_CREATE_POI; @@ -61,6 +59,7 @@ import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_M import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_OPEN_OSM_NOTE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_EDITS; import static net.osmand.aidlapi.OsmAndCustomizationConstants.OSM_NOTES; +import static net.osmand.plus.ContextMenuAdapter.makeDeleteAction; public class OsmEditingPlugin extends OsmandPlugin { @@ -366,7 +365,7 @@ public class OsmEditingPlugin extends OsmandPlugin { return true; } }) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.SHOW_OSM_BUGS))) + .setItemDeleteAction(makeDeleteAction(settings.SHOW_OSM_BUGS)) .createItem()); adapter.addItem(new ContextMenuItem.ItemBuilder() @@ -388,7 +387,7 @@ public class OsmEditingPlugin extends OsmandPlugin { return true; } }) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.SHOW_OSM_EDITS))) + .setItemDeleteAction(makeDeleteAction(settings.SHOW_OSM_EDITS)) .createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java index 223159d990..b64a4138b1 100644 --- a/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java +++ b/OsmAnd/src/net/osmand/plus/rastermaps/OsmandRasterMapsPlugin.java @@ -45,7 +45,6 @@ import net.osmand.plus.activities.DownloadTilesDialog; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivityLayers; import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; -import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.dialogs.RasterMapMenu; import net.osmand.plus.quickaction.QuickActionType; import net.osmand.plus.views.MapTileLayer; @@ -54,7 +53,6 @@ import net.osmand.util.Algorithms; import java.io.File; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Map; @@ -62,6 +60,7 @@ import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_D import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_UPDATE_MAP; import static net.osmand.aidlapi.OsmAndCustomizationConstants.OVERLAY_MAP; import static net.osmand.aidlapi.OsmAndCustomizationConstants.UNDERLAY_MAP; +import static net.osmand.plus.ContextMenuAdapter.makeDeleteAction; import static net.osmand.plus.UiUtilities.CompoundButtonType.PROFILE_DEPENDENT; public class OsmandRasterMapsPlugin extends OsmandPlugin { @@ -360,7 +359,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_layer_top) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.MAP_OVERLAY, settings.MAP_OVERLAY_PREVIOUS, settings.MAP_OVERLAY_TRANSPARENCY))) + .setItemDeleteAction(makeDeleteAction(settings.MAP_OVERLAY, settings.MAP_OVERLAY_PREVIOUS, settings.MAP_OVERLAY_TRANSPARENCY)) .createItem()); String underlayMapDescr = settings.MAP_UNDERLAY.get(); if (underlayMapDescr!=null && underlayMapDescr.contains(".sqlitedb")) { @@ -376,7 +375,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_layer_bottom) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.MAP_UNDERLAY, settings.MAP_UNDERLAY_PREVIOUS))) + .setItemDeleteAction(makeDeleteAction(settings.MAP_UNDERLAY, settings.MAP_UNDERLAY_PREVIOUS)) .createItem()); } diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java index 9321aa5c61..fb96b6bcdb 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/SRTMPlugin.java @@ -27,7 +27,6 @@ import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.SettingsActivity; import net.osmand.plus.dashboard.DashboardOnMap; -import net.osmand.plus.dialogs.ConfigureMapMenu; import net.osmand.plus.download.DownloadActivityType; import net.osmand.plus.download.DownloadIndexesThread; import net.osmand.plus.download.DownloadResources; @@ -46,6 +45,7 @@ import java.util.List; import static net.osmand.aidlapi.OsmAndCustomizationConstants.CONTOUR_LINES; import static net.osmand.aidlapi.OsmAndCustomizationConstants.TERRAIN; +import static net.osmand.plus.ContextMenuAdapter.makeDeleteAction; public class SRTMPlugin extends OsmandPlugin { @@ -348,7 +348,7 @@ public class SRTMPlugin extends OsmandPlugin { .setIcon(R.drawable.ic_plugin_srtm) .setDescription(app.getString(R.string.display_zoom_level, descr)) .setColor(contourLinesSelected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.CONTOUR_LINES_ZOOM))) + .setItemDeleteAction(makeDeleteAction(settings.CONTOUR_LINES_ZOOM)) .setSecondaryIcon(R.drawable.ic_action_additional_option) .setListener(listener).createItem()); } @@ -364,7 +364,7 @@ public class SRTMPlugin extends OsmandPlugin { .setColor(terrainEnabled ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setIcon(R.drawable.ic_action_hillshade_dark) .setSecondaryIcon(R.drawable.ic_action_additional_option) - .setItemDeleteAction(new ConfigureMapMenu.ItemResetListener(Arrays.asList(settings.TERRAIN, settings.TERRAIN_MODE))) + .setItemDeleteAction(makeDeleteAction(settings.TERRAIN, settings.TERRAIN_MODE)) .setListener(listener) .createItem() ); From 1b16a9122ec3bc799ebd5a1543406e0535174ac0 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 6 May 2020 14:43:54 +0300 Subject: [PATCH 46/54] Add intent call to execute quick action --- .../osmand/plus/helpers/ExternalApiHelper.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java b/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java index 1012b0d52b..a8bc0af1ab 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/ExternalApiHelper.java @@ -36,6 +36,8 @@ import net.osmand.plus.activities.MapActivity.ShowQuickSearchMode; import net.osmand.plus.audionotes.AudioVideoNotesPlugin; import net.osmand.plus.mapcontextmenu.MapContextMenu; import net.osmand.plus.monitoring.OsmandMonitoringPlugin; +import net.osmand.plus.quickaction.QuickAction; +import net.osmand.plus.quickaction.QuickActionRegistry; import net.osmand.plus.routing.RouteCalculationResult.NextDirectionInfo; import net.osmand.plus.routing.RouteDirectionInfo; import net.osmand.plus.routing.RoutingHelper; @@ -96,6 +98,8 @@ public class ExternalApiHelper { public static final String API_CMD_SAVE_GPX = "save_gpx"; public static final String API_CMD_CLEAR_GPX = "clear_gpx"; + public static final String API_EXECUTE_QUICK_ACTION = "execute_quick_action"; + public static final String API_CMD_SUBSCRIBE_VOICE_NOTIFICATIONS = "subscribe_voice_notifications"; public static final int VERSION_CODE = 1; @@ -137,6 +141,7 @@ public class ExternalApiHelper { public static final String PARAM_CLOSE_AFTER_COMMAND = "close_after_command"; + public static final String PARAM_QUICK_ACTION_NUMBER = "quick_action_number"; public static final ApplicationMode[] VALID_PROFILES = new ApplicationMode[]{ ApplicationMode.CAR, @@ -157,6 +162,7 @@ public class ExternalApiHelper { public static final int RESULT_CODE_ERROR_INVALID_PROFILE = 1005; public static final int RESULT_CODE_ERROR_EMPTY_SEARCH_QUERY = 1006; public static final int RESULT_CODE_ERROR_SEARCH_LOCATION_UNDEFINED = 1007; + public static final int RESULT_CODE_ERROR_QUICK_ACTION_NOT_FOUND = 1008; private MapActivity mapActivity; private int resultCode; @@ -581,6 +587,18 @@ public class ExternalApiHelper { finish = true; } resultCode = Activity.RESULT_OK; + } else if (API_EXECUTE_QUICK_ACTION.equals(cmd)) { + String actionNumberStr = uri.getQueryParameter(PARAM_QUICK_ACTION_NUMBER); + if (!Algorithms.isEmpty(actionNumberStr)) { + int actionNumber = Integer.parseInt(actionNumberStr); + List actionsList = app.getQuickActionRegistry().getFilteredQuickActions(); + if (actionNumber >= 0 && actionNumber < actionsList.size()) { + QuickActionRegistry.produceAction(actionsList.get(actionNumber)).execute(mapActivity); + resultCode = Activity.RESULT_OK; + } else { + resultCode = RESULT_CODE_ERROR_QUICK_ACTION_NOT_FOUND; + } + } } else if (API_CMD_SUBSCRIBE_VOICE_NOTIFICATIONS.equals(cmd)) { // not implemented yet resultCode = RESULT_CODE_ERROR_NOT_IMPLEMENTED; From 8a60632ee855806baaa28563961030fb9f88f670 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 14:54:51 +0300 Subject: [PATCH 47/54] copy ids prefs rom another profile fix --- .../settings/ConfigureMenuItemsFragment.java | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java index 226ac5ef30..6d7ab4562d 100644 --- a/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/ConfigureMenuItemsFragment.java @@ -144,12 +144,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment mainActionItems = savedInstanceState.getStringArrayList(MAIN_ACTIONS_ITEMS_KEY); } } else { - hiddenMenuItems = new ArrayList<>(getSettingForScreen(app, screenType).getModeValue(appMode).getHiddenIds()); - menuItemsOrder = new HashMap<>(); - List orderIds = getSettingForScreen(app, screenType).getModeValue(appMode).getOrderIds(); - for (int i = 0; i < orderIds.size(); i++) { - menuItemsOrder.put(orderIds.get(i), i); - } + initSavedIds(appMode); } nightMode = !app.getSettings().isLightContentForMode(appMode); mInflater = UiUtilities.getInflater(app, nightMode); @@ -157,7 +152,16 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment activity = getActivity(); } - private void initDefaultMainActions() { + private void initSavedIds(ApplicationMode appMode) { + hiddenMenuItems = new ArrayList<>(getSettingForScreen(app, screenType).getModeValue(appMode).getHiddenIds()); + menuItemsOrder = new HashMap<>(); + List orderIds = getSettingForScreen(app, screenType).getModeValue(appMode).getOrderIds(); + for (int i = 0; i < orderIds.size(); i++) { + menuItemsOrder.put(orderIds.get(i), i); + } + } + + private void initMainActionsIds(ApplicationMode appMode) { List defItems = getCustomizableDefaultItems(contextMenuAdapter.getDefaultItems()); OsmandSettings.ContextMenuItemsSettings pref = getSettingForScreen(app, screenType).getModeValue(appMode); if (pref instanceof OsmandSettings.MainContextMenuItemsSettings) { @@ -295,7 +299,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment } } if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { - initDefaultMainActions(); + initMainActionsIds(appMode); } recyclerView.setPadding(0, 0, 0, (int) app.getResources().getDimension(R.dimen.dialog_button_ex_min_width)); rearrangeAdapter = new RearrangeMenuItemsAdapter(app, getAdapterItems(), nightMode); @@ -486,7 +490,7 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment mainActionItems.clear(); } instantiateContextMenuAdapter(); - initDefaultMainActions(); + initMainActionsIds(appMode); rearrangeAdapter.updateItems(getAdapterItems()); } }); @@ -507,10 +511,12 @@ public class ConfigureMenuItemsFragment extends BaseOsmAndFragment @Override public void copyAppModePrefs(ApplicationMode appMode) { if (appMode != null) { - List prefs = new ArrayList<>(); - prefs.add(getSettingForScreen(app, screenType)); - app.getSettings().copyProfilePreferences(appMode, this.appMode, prefs); - dismissFragment(); + isChanged = true; + initSavedIds(appMode); + if (screenType == ScreenType.CONTEXT_MENU_ACTIONS) { + initMainActionsIds(appMode); + } + rearrangeAdapter.updateItems(getAdapterItems()); } } From d24f8d3a75703efc148042c20d2c05b748669db1 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 6 May 2020 15:00:11 +0300 Subject: [PATCH 48/54] Update tracker aidl --- .../net/osmand/aidl/IOsmAndAidlInterface.aidl | 4 ++ .../aidl/quickaction/QuickActionParams.aidl | 3 ++ .../aidl/quickaction/QuickActionParams.java | 47 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionParams.aidl create mode 100644 OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionParams.java diff --git a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl b/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl index b4394d647a..31158b895b 100644 --- a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl +++ b/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl @@ -94,6 +94,8 @@ import net.osmand.aidl.contextmenu.RemoveContextMenuButtonsParams; import net.osmand.aidl.mapmarker.RemoveMapMarkersParams; +import net.osmand.aidl.quickaction.QuickActionParams; + // NOTE: Add new methods at the end of file!!! interface IOsmAndAidlInterface { @@ -849,4 +851,6 @@ interface IOsmAndAidlInterface { boolean getGpxColor(inout GpxColorParams params); boolean importProfile(in ProfileSettingsParams params); + + boolean executeQuickAction(in QuickActionParams params); } diff --git a/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionParams.aidl new file mode 100644 index 0000000000..2a2fca38d8 --- /dev/null +++ b/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionParams.aidl @@ -0,0 +1,3 @@ +package net.osmand.aidl.quickaction; + +parcelable QuickActionParams; \ No newline at end of file diff --git a/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionParams.java b/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionParams.java new file mode 100644 index 0000000000..b9fd262600 --- /dev/null +++ b/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionParams.java @@ -0,0 +1,47 @@ +package net.osmand.aidl.quickaction; + +import android.os.Parcel; +import android.os.Parcelable; + +public class QuickActionParams implements Parcelable { + + private int actionNumber; + + public QuickActionParams(int actionNumber) { + this.actionNumber = actionNumber; + } + + public QuickActionParams(Parcel in) { + readFromParcel(in); + } + + public static final Creator CREATOR = new Creator() { + @Override + public QuickActionParams createFromParcel(Parcel in) { + return new QuickActionParams(in); + } + + @Override + public QuickActionParams[] newArray(int size) { + return new QuickActionParams[size]; + } + }; + + public int getActionNumber() { + return actionNumber; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(actionNumber); + } + + private void readFromParcel(Parcel in) { + actionNumber = in.readInt(); + } + + @Override + public int describeContents() { + return 0; + } +} \ No newline at end of file From a716b949adf157c2a5eab028cb2bc363970b8988 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 6 May 2020 15:02:52 +0300 Subject: [PATCH 49/54] Undo changes for string --- OsmAnd/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 000888d3fd..75898869f8 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -37,7 +37,7 @@ Extra maps Combine POI types from different categories. Tap \"Switch\" to select all, tap the left side for category selection. Search for POI types - Your Google Play account is charged upon purchase of a subscription\nand when it expires (month/three month/year),\nit will not renew itself if canceled before then from your Google Play settings. + Payment will be charged to your Google Play account at the confirmation of purchase.\n\n Subscription automatically renews unless it is canceled before the renewal date. Your account will be charged for renewal period(month/three month/year) only on the renewal date.\n\n You can manage and cancel your subscriptions by going to your Google Play settings. %1$s / %2$s Custom color Lombard From 7aa599e2bb0515c3a3ce767a6be94d44171c31b8 Mon Sep 17 00:00:00 2001 From: veliymolfar Date: Wed, 6 May 2020 15:28:55 +0300 Subject: [PATCH 50/54] refactor --- OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java | 2 +- OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index a6c449a768..5642823f87 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -624,7 +624,7 @@ public class ContextMenuAdapter { }; } - public static OnItemDeleteAction makeDeleteAction(final List prefs) { + public static OnItemDeleteAction makeDeleteAction(final List prefs) { return makeDeleteAction(prefs.toArray(new OsmandPreference[prefs.size()])); } diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index cc9292fdf2..bbf47785d2 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -953,7 +953,7 @@ public class ConfigureMapMenu { builder.setSecondaryIcon(R.drawable.ic_action_additional_option); builder.setSelected(selected); } - builder.setItemDeleteAction(makeDeleteAction(new ArrayList(prefs))); + builder.setItemDeleteAction(makeDeleteAction(prefs)); return builder.createItem(); // createCustomRenderingProperties(adapter, activity, ps); } From 5f18edeac13456a6a5f46560353e307021af8d46 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Wed, 6 May 2020 15:34:43 +0300 Subject: [PATCH 51/54] Fix #8835 --- .../measurementtool/MeasurementToolLayer.java | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java index 607542f28a..bd69a1f094 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java @@ -199,7 +199,7 @@ public class MeasurementToolLayer extends OsmandMapLayer implements ContextMenuL lineAttrs.updatePaints(view.getApplication(), settings, tb); if (editingCtx.getSelectedPointPosition() == -1) { - drawCenterIcon(canvas, tb, tb.getCenterPixelPoint(), settings.isNightMode()); + drawCenterIcon(canvas, tb, settings.isNightMode()); if (measureDistanceToCenterListener != null) { float distance = 0; float bearing = 0; @@ -218,6 +218,8 @@ public class MeasurementToolLayer extends OsmandMapLayer implements ContextMenuL TrkSegment before = editingCtx.getBeforeTrkSegmentLine(); TrkSegment after = editingCtx.getAfterTrkSegmentLine(); + canvas.rotate(-tb.getRotate(), tb.getCenterPixelX(), tb.getCenterPixelY()); + if (before.points.size() > 0 || after.points.size() > 0) { path.reset(); tx.clear(); @@ -225,8 +227,8 @@ public class MeasurementToolLayer extends OsmandMapLayer implements ContextMenuL if (before.points.size() > 0) { WptPt pt = before.points.get(before.points.size() - 1); - float locX = tb.getPixXFromLonNoRot(pt.lon); - float locY = tb.getPixYFromLatNoRot(pt.lat); + float locX = tb.getPixXFromLatLon(pt.lat, pt.lon); + float locY = tb.getPixYFromLatLon(pt.lat, pt.lon); tx.add(locX); ty.add(locY); tx.add((float)tb.getCenterPixelX()); @@ -238,8 +240,8 @@ public class MeasurementToolLayer extends OsmandMapLayer implements ContextMenuL ty.add((float)tb.getCenterPixelY()); } WptPt pt = after.points.get(0); - float locX = tb.getPixXFromLonNoRot(pt.lon); - float locY = tb.getPixYFromLatNoRot(pt.lat); + float locX = tb.getPixXFromLatLon(pt.lat, pt.lon); + float locY = tb.getPixYFromLatLon(pt.lat, pt.lon); tx.add(locX); ty.add(locY); } @@ -255,8 +257,8 @@ public class MeasurementToolLayer extends OsmandMapLayer implements ContextMenuL int drawn = 0; for (int i = 0; i < points.size(); i++) { WptPt pt = points.get(i); - int locX = tb.getPixXFromLonNoRot(pt.lon); - int locY = tb.getPixYFromLatNoRot(pt.lat); + float locX = tb.getPixXFromLatLon(pt.lat, pt.lon); + float locY = tb.getPixYFromLatLon(pt.lat, pt.lon); if (locX >= 0 && locX <= tb.getPixWidth() && locY >= 0 && locY <= tb.getPixHeight()) { drawn++; if (drawn > POINTS_TO_DRAW) { @@ -267,14 +269,14 @@ public class MeasurementToolLayer extends OsmandMapLayer implements ContextMenuL } if (overlapped) { WptPt pt = points.get(0); - int locX = tb.getPixXFromLonNoRot(pt.lon); - int locY = tb.getPixYFromLatNoRot(pt.lat); + float locX = tb.getPixXFromLatLon(pt.lat, pt.lon); + float locY = tb.getPixYFromLatLon(pt.lat, pt.lon); if (locX >= 0 && locX <= tb.getPixWidth() && locY >= 0 && locY <= tb.getPixHeight()) { canvas.drawBitmap(pointIcon, locX - marginPointIconX, locY - marginPointIconY, bitmapPaint); } pt = points.get(points.size() - 1); - locX = tb.getPixXFromLonNoRot(pt.lon); - locY = tb.getPixYFromLatNoRot(pt.lat); + locX = tb.getPixXFromLatLon(pt.lat, pt.lon); + locY = tb.getPixYFromLatLon(pt.lat, pt.lon); if (locX >= 0 && locX <= tb.getPixWidth() && locY >= 0 && locY <= tb.getPixHeight()) { canvas.drawBitmap(pointIcon, locX - marginPointIconX, locY - marginPointIconY, bitmapPaint); @@ -282,8 +284,8 @@ public class MeasurementToolLayer extends OsmandMapLayer implements ContextMenuL } else { for (int i = 0; i < points.size(); i++) { WptPt pt = points.get(i); - int locX = tb.getPixXFromLonNoRot(pt.lon); - int locY = tb.getPixYFromLatNoRot(pt.lat); + float locX = tb.getPixXFromLatLon(pt.lat, pt.lon); + float locY = tb.getPixYFromLatLon(pt.lat, pt.lon); if (locX >= 0 && locX <= tb.getPixWidth() && locY >= 0 && locY <= tb.getPixHeight()) { canvas.drawBitmap(pointIcon, locX - marginPointIconX, locY - marginPointIconY, bitmapPaint); } @@ -295,24 +297,26 @@ public class MeasurementToolLayer extends OsmandMapLayer implements ContextMenuL int locY = tb.getCenterPixelY(); canvas.drawBitmap(applyingPointIcon, locX - marginApplyingPointIconX, locY - marginApplyingPointIconY, bitmapPaint); } + + canvas.rotate(tb.getRotate(), tb.getCenterPixelX(), tb.getCenterPixelY()); } } - private void drawCenterIcon(Canvas canvas, RotatedTileBox tb, QuadPoint center, boolean nightMode) { - canvas.rotate(-tb.getRotate(), center.x, center.y); + private void drawCenterIcon(Canvas canvas, RotatedTileBox tb, boolean nightMode) { + canvas.rotate(-tb.getRotate(), tb.getCenterPixelX(), tb.getCenterPixelY()); if (nightMode) { - canvas.drawBitmap(centerIconNight, center.x - centerIconNight.getWidth() / 2, - center.y - centerIconNight.getHeight() / 2, bitmapPaint); + canvas.drawBitmap(centerIconNight, tb.getCenterPixelX() - centerIconNight.getWidth() / 2f, + tb.getCenterPixelY() - centerIconNight.getHeight() / 2f, bitmapPaint); } else { - canvas.drawBitmap(centerIconDay, center.x - centerIconDay.getWidth() / 2, - center.y - centerIconDay.getHeight() / 2, bitmapPaint); + canvas.drawBitmap(centerIconDay, tb.getCenterPixelX() - centerIconDay.getWidth() / 2f, + tb.getCenterPixelY() - centerIconDay.getHeight() / 2f, bitmapPaint); } - canvas.rotate(tb.getRotate(), center.x, center.y); + canvas.rotate(tb.getRotate(), tb.getCenterPixelX(), tb.getCenterPixelY()); } public WptPt addCenterPoint() { RotatedTileBox tb = view.getCurrentRotatedTileBox(); - LatLon l = tb.getLatLonFromPixel(tb.getCenterPixelX(), tb.getCenterPixelY()); + LatLon l = tb.getCenterLatLon(); WptPt pt = new WptPt(); pt.lat = l.getLatitude(); pt.lon = l.getLongitude(); From ab7b0bf57e9e89b1e3e03577fec0a1bb48afb94c Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 6 May 2020 15:37:17 +0300 Subject: [PATCH 52/54] Add quickActionsInfo to aidl --- .../osmand/aidlapi/IOsmAndAidlInterface.aidl | 7 +- .../quickaction/QuickActionInfoParams.aidl | 3 + .../quickaction/QuickActionInfoParams.java | 69 ++++++++++++++++++ .../net/osmand/aidl/IOsmAndAidlInterface.aidl | 3 + OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java | 40 +++++++++++ .../net/osmand/aidl/OsmandAidlService.java | 12 ++++ .../net/osmand/aidl/OsmandAidlServiceV2.java | 12 ++++ .../quickaction/QuickActionInfoParams.aidl | 3 + .../quickaction/QuickActionInfoParams.java | 71 +++++++++++++++++++ 9 files changed, 218 insertions(+), 2 deletions(-) create mode 100644 OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionInfoParams.aidl create mode 100644 OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionInfoParams.java create mode 100644 OsmAnd/src/net/osmand/aidl/quickaction/QuickActionInfoParams.aidl create mode 100644 OsmAnd/src/net/osmand/aidl/quickaction/QuickActionInfoParams.java diff --git a/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl b/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl index 095b92d241..45bf3907f7 100644 --- a/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl +++ b/OsmAnd-api/src/net/osmand/aidlapi/IOsmAndAidlInterface.aidl @@ -94,6 +94,7 @@ import net.osmand.aidlapi.contextmenu.RemoveContextMenuButtonsParams; import net.osmand.aidlapi.mapmarker.RemoveMapMarkersParams; import net.osmand.aidlapi.quickaction.QuickActionParams; +import net.osmand.aidlapi.quickaction.QuickActionInfoParams; // NOTE: Add new methods at the end of file!!! @@ -819,10 +820,10 @@ interface IOsmAndAidlInterface { * */ boolean setCustomization(in CustomizationInfoParams params); - + /** * Method to register for Voice Router voice messages during navigation. Notifies user about voice messages. - * + * * @params subscribeToUpdates (boolean) - boolean flag to subscribe or unsubscribe from messages * @params callbackId (long) - id of callback, needed to unsubscribe from messages * @params callback (IOsmAndAidlCallback) - callback to notify user on voice message @@ -838,4 +839,6 @@ interface IOsmAndAidlInterface { boolean importProfile(in ProfileSettingsParams params); boolean executeQuickAction(in QuickActionParams params); + + boolean getQuickActionsInfo(out List quickActions); } \ No newline at end of file diff --git a/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionInfoParams.aidl b/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionInfoParams.aidl new file mode 100644 index 0000000000..cc755f9022 --- /dev/null +++ b/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionInfoParams.aidl @@ -0,0 +1,3 @@ +package net.osmand.aidlapi.quickaction; + +parcelable QuickActionInfoParams; \ No newline at end of file diff --git a/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionInfoParams.java b/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionInfoParams.java new file mode 100644 index 0000000000..c36b8170c6 --- /dev/null +++ b/OsmAnd-api/src/net/osmand/aidlapi/quickaction/QuickActionInfoParams.java @@ -0,0 +1,69 @@ +package net.osmand.aidlapi.quickaction; + +import android.os.Bundle; +import android.os.Parcel; + +import net.osmand.aidlapi.AidlParams; + +public class QuickActionInfoParams extends AidlParams { + + private int actionId; + private String name; + private String actionType; + private String params; + + public QuickActionInfoParams(int actionId, String name, String actionType, String params) { + this.actionId = actionId; + this.name = name; + this.actionType = actionType; + this.params = params; + } + + public QuickActionInfoParams(Parcel in) { + readFromParcel(in); + } + + public static final Creator CREATOR = new Creator() { + @Override + public QuickActionInfoParams createFromParcel(Parcel in) { + return new QuickActionInfoParams(in); + } + + @Override + public QuickActionInfoParams[] newArray(int size) { + return new QuickActionInfoParams[size]; + } + }; + + public int getActionId() { + return actionId; + } + + public String getName() { + return name; + } + + public String getActionType() { + return actionType; + } + + public String getParams() { + return params; + } + + @Override + public void writeToBundle(Bundle bundle) { + bundle.putInt("actionId", actionId); + bundle.putString("name", name); + bundle.putString("actionType", actionType); + bundle.putString("params", params); + } + + @Override + protected void readFromBundle(Bundle bundle) { + actionId = bundle.getInt("actionNumber"); + name = bundle.getString("name"); + actionType = bundle.getString("actionType"); + params = bundle.getString("params"); + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl b/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl index c5603a5914..91410a35c7 100644 --- a/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl +++ b/OsmAnd/src/net/osmand/aidl/IOsmAndAidlInterface.aidl @@ -95,6 +95,7 @@ import net.osmand.aidl.contextmenu.RemoveContextMenuButtonsParams; import net.osmand.aidl.mapmarker.RemoveMapMarkersParams; import net.osmand.aidl.quickaction.QuickActionParams; +import net.osmand.aidl.quickaction.QuickActionInfoParams; // NOTE: Add new methods at the end of file!!! @@ -853,4 +854,6 @@ interface IOsmAndAidlInterface { boolean importProfile(in ProfileSettingsParams params); boolean executeQuickAction(in QuickActionParams params); + + boolean getQuickActionsInfo(out List quickActions); } diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java index e2b91edc81..810a9a3d27 100644 --- a/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java +++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlApi.java @@ -20,6 +20,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + import net.osmand.AndroidUtils; import net.osmand.CallbackWithObject; import net.osmand.GPXUtilities; @@ -32,6 +35,7 @@ import net.osmand.aidl.gpx.AGpxFileDetails; import net.osmand.aidl.gpx.ASelectedGpxFile; import net.osmand.aidl.navigation.ADirectionInfo; import net.osmand.aidl.navigation.OnVoiceNavigationParams; +import net.osmand.aidl.quickaction.QuickActionInfoParams; import net.osmand.aidl.tiles.ASqliteDbFile; import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; @@ -92,9 +96,11 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.ref.WeakReference; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -2142,6 +2148,40 @@ public class OsmandAidlApi { return true; } + public boolean getQuickActionsInfo(List quickActions) { + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + + List actionsList = app.getQuickActionRegistry().getFilteredQuickActions(); + for (int i = 0; i < actionsList.size(); i++) { + QuickAction action = actionsList.get(i); + String name = action.getName(app); + String actionType = action.getActionType().getStringId(); + String params = gson.toJson(action.getParams(), type); + + quickActions.add(new QuickActionInfoParams(i, name, actionType, params)); + } + return true; + } + + public boolean getQuickActionsInfoV2(List quickActions) { + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + + List actionsList = app.getQuickActionRegistry().getFilteredQuickActions(); + for (int i = 0; i < actionsList.size(); i++) { + QuickAction action = actionsList.get(i); + String name = action.getName(app); + String actionType = action.getActionType().getStringId(); + String params = gson.toJson(action.getParams(), type); + + quickActions.add(new net.osmand.aidlapi.quickaction.QuickActionInfoParams(i, name, actionType, params)); + } + return true; + } + private class FileCopyInfo { long startTime; long lastAccessTime; diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java index 69c46c0db6..ea16a30d2f 100644 --- a/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java +++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlService.java @@ -80,6 +80,7 @@ import net.osmand.aidl.note.StartVideoRecordingParams; import net.osmand.aidl.note.StopRecordingParams; import net.osmand.aidl.note.TakePhotoNoteParams; import net.osmand.aidl.plugins.PluginParams; +import net.osmand.aidl.quickaction.QuickActionInfoParams; import net.osmand.aidl.quickaction.QuickActionParams; import net.osmand.aidl.search.SearchParams; import net.osmand.aidl.search.SearchResult; @@ -1314,6 +1315,17 @@ public class OsmandAidlService extends Service implements AidlCallbackListener { return false; } } + + @Override + public boolean getQuickActionsInfo(List quickActions) { + try { + OsmandAidlApi api = getApi("getQuickActionsInfo"); + return api != null && api.getQuickActionsInfo(quickActions); + } catch (Exception e) { + handleException(e); + return false; + } + } }; private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) { diff --git a/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java b/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java index 6d0f545d34..9ce3378677 100644 --- a/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java +++ b/OsmAnd/src/net/osmand/aidl/OsmandAidlServiceV2.java @@ -81,6 +81,7 @@ import net.osmand.aidlapi.note.StartVideoRecordingParams; import net.osmand.aidlapi.note.StopRecordingParams; import net.osmand.aidlapi.note.TakePhotoNoteParams; import net.osmand.aidlapi.plugins.PluginParams; +import net.osmand.aidlapi.quickaction.QuickActionInfoParams; import net.osmand.aidlapi.quickaction.QuickActionParams; import net.osmand.aidlapi.search.SearchParams; import net.osmand.aidlapi.search.SearchResult; @@ -1247,6 +1248,17 @@ public class OsmandAidlServiceV2 extends Service implements AidlCallbackListener return false; } } + + @Override + public boolean getQuickActionsInfo(List quickActions) { + try { + OsmandAidlApi api = getApi("getQuickActionsInfo"); + return api != null && api.getQuickActionsInfoV2(quickActions); + } catch (Exception e) { + handleException(e); + return false; + } + } }; private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) { diff --git a/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionInfoParams.aidl b/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionInfoParams.aidl new file mode 100644 index 0000000000..cd372308ad --- /dev/null +++ b/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionInfoParams.aidl @@ -0,0 +1,3 @@ +package net.osmand.aidl.quickaction; + +parcelable QuickActionInfoParams; \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionInfoParams.java b/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionInfoParams.java new file mode 100644 index 0000000000..c5bbf91476 --- /dev/null +++ b/OsmAnd/src/net/osmand/aidl/quickaction/QuickActionInfoParams.java @@ -0,0 +1,71 @@ +package net.osmand.aidl.quickaction; + +import android.os.Parcel; +import android.os.Parcelable; + +public class QuickActionInfoParams implements Parcelable { + + private int actionId; + private String name; + private String actionType; + private String params; + + public QuickActionInfoParams(int actionId, String name, String actionType, String params) { + this.actionId = actionId; + this.name = name; + this.actionType = actionType; + this.params = params; + } + + public QuickActionInfoParams(Parcel in) { + readFromParcel(in); + } + + public static final Creator CREATOR = new Creator() { + @Override + public QuickActionInfoParams createFromParcel(Parcel in) { + return new QuickActionInfoParams(in); + } + + @Override + public QuickActionInfoParams[] newArray(int size) { + return new QuickActionInfoParams[size]; + } + }; + + public int getActionId() { + return actionId; + } + + public String getName() { + return name; + } + + public String getActionType() { + return actionType; + } + + public String getParams() { + return params; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(actionId); + out.writeString(name); + out.writeString(actionType); + out.writeString(params); + } + + private void readFromParcel(Parcel in) { + actionId = in.readInt(); + name = in.readString(); + actionType = in.readString(); + params = in.readString(); + } + + @Override + public int describeContents() { + return 0; + } +} \ No newline at end of file From dc4f41c472ace7087a9ce3cf57653c15afde437a Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 6 May 2020 16:57:19 +0300 Subject: [PATCH 53/54] Update tracker aidl api --- .../net/osmand/aidl/IOsmAndAidlInterface.aidl | 3 + .../quickaction/QuickActionInfoParams.aidl | 3 + .../quickaction/QuickActionInfoParams.java | 71 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionInfoParams.aidl create mode 100644 OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionInfoParams.java diff --git a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl b/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl index 31158b895b..15dd230eb8 100644 --- a/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl +++ b/OsmAnd-telegram/src/net/osmand/aidl/IOsmAndAidlInterface.aidl @@ -95,6 +95,7 @@ import net.osmand.aidl.contextmenu.RemoveContextMenuButtonsParams; import net.osmand.aidl.mapmarker.RemoveMapMarkersParams; import net.osmand.aidl.quickaction.QuickActionParams; +import net.osmand.aidl.quickaction.QuickActionInfoParams; // NOTE: Add new methods at the end of file!!! @@ -853,4 +854,6 @@ interface IOsmAndAidlInterface { boolean importProfile(in ProfileSettingsParams params); boolean executeQuickAction(in QuickActionParams params); + + boolean getQuickActionsInfo(out List quickActions); } diff --git a/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionInfoParams.aidl b/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionInfoParams.aidl new file mode 100644 index 0000000000..cd372308ad --- /dev/null +++ b/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionInfoParams.aidl @@ -0,0 +1,3 @@ +package net.osmand.aidl.quickaction; + +parcelable QuickActionInfoParams; \ No newline at end of file diff --git a/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionInfoParams.java b/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionInfoParams.java new file mode 100644 index 0000000000..c5bbf91476 --- /dev/null +++ b/OsmAnd-telegram/src/net/osmand/aidl/quickaction/QuickActionInfoParams.java @@ -0,0 +1,71 @@ +package net.osmand.aidl.quickaction; + +import android.os.Parcel; +import android.os.Parcelable; + +public class QuickActionInfoParams implements Parcelable { + + private int actionId; + private String name; + private String actionType; + private String params; + + public QuickActionInfoParams(int actionId, String name, String actionType, String params) { + this.actionId = actionId; + this.name = name; + this.actionType = actionType; + this.params = params; + } + + public QuickActionInfoParams(Parcel in) { + readFromParcel(in); + } + + public static final Creator CREATOR = new Creator() { + @Override + public QuickActionInfoParams createFromParcel(Parcel in) { + return new QuickActionInfoParams(in); + } + + @Override + public QuickActionInfoParams[] newArray(int size) { + return new QuickActionInfoParams[size]; + } + }; + + public int getActionId() { + return actionId; + } + + public String getName() { + return name; + } + + public String getActionType() { + return actionType; + } + + public String getParams() { + return params; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(actionId); + out.writeString(name); + out.writeString(actionType); + out.writeString(params); + } + + private void readFromParcel(Parcel in) { + actionId = in.readInt(); + name = in.readString(); + actionType = in.readString(); + params = in.readString(); + } + + @Override + public int describeContents() { + return 0; + } +} \ No newline at end of file From 83e6deba75b6007bc3dac7b445830059c279f4a8 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 6 May 2020 17:46:29 +0300 Subject: [PATCH 54/54] Fix #8092 --- .../osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java index d6dea3f496..93fb650cd7 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java @@ -29,6 +29,7 @@ import net.osmand.Location; import net.osmand.binary.RouteDataObject; import net.osmand.data.LatLon; import net.osmand.data.RotatedTileBox; +import net.osmand.plus.ApplicationMode; import net.osmand.plus.MapMarkersHelper.MapMarker; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmAndLocationProvider; @@ -1268,8 +1269,9 @@ public class RouteInfoWidgetsFactory { boolean cams = settings.SHOW_CAMERAS.get(); boolean peds = settings.SHOW_PEDESTRIAN.get(); boolean tunnels = settings.SHOW_TUNNELS.get(); + boolean browseMap = settings.APPLICATION_MODE.get() == ApplicationMode.DEFAULT; boolean visible = false; - if ((rh.isFollowingMode() || trackingUtilities.isMapLinkedToLocation()) + if ((rh.isFollowingMode() || trackingUtilities.isMapLinkedToLocation() && !browseMap) && showRoutingAlarms && (trafficWarnings || cams)) { AlarmInfo alarm; if(rh.isFollowingMode() && !rh.isDeviatedFromRoute() && (rh.getCurrentGPXRoute() == null || rh.isCurrentGPXRouteV2())) {