Feature request (Quick action: Day/night mode #6330 )

This commit is contained in:
madwasp79 2019-01-23 17:46:21 +02:00
parent 5c94138b93
commit 713a3b9d4b
4 changed files with 98 additions and 1 deletions

View file

@ -2886,6 +2886,10 @@
<string name="quick_action_add_poi_descr">Tapping this action button adds a POI in the middle of the screen.</string> <string name="quick_action_add_poi_descr">Tapping this action button adds a POI in the middle of the screen.</string>
<string name="quick_action_navigation_voice_descr">Tapping this action button disables or enables voice guidance during navigation.</string> <string name="quick_action_navigation_voice_descr">Tapping this action button disables or enables voice guidance during navigation.</string>
<string name="quick_action_add_parking_descr">Tapping this action button adds a parking location in the middle of the screen.</string> <string name="quick_action_add_parking_descr">Tapping this action button adds a parking location in the middle of the screen.</string>
<string name="quick_action_switch_day_night_descr">Tapping this action button switch between Day and Night modes for OsmAnd</string>
<string name="quick_action_switch_day_mode">Day Mode</string>
<string name="quick_action_switch_night_mode">Night Mode</string>
<string name="quick_action_day_night_switch_mode">Switch Day/Night mode</string>
<string name="quick_action_interim_dialog">Show an interim dialog</string> <string name="quick_action_interim_dialog">Show an interim dialog</string>
<string name="favorite_autofill_toast_text">" is saved to "</string> <string name="favorite_autofill_toast_text">" is saved to "</string>
<string name="favorite_empty_place_name">Place</string> <string name="favorite_empty_place_name">Place</string>

View file

@ -35,6 +35,7 @@ import net.osmand.plus.quickaction.actions.NewAction;
import net.osmand.plus.quickaction.actions.ShowHideFavoritesAction; import net.osmand.plus.quickaction.actions.ShowHideFavoritesAction;
import net.osmand.plus.quickaction.actions.ShowHideOSMBugAction; import net.osmand.plus.quickaction.actions.ShowHideOSMBugAction;
import net.osmand.plus.quickaction.actions.ShowHidePoiAction; import net.osmand.plus.quickaction.actions.ShowHidePoiAction;
import net.osmand.plus.quickaction.actions.DayNightModeAction;
import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin;
import java.lang.reflect.Type; import java.lang.reflect.Type;
@ -116,6 +117,9 @@ public class QuickActionFactory {
quickActions.add(new MapUnderlayAction()); quickActions.add(new MapUnderlayAction());
} }
quickActions.add(new DayNightModeAction());
QuickAction voice = new NavVoiceAction(); QuickAction voice = new NavVoiceAction();
QuickAction addDestination = new NavAddDestinationAction(); QuickAction addDestination = new NavAddDestinationAction();
QuickAction addFirstIntermediate = new NavAddFirstIntermediateAction(); QuickAction addFirstIntermediate = new NavAddFirstIntermediateAction();
@ -232,6 +236,9 @@ public class QuickActionFactory {
case NavResumePauseAction.TYPE: case NavResumePauseAction.TYPE:
return new NavResumePauseAction(); return new NavResumePauseAction();
case DayNightModeAction.TYPE:
return new DayNightModeAction();
default: default:
return new QuickAction(); return new QuickAction();
} }
@ -313,6 +320,9 @@ public class QuickActionFactory {
case NavResumePauseAction.TYPE: case NavResumePauseAction.TYPE:
return new NavResumePauseAction(quickAction); return new NavResumePauseAction(quickAction);
case DayNightModeAction.TYPE:
return new DayNightModeAction(quickAction);
default: default:
return quickAction; return quickAction;
} }
@ -394,6 +404,9 @@ public class QuickActionFactory {
case NavResumePauseAction.TYPE: case NavResumePauseAction.TYPE:
return R.drawable.ic_play_dark; return R.drawable.ic_play_dark;
case DayNightModeAction.TYPE:
return R.drawable.ic_action_map_day;
default: default:
return R.drawable.ic_action_plus; return R.drawable.ic_action_plus;
} }
@ -457,6 +470,9 @@ public class QuickActionFactory {
case MapUnderlayAction.TYPE: case MapUnderlayAction.TYPE:
return R.string.quick_action_map_underlay; return R.string.quick_action_map_underlay;
case DayNightModeAction.TYPE:
return R.string.quick_action_day_night_switch_mode;
case NavAddDestinationAction.TYPE: case NavAddDestinationAction.TYPE:
return R.string.quick_action_add_destination; return R.string.quick_action_add_destination;
@ -500,6 +516,7 @@ public class QuickActionFactory {
case ShowHideOSMBugAction.TYPE: case ShowHideOSMBugAction.TYPE:
case NavStartStopAction.TYPE: case NavStartStopAction.TYPE:
case NavResumePauseAction.TYPE: case NavResumePauseAction.TYPE:
case DayNightModeAction.TYPE:
return false; return false;
default: default:

View file

@ -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";
}
}

View file

@ -420,8 +420,8 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
@Override @Override
public void onActionSelected(QuickAction action) { public void onActionSelected(QuickAction action) {
QuickActionFactory.produceAction(action).execute(mapActivity);
setLayerState(false); setLayerState(false);
QuickActionFactory.produceAction(action).execute(mapActivity);
} }
public PointF getMovableCenterPoint(RotatedTileBox tb) { public PointF getMovableCenterPoint(RotatedTileBox tb) {