From 713a3b9d4bf84abb94cfc09c22fc411e3bd779c5 Mon Sep 17 00:00:00 2001 From: madwasp79 Date: Wed, 23 Jan 2019 17:46:21 +0200 Subject: [PATCH] Feature request (Quick action: Day/night mode #6330 ) --- OsmAnd/res/values/strings.xml | 4 + .../plus/quickaction/QuickActionFactory.java | 17 +++++ .../actions/DayNightModeAction.java | 76 +++++++++++++++++++ .../plus/views/MapQuickActionLayer.java | 2 +- 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 OsmAnd/src/net/osmand/plus/quickaction/actions/DayNightModeAction.java 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/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) {