Fix update modes params
This commit is contained in:
parent
61e588fca9
commit
b602b3180e
6 changed files with 64 additions and 63 deletions
|
@ -180,6 +180,7 @@ public class AccessibilitySettingsFragment extends BaseSettingsFragment implemen
|
||||||
OsmandMonitoringPlugin plugin = OsmandPlugin.getPlugin(OsmandMonitoringPlugin.class);
|
OsmandMonitoringPlugin plugin = OsmandPlugin.getPlugin(OsmandMonitoringPlugin.class);
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
app.getSettings().copyProfilePreferences(appMode, getSelectedAppMode(), plugin.getPreferences());
|
app.getSettings().copyProfilePreferences(appMode, getSelectedAppMode(), plugin.getPreferences());
|
||||||
|
updateAllSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,6 +189,7 @@ public class AccessibilitySettingsFragment extends BaseSettingsFragment implemen
|
||||||
OsmandMonitoringPlugin plugin = OsmandPlugin.getPlugin(OsmandMonitoringPlugin.class);
|
OsmandMonitoringPlugin plugin = OsmandPlugin.getPlugin(OsmandMonitoringPlugin.class);
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
app.getSettings().resetProfilePreferences(appMode, plugin.getPreferences());
|
app.getSettings().resetProfilePreferences(appMode, plugin.getPreferences());
|
||||||
|
updateAllSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -89,48 +89,35 @@ public class ApplicationMode {
|
||||||
* DEFAULT("Browse map"), CAR("Car"), BICYCLE("Bicycle"), PEDESTRIAN("Pedestrian"); NAUTICAL("boat"); PUBLIC_TRANSPORT("Public transport"); AIRCRAFT("Aircraft")
|
* DEFAULT("Browse map"), CAR("Car"), BICYCLE("Bicycle"), PEDESTRIAN("Pedestrian"); NAUTICAL("boat"); PUBLIC_TRANSPORT("Public transport"); AIRCRAFT("Aircraft")
|
||||||
*/
|
*/
|
||||||
public static final ApplicationMode DEFAULT = createBase(R.string.app_mode_default, "default")
|
public static final ApplicationMode DEFAULT = createBase(R.string.app_mode_default, "default")
|
||||||
.speed(1.5f, 5).arrivalDistance(90)
|
|
||||||
.locationIcon(LocationIcon.DEFAULT).navigationIcon(NavigationIcon.DEFAULT)
|
|
||||||
.icon(R.drawable.ic_world_globe_dark, R.drawable.map_world_globe_dark, "ic_world_globe_dark").reg();
|
.icon(R.drawable.ic_world_globe_dark, R.drawable.map_world_globe_dark, "ic_world_globe_dark").reg();
|
||||||
|
|
||||||
public static final ApplicationMode CAR = createBase(R.string.app_mode_car, "car")
|
public static final ApplicationMode CAR = createBase(R.string.app_mode_car, "car")
|
||||||
.speed(12.5f, 35)
|
|
||||||
.locationIcon(LocationIcon.CAR).navigationIcon(NavigationIcon.DEFAULT)
|
|
||||||
.icon(R.drawable.ic_action_car_dark, R.drawable.map_action_car_dark, "ic_action_car_dark")
|
.icon(R.drawable.ic_action_car_dark, R.drawable.map_action_car_dark, "ic_action_car_dark")
|
||||||
.setRoutingProfile("car").description(R.string.base_profile_descr_car).reg();
|
.description(R.string.base_profile_descr_car).reg();
|
||||||
|
|
||||||
public static final ApplicationMode BICYCLE = createBase(R.string.app_mode_bicycle, "bicycle")
|
public static final ApplicationMode BICYCLE = createBase(R.string.app_mode_bicycle, "bicycle")
|
||||||
.speed(2.77f, 15).arrivalDistance(60).offRouteDistance(50)
|
|
||||||
.locationIcon(LocationIcon.BICYCLE).navigationIcon(NavigationIcon.DEFAULT)
|
|
||||||
.icon(R.drawable.ic_action_bicycle_dark, R.drawable.map_action_bicycle_dark, "ic_action_bicycle_dark")
|
.icon(R.drawable.ic_action_bicycle_dark, R.drawable.map_action_bicycle_dark, "ic_action_bicycle_dark")
|
||||||
.setRoutingProfile("bicycle").description(R.string.base_profile_descr_bicycle).reg();
|
.description(R.string.base_profile_descr_bicycle).reg();
|
||||||
|
|
||||||
public static final ApplicationMode PEDESTRIAN = createBase(R.string.app_mode_pedestrian, "pedestrian")
|
public static final ApplicationMode PEDESTRIAN = createBase(R.string.app_mode_pedestrian, "pedestrian")
|
||||||
.speed(1.11f, 5).arrivalDistance(45).offRouteDistance(20)
|
|
||||||
.icon(R.drawable.ic_action_pedestrian_dark, R.drawable.map_action_pedestrian_dark, "ic_action_pedestrian_dark")
|
.icon(R.drawable.ic_action_pedestrian_dark, R.drawable.map_action_pedestrian_dark, "ic_action_pedestrian_dark")
|
||||||
.setRoutingProfile("pedestrian").description(R.string.base_profile_descr_pedestrian).reg();
|
.description(R.string.base_profile_descr_pedestrian).reg();
|
||||||
|
|
||||||
public static final ApplicationMode PUBLIC_TRANSPORT = createBase(R.string.app_mode_public_transport, "public_transport")
|
public static final ApplicationMode PUBLIC_TRANSPORT = createBase(R.string.app_mode_public_transport, "public_transport")
|
||||||
.icon(R.drawable.ic_action_bus_dark, R.drawable.map_action_bus_dark, "ic_action_bus_dark")
|
.icon(R.drawable.ic_action_bus_dark, R.drawable.map_action_bus_dark, "ic_action_bus_dark")
|
||||||
.setRoutingProfile("public_transport").description(R.string.base_profile_descr_public_transport).reg();
|
.description(R.string.base_profile_descr_public_transport).reg();
|
||||||
|
|
||||||
public static final ApplicationMode BOAT = createBase(R.string.app_mode_boat, "boat")
|
public static final ApplicationMode BOAT = createBase(R.string.app_mode_boat, "boat")
|
||||||
.speed(1.38f, 20)
|
|
||||||
.locationIcon(LocationIcon.DEFAULT).navigationIcon(NavigationIcon.NAUTICAL)
|
|
||||||
.icon(R.drawable.ic_action_sail_boat_dark, R.drawable.map_action_sail_boat_dark, "ic_action_sail_boat_dark")
|
.icon(R.drawable.ic_action_sail_boat_dark, R.drawable.map_action_sail_boat_dark, "ic_action_sail_boat_dark")
|
||||||
.setRoutingProfile("boat").description(R.string.base_profile_descr_boat).reg();
|
.description(R.string.base_profile_descr_boat).reg();
|
||||||
|
|
||||||
public static final ApplicationMode AIRCRAFT = createBase(R.string.app_mode_aircraft, "aircraft")
|
public static final ApplicationMode AIRCRAFT = createBase(R.string.app_mode_aircraft, "aircraft")
|
||||||
.speed(40f, 100)
|
|
||||||
.locationIcon(LocationIcon.CAR).navigationIcon(NavigationIcon.DEFAULT)
|
|
||||||
.icon(R.drawable.ic_action_aircraft, R.drawable.map_action_aircraft, "ic_action_aircraft").setRouteService(RouteService.STRAIGHT)
|
.icon(R.drawable.ic_action_aircraft, R.drawable.map_action_aircraft, "ic_action_aircraft").setRouteService(RouteService.STRAIGHT)
|
||||||
.setRoutingProfile("STRAIGHT_LINE_MODE").description(R.string.base_profile_descr_aircraft).reg();
|
.description(R.string.base_profile_descr_aircraft).reg();
|
||||||
|
|
||||||
public static final ApplicationMode SKI = createBase(R.string.app_mode_skiing, "ski")
|
public static final ApplicationMode SKI = createBase(R.string.app_mode_skiing, "ski")
|
||||||
.speed(1.38f, 15).arrivalDistance(60).offRouteDistance(50)
|
|
||||||
.locationIcon(LocationIcon.BICYCLE).navigationIcon(NavigationIcon.DEFAULT)
|
|
||||||
.icon(R.drawable.ic_action_skiing, R.drawable.map_action_skiing, "ic_action_skiing")
|
.icon(R.drawable.ic_action_skiing, R.drawable.map_action_skiing, "ic_action_skiing")
|
||||||
.setRoutingProfile("ski").description(R.string.base_profile_descr_ski).reg();
|
.description(R.string.base_profile_descr_ski).reg();
|
||||||
|
|
||||||
private static class ApplicationModeBean {
|
private static class ApplicationModeBean {
|
||||||
@Expose
|
@Expose
|
||||||
|
@ -320,6 +307,20 @@ public class ApplicationMode {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void updateAppModeOrder(OsmandApplication app, ApplicationMode mode) {
|
||||||
|
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
|
||||||
|
Type t = new TypeToken<Map<String, Integer>>() {
|
||||||
|
}.getType();
|
||||||
|
|
||||||
|
Map<String, Integer> appModesOrders = gson.fromJson(app.getSettings().APP_MODES_ORDERS.get(), t);
|
||||||
|
if (!Algorithms.isEmpty(appModesOrders)) {
|
||||||
|
Integer order = appModesOrders.get(mode.getStringKey());
|
||||||
|
if (order != null) {
|
||||||
|
mode.order = order;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static ApplicationModeBuilder create(ApplicationMode parent, int key, String stringKey) {
|
private static ApplicationModeBuilder create(ApplicationMode parent, int key, String stringKey) {
|
||||||
ApplicationModeBuilder builder = new ApplicationModeBuilder();
|
ApplicationModeBuilder builder = new ApplicationModeBuilder();
|
||||||
builder.applicationMode = new ApplicationMode(key, stringKey);
|
builder.applicationMode = new ApplicationMode(key, stringKey);
|
||||||
|
@ -642,31 +643,27 @@ public class ApplicationMode {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void initModesParams(OsmandApplication app) {
|
private static void initModesParams(OsmandApplication app) {
|
||||||
OsmandSettings settings = app.getSettings();
|
|
||||||
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
|
|
||||||
Type t = new TypeToken<Map<String, Integer>>() {
|
|
||||||
}.getType();
|
|
||||||
Map<String, Integer> appModesOrders = gson.fromJson(app.getSettings().APP_MODES_ORDERS.get(), t);
|
|
||||||
|
|
||||||
for (ApplicationMode mode : allPossibleValues()) {
|
for (ApplicationMode mode : allPossibleValues()) {
|
||||||
mode.routingProfile = settings.ROUTING_PROFILE.getModeValue(mode);
|
initModeParams(app, mode);
|
||||||
mode.routeService = settings.ROUTE_SERVICE.getModeValue(mode);
|
|
||||||
mode.defaultSpeed = settings.DEFAULT_SPEED.getModeValue(mode);
|
|
||||||
mode.minDistanceForTurn = settings.MIN_DISTANCE_FOR_TURN.getModeValue(mode);
|
|
||||||
mode.arrivalDistance = settings.ARRIVAL_DISTANCE.getModeValue(mode);
|
|
||||||
mode.offRouteDistance = settings.OFF_ROUTE_DISTANCE.getModeValue(mode);
|
|
||||||
mode.userProfileName = settings.USER_PROFILE_NAME.getModeValue(mode);
|
|
||||||
mode.navigationIcon = settings.NAVIGATION_ICON.getModeValue(mode);
|
|
||||||
mode.locationIcon = settings.LOCATION_ICON.getModeValue(mode);
|
|
||||||
mode.iconColor = settings.ICON_COLOR.getModeValue(mode);
|
|
||||||
Integer order = appModesOrders.get(mode.getStringKey());
|
|
||||||
if (order != null) {
|
|
||||||
mode.order = order;
|
|
||||||
}
|
|
||||||
updateAppModeIcon(app, settings.ICON_RES_NAME.getModeValue(mode), mode);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void initModeParams(OsmandApplication app, ApplicationMode mode) {
|
||||||
|
OsmandSettings settings = app.getSettings();
|
||||||
|
mode.routingProfile = settings.ROUTING_PROFILE.getModeValue(mode);
|
||||||
|
mode.routeService = settings.ROUTE_SERVICE.getModeValue(mode);
|
||||||
|
mode.defaultSpeed = settings.DEFAULT_SPEED.getModeValue(mode);
|
||||||
|
mode.minDistanceForTurn = settings.MIN_DISTANCE_FOR_TURN.getModeValue(mode);
|
||||||
|
mode.arrivalDistance = settings.ARRIVAL_DISTANCE.getModeValue(mode);
|
||||||
|
mode.offRouteDistance = settings.OFF_ROUTE_DISTANCE.getModeValue(mode);
|
||||||
|
mode.userProfileName = settings.USER_PROFILE_NAME.getModeValue(mode);
|
||||||
|
mode.navigationIcon = settings.NAVIGATION_ICON.getModeValue(mode);
|
||||||
|
mode.locationIcon = settings.LOCATION_ICON.getModeValue(mode);
|
||||||
|
mode.iconColor = settings.ICON_COLOR.getModeValue(mode);
|
||||||
|
updateAppModeOrder(app, mode);
|
||||||
|
updateAppModeIcon(app, settings.ICON_RES_NAME.getModeValue(mode), mode);
|
||||||
|
}
|
||||||
|
|
||||||
public static void reorderAppModes() {
|
public static void reorderAppModes() {
|
||||||
Comparator<ApplicationMode> comparator = new Comparator<ApplicationMode>() {
|
Comparator<ApplicationMode> comparator = new Comparator<ApplicationMode>() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -424,44 +424,30 @@ public class OsmandSettings {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean copyPreferencesFromProfile(ApplicationMode modeFrom, ApplicationMode modeTo) {
|
public void copyPreferencesFromProfile(ApplicationMode modeFrom, ApplicationMode modeTo) {
|
||||||
return copyProfilePreferences(modeFrom, modeTo, new ArrayList<OsmandPreference>(registeredPreferences.values()));
|
copyProfilePreferences(modeFrom, modeTo, new ArrayList<OsmandPreference>(registeredPreferences.values()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean copyProfilePreferences(ApplicationMode modeFrom, ApplicationMode modeTo, List<OsmandPreference> profilePreferences) {
|
public void copyProfilePreferences(ApplicationMode modeFrom, ApplicationMode modeTo, List<OsmandPreference> profilePreferences) {
|
||||||
SettingsEditor settingsEditor = settingsAPI.edit(getProfilePreferences(modeTo));
|
|
||||||
for (OsmandPreference pref : profilePreferences) {
|
for (OsmandPreference pref : profilePreferences) {
|
||||||
if (pref instanceof CommonPreference && !((CommonPreference) pref).global) {
|
if (pref instanceof CommonPreference && !((CommonPreference) pref).global) {
|
||||||
CommonPreference profilePref = (CommonPreference) pref;
|
CommonPreference profilePref = (CommonPreference) pref;
|
||||||
Object copiedValue = profilePref.getModeValue(modeFrom);
|
Object copiedValue = profilePref.getModeValue(modeFrom);
|
||||||
if (copiedValue instanceof String) {
|
profilePref.setModeValue(modeTo, copiedValue);
|
||||||
settingsEditor.putString(pref.getId(), (String) copiedValue);
|
|
||||||
} else if (copiedValue instanceof Boolean) {
|
|
||||||
settingsEditor.putBoolean(pref.getId(), (Boolean) copiedValue);
|
|
||||||
} else if (copiedValue instanceof Float) {
|
|
||||||
settingsEditor.putFloat(pref.getId(), (Float) copiedValue);
|
|
||||||
} else if (copiedValue instanceof Integer) {
|
|
||||||
settingsEditor.putInt(pref.getId(), (Integer) copiedValue);
|
|
||||||
} else if (copiedValue instanceof Long) {
|
|
||||||
settingsEditor.putLong(pref.getId(), (Long) copiedValue);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return settingsEditor.commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean resetPreferencesForProfile(ApplicationMode mode) {
|
public boolean resetPreferencesForProfile(ApplicationMode mode) {
|
||||||
return settingsAPI.edit(getProfilePreferences(mode)).clear().commit();
|
return settingsAPI.edit(getProfilePreferences(mode)).clear().commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean resetProfilePreferences(ApplicationMode mode, List<OsmandPreference> profilePreferences) {
|
public void resetProfilePreferences(ApplicationMode mode, List<OsmandPreference> profilePreferences) {
|
||||||
SettingsEditor settingsEditor = settingsAPI.edit(getProfilePreferences(mode));
|
|
||||||
for (OsmandPreference pref : profilePreferences) {
|
for (OsmandPreference pref : profilePreferences) {
|
||||||
if (pref instanceof CommonPreference && !((CommonPreference) pref).global) {
|
if (pref instanceof CommonPreference && !((CommonPreference) pref).global) {
|
||||||
settingsEditor.remove(pref.getId());
|
pref.resetModeToDefault(mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return settingsEditor.commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApplicationMode LAST_ROUTING_APPLICATION_MODE = null;
|
public ApplicationMode LAST_ROUTING_APPLICATION_MODE = null;
|
||||||
|
|
|
@ -475,6 +475,7 @@ public class MultimediaNotesFragment extends BaseSettingsFragment implements Cop
|
||||||
AudioVideoNotesPlugin plugin = OsmandPlugin.getPlugin(AudioVideoNotesPlugin.class);
|
AudioVideoNotesPlugin plugin = OsmandPlugin.getPlugin(AudioVideoNotesPlugin.class);
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
app.getSettings().copyProfilePreferences(appMode, getSelectedAppMode(), plugin.getPreferences());
|
app.getSettings().copyProfilePreferences(appMode, getSelectedAppMode(), plugin.getPreferences());
|
||||||
|
updateAllSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -483,6 +484,7 @@ public class MultimediaNotesFragment extends BaseSettingsFragment implements Cop
|
||||||
AudioVideoNotesPlugin plugin = OsmandPlugin.getPlugin(AudioVideoNotesPlugin.class);
|
AudioVideoNotesPlugin plugin = OsmandPlugin.getPlugin(AudioVideoNotesPlugin.class);
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
app.getSettings().resetProfilePreferences(appMode, plugin.getPreferences());
|
app.getSettings().resetProfilePreferences(appMode, plugin.getPreferences());
|
||||||
|
updateAllSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -290,6 +290,7 @@ public class MonitoringSettingsFragment extends BaseSettingsFragment implements
|
||||||
OsmandMonitoringPlugin plugin = OsmandPlugin.getPlugin(OsmandMonitoringPlugin.class);
|
OsmandMonitoringPlugin plugin = OsmandPlugin.getPlugin(OsmandMonitoringPlugin.class);
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
app.getSettings().copyProfilePreferences(appMode, getSelectedAppMode(), plugin.getPreferences());
|
app.getSettings().copyProfilePreferences(appMode, getSelectedAppMode(), plugin.getPreferences());
|
||||||
|
updateAllSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,6 +299,7 @@ public class MonitoringSettingsFragment extends BaseSettingsFragment implements
|
||||||
OsmandMonitoringPlugin plugin = OsmandPlugin.getPlugin(OsmandMonitoringPlugin.class);
|
OsmandMonitoringPlugin plugin = OsmandPlugin.getPlugin(OsmandMonitoringPlugin.class);
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
app.getSettings().resetProfilePreferences(appMode, plugin.getPreferences());
|
app.getSettings().resetProfilePreferences(appMode, plugin.getPreferences());
|
||||||
|
updateAllSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -143,13 +143,22 @@ public class ConfigureProfileFragment extends BaseSettingsFragment implements Co
|
||||||
@Override
|
@Override
|
||||||
protected void updateToolbar() {
|
protected void updateToolbar() {
|
||||||
super.updateToolbar();
|
super.updateToolbar();
|
||||||
updateToolbarSwitch();
|
View view = getView();
|
||||||
|
if (view != null) {
|
||||||
|
updateToolbarSwitch();
|
||||||
|
TextView toolbarTitle = view.findViewById(R.id.toolbar_title);
|
||||||
|
toolbarTitle.setText(getSelectedAppMode().toHumanString(getContext()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void copyAppModePrefs(ApplicationMode appMode) {
|
public void copyAppModePrefs(ApplicationMode appMode) {
|
||||||
if (appMode != null) {
|
if (appMode != null) {
|
||||||
app.getSettings().copyPreferencesFromProfile(appMode, getSelectedAppMode());
|
ApplicationMode selectedAppMode = getSelectedAppMode();
|
||||||
|
app.getSettings().copyPreferencesFromProfile(appMode, selectedAppMode);
|
||||||
|
ApplicationMode.initModeParams(app, selectedAppMode);
|
||||||
|
updateToolbar();
|
||||||
|
updateAllSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,6 +166,9 @@ public class ConfigureProfileFragment extends BaseSettingsFragment implements Co
|
||||||
public void resetAppModePrefs(ApplicationMode appMode) {
|
public void resetAppModePrefs(ApplicationMode appMode) {
|
||||||
if (appMode != null) {
|
if (appMode != null) {
|
||||||
app.getSettings().resetPreferencesForProfile(appMode);
|
app.getSettings().resetPreferencesForProfile(appMode);
|
||||||
|
ApplicationMode.initModeParams(app, appMode);
|
||||||
|
updateToolbar();
|
||||||
|
updateAllSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue