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) {