Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
8d95e7569c
19 changed files with 356 additions and 219 deletions
|
@ -9,6 +9,8 @@
|
||||||
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
||||||
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
||||||
-->
|
-->
|
||||||
|
<string name="app_modes_choose_descr">Choose available application modes in application</string>
|
||||||
|
<string name="app_modes_choose">Application Modes</string>
|
||||||
<string name="map_widget_appearance">Remaining elements:</string>
|
<string name="map_widget_appearance">Remaining elements:</string>
|
||||||
<string name="map_widget_map_rendering">Map rendering:</string>
|
<string name="map_widget_map_rendering">Map rendering:</string>
|
||||||
<string name="app_mode_hiking">Hiking</string>
|
<string name="app_mode_hiking">Hiking</string>
|
||||||
|
|
|
@ -3,14 +3,20 @@ package net.osmand.plus;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import net.osmand.StateChangedListener;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
|
|
||||||
public class ApplicationMode {
|
public class ApplicationMode {
|
||||||
|
private static Map<String, Set<ApplicationMode>> widgets = new LinkedHashMap<String, Set<ApplicationMode>>();
|
||||||
private static List<ApplicationMode> values = new ArrayList<ApplicationMode>();
|
private static List<ApplicationMode> values = new ArrayList<ApplicationMode>();
|
||||||
|
private static List<ApplicationMode> cachedFilteredValues = new ArrayList<ApplicationMode>();
|
||||||
|
private static boolean listenerRegistered = false;
|
||||||
/*
|
/*
|
||||||
* DEFAULT("Browse map"), CAR("Car"), BICYCLE("Bicycle"), PEDESTRIAN("Pedestrian");
|
* DEFAULT("Browse map"), CAR("Car"), BICYCLE("Bicycle"), PEDESTRIAN("Pedestrian");
|
||||||
*/
|
*/
|
||||||
|
@ -26,18 +32,51 @@ public class ApplicationMode {
|
||||||
public static final ApplicationMode PEDESTRIAN = create(R.string.app_mode_pedestrian, "pedestrian").speed(1.5f, 5).
|
public static final ApplicationMode PEDESTRIAN = create(R.string.app_mode_pedestrian, "pedestrian").speed(1.5f, 5).
|
||||||
icon(R.drawable.ic_pedestrian, R.drawable.ic_action_pedestrian_light, R.drawable.ic_action_parking_dark).reg();
|
icon(R.drawable.ic_pedestrian, R.drawable.ic_action_pedestrian_light, R.drawable.ic_action_parking_dark).reg();
|
||||||
|
|
||||||
// public static final ApplicationMode AIRCRAFT = create(R.string.app_mode_aircraft, "aircraft").speed(40f, 100).carLocation().
|
public static final ApplicationMode AIRCRAFT = create(R.string.app_mode_aircraft, "aircraft").speed(40f, 100).carLocation().
|
||||||
// icon(R.drawable.ic_aircraft, R.drawable.ic_action_aircraft_light, R.drawable.ic_action_aircraft_dark).reg();
|
icon(R.drawable.ic_aircraft, R.drawable.ic_action_aircraft_light, R.drawable.ic_action_aircraft_dark).reg();
|
||||||
//
|
|
||||||
// public static final ApplicationMode BOAT = create(R.string.app_mode_boat, "boat").speed(5.5f, 20).carLocation().
|
public static final ApplicationMode BOAT = create(R.string.app_mode_boat, "boat").speed(5.5f, 20).carLocation().
|
||||||
// icon(R.drawable.ic_sail_boat, R.drawable.ic_action_sail_boat_light, R.drawable.ic_action_sail_boat_dark).reg();
|
icon(R.drawable.ic_sail_boat, R.drawable.ic_action_sail_boat_light, R.drawable.ic_action_sail_boat_dark).reg();
|
||||||
//
|
|
||||||
// public static final ApplicationMode HIKING = create(R.string.app_mode_hiking, "hiking").speed(1.5f, 5).parent(PEDESTRIAN).
|
public static final ApplicationMode HIKING = create(R.string.app_mode_hiking, "hiking").speed(1.5f, 5).parent(PEDESTRIAN).
|
||||||
// icon(R.drawable.ic_trekking, R.drawable.ic_action_trekking_light, R.drawable.ic_action_trekking_dark).reg();
|
icon(R.drawable.ic_trekking, R.drawable.ic_action_trekking_light, R.drawable.ic_action_trekking_dark).reg();
|
||||||
//
|
|
||||||
// public static final ApplicationMode MOTORCYCLE = create(R.string.app_mode_motorcycle, "motorcycle").speed(15.3f, 40).
|
public static final ApplicationMode MOTORCYCLE = create(R.string.app_mode_motorcycle, "motorcycle").speed(15.3f, 40).
|
||||||
// carLocation().parent(CAR).
|
carLocation().parent(CAR).
|
||||||
// icon(R.drawable.ic_motorcycle, R.drawable.ic_action_motorcycle_light, R.drawable.ic_action_motorcycle_dark).reg();
|
icon(R.drawable.ic_motorcycle, R.drawable.ic_action_motorcycle_light, R.drawable.ic_action_motorcycle_dark).reg();
|
||||||
|
|
||||||
|
static {
|
||||||
|
ApplicationMode[] exceptPedestrian = new ApplicationMode[] { DEFAULT, CAR, BICYCLE, BOAT, AIRCRAFT };
|
||||||
|
ApplicationMode[] exceptAirBoat = new ApplicationMode[] { DEFAULT, CAR, BICYCLE};
|
||||||
|
ApplicationMode[] exceptCarBoatAir = new ApplicationMode[] { DEFAULT, BICYCLE, PEDESTRIAN };
|
||||||
|
ApplicationMode[] pedestrian = new ApplicationMode[] { PEDESTRIAN };
|
||||||
|
|
||||||
|
ApplicationMode[] all = null;
|
||||||
|
ApplicationMode[] none = new ApplicationMode[] {};
|
||||||
|
|
||||||
|
// left
|
||||||
|
regWidget("next_turn", exceptPedestrian);
|
||||||
|
regWidget("next_turn_small", pedestrian);
|
||||||
|
regWidget("next_next_turn", exceptPedestrian);
|
||||||
|
|
||||||
|
// right
|
||||||
|
regWidget("intermediate_distance", all);
|
||||||
|
regWidget("distance", all);
|
||||||
|
regWidget("time", all);
|
||||||
|
regWidget("speed", exceptPedestrian);
|
||||||
|
regWidget("max_speed", exceptAirBoat);
|
||||||
|
regWidget("gps_info", exceptCarBoatAir);
|
||||||
|
regWidget("altitude", exceptCarBoatAir);
|
||||||
|
|
||||||
|
// top
|
||||||
|
regWidget("compass", all);
|
||||||
|
regWidget("config", all);
|
||||||
|
regWidget("street_name", exceptAirBoat);
|
||||||
|
regWidget("back_to_location", all);
|
||||||
|
regWidget("monitoring_services", exceptCarBoatAir);
|
||||||
|
regWidget("bgService", none);
|
||||||
|
regWidget("layers", none);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static class ApplicationModeBuilder {
|
private static class ApplicationModeBuilder {
|
||||||
|
@ -113,30 +152,63 @@ public class ApplicationMode {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<ApplicationMode> values(OsmandSettings settings) {
|
public static List<ApplicationMode> values(OsmandSettings settings) {
|
||||||
// TODO
|
if (cachedFilteredValues.isEmpty()) {
|
||||||
|
if (!listenerRegistered) {
|
||||||
|
settings.AVAILABLE_APP_MODES.addListener(new StateChangedListener<String>() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(String change) {
|
||||||
|
cachedFilteredValues = new ArrayList<ApplicationMode>();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
listenerRegistered = true;
|
||||||
|
}
|
||||||
|
String available = settings.AVAILABLE_APP_MODES.get();
|
||||||
|
cachedFilteredValues = new ArrayList<ApplicationMode>();
|
||||||
|
for (ApplicationMode v : values) {
|
||||||
|
if (available.indexOf(v.getStringKey() + ",") != -1 || v == DEFAULT) {
|
||||||
|
cachedFilteredValues.add(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cachedFilteredValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<ApplicationMode> allPossibleValues(OsmandSettings settings) {
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<ApplicationMode> allPossibleValues(ClientContext ctx) {
|
|
||||||
return values;
|
// returns modifiable ! Set<ApplicationMode> to exclude non-wanted derived
|
||||||
|
public static Set<ApplicationMode> regWidget(String widgetId, ApplicationMode... am) {
|
||||||
|
HashSet<ApplicationMode> set = new HashSet<ApplicationMode>();
|
||||||
|
if(am == null) {
|
||||||
|
set.addAll(values);
|
||||||
|
} else {
|
||||||
|
Collections.addAll(set, am);
|
||||||
|
}
|
||||||
|
for(ApplicationMode m : values) {
|
||||||
|
// add derived modes
|
||||||
|
if(set.contains(m.getParent())) {
|
||||||
|
set.add(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
widgets.put(widgetId, set);
|
||||||
|
return set;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Set<ApplicationMode> allOf() {
|
public boolean isWidgetCollapsible(String key) {
|
||||||
// TODO
|
return false;
|
||||||
return new HashSet<ApplicationMode>(values);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Set<ApplicationMode> noneOf() {
|
public boolean isWidgetVisible(String key) {
|
||||||
// TODO
|
Set<ApplicationMode> set = widgets.get(key);
|
||||||
return new HashSet<ApplicationMode>();
|
if(set == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return set.contains(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Set<ApplicationMode> of(ApplicationMode... modes ) {
|
|
||||||
// TODO
|
|
||||||
HashSet<ApplicationMode> ts = new HashSet<ApplicationMode>();
|
|
||||||
Collections.addAll(ts, modes);
|
|
||||||
return ts;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<ApplicationMode> getModesDerivedFrom(ApplicationMode am) {
|
public static List<ApplicationMode> getModesDerivedFrom(ApplicationMode am) {
|
||||||
List<ApplicationMode> list = new ArrayList<ApplicationMode>();
|
List<ApplicationMode> list = new ArrayList<ApplicationMode>();
|
||||||
|
@ -184,6 +256,10 @@ public class ApplicationMode {
|
||||||
return ctx.getString(key);
|
return ctx.getString(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String toHumanStringCtx(ClientContext ctx) {
|
||||||
|
return ctx.getString(key);
|
||||||
|
}
|
||||||
|
|
||||||
public static ApplicationMode valueOfStringKey(String key, ApplicationMode def) {
|
public static ApplicationMode valueOfStringKey(String key, ApplicationMode def) {
|
||||||
for(ApplicationMode p : values) {
|
for(ApplicationMode p : values) {
|
||||||
if(p.getStringKey().equals(key)) {
|
if(p.getStringKey().equals(key)) {
|
||||||
|
@ -202,5 +278,11 @@ public class ApplicationMode {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isDerivedRoutingFrom(ApplicationMode mode) {
|
||||||
|
return this == mode || getParent() == mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -27,12 +27,14 @@ public class CurrentPositionHelper {
|
||||||
private void initCtx(ClientContext app) {
|
private void initCtx(ClientContext app) {
|
||||||
am = app.getSettings().getApplicationMode();
|
am = app.getSettings().getApplicationMode();
|
||||||
GeneralRouterProfile p ;
|
GeneralRouterProfile p ;
|
||||||
if (am == ApplicationMode.BICYCLE) {
|
if (am.isDerivedRoutingFrom(ApplicationMode.BICYCLE)) {
|
||||||
p = GeneralRouterProfile.BICYCLE;
|
p = GeneralRouterProfile.BICYCLE;
|
||||||
} else if (am == ApplicationMode.PEDESTRIAN) {
|
} else if (am.isDerivedRoutingFrom(ApplicationMode.PEDESTRIAN)) {
|
||||||
p = GeneralRouterProfile.PEDESTRIAN;
|
p = GeneralRouterProfile.PEDESTRIAN;
|
||||||
} else {
|
} else if (am.isDerivedRoutingFrom(ApplicationMode.CAR)) {
|
||||||
p = GeneralRouterProfile.CAR;
|
p = GeneralRouterProfile.CAR;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
RoutingConfiguration cfg = RoutingConfiguration.getDefault().build(p.name().toLowerCase(), 10);
|
RoutingConfiguration cfg = RoutingConfiguration.getDefault().build(p.name().toLowerCase(), 10);
|
||||||
ctx = new RoutingContext(cfg, null, app.getTodoAPI().getRoutingMapFiles());
|
ctx = new RoutingContext(cfg, null, app.getTodoAPI().getRoutingMapFiles());
|
||||||
|
@ -43,6 +45,9 @@ public class CurrentPositionHelper {
|
||||||
try {
|
try {
|
||||||
if(ctx == null || am != app.getSettings().getApplicationMode()) {
|
if(ctx == null || am != app.getSettings().getApplicationMode()) {
|
||||||
initCtx(app);
|
initCtx(app);
|
||||||
|
if(ctx == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
RouteSegment sg = rp.findRouteSegment(loc.getLatitude(), loc.getLongitude(), ctx);
|
RouteSegment sg = rp.findRouteSegment(loc.getLatitude(), loc.getLongitude(), ctx);
|
||||||
if(sg == null) {
|
if(sg == null) {
|
||||||
|
|
|
@ -13,7 +13,8 @@ public class OsmandBackupAgent extends BackupAgentHelper {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
List<ApplicationMode> all = ApplicationMode.allPossibleValues((OsmandApplication) getApplicationContext());
|
OsmandApplication app = (OsmandApplication) getApplicationContext();
|
||||||
|
List<ApplicationMode> all = ApplicationMode.allPossibleValues(app.getSettings());
|
||||||
String[] prefs = new String[all.size() + 1];
|
String[] prefs = new String[all.size() + 1];
|
||||||
prefs[0] = OsmandSettings.getSharedPreferencesName(null);
|
prefs[0] = OsmandSettings.getSharedPreferencesName(null);
|
||||||
int i = 1;
|
int i = 1;
|
||||||
|
|
|
@ -570,6 +570,8 @@ public class OsmandSettings {
|
||||||
// this value string is synchronized with settings_pref.xml preference name
|
// this value string is synchronized with settings_pref.xml preference name
|
||||||
public final CommonPreference<Boolean> USE_INTERNET_TO_DOWNLOAD_TILES = new BooleanPreference("use_internet_to_download_tiles", true).makeGlobal().cache();
|
public final CommonPreference<Boolean> USE_INTERNET_TO_DOWNLOAD_TILES = new BooleanPreference("use_internet_to_download_tiles", true).makeGlobal().cache();
|
||||||
|
|
||||||
|
public final OsmandPreference<String> AVAILABLE_APP_MODES = new StringPreference("available_application_modes", "car,bicycle,pedestrian,").makeGlobal().cache();
|
||||||
|
|
||||||
public final OsmandPreference<ApplicationMode> DEFAULT_APPLICATION_MODE = new CommonPreference<ApplicationMode>("default_application_mode", ApplicationMode.DEFAULT) {
|
public final OsmandPreference<ApplicationMode> DEFAULT_APPLICATION_MODE = new CommonPreference<ApplicationMode>("default_application_mode", ApplicationMode.DEFAULT) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -306,7 +306,7 @@ public abstract class SettingsBaseActivity extends SherlockPreferenceActivity im
|
||||||
protected void profileDialog() {
|
protected void profileDialog() {
|
||||||
Builder b = new AlertDialog.Builder(this);
|
Builder b = new AlertDialog.Builder(this);
|
||||||
final Set<ApplicationMode> selected = new LinkedHashSet<ApplicationMode>();
|
final Set<ApplicationMode> selected = new LinkedHashSet<ApplicationMode>();
|
||||||
View v = NavigateAction.prepareAppModeView(this, selected, false, null,
|
View v = NavigateAction.prepareAppModeView(this, selected, false, null, false,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
|
|
@ -360,32 +360,36 @@ public class NavigateAction {
|
||||||
|
|
||||||
|
|
||||||
public static View prepareAppModeView(Activity a, final Set<ApplicationMode> selected, boolean showDefault,
|
public static View prepareAppModeView(Activity a, final Set<ApplicationMode> selected, boolean showDefault,
|
||||||
ViewGroup parent, final View.OnClickListener onClickListener) {
|
ViewGroup parent, final boolean singleSelection, final View.OnClickListener onClickListener) {
|
||||||
LinearLayout ll = (LinearLayout) a.getLayoutInflater().inflate(R.layout.mode_toggles, parent);
|
|
||||||
OsmandSettings settings = ((OsmandApplication) a.getApplication()).getSettings();
|
OsmandSettings settings = ((OsmandApplication) a.getApplication()).getSettings();
|
||||||
final List<ApplicationMode> values = new ArrayList<ApplicationMode>(ApplicationMode.values(settings));
|
final List<ApplicationMode> values = new ArrayList<ApplicationMode>(ApplicationMode.values(settings));
|
||||||
if(!showDefault) {
|
if(!showDefault) {
|
||||||
values.remove(ApplicationMode.DEFAULT);
|
values.remove(ApplicationMode.DEFAULT);
|
||||||
}
|
}
|
||||||
|
selected.add(settings.getApplicationMode());
|
||||||
|
return prepareAppModeView(a, values, selected, parent, singleSelection, onClickListener);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static View prepareAppModeView(Activity a, final List<ApplicationMode> values , final Set<ApplicationMode> selected,
|
||||||
|
ViewGroup parent, final boolean singleSelection, final View.OnClickListener onClickListener) {
|
||||||
|
LinearLayout ll = (LinearLayout) a.getLayoutInflater().inflate(R.layout.mode_toggles, parent);
|
||||||
final ToggleButton[] buttons = createToggles(values, ll, a);
|
final ToggleButton[] buttons = createToggles(values, ll, a);
|
||||||
ApplicationMode appMode = settings.getApplicationMode();
|
|
||||||
for (int i = 0; i < buttons.length; i++) {
|
for (int i = 0; i < buttons.length; i++) {
|
||||||
if (buttons[i] != null) {
|
if (buttons[i] != null) {
|
||||||
final int ind = i;
|
final int ind = i;
|
||||||
ToggleButton b = buttons[i];
|
ToggleButton b = buttons[i];
|
||||||
final ApplicationMode buttonAppMode = values.get(i);
|
final ApplicationMode buttonAppMode = values.get(i);
|
||||||
b.setChecked(appMode == buttonAppMode);
|
b.setChecked(selected.contains(buttonAppMode));
|
||||||
if(appMode == buttonAppMode) {
|
|
||||||
selected.add(appMode);
|
|
||||||
}
|
|
||||||
b.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
b.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
|
if (singleSelection) {
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
selected.clear();
|
selected.clear();
|
||||||
for (int j = 0; j < buttons.length; j++) {
|
for (int j = 0; j < buttons.length; j++) {
|
||||||
if (buttons[j] != null) {
|
if (buttons[j] != null) {
|
||||||
if(ind == j) {
|
if (ind == j) {
|
||||||
selected.add(values.get(j));
|
selected.add(values.get(j));
|
||||||
}
|
}
|
||||||
if (buttons[j].isChecked() != (ind == j)) {
|
if (buttons[j].isChecked() != (ind == j)) {
|
||||||
|
@ -408,6 +412,13 @@ public class NavigateAction {
|
||||||
buttons[ind].setChecked(true);
|
buttons[ind].setChecked(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (isChecked) {
|
||||||
|
selected.add(buttonAppMode);
|
||||||
|
} else {
|
||||||
|
selected.remove(buttonAppMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
if(onClickListener != null) {
|
if(onClickListener != null) {
|
||||||
onClickListener.onClick(null);
|
onClickListener.onClick(null);
|
||||||
}
|
}
|
||||||
|
@ -482,7 +493,7 @@ public class NavigateAction {
|
||||||
return mapActivity.getString(resId);
|
return mapActivity.getString(resId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ApplicationMode getAppMode(ToggleButton[] buttons, OsmandSettings settings, List<ApplicationMode> modes){
|
private static ApplicationMode getAppMode(ToggleButton[] buttons, OsmandSettings settings, List<ApplicationMode> modes){
|
||||||
for (int i = 0; i < buttons.length; i++) {
|
for (int i = 0; i < buttons.length; i++) {
|
||||||
if (buttons[i] != null && buttons[i].isChecked() && i < modes.size()) {
|
if (buttons[i] != null && buttons[i].isChecked() && i < modes.size()) {
|
||||||
return modes.get(i);
|
return modes.get(i);
|
||||||
|
|
|
@ -334,6 +334,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
public AudioVideoNotesPlugin(OsmandApplication app) {
|
public AudioVideoNotesPlugin(OsmandApplication app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
OsmandSettings settings = app.getSettings();
|
OsmandSettings settings = app.getSettings();
|
||||||
|
ApplicationMode.regWidget("audionotes", (ApplicationMode[])null);
|
||||||
AV_EXTERNAL_RECORDER = settings.registerBooleanPreference("av_external_recorder", false).makeGlobal();
|
AV_EXTERNAL_RECORDER = settings.registerBooleanPreference("av_external_recorder", false).makeGlobal();
|
||||||
AV_EXTERNAL_PHOTO_CAM = settings.registerBooleanPreference("av_external_cam", true).makeGlobal();
|
AV_EXTERNAL_PHOTO_CAM = settings.registerBooleanPreference("av_external_cam", true).makeGlobal();
|
||||||
AV_VIDEO_FORMAT = settings.registerIntPreference("av_video_format", VIDEO_OUTPUT_MP4).makeGlobal();
|
AV_VIDEO_FORMAT = settings.registerIntPreference("av_video_format", VIDEO_OUTPUT_MP4).makeGlobal();
|
||||||
|
@ -467,8 +468,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
recordControl.setImageDrawable(activity.getResources().getDrawable(R.drawable.monitoring_rec_inactive));
|
recordControl.setImageDrawable(activity.getResources().getDrawable(R.drawable.monitoring_rec_inactive));
|
||||||
setRecordListener(recordControl, activity);
|
setRecordListener(recordControl, activity);
|
||||||
mapInfoLayer.getMapInfoControls().registerSideWidget(recordControl, R.drawable.widget_icon_av_inactive,
|
mapInfoLayer.getMapInfoControls().registerSideWidget(recordControl, R.drawable.widget_icon_av_inactive,
|
||||||
R.string.map_widget_av_notes, "audionotes", false, ApplicationMode.allOf(),
|
R.string.map_widget_av_notes, "audionotes", false, 22);
|
||||||
ApplicationMode.noneOf(), 22);
|
|
||||||
mapInfoLayer.recreateControls();
|
mapInfoLayer.recreateControls();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,10 @@
|
||||||
package net.osmand.plus.development;
|
package net.osmand.plus.development;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
|
||||||
|
|
||||||
import net.osmand.plus.ApplicationMode;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.activities.SettingsActivity;
|
import net.osmand.plus.activities.SettingsActivity;
|
||||||
import net.osmand.plus.audionotes.AudioNotesLayer;
|
|
||||||
import net.osmand.plus.views.MapInfoLayer;
|
import net.osmand.plus.views.MapInfoLayer;
|
||||||
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
|
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
|
||||||
import net.osmand.plus.views.OsmandMapTileView;
|
import net.osmand.plus.views.OsmandMapTileView;
|
||||||
|
@ -25,6 +21,7 @@ public class OsmandDevelopmentPlugin extends OsmandPlugin {
|
||||||
|
|
||||||
public OsmandDevelopmentPlugin(OsmandApplication app) {
|
public OsmandDevelopmentPlugin(OsmandApplication app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
|
//ApplicationMode.regWidget("fps", new ApplicationMode[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -68,8 +65,7 @@ public class OsmandDevelopmentPlugin extends OsmandPlugin {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
mapInfoLayer.getMapInfoControls().registerSideWidget(fps, 0,
|
mapInfoLayer.getMapInfoControls().registerSideWidget(fps, 0,
|
||||||
R.string.map_widget_fps_info, "fps", false, ApplicationMode.noneOf(),
|
R.string.map_widget_fps_info, "fps", false, 30);
|
||||||
ApplicationMode.noneOf(), 30);
|
|
||||||
mapInfoLayer.recreateControls();
|
mapInfoLayer.recreateControls();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,17 @@ package net.osmand.plus.development;
|
||||||
|
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import net.osmand.plus.ApplicationMode;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.SettingsBaseActivity;
|
import net.osmand.plus.activities.SettingsBaseActivity;
|
||||||
|
import net.osmand.plus.activities.actions.NavigateAction;
|
||||||
import net.osmand.util.SunriseSunset;
|
import net.osmand.util.SunriseSunset;
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.AlertDialog.Builder;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Debug;
|
import android.os.Debug;
|
||||||
|
@ -14,10 +21,12 @@ import android.preference.CheckBoxPreference;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.Preference.OnPreferenceClickListener;
|
import android.preference.Preference.OnPreferenceClickListener;
|
||||||
import android.preference.PreferenceScreen;
|
import android.preference.PreferenceScreen;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
public class SettingsDevelopmentActivity extends SettingsBaseActivity {
|
public class SettingsDevelopmentActivity extends SettingsBaseActivity {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -43,6 +52,19 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
|
||||||
});
|
});
|
||||||
cat.addPreference(pref);
|
cat.addPreference(pref);
|
||||||
|
|
||||||
|
pref = new Preference(this);
|
||||||
|
pref.setTitle(R.string.app_modes_choose);
|
||||||
|
pref.setSummary(R.string.app_modes_choose_descr);
|
||||||
|
pref.setKey("available_application_modes");
|
||||||
|
pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
|
availableProfileDialog();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
cat.addPreference(pref);
|
||||||
|
|
||||||
pref = new Preference(this);
|
pref = new Preference(this);
|
||||||
pref.setTitle(R.string.global_app_allocated_memory);
|
pref.setTitle(R.string.global_app_allocated_memory);
|
||||||
|
|
||||||
|
@ -80,6 +102,32 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
|
||||||
cat.addPreference(pref);
|
cat.addPreference(pref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void availableProfileDialog() {
|
||||||
|
Builder b = new AlertDialog.Builder(this);
|
||||||
|
final List<ApplicationMode> modes = ApplicationMode.allPossibleValues(settings);
|
||||||
|
modes.remove(ApplicationMode.DEFAULT);
|
||||||
|
final Set<ApplicationMode> selected = new LinkedHashSet<ApplicationMode>(ApplicationMode.values(settings));
|
||||||
|
selected.remove(ApplicationMode.DEFAULT);
|
||||||
|
View v = NavigateAction.prepareAppModeView(this, modes, selected, null, false,
|
||||||
|
new View.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
StringBuilder vls = new StringBuilder(ApplicationMode.DEFAULT.getStringKey()+",");
|
||||||
|
for(ApplicationMode mode : modes) {
|
||||||
|
if(selected.contains(mode)) {
|
||||||
|
vls.append(mode.getStringKey()+",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
settings.AVAILABLE_APP_MODES.set(vls.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
b.setTitle(R.string.profile_settings);
|
||||||
|
b.setPositiveButton(R.string.default_buttons_ok, null);
|
||||||
|
b.setView(v);
|
||||||
|
b.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,7 @@ public class DistanceCalculatorPlugin extends OsmandPlugin {
|
||||||
|
|
||||||
public DistanceCalculatorPlugin(OsmandApplication app) {
|
public DistanceCalculatorPlugin(OsmandApplication app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
|
ApplicationMode.regWidget("distance.measurement", ApplicationMode.PEDESTRIAN, ApplicationMode.DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -113,9 +114,7 @@ public class DistanceCalculatorPlugin extends OsmandPlugin {
|
||||||
if (mapInfoLayer != null ) {
|
if (mapInfoLayer != null ) {
|
||||||
distanceControl = createDistanceControl(activity, mapInfoLayer.getPaintText(), mapInfoLayer.getPaintSubText());
|
distanceControl = createDistanceControl(activity, mapInfoLayer.getPaintText(), mapInfoLayer.getPaintSubText());
|
||||||
mapInfoLayer.getMapInfoControls().registerSideWidget(distanceControl,
|
mapInfoLayer.getMapInfoControls().registerSideWidget(distanceControl,
|
||||||
R.drawable.widget_distance, R.string.map_widget_distancemeasurement, "distance.measurement", false,
|
R.drawable.widget_distance, R.string.map_widget_distancemeasurement, "distance.measurement", false, 21);
|
||||||
ApplicationMode.of(ApplicationMode.DEFAULT, ApplicationMode.PEDESTRIAN),
|
|
||||||
ApplicationMode.noneOf(), 21);
|
|
||||||
mapInfoLayer.recreateControls();
|
mapInfoLayer.recreateControls();
|
||||||
updateText();
|
updateText();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package net.osmand.plus.monitoring;
|
package net.osmand.plus.monitoring;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
|
||||||
|
|
||||||
import net.osmand.plus.ApplicationMode;
|
import net.osmand.plus.ApplicationMode;
|
||||||
import net.osmand.plus.ContextMenuAdapter;
|
import net.osmand.plus.ContextMenuAdapter;
|
||||||
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
|
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
|
||||||
|
@ -41,6 +39,7 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
|
||||||
|
|
||||||
public OsmandMonitoringPlugin(OsmandApplication app) {
|
public OsmandMonitoringPlugin(OsmandApplication app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
|
ApplicationMode.regWidget("monitoring", ApplicationMode.DEFAULT, ApplicationMode.BICYCLE, ApplicationMode.PEDESTRIAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -70,8 +69,7 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
|
||||||
monitoringControl = createMonitoringControl(activity, layer.getPaintText(), layer.getPaintSubText());
|
monitoringControl = createMonitoringControl(activity, layer.getPaintText(), layer.getPaintSubText());
|
||||||
|
|
||||||
layer.getMapInfoControls().registerSideWidget(monitoringControl,
|
layer.getMapInfoControls().registerSideWidget(monitoringControl,
|
||||||
R.drawable.monitoring_rec_big, R.string.map_widget_monitoring, "monitoring", false,
|
R.drawable.monitoring_rec_big, R.string.map_widget_monitoring, "monitoring", false, 18);
|
||||||
ApplicationMode.of(ApplicationMode.BICYCLE, ApplicationMode.PEDESTRIAN), ApplicationMode.noneOf(), 18);
|
|
||||||
layer.recreateControls();
|
layer.recreateControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@ public class ParkingPositionPlugin extends OsmandPlugin {
|
||||||
public ParkingPositionPlugin(OsmandApplication app) {
|
public ParkingPositionPlugin(OsmandApplication app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
OsmandSettings set = app.getSettings();
|
OsmandSettings set = app.getSettings();
|
||||||
|
ApplicationMode. regWidget("parking", (ApplicationMode[]) null);
|
||||||
parkingLat = set.registerFloatPreference(PARKING_POINT_LAT, 0f).makeGlobal();
|
parkingLat = set.registerFloatPreference(PARKING_POINT_LAT, 0f).makeGlobal();
|
||||||
parkingLon = set.registerFloatPreference(PARKING_POINT_LON, 0f).makeGlobal();
|
parkingLon = set.registerFloatPreference(PARKING_POINT_LON, 0f).makeGlobal();
|
||||||
parkingType = set.registerBooleanPreference(PARKING_TYPE, false).makeGlobal();
|
parkingType = set.registerBooleanPreference(PARKING_TYPE, false).makeGlobal();
|
||||||
|
@ -190,8 +191,7 @@ public class ParkingPositionPlugin extends OsmandPlugin {
|
||||||
if (mapInfoLayer != null) {
|
if (mapInfoLayer != null) {
|
||||||
parkingPlaceControl = createParkingPlaceInfoControl(activity, mapInfoLayer.getPaintText(), mapInfoLayer.getPaintSubText());
|
parkingPlaceControl = createParkingPlaceInfoControl(activity, mapInfoLayer.getPaintText(), mapInfoLayer.getPaintSubText());
|
||||||
mapInfoLayer.getMapInfoControls().registerSideWidget(parkingPlaceControl,
|
mapInfoLayer.getMapInfoControls().registerSideWidget(parkingPlaceControl,
|
||||||
R.drawable.widget_parking, R.string.map_widget_parking, "parking", false,
|
R.drawable.widget_parking, R.string.map_widget_parking, "parking", false, 8);
|
||||||
ApplicationMode.allOf(), ApplicationMode.noneOf(), 8);
|
|
||||||
mapInfoLayer.recreateControls();
|
mapInfoLayer.recreateControls();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -282,12 +282,14 @@ public class RouteProvider {
|
||||||
uri.append("&flon=").append(params.start.getLongitude()); //$NON-NLS-1$
|
uri.append("&flon=").append(params.start.getLongitude()); //$NON-NLS-1$
|
||||||
uri.append("&tlat=").append(params.end.getLatitude()); //$NON-NLS-1$
|
uri.append("&tlat=").append(params.end.getLatitude()); //$NON-NLS-1$
|
||||||
uri.append("&tlon=").append(params.end.getLongitude()); //$NON-NLS-1$
|
uri.append("&tlon=").append(params.end.getLongitude()); //$NON-NLS-1$
|
||||||
if(ApplicationMode.PEDESTRIAN == params.mode){
|
if (params.mode.isDerivedRoutingFrom(ApplicationMode.BICYCLE)) {
|
||||||
uri.append("&v=foot") ; //$NON-NLS-1$
|
|
||||||
} else if(ApplicationMode.BICYCLE == params.mode){
|
|
||||||
uri.append("&v=bicycle") ; //$NON-NLS-1$
|
uri.append("&v=bicycle") ; //$NON-NLS-1$
|
||||||
} else {
|
} else if (params.mode.isDerivedRoutingFrom(ApplicationMode.PEDESTRIAN)) {
|
||||||
|
uri.append("&v=foot") ; //$NON-NLS-1$
|
||||||
|
} else if(params.mode.isDerivedRoutingFrom(ApplicationMode.CAR)){
|
||||||
uri.append("&v=motorcar"); //$NON-NLS-1$
|
uri.append("&v=motorcar"); //$NON-NLS-1$
|
||||||
|
} else {
|
||||||
|
return applicationModeNotSupported(params);
|
||||||
}
|
}
|
||||||
uri.append("&fast=").append(params.fast ? "1" : "0").append("&layer=mapnik"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
uri.append("&fast=").append(params.fast ? "1" : "0").append("&layer=mapnik"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||||
log.info("URL route " + uri);
|
log.info("URL route " + uri);
|
||||||
|
@ -349,12 +351,14 @@ public class RouteProvider {
|
||||||
config = RoutingConfiguration.getDefault();
|
config = RoutingConfiguration.getDefault();
|
||||||
}
|
}
|
||||||
GeneralRouterProfile p ;
|
GeneralRouterProfile p ;
|
||||||
if (params.mode == ApplicationMode.BICYCLE) {
|
if (params.mode.isDerivedRoutingFrom(ApplicationMode.BICYCLE)) {
|
||||||
p = GeneralRouterProfile.BICYCLE;
|
p = GeneralRouterProfile.BICYCLE;
|
||||||
} else if (params.mode == ApplicationMode.PEDESTRIAN) {
|
} else if (params.mode.isDerivedRoutingFrom(ApplicationMode.PEDESTRIAN)) {
|
||||||
p = GeneralRouterProfile.PEDESTRIAN;
|
p = GeneralRouterProfile.PEDESTRIAN;
|
||||||
} else {
|
} else if(params.mode.isDerivedRoutingFrom(ApplicationMode.CAR)){
|
||||||
p = GeneralRouterProfile.CAR;
|
p = GeneralRouterProfile.CAR;
|
||||||
|
} else {
|
||||||
|
return applicationModeNotSupported(params);
|
||||||
}
|
}
|
||||||
// order matters
|
// order matters
|
||||||
List<String> specs = new ArrayList<String>();
|
List<String> specs = new ArrayList<String>();
|
||||||
|
@ -417,10 +421,10 @@ public class RouteProvider {
|
||||||
return new RouteCalculationResult("Route can not be found from end point (" +ctx.calculationProgress.distanceFromEnd/1000f+" km)");
|
return new RouteCalculationResult("Route can not be found from end point (" +ctx.calculationProgress.distanceFromEnd/1000f+" km)");
|
||||||
}
|
}
|
||||||
if(ctx.calculationProgress.isCancelled) {
|
if(ctx.calculationProgress.isCancelled) {
|
||||||
return new RouteCalculationResult("Route calculation was interrupted");
|
return interrupted();
|
||||||
}
|
}
|
||||||
// something really strange better to see that message on the scren
|
// something really strange better to see that message on the scren
|
||||||
return new RouteCalculationResult("Empty result");
|
return emptyResult();
|
||||||
} else {
|
} else {
|
||||||
RouteCalculationResult res = new RouteCalculationResult(result, params.start, params.end,
|
RouteCalculationResult res = new RouteCalculationResult(result, params.start, params.end,
|
||||||
params.intermediates, params.ctx, params.leftSide, ctx.routingTime);
|
params.intermediates, params.ctx, params.leftSide, ctx.routingTime);
|
||||||
|
@ -429,7 +433,7 @@ public class RouteProvider {
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
return new RouteCalculationResult(e.getMessage() );
|
return new RouteCalculationResult(e.getMessage() );
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
return new RouteCalculationResult("Route calculation was interrupted");
|
return interrupted();
|
||||||
} catch (OutOfMemoryError e) {
|
} catch (OutOfMemoryError e) {
|
||||||
// ActivityManager activityManager = (ActivityManager)app.getSystemService(Context.ACTIVITY_SERVICE);
|
// ActivityManager activityManager = (ActivityManager)app.getSystemService(Context.ACTIVITY_SERVICE);
|
||||||
// ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
|
// ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
|
||||||
|
@ -443,6 +447,21 @@ public class RouteProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private RouteCalculationResult applicationModeNotSupported(RouteCalculationParams params) {
|
||||||
|
return new RouteCalculationResult("Application mode '"+ params.mode.toHumanStringCtx(params.ctx)+ "'is not supported.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private RouteCalculationResult interrupted() {
|
||||||
|
return new RouteCalculationResult("Route calculation was interrupted");
|
||||||
|
}
|
||||||
|
|
||||||
|
private RouteCalculationResult emptyResult() {
|
||||||
|
return new RouteCalculationResult("Empty result");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected RouteCalculationResult findCloudMadeRoute(RouteCalculationParams params)
|
protected RouteCalculationResult findCloudMadeRoute(RouteCalculationParams params)
|
||||||
throws MalformedURLException, IOException, ParserConfigurationException, FactoryConfigurationError, SAXException {
|
throws MalformedURLException, IOException, ParserConfigurationException, FactoryConfigurationError, SAXException {
|
||||||
List<Location> res = new ArrayList<Location>();
|
List<Location> res = new ArrayList<Location>();
|
||||||
|
@ -470,27 +489,27 @@ public class RouteProvider {
|
||||||
uri.append(params.end.getLatitude() + "").append(","); //$NON-NLS-1$//$NON-NLS-2$
|
uri.append(params.end.getLatitude() + "").append(","); //$NON-NLS-1$//$NON-NLS-2$
|
||||||
uri.append(params.end.getLongitude() + "").append("/"); //$NON-NLS-1$ //$NON-NLS-2$
|
uri.append(params.end.getLongitude() + "").append("/"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
|
||||||
float speed = 1.5f;
|
if (params.mode.isDerivedRoutingFrom(ApplicationMode.PEDESTRIAN)) {
|
||||||
if (ApplicationMode.PEDESTRIAN == params.mode) {
|
|
||||||
uri.append("foot.gpx"); //$NON-NLS-1$
|
uri.append("foot.gpx"); //$NON-NLS-1$
|
||||||
} else if (ApplicationMode.BICYCLE == params.mode) {
|
} else if (params.mode.isDerivedRoutingFrom(ApplicationMode.BICYCLE)) {
|
||||||
speed = 4.2f;
|
|
||||||
uri.append("bicycle.gpx"); //$NON-NLS-1$
|
uri.append("bicycle.gpx"); //$NON-NLS-1$
|
||||||
} else {
|
} else if (params.mode.isDerivedRoutingFrom(ApplicationMode.CAR)) {
|
||||||
speed = 15.3f;
|
|
||||||
if (params.fast) {
|
if (params.fast) {
|
||||||
uri.append("car.gpx"); //$NON-NLS-1$
|
uri.append("car.gpx"); //$NON-NLS-1$
|
||||||
} else {
|
} else {
|
||||||
uri.append("car/shortest.gpx"); //$NON-NLS-1$
|
uri.append("car/shortest.gpx"); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return applicationModeNotSupported(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
uri.append("?lang=").append(Locale.getDefault().getLanguage()); //$NON-NLS-1$
|
uri.append("?lang=").append(Locale.getDefault().getLanguage()); //$NON-NLS-1$
|
||||||
log.info("URL route " + uri);
|
log.info("URL route " + uri);
|
||||||
URL url = new URL(uri.toString());
|
URL url = new URL(uri.toString());
|
||||||
URLConnection connection = url.openConnection();
|
URLConnection connection = url.openConnection();
|
||||||
connection.setRequestProperty("User-Agent", Version.getFullVersion(params.ctx));
|
connection.setRequestProperty("User-Agent", Version.getFullVersion(params.ctx));
|
||||||
GPXFile gpxFile = GPXUtilities.loadGPXFile(params.ctx, connection.getInputStream(), false);
|
GPXFile gpxFile = GPXUtilities.loadGPXFile(params.ctx, connection.getInputStream(), false);
|
||||||
directions = parseCloudmadeRoute(res, gpxFile, false, params.leftSide, speed);
|
directions = parseCloudmadeRoute(res, gpxFile, false, params.leftSide, params.mode.getDefaultSpeed());
|
||||||
|
|
||||||
return new RouteCalculationResult(res, directions, params, null);
|
return new RouteCalculationResult(res, directions, params, null);
|
||||||
}
|
}
|
||||||
|
@ -616,9 +635,9 @@ public class RouteProvider {
|
||||||
List<Location> res = new ArrayList<Location>();
|
List<Location> res = new ArrayList<Location>();
|
||||||
|
|
||||||
String rpref = "Fastest";
|
String rpref = "Fastest";
|
||||||
if (ApplicationMode.PEDESTRIAN == params.mode) {
|
if (params.mode.isDerivedRoutingFrom(ApplicationMode.PEDESTRIAN)) {
|
||||||
rpref = "Pedestrian";
|
rpref = "Pedestrian";
|
||||||
} else if (ApplicationMode.BICYCLE == params.mode) {
|
} else if (params.mode.isDerivedRoutingFrom(ApplicationMode.BICYCLE)) {
|
||||||
rpref = "Bicycle";
|
rpref = "Bicycle";
|
||||||
// } else if (ApplicationMode.LOWTRAFFIC == mode) {
|
// } else if (ApplicationMode.LOWTRAFFIC == mode) {
|
||||||
// rpref = "BicycleSafety";
|
// rpref = "BicycleSafety";
|
||||||
|
@ -628,9 +647,13 @@ public class RouteProvider {
|
||||||
// rpref = "BicycleRoute";
|
// rpref = "BicycleRoute";
|
||||||
// } else if (ApplicationMode.MTBIKE == mode) {
|
// } else if (ApplicationMode.MTBIKE == mode) {
|
||||||
// rpref = "BicycleMTB";
|
// rpref = "BicycleMTB";
|
||||||
} else if (!params.fast) {
|
} else if (params.mode.isDerivedRoutingFrom(ApplicationMode.CAR)) {
|
||||||
|
if (!params.fast) {
|
||||||
rpref = "Shortest";
|
rpref = "Shortest";
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return applicationModeNotSupported(params);
|
||||||
|
}
|
||||||
|
|
||||||
StringBuilder request = new StringBuilder();
|
StringBuilder request = new StringBuilder();
|
||||||
request.append("http://openls.geog.uni-heidelberg.de/osm/eu/routing?").append("start=").append(params.start.getLongitude()).append(',')
|
request.append("http://openls.geog.uni-heidelberg.de/osm/eu/routing?").append("start=").append(params.start.getLongitude()).append(',')
|
||||||
|
|
|
@ -104,7 +104,7 @@ public class VoiceRouter {
|
||||||
// lead time criterion only for TURN_IN and TURN
|
// lead time criterion only for TURN_IN and TURN
|
||||||
PREPARE_LONG_DISTANCE = 3500; // [105 sec] - 120 km/h
|
PREPARE_LONG_DISTANCE = 3500; // [105 sec] - 120 km/h
|
||||||
PREPARE_LONG_DISTANCE_END = 3000; // [ 90 sec] - 120 km/h
|
PREPARE_LONG_DISTANCE_END = 3000; // [ 90 sec] - 120 km/h
|
||||||
if(router.getAppMode() == ApplicationMode.PEDESTRIAN){
|
if(router.getAppMode().isDerivedRoutingFrom(ApplicationMode.PEDESTRIAN)){
|
||||||
// prepare_long_distance warning not needed for pedestrian
|
// prepare_long_distance warning not needed for pedestrian
|
||||||
PREPARE_LONG_DISTANCE_END = PREPARE_LONG_DISTANCE + 100; // do not play
|
PREPARE_LONG_DISTANCE_END = PREPARE_LONG_DISTANCE + 100; // do not play
|
||||||
// prepare distance is not needed for pedestrian
|
// prepare distance is not needed for pedestrian
|
||||||
|
@ -116,7 +116,7 @@ public class VoiceRouter {
|
||||||
TURN_IN_DISTANCE_END = 30; // 15 sec (was 70m, 35 sec)
|
TURN_IN_DISTANCE_END = 30; // 15 sec (was 70m, 35 sec)
|
||||||
TURN_DISTANCE = 15; // 7,5sec (was 25m, 12 sec). Check if this works with GPS accuracy!
|
TURN_DISTANCE = 15; // 7,5sec (was 25m, 12 sec). Check if this works with GPS accuracy!
|
||||||
TURN_DEFAULT_SPEED = DEFAULT_SPEED = 2f; // 7,2 km/h
|
TURN_DEFAULT_SPEED = DEFAULT_SPEED = 2f; // 7,2 km/h
|
||||||
} else if(router.getAppMode() == ApplicationMode.BICYCLE){
|
} else if(router.getAppMode().isDerivedRoutingFrom(ApplicationMode.BICYCLE)){
|
||||||
PREPARE_LONG_DISTANCE = 500; // [100 sec]
|
PREPARE_LONG_DISTANCE = 500; // [100 sec]
|
||||||
PREPARE_LONG_DISTANCE_END = 300; // [ 60 sec]
|
PREPARE_LONG_DISTANCE_END = 300; // [ 60 sec]
|
||||||
PREPARE_DISTANCE = 200; // [ 40 sec] (was 500m, 100sec)
|
PREPARE_DISTANCE = 200; // [ 40 sec] (was 500m, 100sec)
|
||||||
|
@ -125,7 +125,7 @@ public class VoiceRouter {
|
||||||
TURN_IN_DISTANCE_END = 60; // 12 sec (was 80m, 16sec)
|
TURN_IN_DISTANCE_END = 60; // 12 sec (was 80m, 16sec)
|
||||||
TURN_DISTANCE = 30; // 6 sec (was 45m, 9sec). Check if this works with GPS accuracy!
|
TURN_DISTANCE = 30; // 6 sec (was 45m, 9sec). Check if this works with GPS accuracy!
|
||||||
TURN_DEFAULT_SPEED = DEFAULT_SPEED = 5; // 18 km/h
|
TURN_DEFAULT_SPEED = DEFAULT_SPEED = 5; // 18 km/h
|
||||||
} else {
|
} else if(router.getAppMode().isDerivedRoutingFrom(ApplicationMode.CAR)){
|
||||||
PREPARE_DISTANCE = 1500; // [125 sec]
|
PREPARE_DISTANCE = 1500; // [125 sec]
|
||||||
PREPARE_DISTANCE_END = 1200; // [100 sec]
|
PREPARE_DISTANCE_END = 1200; // [100 sec]
|
||||||
TURN_IN_DISTANCE = 390; // 30 sec
|
TURN_IN_DISTANCE = 390; // 30 sec
|
||||||
|
@ -133,6 +133,16 @@ public class VoiceRouter {
|
||||||
TURN_DISTANCE = 50; // 7 sec
|
TURN_DISTANCE = 50; // 7 sec
|
||||||
TURN_DEFAULT_SPEED = 7f; // 25 km/h
|
TURN_DEFAULT_SPEED = 7f; // 25 km/h
|
||||||
DEFAULT_SPEED = 13; // 48 km/h
|
DEFAULT_SPEED = 13; // 48 km/h
|
||||||
|
} else {
|
||||||
|
DEFAULT_SPEED = router.getAppMode().getDefaultSpeed();
|
||||||
|
TURN_DEFAULT_SPEED = DEFAULT_SPEED / 2;
|
||||||
|
PREPARE_LONG_DISTANCE = (int) (DEFAULT_SPEED * 305);
|
||||||
|
PREPARE_LONG_DISTANCE_END = (int) (DEFAULT_SPEED * 225);
|
||||||
|
PREPARE_DISTANCE = (int) (DEFAULT_SPEED * 125);
|
||||||
|
PREPARE_DISTANCE_END = (int) (DEFAULT_SPEED * 100);
|
||||||
|
TURN_IN_DISTANCE = (int) (DEFAULT_SPEED * 30);
|
||||||
|
TURN_IN_DISTANCE_END = (int) (DEFAULT_SPEED * 14);
|
||||||
|
TURN_DISTANCE = (int) (DEFAULT_SPEED * 7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ public class SRTMPlugin extends OsmandPlugin {
|
||||||
OsmandSettings settings = app.getSettings();
|
OsmandSettings settings = app.getSettings();
|
||||||
CommonPreference<String> pref = settings.getCustomRenderProperty("contourLines");
|
CommonPreference<String> pref = settings.getCustomRenderProperty("contourLines");
|
||||||
if(pref.get().equals("")) {
|
if(pref.get().equals("")) {
|
||||||
for(ApplicationMode m : ApplicationMode.allPossibleValues(app)) {
|
for(ApplicationMode m : ApplicationMode.allPossibleValues(settings)) {
|
||||||
if(pref.getModeValue(m).equals("")) {
|
if(pref.getModeValue(m).equals("")) {
|
||||||
pref.setModeValue(m, "13");
|
pref.setModeValue(m, "13");
|
||||||
}
|
}
|
||||||
|
|
|
@ -170,57 +170,54 @@ public class MapInfoLayer extends OsmandMapLayer {
|
||||||
|
|
||||||
alarmControl = ric.createAlarmInfoControl(app, map);
|
alarmControl = ric.createAlarmInfoControl(app, map);
|
||||||
// register right stack
|
// register right stack
|
||||||
Set<ApplicationMode> all = ApplicationMode.allOf();
|
|
||||||
Set<ApplicationMode> carBicycleDefault = ApplicationMode.of(ApplicationMode.CAR, ApplicationMode.DEFAULT, ApplicationMode.BICYCLE);
|
|
||||||
Set<ApplicationMode> exceptCar = ApplicationMode.of(ApplicationMode.BICYCLE, ApplicationMode.PEDESTRIAN, ApplicationMode.DEFAULT);
|
|
||||||
Set<ApplicationMode> none = ApplicationMode.noneOf();
|
|
||||||
RoutingHelper routingHelper = app.getRoutingHelper();
|
RoutingHelper routingHelper = app.getRoutingHelper();
|
||||||
NextTurnInfoWidget bigInfoControl = ric.createNextInfoControl(routingHelper, app, view.getSettings(), paintText,
|
NextTurnInfoWidget bigInfoControl = ric.createNextInfoControl(routingHelper, app, view.getSettings(), paintText,
|
||||||
paintSubText, false);
|
paintSubText, false);
|
||||||
mapInfoControls.registerSideWidget(bigInfoControl, R.drawable.widget_next_turn, R.string.map_widget_next_turn,"next_turn", true, carBicycleDefault, none, 5);
|
mapInfoControls.registerSideWidget(bigInfoControl, R.drawable.widget_next_turn, R.string.map_widget_next_turn,"next_turn", true, 5);
|
||||||
NextTurnInfoWidget smallInfoControl = ric.createNextInfoControl(routingHelper, app, view.getSettings(),
|
NextTurnInfoWidget smallInfoControl = ric.createNextInfoControl(routingHelper, app, view.getSettings(),
|
||||||
paintSmallText, paintSmallSubText, true);
|
paintSmallText, paintSmallSubText, true);
|
||||||
mapInfoControls.registerSideWidget(smallInfoControl, R.drawable.widget_next_turn, R.string.map_widget_next_turn_small, "next_turn_small", true,
|
mapInfoControls.registerSideWidget(smallInfoControl, R.drawable.widget_next_turn, R.string.map_widget_next_turn_small, "next_turn_small", true,
|
||||||
ApplicationMode.of(ApplicationMode.PEDESTRIAN), none, 10);
|
10);
|
||||||
NextTurnInfoWidget nextNextInfoControl = ric.createNextNextInfoControl(routingHelper, app, view.getSettings(),
|
NextTurnInfoWidget nextNextInfoControl = ric.createNextNextInfoControl(routingHelper, app, view.getSettings(),
|
||||||
paintSmallText, paintSmallSubText, true);
|
paintSmallText, paintSmallSubText, true);
|
||||||
mapInfoControls.registerSideWidget(nextNextInfoControl, R.drawable.widget_next_turn, R.string.map_widget_next_next_turn, "next_next_turn",true, carBicycleDefault, none, 15);
|
mapInfoControls.registerSideWidget(nextNextInfoControl, R.drawable.widget_next_turn, R.string.map_widget_next_next_turn, "next_next_turn",true, 15);
|
||||||
//MiniMapControl miniMap = ric.createMiniMapControl(routingHelper, view);
|
//MiniMapControl miniMap = ric.createMiniMapControl(routingHelper, view);
|
||||||
//mapInfoControls.registerSideWidget(miniMap, R.drawable.widget_next_turn, R.string.map_widget_mini_route, "mini_route", true, none, none, 20);
|
//mapInfoControls.registerSideWidget(miniMap, R.drawable.widget_next_turn, R.string.map_widget_mini_route, "mini_route", true, none, none, 20);
|
||||||
// right stack
|
// right stack
|
||||||
TextInfoWidget intermediateDist = ric.createIntermediateDistanceControl(map, paintText, paintSubText);
|
TextInfoWidget intermediateDist = ric.createIntermediateDistanceControl(map, paintText, paintSubText);
|
||||||
mapInfoControls.registerSideWidget(intermediateDist, R.drawable.widget_intermediate, R.string.map_widget_intermediate_distance, "intermediate_distance", false, all, none, 3);
|
mapInfoControls.registerSideWidget(intermediateDist, R.drawable.widget_intermediate, R.string.map_widget_intermediate_distance, "intermediate_distance", false, 3);
|
||||||
TextInfoWidget dist = ric.createDistanceControl(map, paintText, paintSubText);
|
TextInfoWidget dist = ric.createDistanceControl(map, paintText, paintSubText);
|
||||||
mapInfoControls.registerSideWidget(dist, R.drawable.widget_target, R.string.map_widget_distance, "distance", false, all, none, 5);
|
mapInfoControls.registerSideWidget(dist, R.drawable.widget_target, R.string.map_widget_distance, "distance", false, 5);
|
||||||
TextInfoWidget time = ric.createTimeControl(map, paintText, paintSubText);
|
TextInfoWidget time = ric.createTimeControl(map, paintText, paintSubText);
|
||||||
mapInfoControls.registerSideWidget(time, R.drawable.widget_time, R.string.map_widget_time, "time",false, all, none, 10);
|
mapInfoControls.registerSideWidget(time, R.drawable.widget_time, R.string.map_widget_time, "time",false, 10);
|
||||||
TextInfoWidget speed = ric.createSpeedControl(map, paintText, paintSubText);
|
TextInfoWidget speed = ric.createSpeedControl(map, paintText, paintSubText);
|
||||||
mapInfoControls.registerSideWidget(speed, R.drawable.widget_speed, R.string.map_widget_speed, "speed", false, carBicycleDefault, none, 15);
|
mapInfoControls.registerSideWidget(speed, R.drawable.widget_speed, R.string.map_widget_speed, "speed", false, 15);
|
||||||
TextInfoWidget gpsInfo = mic.createGPSInfoControl(map, paintText, paintSubText);
|
TextInfoWidget gpsInfo = mic.createGPSInfoControl(map, paintText, paintSubText);
|
||||||
mapInfoControls.registerSideWidget(gpsInfo, R.drawable.widget_gps_info, R.string.map_widget_gps_info, "gps_info", false, exceptCar, none, 17);
|
mapInfoControls.registerSideWidget(gpsInfo, R.drawable.widget_gps_info, R.string.map_widget_gps_info, "gps_info", false, 17);
|
||||||
TextInfoWidget maxspeed = ric.createMaxSpeedControl(map, paintText, paintSubText);
|
TextInfoWidget maxspeed = ric.createMaxSpeedControl(map, paintText, paintSubText);
|
||||||
mapInfoControls.registerSideWidget(maxspeed, R.drawable.widget_max_speed, R.string.map_widget_max_speed, "max_speed", false, carBicycleDefault, none, 18);
|
mapInfoControls.registerSideWidget(maxspeed, R.drawable.widget_max_speed, R.string.map_widget_max_speed, "max_speed", false, 18);
|
||||||
TextInfoWidget alt = mic.createAltitudeControl(map, paintText, paintSubText);
|
TextInfoWidget alt = mic.createAltitudeControl(map, paintText, paintSubText);
|
||||||
mapInfoControls.registerSideWidget(alt, R.drawable.widget_altitude, R.string.map_widget_altitude, "altitude", false, exceptCar, none, 20);
|
mapInfoControls.registerSideWidget(alt, R.drawable.widget_altitude, R.string.map_widget_altitude, "altitude", false, 20);
|
||||||
|
|
||||||
// Top widgets
|
// Top widgets
|
||||||
ImageViewWidget compassView = mic.createCompassView(map);
|
ImageViewWidget compassView = mic.createCompassView(map);
|
||||||
mapInfoControls.registerTopWidget(compassView, R.drawable.widget_compass, R.string.map_widget_compass, "compass", MapWidgetRegistry.LEFT_CONTROL, all, 5);
|
mapInfoControls.registerTopWidget(compassView, R.drawable.widget_compass, R.string.map_widget_compass, "compass", MapWidgetRegistry.LEFT_CONTROL, 5);
|
||||||
View config = createConfiguration();
|
View config = createConfiguration();
|
||||||
mapInfoControls.registerTopWidget(config, R.drawable.widget_config, R.string.map_widget_config, "config", MapWidgetRegistry.RIGHT_CONTROL, all, 10).required(ApplicationMode.DEFAULT);
|
mapInfoControls.registerTopWidget(config, R.drawable.widget_config, R.string.map_widget_config, "config", MapWidgetRegistry.RIGHT_CONTROL, 10).required(ApplicationMode.DEFAULT);
|
||||||
mapInfoControls.registerTopWidget(monitoringServices.createMonitoringWidget(view, map), R.drawable.widget_monitoring, R.string.map_widget_monitoring_services,
|
mapInfoControls.registerTopWidget(monitoringServices.createMonitoringWidget(view, map), R.drawable.widget_monitoring, R.string.map_widget_monitoring_services,
|
||||||
"monitoring_services", MapWidgetRegistry.LEFT_CONTROL, exceptCar, 12);
|
"monitoring_services", MapWidgetRegistry.LEFT_CONTROL, 12);
|
||||||
mapInfoControls.registerTopWidget(mic.createLockInfo(map), R.drawable.widget_lock_screen, R.string.bg_service_screen_lock, "bgService",
|
mapInfoControls.registerTopWidget(mic.createLockInfo(map), R.drawable.widget_lock_screen, R.string.bg_service_screen_lock, "bgService",
|
||||||
MapWidgetRegistry.LEFT_CONTROL, none, 15);
|
MapWidgetRegistry.LEFT_CONTROL, 15);
|
||||||
backToLocation = mic.createBackToLocation(map);
|
backToLocation = mic.createBackToLocation(map);
|
||||||
mapInfoControls.registerTopWidget(backToLocation, R.drawable.widget_backtolocation, R.string.map_widget_back_to_loc, "back_to_location", MapWidgetRegistry.RIGHT_CONTROL, all, 5);
|
mapInfoControls.registerTopWidget(backToLocation, R.drawable.widget_backtolocation, R.string.map_widget_back_to_loc, "back_to_location", MapWidgetRegistry.RIGHT_CONTROL, 5);
|
||||||
|
|
||||||
View globus = createLayer();
|
View globus = createLayer();
|
||||||
mapInfoControls.registerTopWidget(globus, R.drawable.widget_layer, R.string.menu_layers, "progress", MapWidgetRegistry.RIGHT_CONTROL, none, 15);
|
mapInfoControls.registerTopWidget(globus, R.drawable.widget_layer, R.string.menu_layers, "layers", MapWidgetRegistry.RIGHT_CONTROL, 15);
|
||||||
|
|
||||||
topText = mic.createStreetView(app, map, paintText);
|
topText = mic.createStreetView(app, map, paintText);
|
||||||
mapInfoControls.registerTopWidget(topText, R.drawable.street_name, R.string.map_widget_top_text,
|
mapInfoControls.registerTopWidget(topText, R.drawable.street_name, R.string.map_widget_top_text,
|
||||||
"street_name", MapWidgetRegistry.MAIN_CONTROL, all, 100);
|
"street_name", MapWidgetRegistry.MAIN_CONTROL, 100);
|
||||||
|
|
||||||
// Register appearance widgets
|
// Register appearance widgets
|
||||||
AppearanceWidgetsFactory.INSTANCE.registerAppearanceWidgets(map, this, mapInfoControls);
|
AppearanceWidgetsFactory.INSTANCE.registerAppearanceWidgets(map, this, mapInfoControls);
|
||||||
|
@ -330,7 +327,6 @@ public class MapInfoLayer extends OsmandMapLayer {
|
||||||
final OsmandSettings settings = view.getSettings();
|
final OsmandSettings settings = view.getSettings();
|
||||||
|
|
||||||
final ArrayList<Object> list = new ArrayList<Object>();
|
final ArrayList<Object> list = new ArrayList<Object>();
|
||||||
String appMode = settings.getApplicationMode().toHumanString(view.getApplication());
|
|
||||||
list.add(map.getString(R.string.map_widget_reset));
|
list.add(map.getString(R.string.map_widget_reset));
|
||||||
list.add(map.getString(R.string.map_widget_top_stack));
|
list.add(map.getString(R.string.map_widget_top_stack));
|
||||||
list.addAll(mapInfoControls.getTop());
|
list.addAll(mapInfoControls.getTop());
|
||||||
|
@ -423,7 +419,7 @@ public class MapInfoLayer extends OsmandMapLayer {
|
||||||
View confirmDialog = view.inflate(view.getContext(), R.layout.configuration_dialog, null);
|
View confirmDialog = view.inflate(view.getContext(), R.layout.configuration_dialog, null);
|
||||||
final ListView lv = (ListView) confirmDialog.findViewById(android.R.id.list);
|
final ListView lv = (ListView) confirmDialog.findViewById(android.R.id.list);
|
||||||
NavigateAction.prepareAppModeView(map, selected, true,
|
NavigateAction.prepareAppModeView(map, selected, true,
|
||||||
(ViewGroup) confirmDialog.findViewById(R.id.TopBar),
|
(ViewGroup) confirmDialog.findViewById(R.id.TopBar), false,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
|
|
@ -24,6 +24,7 @@ public class AppearanceWidgetsFactory {
|
||||||
public static AppearanceWidgetsFactory INSTANCE = new AppearanceWidgetsFactory();
|
public static AppearanceWidgetsFactory INSTANCE = new AppearanceWidgetsFactory();
|
||||||
private String ADDITIONAL_VECTOR_RENDERING_CATEGORY;
|
private String ADDITIONAL_VECTOR_RENDERING_CATEGORY;
|
||||||
public static boolean EXTRA_SETTINGS = true;
|
public static boolean EXTRA_SETTINGS = true;
|
||||||
|
public static boolean POSITION_ON_THE_MAP = false;
|
||||||
|
|
||||||
|
|
||||||
public void registerAppearanceWidgets(final MapActivity map, final MapInfoLayer mapInfoLayer,
|
public void registerAppearanceWidgets(final MapActivity map, final MapInfoLayer mapInfoLayer,
|
||||||
|
@ -42,8 +43,6 @@ public class AppearanceWidgetsFactory {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (EXTRA_SETTINGS) {
|
if (EXTRA_SETTINGS) {
|
||||||
// previous extra settings
|
|
||||||
|
|
||||||
final MapWidgetRegistry.MapWidgetRegInfo showRuler = mapInfoControls.registerAppearanceWidget(R.drawable.widget_ruler, R.string.map_widget_show_ruler,
|
final MapWidgetRegistry.MapWidgetRegInfo showRuler = mapInfoControls.registerAppearanceWidget(R.drawable.widget_ruler, R.string.map_widget_show_ruler,
|
||||||
"showRuler", view.getSettings().SHOW_RULER);
|
"showRuler", view.getSettings().SHOW_RULER);
|
||||||
showRuler.setStateChangeListener(new Runnable() {
|
showRuler.setStateChangeListener(new Runnable() {
|
||||||
|
@ -74,28 +73,32 @@ public class AppearanceWidgetsFactory {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// final OsmandSettings.OsmandPreference<Integer> posPref = view.getSettings().POSITION_ON_MAP;
|
if (POSITION_ON_THE_MAP) {
|
||||||
// final MapWidgetRegistry.MapWidgetRegInfo posMap = mapInfoControls.registerAppearanceWidget(R.drawable.widget_position_marker, R.string.position_on_map,
|
final OsmandSettings.OsmandPreference<Integer> posPref = view.getSettings().POSITION_ON_MAP;
|
||||||
// "position_on_map", textSizePref);
|
final MapWidgetRegistry.MapWidgetRegInfo posMap = mapInfoControls.registerAppearanceWidget(
|
||||||
// posMap.setStateChangeListener(new Runnable() {
|
R.drawable.widget_position_marker, R.string.position_on_map, "position_on_map", posPref);
|
||||||
// @Override
|
posMap.setStateChangeListener(new Runnable() {
|
||||||
// public void run() {
|
@Override
|
||||||
// String[] entries = new String[] {map.getString(R.string.position_on_map_center), map.getString(R.string.position_on_map_bottom) };
|
public void run() {
|
||||||
// final Integer[] vals = new Integer[] { OsmandSettings.CENTER_CONSTANT, OsmandSettings.BOTTOM_CONSTANT };
|
String[] entries = new String[] { map.getString(R.string.position_on_map_center),
|
||||||
// AlertDialog.Builder b = new AlertDialog.Builder(view.getContext());
|
map.getString(R.string.position_on_map_bottom) };
|
||||||
// int i = Arrays.binarySearch(vals, posPref.get());
|
final Integer[] vals = new Integer[] { OsmandSettings.CENTER_CONSTANT,
|
||||||
// b.setSingleChoiceItems(entries, i, new DialogInterface.OnClickListener() {
|
OsmandSettings.BOTTOM_CONSTANT };
|
||||||
// @Override
|
AlertDialog.Builder b = new AlertDialog.Builder(view.getContext());
|
||||||
// public void onClick(DialogInterface dialog, int which) {
|
int i = Arrays.binarySearch(vals, posPref.get());
|
||||||
// posPref.set(vals[which]);
|
b.setSingleChoiceItems(entries, i, new DialogInterface.OnClickListener() {
|
||||||
// map.updateApplicationModeSettings();
|
@Override
|
||||||
// view.refreshMap(true);
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
// dialog.dismiss();
|
posPref.set(vals[which]);
|
||||||
// }
|
map.updateApplicationModeSettings();
|
||||||
// });
|
view.refreshMap(true);
|
||||||
// b.show();
|
dialog.dismiss();
|
||||||
// }
|
}
|
||||||
// });
|
});
|
||||||
|
b.show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,34 +167,6 @@ public class AppearanceWidgetsFactory {
|
||||||
bld.show();
|
bld.show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/*final OsmandSettings.OsmandPreference<Float> textSizePref = view.getSettings().MAP_TEXT_SIZE;
|
|
||||||
final MapWidgetRegistry.MapWidgetRegInfo textSize = mapInfoControls.registerAppearanceWidget(R.drawable.widget_text_size, R.string.map_text_size,
|
|
||||||
"text_size", textSizePref, map.getString(R.string.map_widget_map_rendering));
|
|
||||||
textSize.setStateChangeListener(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
final Float[] floatValues = new Float[] {0.6f, 0.8f, 1.0f, 1.2f, 1.5f, 1.75f, 2f};
|
|
||||||
String[] entries = new String[floatValues.length];
|
|
||||||
for (int i = 0; i < floatValues.length; i++) {
|
|
||||||
entries[i] = (int) (floatValues[i] * 100) +" %";
|
|
||||||
}
|
|
||||||
AlertDialog.Builder b = new AlertDialog.Builder(view.getContext());
|
|
||||||
b.setTitle(R.string.map_text_size);
|
|
||||||
int i = Arrays.binarySearch(floatValues, textSizePref.get());
|
|
||||||
b.setSingleChoiceItems(entries, i, new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
textSizePref.set(floatValues[which]);
|
|
||||||
app.getResourceManager().getRenderer().clearCache();
|
|
||||||
view.refreshMap(true);
|
|
||||||
dialog.dismiss();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
b.show();
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
|
|
||||||
RenderingRulesStorage renderer = app.getRendererRegistry().getCurrentSelectedRenderer();
|
RenderingRulesStorage renderer = app.getRendererRegistry().getCurrentSelectedRenderer();
|
||||||
if(renderer != null && EXTRA_SETTINGS) {
|
if(renderer != null && EXTRA_SETTINGS) {
|
||||||
createCustomRenderingProperties(renderer, map, mapInfoLayer, mapInfoControls);
|
createCustomRenderingProperties(renderer, map, mapInfoLayer, mapInfoControls);
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class MapWidgetRegistry {
|
||||||
return cmp;
|
return cmp;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
private Map<ApplicationMode, Set<String>> visibleElements = new LinkedHashMap<ApplicationMode, Set<String>>();
|
private Map<ApplicationMode, Set<String>> visibleElementsFromSettings = new LinkedHashMap<ApplicationMode, Set<String>>();
|
||||||
private final OsmandSettings settings;
|
private final OsmandSettings settings;
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,10 +52,10 @@ public class MapWidgetRegistry {
|
||||||
for(ApplicationMode ms : ApplicationMode.values(settings) ) {
|
for(ApplicationMode ms : ApplicationMode.values(settings) ) {
|
||||||
String mpf = settings.MAP_INFO_CONTROLS.getModeValue(ms);
|
String mpf = settings.MAP_INFO_CONTROLS.getModeValue(ms);
|
||||||
if(mpf.equals("")) {
|
if(mpf.equals("")) {
|
||||||
visibleElements.put(ms, null);
|
visibleElementsFromSettings.put(ms, null);
|
||||||
} else {
|
} else {
|
||||||
LinkedHashSet<String> set = new LinkedHashSet<String>();
|
LinkedHashSet<String> set = new LinkedHashSet<String>();
|
||||||
visibleElements.put(ms, set);
|
visibleElementsFromSettings.put(ms, set);
|
||||||
Collections.addAll(set, mpf.split(";"));
|
Collections.addAll(set, mpf.split(";"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,11 +65,9 @@ public class MapWidgetRegistry {
|
||||||
public MapWidgetRegInfo registerAppearanceWidget(int drawable, int messageId, String key,
|
public MapWidgetRegInfo registerAppearanceWidget(int drawable, int messageId, String key,
|
||||||
OsmandPreference<?> pref) {
|
OsmandPreference<?> pref) {
|
||||||
MapWidgetRegInfo ii = new MapWidgetRegInfo();
|
MapWidgetRegInfo ii = new MapWidgetRegInfo();
|
||||||
ii.defaultModes = ApplicationMode.noneOf();
|
|
||||||
ii.defaultCollapsible = null;
|
|
||||||
ii.key = key;
|
ii.key = key;
|
||||||
ii.preference = pref;
|
ii.preference = pref;
|
||||||
ii.visibleModes = ApplicationMode.noneOf();
|
ii.visibleModes = new LinkedHashSet<ApplicationMode>();
|
||||||
ii.visibleCollapsible = null;
|
ii.visibleCollapsible = null;
|
||||||
ii.drawable = drawable;
|
ii.drawable = drawable;
|
||||||
ii.messageId = messageId;
|
ii.messageId = messageId;
|
||||||
|
@ -89,12 +87,10 @@ public class MapWidgetRegistry {
|
||||||
public MapWidgetRegInfo registerAppearanceWidget(int drawable, String message, String key,
|
public MapWidgetRegInfo registerAppearanceWidget(int drawable, String message, String key,
|
||||||
CommonPreference<?> pref, String subcategory) {
|
CommonPreference<?> pref, String subcategory) {
|
||||||
MapWidgetRegInfo ii = new MapWidgetRegInfo();
|
MapWidgetRegInfo ii = new MapWidgetRegInfo();
|
||||||
ii.defaultModes = ApplicationMode.noneOf();
|
|
||||||
ii.defaultCollapsible = null;
|
|
||||||
ii.key = key;
|
ii.key = key;
|
||||||
ii.category = subcategory;
|
ii.category = subcategory;
|
||||||
ii.preference = pref;
|
ii.preference = pref;
|
||||||
ii.visibleModes = ApplicationMode.noneOf();
|
ii.visibleModes = new LinkedHashSet<ApplicationMode>();
|
||||||
ii.visibleCollapsible = null;
|
ii.visibleCollapsible = null;
|
||||||
ii.drawable = drawable;
|
ii.drawable = drawable;
|
||||||
ii.messageId = message.hashCode();
|
ii.messageId = message.hashCode();
|
||||||
|
@ -103,17 +99,14 @@ public class MapWidgetRegistry {
|
||||||
return ii;
|
return ii;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MapWidgetRegInfo registerTopWidget(View m, int drawable, int messageId, String key, int left,
|
public MapWidgetRegInfo registerTopWidget(View m, int drawable, int messageId, String key, int left, int priorityOrder) {
|
||||||
Set<ApplicationMode> appDefaultModes, int priorityOrder) {
|
|
||||||
MapWidgetRegInfo ii = new MapWidgetRegInfo();
|
MapWidgetRegInfo ii = new MapWidgetRegInfo();
|
||||||
ii.defaultModes = new LinkedHashSet<ApplicationMode>(appDefaultModes);
|
|
||||||
ii.defaultCollapsible = null;
|
|
||||||
ii.key = key;
|
ii.key = key;
|
||||||
ii.visibleModes = ApplicationMode.noneOf();
|
ii.visibleModes = new LinkedHashSet<ApplicationMode>();
|
||||||
ii.visibleCollapsible = null;
|
ii.visibleCollapsible = null;
|
||||||
for(ApplicationMode ms : ApplicationMode.values(settings) ) {
|
for(ApplicationMode ms : ApplicationMode.values(settings) ) {
|
||||||
boolean def = appDefaultModes.contains(ms);
|
boolean def = ms.isWidgetVisible(key);
|
||||||
Set<String> set = visibleElements.get(ms);
|
Set<String> set = visibleElementsFromSettings.get(ms);
|
||||||
if (set != null) {
|
if (set != null) {
|
||||||
if (set.contains(key)) {
|
if (set.contains(key)) {
|
||||||
def = true;
|
def = true;
|
||||||
|
@ -138,18 +131,15 @@ public class MapWidgetRegistry {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void registerSideWidget(BaseMapWidget m, int drawable, int messageId, String key, boolean left,
|
public void registerSideWidget(BaseMapWidget m, int drawable, int messageId, String key, boolean left, int priorityOrder) {
|
||||||
Set<ApplicationMode> appDefaultModes, Set<ApplicationMode> defaultCollapsible, int priorityOrder) {
|
|
||||||
MapWidgetRegInfo ii = new MapWidgetRegInfo();
|
MapWidgetRegInfo ii = new MapWidgetRegInfo();
|
||||||
ii.defaultModes = new LinkedHashSet<ApplicationMode>(appDefaultModes);
|
|
||||||
ii.defaultCollapsible = new LinkedHashSet<ApplicationMode>(defaultCollapsible);
|
|
||||||
ii.key = key;
|
ii.key = key;
|
||||||
ii.visibleModes = ApplicationMode.noneOf();
|
ii.visibleModes = new LinkedHashSet<ApplicationMode>();
|
||||||
ii.visibleCollapsible = ApplicationMode.noneOf();
|
ii.visibleCollapsible = new LinkedHashSet<ApplicationMode>();
|
||||||
for(ApplicationMode ms : ApplicationMode.values(settings) ) {
|
for(ApplicationMode ms : ApplicationMode.values(settings) ) {
|
||||||
boolean collapse = defaultCollapsible.contains(ms);;
|
boolean collapse = ms.isWidgetCollapsible(key);
|
||||||
boolean def = appDefaultModes.contains(ms);
|
boolean def = ms.isWidgetVisible(key);
|
||||||
Set<String> set = visibleElements.get(ms);
|
Set<String> set = visibleElementsFromSettings.get(ms);
|
||||||
if(set != null) {
|
if(set != null) {
|
||||||
if (set.contains(key)) {
|
if (set.contains(key)) {
|
||||||
def = true;
|
def = true;
|
||||||
|
@ -202,17 +192,17 @@ public class MapWidgetRegistry {
|
||||||
boolean visible = m.visible(mode);
|
boolean visible = m.visible(mode);
|
||||||
boolean collapseEnabled = m.collapseEnabled(mode);
|
boolean collapseEnabled = m.collapseEnabled(mode);
|
||||||
boolean collapse = m.visibleCollapsed(mode);
|
boolean collapse = m.visibleCollapsed(mode);
|
||||||
if (this.visibleElements.get(mode) == null) {
|
if (this.visibleElementsFromSettings.get(mode) == null) {
|
||||||
LinkedHashSet<String> set = new LinkedHashSet<String>();
|
LinkedHashSet<String> set = new LinkedHashSet<String>();
|
||||||
restoreModes(set, left, mode);
|
restoreModes(set, left, mode);
|
||||||
restoreModes(set, right, mode);
|
restoreModes(set, right, mode);
|
||||||
restoreModes(set, top, mode);
|
restoreModes(set, top, mode);
|
||||||
this.visibleElements.put(mode, set);
|
this.visibleElementsFromSettings.put(mode, set);
|
||||||
}
|
}
|
||||||
// clear everything
|
// clear everything
|
||||||
this.visibleElements.get(mode).remove(m.key);
|
this.visibleElementsFromSettings.get(mode).remove(m.key);
|
||||||
this.visibleElements.get(mode).remove("+" + m.key);
|
this.visibleElementsFromSettings.get(mode).remove("+" + m.key);
|
||||||
this.visibleElements.get(mode).remove("-" + m.key);
|
this.visibleElementsFromSettings.get(mode).remove("-" + m.key);
|
||||||
m.visibleModes.remove(mode);
|
m.visibleModes.remove(mode);
|
||||||
if (m.visibleCollapsible != null) {
|
if (m.visibleCollapsible != null) {
|
||||||
m.visibleCollapsible.remove(mode);
|
m.visibleCollapsible.remove(mode);
|
||||||
|
@ -220,16 +210,16 @@ public class MapWidgetRegistry {
|
||||||
if (visible || collapse) {
|
if (visible || collapse) {
|
||||||
if (collapseEnabled && !collapse) {
|
if (collapseEnabled && !collapse) {
|
||||||
m.visibleCollapsible.add(mode);
|
m.visibleCollapsible.add(mode);
|
||||||
this.visibleElements.get(mode).add("+" + m.key);
|
this.visibleElementsFromSettings.get(mode).add("+" + m.key);
|
||||||
} else {
|
} else {
|
||||||
this.visibleElements.get(mode).add("-" + m.key);
|
this.visibleElementsFromSettings.get(mode).add("-" + m.key);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
m.visibleModes.add(mode);
|
m.visibleModes.add(mode);
|
||||||
this.visibleElements.get(mode).add("" + m.key);
|
this.visibleElementsFromSettings.get(mode).add("" + m.key);
|
||||||
}
|
}
|
||||||
StringBuilder bs = new StringBuilder();
|
StringBuilder bs = new StringBuilder();
|
||||||
for (String ks : this.visibleElements.get(mode)) {
|
for (String ks : this.visibleElementsFromSettings.get(mode)) {
|
||||||
bs.append(ks).append(";");
|
bs.append(ks).append(";");
|
||||||
}
|
}
|
||||||
settings.MAP_INFO_CONTROLS.set(bs.toString());
|
settings.MAP_INFO_CONTROLS.set(bs.toString());
|
||||||
|
@ -290,15 +280,16 @@ public class MapWidgetRegistry {
|
||||||
ri.visibleCollapsible.remove(mode);
|
ri.visibleCollapsible.remove(mode);
|
||||||
}
|
}
|
||||||
ri.visibleModes.remove(mode);
|
ri.visibleModes.remove(mode);
|
||||||
if (ri.defaultCollapsible != null && ri.defaultCollapsible.contains(mode)) {
|
if (mode.isWidgetVisible(ri.key)) {
|
||||||
|
if (mode.isWidgetCollapsible(ri.key)) {
|
||||||
ri.visibleCollapsible.add(mode);
|
ri.visibleCollapsible.add(mode);
|
||||||
}
|
} else {
|
||||||
if (ri.defaultModes.contains(mode)) {
|
|
||||||
ri.visibleModes.add(mode);
|
ri.visibleModes.add(mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void resetToDefault() {
|
public void resetToDefault() {
|
||||||
ApplicationMode appMode = settings.getApplicationMode();
|
ApplicationMode appMode = settings.getApplicationMode();
|
||||||
|
@ -306,7 +297,7 @@ public class MapWidgetRegistry {
|
||||||
resetDefault(appMode, right);
|
resetDefault(appMode, right);
|
||||||
resetDefault(appMode, top);
|
resetDefault(appMode, top);
|
||||||
resetDefault(appMode, appearanceWidgets);
|
resetDefault(appMode, appearanceWidgets);
|
||||||
this.visibleElements.put(appMode, null);
|
this.visibleElementsFromSettings.put(appMode, null);
|
||||||
settings.MAP_INFO_CONTROLS.set("");
|
settings.MAP_INFO_CONTROLS.set("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -326,8 +317,6 @@ public class MapWidgetRegistry {
|
||||||
private String key;
|
private String key;
|
||||||
private int position;
|
private int position;
|
||||||
private String category;
|
private String category;
|
||||||
private Set<ApplicationMode> defaultModes;
|
|
||||||
private Set<ApplicationMode> defaultCollapsible;
|
|
||||||
private Set<ApplicationMode> visibleModes;
|
private Set<ApplicationMode> visibleModes;
|
||||||
private Set<ApplicationMode> visibleCollapsible;
|
private Set<ApplicationMode> visibleCollapsible;
|
||||||
private OsmandPreference<?> preference = null;
|
private OsmandPreference<?> preference = null;
|
||||||
|
|
Loading…
Reference in a new issue