diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 47e5cf8f0c..9612030b0e 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -2886,6 +2886,10 @@ Tapping this action button adds a POI in the middle of the screen. Tapping this action button disables or enables voice guidance during navigation. Tapping this action button adds a parking location in the middle of the screen. + Tapping this action button switch between Day and Night modes for OsmAnd + Day Mode + Night Mode + Switch Day/Night mode Show an interim dialog " is saved to " Place diff --git a/OsmAnd/src/net/osmand/plus/GPXUtilities.java b/OsmAnd/src/net/osmand/plus/GPXUtilities.java index ccc1c3b33f..337155903c 100644 --- a/OsmAnd/src/net/osmand/plus/GPXUtilities.java +++ b/OsmAnd/src/net/osmand/plus/GPXUtilities.java @@ -1562,18 +1562,16 @@ public class GPXUtilities { if (tok == XmlPullParser.START_TAG) { Object parse = parserState.peek(); String tag = parser.getName(); - if (extensionReadMode && parse instanceof GPXExtensions) { + if (extensionReadMode && parse != null) { String value = readText(parser, tag); if (value != null) { ((GPXExtensions) parse).getExtensionsToWrite().put(tag.toLowerCase(), value); if (tag.equals("speed") && parse instanceof WptPt) { try { ((WptPt) parse).speed = Float.parseFloat(value); - } catch (NumberFormatException e) { - } + } catch (NumberFormatException e) {} } } - } else if (parse instanceof GPXExtensions && tag.equals("extensions")) { extensionReadMode = true; } else { diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java index 27fc4c3907..c65e7296a5 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java @@ -270,15 +270,14 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA } - - public void sortByDefault() { + public void sortByDefault(boolean isSortedByDistance) { Location loc = app.getLocationProvider().getLastStaleKnownLocation(); LatLon map = app.getMapViewTrackingUtilities().getMapLocation(); - if (loc != null) { + if (loc != null && isSortedByDistance) { sortByDistance(new LatLon(loc.getLatitude(), loc.getLongitude())); - } else if(map != null){ + } else if (map != null && isSortedByDistance){ sortByDistance(map); - } else{ + } else { sortByName(); } } diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 596501d99e..9aacc10a4a 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -1399,7 +1399,10 @@ public class ConfigureMapMenu { public static int parseTrackColor(RenderingRulesStorage renderer, String colorName) { int defaultColor = -1; - RenderingRule gpxRule = renderer.getRenderingAttributeRule("gpx"); + RenderingRule gpxRule = null; + if(renderer!=null) { + gpxRule = renderer.getRenderingAttributeRule("gpx"); + } if (gpxRule != null && gpxRule.getIfElseChildren().size() > 0) { List rules = renderer.getRenderingAttributeRule("gpx").getIfElseChildren().get(0).getIfElseChildren(); for (RenderingRule r : rules) { diff --git a/OsmAnd/src/net/osmand/plus/dialogs/FavoriteDialogs.java b/OsmAnd/src/net/osmand/plus/dialogs/FavoriteDialogs.java index df55ef2332..0f783844ac 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/FavoriteDialogs.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/FavoriteDialogs.java @@ -55,7 +55,7 @@ public class FavoriteDialogs { } }; - favouritesAdapter.sortByDefault(); + favouritesAdapter.sortByDefault(true); if(points.size() == 0){ Toast.makeText(activity, activity.getString(R.string.fav_points_not_exist), Toast.LENGTH_SHORT).show(); @@ -208,7 +208,7 @@ public class FavoriteDialogs { final OnDismissListener dismissListener, final Dialog[] dialogHolder, final boolean sortByDist) { ListView listView = new ListView(uiContext); AlertDialog.Builder bld = new AlertDialog.Builder(uiContext); - favouritesAdapter.sortByDefault(); + favouritesAdapter.sortByDefault(sortByDist); listView.setAdapter(favouritesAdapter); listView.setOnItemClickListener(click); bld.setPositiveButton(sortByDist ? R.string.sort_by_name : diff --git a/OsmAnd/src/net/osmand/plus/helpers/kml2gpx.xslt b/OsmAnd/src/net/osmand/plus/helpers/kml2gpx.xslt index 2d5b32048a..9380d6918f 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/kml2gpx.xslt +++ b/OsmAnd/src/net/osmand/plus/helpers/kml2gpx.xslt @@ -66,6 +66,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 27ed59879e..acf986a1c3 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -889,7 +889,6 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo boolean needMapAdjust = currentMenuState != newMenuState && newMenuState != MenuState.FULL_SCREEN; if (newMenuState != currentMenuState) { - restoreCustomMapRatio(); menu.updateControlsVisibility(true); doBeforeMenuStateChange(currentMenuState, newMenuState); toggleDetailsHideButton(); @@ -1245,7 +1244,6 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo @Override public void onPause() { - restoreCustomMapRatio(); if (view != null) { ViewParent parent = view.getParent(); diff --git a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionFactory.java b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionFactory.java index dfcf8551c0..8620092f04 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionFactory.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionFactory.java @@ -35,6 +35,7 @@ import net.osmand.plus.quickaction.actions.NewAction; import net.osmand.plus.quickaction.actions.ShowHideFavoritesAction; import net.osmand.plus.quickaction.actions.ShowHideOSMBugAction; import net.osmand.plus.quickaction.actions.ShowHidePoiAction; +import net.osmand.plus.quickaction.actions.DayNightModeAction; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import java.lang.reflect.Type; @@ -116,6 +117,9 @@ public class QuickActionFactory { quickActions.add(new MapUnderlayAction()); } + quickActions.add(new DayNightModeAction()); + + QuickAction voice = new NavVoiceAction(); QuickAction addDestination = new NavAddDestinationAction(); QuickAction addFirstIntermediate = new NavAddFirstIntermediateAction(); @@ -232,6 +236,9 @@ public class QuickActionFactory { case NavResumePauseAction.TYPE: return new NavResumePauseAction(); + case DayNightModeAction.TYPE: + return new DayNightModeAction(); + default: return new QuickAction(); } @@ -313,6 +320,9 @@ public class QuickActionFactory { case NavResumePauseAction.TYPE: return new NavResumePauseAction(quickAction); + case DayNightModeAction.TYPE: + return new DayNightModeAction(quickAction); + default: return quickAction; } @@ -394,6 +404,9 @@ public class QuickActionFactory { case NavResumePauseAction.TYPE: return R.drawable.ic_play_dark; + case DayNightModeAction.TYPE: + return R.drawable.ic_action_map_day; + default: return R.drawable.ic_action_plus; } @@ -457,6 +470,9 @@ public class QuickActionFactory { case MapUnderlayAction.TYPE: return R.string.quick_action_map_underlay; + case DayNightModeAction.TYPE: + return R.string.quick_action_day_night_switch_mode; + case NavAddDestinationAction.TYPE: return R.string.quick_action_add_destination; @@ -500,6 +516,7 @@ public class QuickActionFactory { case ShowHideOSMBugAction.TYPE: case NavStartStopAction.TYPE: case NavResumePauseAction.TYPE: + case DayNightModeAction.TYPE: return false; default: diff --git a/OsmAnd/src/net/osmand/plus/quickaction/actions/DayNightModeAction.java b/OsmAnd/src/net/osmand/plus/quickaction/actions/DayNightModeAction.java new file mode 100644 index 0000000000..4441573263 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/quickaction/actions/DayNightModeAction.java @@ -0,0 +1,76 @@ +package net.osmand.plus.quickaction.actions; + +import android.content.Context; +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.OsmandSettings; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.quickaction.QuickAction; + +public class DayNightModeAction extends QuickAction { + public static final int TYPE = 27; + + public DayNightModeAction() {super(TYPE);} + + public DayNightModeAction(QuickAction quickAction) {super(quickAction);} + + @Override + public void execute(MapActivity activity) { + switch (activity.getMyApplication().getSettings().DAYNIGHT_MODE.get()){ + case DAY: { + activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.NIGHT); + break; + } + case NIGHT: { + activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.DAY); + break; + } + case AUTO: { + activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.DAY); + break; + } + case SENSOR: { + activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.DAY); + break; + } + } + } + + @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_switch_day_night_descr); + + parent.addView(view); + } + + @Override + public int getIconRes(Context context) { + if(context instanceof MapActivity) { + switch (((MapActivity) context).getMyApplication().getSettings().DAYNIGHT_MODE.get()) { + case NIGHT: { + return R.drawable.ic_action_map_night; + } + case AUTO: { + return R.drawable.ic_action_map_sunst; + } + case SENSOR: { + return R.drawable.ic_action_map_light_sensor; + } + } + } + return R.drawable.ic_action_map_day; + } + + @Override + public String getActionText(OsmandApplication application) { + return application.getSettings().DAYNIGHT_MODE.get().toHumanString(application) + " Mode"; + } +} diff --git a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java index 69a64a7687..521a72a120 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java @@ -420,8 +420,8 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe @Override public void onActionSelected(QuickAction action) { - QuickActionFactory.produceAction(action).execute(mapActivity); setLayerState(false); + QuickActionFactory.produceAction(action).execute(mapActivity); } public PointF getMovableCenterPoint(RotatedTileBox tb) { diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java index 0edd5072d6..163c41fd1d 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java @@ -1180,8 +1180,6 @@ public class RouteInfoWidgetsFactory { // update cache if (view.isZooming()) { visible = false; - } else if (!orientationPortrait && ma.getRoutingHelper().isRoutePlanningMode()) { - visible = false; } else if (!tb.isZoomAnimated() && (tb.getZoom() != cacheRulerZoom || Math.abs(tb.getCenterTileX() - cacheRulerTileX) > 1 || Math .abs(tb.getCenterTileY() - cacheRulerTileY) > 1 || mapDensity.get() != cacheMapDensity) && tb.getPixWidth() > 0 && maxWidth > 0) {