From 5759601738eaf3cb0c5e6ac7169b2ebcbe0bbc95 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 10 Jan 2020 18:59:13 +0200 Subject: [PATCH] Fix customized settings update --- .../src/net/osmand/plus/MapMarkersHelper.java | 22 ++-- .../osmand/plus/OsmAndLocationProvider.java | 20 ++- .../net/osmand/plus/OsmandApplication.java | 1 - .../src/net/osmand/plus/OsmandSettings.java | 2 - .../net/osmand/plus/TargetPointsHelper.java | 11 ++ .../plus/activities/DayNightHelper.java | 9 +- .../plus/activities/MapActivityLayers.java | 2 - .../net/osmand/plus/helpers/LockHelper.java | 11 ++ .../plus/mapmarkers/PlanRouteFragment.java | 2 +- .../plus/monitoring/LiveMonitoringHelper.java | 116 +++++++++--------- .../plus/render/MapRenderRepositories.java | 15 ++- .../RoutingOptionsHelper.java | 5 +- .../osmand/plus/routing/RoutingHelper.java | 11 +- .../net/osmand/plus/routing/VoiceRouter.java | 21 +++- .../plus/views/TransportStopsLayer.java | 19 ++- 15 files changed, 152 insertions(+), 115 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java b/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java index 22f4fede33..6aedb3f84a 100644 --- a/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java +++ b/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java @@ -9,6 +9,8 @@ import android.support.v4.content.ContextCompat; import net.osmand.AndroidUtils; import net.osmand.GPXUtilities; +import net.osmand.GPXUtilities.GPXFile; +import net.osmand.GPXUtilities.WptPt; import net.osmand.IndexConstants; import net.osmand.PlatformUtil; import net.osmand.data.FavouritePoint; @@ -16,8 +18,6 @@ import net.osmand.data.LatLon; import net.osmand.data.LocationPoint; import net.osmand.data.PointDescription; import net.osmand.plus.FavouritesDbHelper.FavoriteGroup; -import net.osmand.GPXUtilities.GPXFile; -import net.osmand.GPXUtilities.WptPt; import net.osmand.plus.GeocodingLookupService.AddressLookupRequest; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.mapmarkers.MapMarkersDbHelper; @@ -53,9 +53,9 @@ public class MapMarkersHelper { public static final int BY_DISTANCE_DESC = 1; public static final int BY_DISTANCE_ASC = 2; public static final int BY_DATE_ADDED_DESC = 3; - + public static final int BY_DATE_ADDED_ASC = 4; - + private static final Log LOG = PlatformUtil.getLog(MapMarkersHelper.class); @Retention(RetentionPolicy.SOURCE) @@ -64,7 +64,6 @@ public class MapMarkersHelper { } private OsmandApplication ctx; - private OsmandSettings settings; private MapMarkersDbHelper markersDbHelper; private ExecutorService executorService = Executors.newSingleThreadExecutor(); @@ -76,8 +75,6 @@ public class MapMarkersHelper { private List listeners = new ArrayList<>(); private Set syncListeners = new HashSet<>(); - private boolean startFromMyLocation; - private MarkersPlanRouteContext planRouteContext; public List getMapMarkers() { @@ -93,12 +90,11 @@ public class MapMarkersHelper { } public boolean isStartFromMyLocation() { - return startFromMyLocation; + return ctx.getSettings().ROUTE_MAP_MARKERS_START_MY_LOC.get(); } public void setStartFromMyLocation(boolean startFromMyLocation) { - this.startFromMyLocation = startFromMyLocation; - settings.ROUTE_MAP_MARKERS_START_MY_LOC.set(startFromMyLocation); + ctx.getSettings().ROUTE_MAP_MARKERS_START_MY_LOC.set(startFromMyLocation); } public MarkersPlanRouteContext getPlanRouteContext() { @@ -107,10 +103,8 @@ public class MapMarkersHelper { public MapMarkersHelper(OsmandApplication ctx) { this.ctx = ctx; - settings = ctx.getSettings(); markersDbHelper = ctx.getMapMarkersDbHelper(); planRouteContext = new MarkersPlanRouteContext(ctx); - startFromMyLocation = settings.ROUTE_MAP_MARKERS_START_MY_LOC.get(); markersDbHelper.removeDisabledGroups(); loadMarkers(); loadGroups(); @@ -616,7 +610,7 @@ public class MapMarkersHelper { private List getMarkers() { List res = new ArrayList<>(mapMarkers); - if (settings.KEEP_PASSED_MARKERS_ON_MAP.get()) { + if (ctx.getSettings().KEEP_PASSED_MARKERS_ON_MAP.get()) { res.addAll(mapMarkersHistory); } return res; @@ -883,7 +877,7 @@ public class MapMarkersHelper { @Nullable List wptPts, @Nullable List mapObjNames) { if (points.size() > 0) { - settings.SHOW_MAP_MARKERS.set(true); + ctx.getSettings().SHOW_MAP_MARKERS.set(true); int colorIndex = -1; List addedMarkers = new ArrayList<>(); for (int i = 0; i < points.size(); i++) { diff --git a/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java b/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java index 0474ea19b7..2a039f3bbf 100644 --- a/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java +++ b/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java @@ -76,6 +76,8 @@ public class OsmAndLocationProvider implements SensorEventListener { private static final long LOCATION_TIMEOUT_TO_BE_STALE = 1000 * 60 * 2; // 2 minutes private static final long STALE_LOCATION_TIMEOUT_TO_BE_GONE = 1000 * 60 * 20; // 20 minutes + private static final long AGPS_TO_REDOWNLOAD = 16 * 60 * 60 * 1000; // 16 hours + private static final int REQUESTS_BEFORE_CHECK_LOCATION = 100; private AtomicInteger locationRequestsCounter = new AtomicInteger(); private AtomicInteger staleLocationRequestsCounter = new AtomicInteger(); @@ -114,7 +116,6 @@ public class OsmAndLocationProvider implements SensorEventListener { private int currentScreenOrientation; private OsmandApplication app; - private OsmandSettings settings; private NavigationInfo navigationInfo; private CurrentPositionHelper currentPositionHelper; @@ -128,9 +129,6 @@ public class OsmAndLocationProvider implements SensorEventListener { private List compassListeners = new ArrayList(); private Listener gpsStatusListener; private float[] mRotationM = new float[9]; - private OsmandPreference USE_MAGNETIC_FIELD_SENSOR_COMPASS; - private OsmandPreference USE_FILTER_FOR_COMPASS; - private static final long AGPS_TO_REDOWNLOAD = 16 * 60 * 60 * 1000; // 16 hours public class SimulationProvider { @@ -234,9 +232,6 @@ public class OsmAndLocationProvider implements SensorEventListener { public OsmAndLocationProvider(OsmandApplication app) { this.app = app; navigationInfo = new NavigationInfo(app); - settings = app.getSettings(); - USE_MAGNETIC_FIELD_SENSOR_COMPASS = settings.USE_MAGNETIC_FIELD_SENSOR_COMPASS; - USE_FILTER_FOR_COMPASS = settings.USE_KALMAN_FILTER_FOR_COMPASS; currentPositionHelper = new CurrentPositionHelper(app); locationSimulation = new OsmAndLocationSimulation(app, this); addLocationListener(navigationInfo); @@ -393,7 +388,7 @@ public class OsmAndLocationProvider implements SensorEventListener { } else if (!sensorRegistered && register) { Log.d(PlatformUtil.TAG, "Enable sensor"); //$NON-NLS-1$ SensorManager sensorMgr = (SensorManager) app.getSystemService(Context.SENSOR_SERVICE); - if (USE_MAGNETIC_FIELD_SENSOR_COMPASS.get()) { + if (app.getSettings().USE_MAGNETIC_FIELD_SENSOR_COMPASS.get()) { Sensor s = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); if (s == null || !sensorMgr.registerListener(this, s, SensorManager.SENSOR_DELAY_UI)) { Log.e(PlatformUtil.TAG, "Sensor accelerometer could not be enabled"); @@ -476,7 +471,8 @@ public class OsmAndLocationProvider implements SensorEventListener { default: return; } - if (USE_MAGNETIC_FIELD_SENSOR_COMPASS.get()) { + OsmandSettings settings = app.getSettings(); + if (settings.USE_MAGNETIC_FIELD_SENSOR_COMPASS.get()) { if (mGravs != null && mGeoMags != null) { boolean success = SensorManager.getRotationMatrix(mRotationM, null, mGravs, mGeoMags); if (!success) { @@ -495,7 +491,7 @@ public class OsmAndLocationProvider implements SensorEventListener { lastValSin = (float) Math.sin(valRad); lastValCos = (float) Math.cos(valRad); // lastHeadingCalcTime = System.currentTimeMillis(); - boolean filter = USE_FILTER_FOR_COMPASS.get(); //USE_MAGNETIC_FIELD_SENSOR_COMPASS.get(); + boolean filter = settings.USE_KALMAN_FILTER_FOR_COMPASS.get(); //USE_MAGNETIC_FIELD_SENSOR_COMPASS.get(); if (filter) { filterCompassValue(); } else { @@ -806,9 +802,9 @@ public class OsmAndLocationProvider implements SensorEventListener { if (routingHelper.isFollowingMode()) { if (location == null || isPointAccurateForRouting(location)) { // Update routing position and get location for sticking mode - updatedLocation = routingHelper.setCurrentLocation(location, settings.SNAP_TO_ROAD.get()); + updatedLocation = routingHelper.setCurrentLocation(location, app.getSettings().SNAP_TO_ROAD.get()); } - } else if(routingHelper.isRoutePlanningMode() && settings.getPointToStart() == null) { + } else if(routingHelper.isRoutePlanningMode() && app.getSettings().getPointToStart() == null) { routingHelper.setCurrentLocation(location, false); } else if(getLocationSimulation().isRouteAnimating()) { routingHelper.setCurrentLocation(location, false); diff --git a/OsmAnd/src/net/osmand/plus/OsmandApplication.java b/OsmAnd/src/net/osmand/plus/OsmandApplication.java index 05a6e2d618..0fdffdf8cb 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandApplication.java +++ b/OsmAnd/src/net/osmand/plus/OsmandApplication.java @@ -291,7 +291,6 @@ public class OsmandApplication extends MultiDexApplication { public void setOsmandSettings(OsmandSettings osmandSettings) { //android.os.Process.killProcess(android.os.Process.myPid()); this.osmandSettings = osmandSettings; - resourceManager.getRenderer().updateSettings(); OsmandPlugin.initPlugins(this); } diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index 3be1fa31d5..7f673813c9 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -1470,8 +1470,6 @@ public class OsmandSettings { // this value string is synchronized with settings_pref.xml preference name public final OsmandPreference PREFERRED_LOCALE = new StringPreference("preferred_locale", "").makeGlobal(); - public static final String TRANSPORT_STOPS_OVER_MAP = "transportStops"; - public final OsmandPreference MAP_PREFERRED_LOCALE = new StringPreference("map_preferred_locale", "").makeGlobal().cache(); public final OsmandPreference MAP_TRANSLITERATE_NAMES = new BooleanPreference("map_transliterate_names", false).makeGlobal().cache(); diff --git a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java index 02a175ae97..494b77e176 100644 --- a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java +++ b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java @@ -12,6 +12,7 @@ import net.osmand.data.PointDescription; import net.osmand.plus.GeocodingLookupService.AddressLookupRequest; import net.osmand.plus.routing.RouteProvider.RouteService; import net.osmand.plus.routing.RoutingHelper; +import net.osmand.plus.OsmAndAppCustomization.OsmAndAppCustomizationListener; import net.osmand.util.Algorithms; import net.osmand.util.MapUtils; @@ -147,6 +148,16 @@ public class TargetPointsHelper { this.settings = ctx.getSettings(); this.routingHelper = ctx.getRoutingHelper(); readFromSettings(); + + OsmAndAppCustomizationListener customizationListener = new OsmAndAppCustomizationListener() { + @Override + public void onOsmAndSettingsCustomized() { + settings = TargetPointsHelper.this.ctx.getSettings(); + readFromSettings(); + updateRouteAndRefresh(true); + } + }; + ctx.getAppCustomization().addListener(customizationListener); } public void lookupAddessAll() { diff --git a/OsmAnd/src/net/osmand/plus/activities/DayNightHelper.java b/OsmAnd/src/net/osmand/plus/activities/DayNightHelper.java index d3ec516cf7..f9802a05a1 100644 --- a/OsmAnd/src/net/osmand/plus/activities/DayNightHelper.java +++ b/OsmAnd/src/net/osmand/plus/activities/DayNightHelper.java @@ -10,7 +10,6 @@ import net.osmand.PlatformUtil; import net.osmand.StateChangedListener; import net.osmand.plus.ApplicationMode; import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandSettings.CommonPreference; import net.osmand.plus.OsmandSettings.DayNightMode; import net.osmand.util.SunriseSunset; @@ -41,15 +40,13 @@ import android.location.LocationManager; * @author pavol.zibrita */ public class DayNightHelper implements SensorEventListener { + private static final Log log = PlatformUtil.getLog(DayNightHelper.class); private final OsmandApplication osmandApplication; - private CommonPreference pref; - public DayNightHelper(OsmandApplication osmandApplication) { this.osmandApplication = osmandApplication; - pref = osmandApplication.getSettings().DAYNIGHT_MODE; } private DayNightHelper listener; @@ -79,7 +76,7 @@ public class DayNightHelper implements SensorEventListener { } public boolean isNightModeForProfile(ApplicationMode mode) { - DayNightMode dayNightMode = pref.getModeValue(mode); + DayNightMode dayNightMode = osmandApplication.getSettings().DAYNIGHT_MODE.getModeValue(mode); if (dayNightMode.isDay()) { return false; } else if (dayNightMode.isNight()) { @@ -138,7 +135,7 @@ public class DayNightHelper implements SensorEventListener { public void startSensorIfNeeded(StateChangedListener sensorStateListener) { this.sensorStateListener = sensorStateListener; - DayNightMode dayNightMode = pref.get(); + DayNightMode dayNightMode = osmandApplication.getSettings().DAYNIGHT_MODE.get(); if (listener == null && dayNightMode.isSensor()) { SensorManager mSensorManager = (SensorManager) osmandApplication.getSystemService(Context.SENSOR_SERVICE); Sensor mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java index 2964149738..c20a4cc6bd 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java @@ -208,8 +208,6 @@ public class MapActivityLayers { public void updateLayers(OsmandMapTileView mapView) { OsmandSettings settings = getApplication().getSettings(); updateMapSource(mapView, settings.MAP_TILE_SOURCES); - boolean showStops = settings.getCustomRenderBooleanProperty(OsmandSettings.TRANSPORT_STOPS_OVER_MAP).get(); - transportStopsLayer.setShowTransportStops(showStops); OsmandPlugin.refreshLayers(mapView, activity); } diff --git a/OsmAnd/src/net/osmand/plus/helpers/LockHelper.java b/OsmAnd/src/net/osmand/plus/helpers/LockHelper.java index 6359b15e6e..44c58310c0 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/LockHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/LockHelper.java @@ -13,6 +13,7 @@ import android.os.PowerManager.WakeLock; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import net.osmand.plus.OsmAndAppCustomization.OsmAndAppCustomizationListener; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings.CommonPreference; @@ -65,6 +66,16 @@ public class LockHelper implements SensorEventListener { unlockEvent(); } }; + OsmAndAppCustomizationListener customizationListener = new OsmAndAppCustomizationListener() { + @Override + public void onOsmAndSettingsCustomized() { + OsmandSettings settings = app.getSettings(); + turnScreenOnEnabled = settings.TURN_SCREEN_ON_ENABLED; + turnScreenOnTime = settings.TURN_SCREEN_ON_TIME_INT; + turnScreenOnSensor = settings.TURN_SCREEN_ON_SENSOR; + } + }; + app.getAppCustomization().addListener(customizationListener); app.getRoutingHelper().getVoiceRouter().addVoiceMessageListener(voiceMessageListener); } diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java b/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java index 577d86f458..8ec8020ec6 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java @@ -292,7 +292,7 @@ public class PlanRouteFragment extends BaseOsmAndFragment implements OsmAndLocat } Object item = adapter.getItem(pos); if (item instanceof Location) { - markersHelper.setStartFromMyLocation(!mapActivity.getMyApplication().getSettings().ROUTE_MAP_MARKERS_START_MY_LOC.get()); + markersHelper.setStartFromMyLocation(!markersHelper.isStartFromMyLocation()); } else if (item instanceof MapMarker) { MapMarker marker = (MapMarker) item; selectedCount = marker.selected ? selectedCount - 1 : selectedCount + 1; diff --git a/OsmAnd/src/net/osmand/plus/monitoring/LiveMonitoringHelper.java b/OsmAnd/src/net/osmand/plus/monitoring/LiveMonitoringHelper.java index c3f9649a28..47a016ebd6 100644 --- a/OsmAnd/src/net/osmand/plus/monitoring/LiveMonitoringHelper.java +++ b/OsmAnd/src/net/osmand/plus/monitoring/LiveMonitoringHelper.java @@ -1,6 +1,5 @@ package net.osmand.plus.monitoring; -import android.content.Context; import android.os.AsyncTask; import net.osmand.PlatformUtil; @@ -24,23 +23,25 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue; -public class LiveMonitoringHelper { - - protected Context ctx; - private OsmandSettings settings; - private long lastTimeUpdated; - private LatLon lastPoint; +public class LiveMonitoringHelper { + private final static Log log = PlatformUtil.getLog(LiveMonitoringHelper.class); + + private OsmandApplication app; + private ConcurrentLinkedQueue queue; + + private LatLon lastPoint; + private long lastTimeUpdated; private boolean started = false; - public LiveMonitoringHelper(Context ctx){ - this.ctx = ctx; - settings = ((OsmandApplication) ctx.getApplicationContext()).getSettings(); + public LiveMonitoringHelper(OsmandApplication app) { + this.app = app; queue = new ConcurrentLinkedQueue<>(); } - - public boolean isLiveMonitoringEnabled(){ + + public boolean isLiveMonitoringEnabled() { + OsmandSettings settings = app.getSettings(); return settings.LIVE_MONITORING.get() && (settings.SAVE_TRACK_TO_GPX.get() || settings.SAVE_GLOBAL_TRACK_TO_GPX.get()); } @@ -50,6 +51,7 @@ public class LiveMonitoringHelper { if (location != null && isLiveMonitoringEnabled() && OsmAndLocationProvider.isNotSimulatedLocation(location) && OsmandPlugin.getEnabledPlugin(OsmandMonitoringPlugin.class) != null) { + OsmandSettings settings = app.getSettings(); if (locationTime - lastTimeUpdated > settings.LIVE_MONITORING_INTERVAL.get()) { record = true; } @@ -112,10 +114,11 @@ public class LiveMonitoringHelper { @Override protected Void doInBackground(ConcurrentLinkedQueue... concurrentLinkedQueues) { while (isLiveMonitoringEnabled()) { + int maxSendInterval = app.getSettings().LIVE_MONITORING_MAX_INTERVAL_TO_SEND.get(); for (ConcurrentLinkedQueue queue : concurrentLinkedQueues) { if (!queue.isEmpty()) { LiveMonitoringData data = (LiveMonitoringData) queue.peek(); - if (!(System.currentTimeMillis() - data.time > settings.LIVE_MONITORING_MAX_INTERVAL_TO_SEND.get())) { + if (!(System.currentTimeMillis() - data.time > maxSendInterval)) { sendData(data); } else { queue.poll(); @@ -128,10 +131,52 @@ public class LiveMonitoringHelper { } public void sendData(LiveMonitoringData data) { - String st = settings.LIVE_MONITORING_URL.get(); + String urlStr = getLiveUrl(data); + try { + // Parse the URL and let the URI constructor handle proper encoding of special characters such as spaces + URL url = new URL(urlStr); + HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); + URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), + url.getPath(), url.getQuery(), url.getRef()); + + urlConnection.setConnectTimeout(15000); + urlConnection.setReadTimeout(15000); + + log.info("Monitor " + uri); + + if (urlConnection.getResponseCode() / 100 != 2) { + + String msg = urlConnection.getResponseCode() + " : " + //$NON-NLS-1$//$NON-NLS-2$ + urlConnection.getResponseMessage(); + log.error("Error sending monitor request: " + msg); + } else { + queue.poll(); + InputStream is = urlConnection.getInputStream(); + StringBuilder responseBody = new StringBuilder(); + if (is != null) { + BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8")); //$NON-NLS-1$ + String s; + while ((s = in.readLine()) != null) { + responseBody.append(s); + responseBody.append("\n"); //$NON-NLS-1$ + } + is.close(); + } + log.info("Monitor response (" + urlConnection.getHeaderField("Content-Type") + "): " + responseBody.toString()); + } + + urlConnection.disconnect(); + + } catch (Exception e) { + log.error("Failed connect to " + urlStr + ": " + e.getMessage(), e); + } + } + + private String getLiveUrl(LiveMonitoringData data) { + String st = app.getSettings().LIVE_MONITORING_URL.get(); List prm = new ArrayList(); int maxLen = 0; - for(int i = 0; i < 7; i++) { + for (int i = 0; i < 7; i++) { boolean b = st.contains("{"+i+"}"); if(b) { maxLen = i; @@ -165,45 +210,6 @@ public class LiveMonitoringHelper { break; } } - String urlStr = MessageFormat.format(st, prm.toArray()); - try { - - // Parse the URL and let the URI constructor handle proper encoding of special characters such as spaces - URL url = new URL(urlStr); - HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); - URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), - url.getPath(), url.getQuery(), url.getRef()); - - urlConnection.setConnectTimeout(15000); - urlConnection.setReadTimeout(15000); - - log.info("Monitor " + uri); - - if (urlConnection.getResponseCode()/100 != 2) { - - String msg = urlConnection.getResponseCode() + " : " + //$NON-NLS-1$//$NON-NLS-2$ - urlConnection.getResponseMessage(); - log.error("Error sending monitor request: " + msg); - } else { - queue.poll(); - InputStream is = urlConnection.getInputStream(); - StringBuilder responseBody = new StringBuilder(); - if (is != null) { - BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8")); //$NON-NLS-1$ - String s; - while ((s = in.readLine()) != null) { - responseBody.append(s); - responseBody.append("\n"); //$NON-NLS-1$ - } - is.close(); - } - log.info("Monitor response (" + urlConnection.getHeaderField("Content-Type") + "): " + responseBody.toString()); - } - - urlConnection.disconnect(); - - } catch (Exception e) { - log.error("Failed connect to " + urlStr + ": " + e.getMessage(), e); - } + return MessageFormat.format(st, prm.toArray()); } } diff --git a/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java b/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java index f4ce51cf88..f6b5837e09 100644 --- a/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java +++ b/OsmAnd/src/net/osmand/plus/render/MapRenderRepositories.java @@ -39,6 +39,7 @@ import net.osmand.data.QuadPointDouble; import net.osmand.data.QuadRect; import net.osmand.data.RotatedTileBox; import net.osmand.map.MapTileDownloader; +import net.osmand.plus.OsmAndAppCustomization.OsmAndAppCustomizationListener; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandSettings; @@ -121,6 +122,15 @@ public class MapRenderRepositories { this.renderer = new OsmandRenderer(context); handler = new Handler(Looper.getMainLooper()); prefs = context.getSettings(); + + OsmAndAppCustomizationListener customizationListener = new OsmAndAppCustomizationListener() { + @Override + public void onOsmAndSettingsCustomized() { + prefs = MapRenderRepositories.this.context.getSettings(); + clearCache(); + } + }; + context.getAppCustomization().addListener(customizationListener); } public Context getContext() { @@ -153,11 +163,6 @@ public class MapRenderRepositories { return prevBmpLocation; } - public void updateSettings() { - prefs = context.getSettings(); - clearCache(); - } - public synchronized void closeConnection(String file) { LinkedHashMap cpfiles = new LinkedHashMap(files); BinaryMapIndexReader bmir = cpfiles.remove(file); diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java index 9dad48bad4..7b8cdf4b5d 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java @@ -63,13 +63,11 @@ public class RoutingOptionsHelper { public static final String DRIVING_STYLE = "driving_style"; private OsmandApplication app; - private OsmandSettings settings; private Map modes = new HashMap<>(); public RoutingOptionsHelper(OsmandApplication application) { app = application; - settings = app.getSettings(); } private void addRouteMenuAppModes(ApplicationMode am, List routingParameters) { @@ -104,6 +102,7 @@ public class RoutingOptionsHelper { } public void switchMusic() { + OsmandSettings settings = app.getSettings(); boolean mt = !settings.INTERRUPT_MUSIC.get(); settings.INTERRUPT_MUSIC.set(mt); } @@ -311,6 +310,7 @@ public class RoutingOptionsHelper { } public void showLocalRoutingParameterGroupDialog(final LocalRoutingParameterGroup group, final MapActivity mapActivity, final OnClickListener listener) { + OsmandSettings settings = app.getSettings(); final ContextMenuAdapter adapter = new ContextMenuAdapter(); int i = 0; int selectedIndex = -1; @@ -364,6 +364,7 @@ public class RoutingOptionsHelper { .setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + OsmandSettings settings = app.getSettings(); int position = selectedPosition[0]; if (position >= 0 && position < group.getRoutingParameters().size()) { for (int i = 0; i < group.getRoutingParameters().size(); i++) { diff --git a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java index ce4a7861ec..55c4afdd1f 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java +++ b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java @@ -8,6 +8,7 @@ import net.osmand.data.LatLon; import net.osmand.plus.ApplicationMode; import net.osmand.GPXUtilities.GPXFile; import net.osmand.plus.NavigationService; +import net.osmand.plus.OsmAndAppCustomization.OsmAndAppCustomizationListener; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; @@ -95,11 +96,19 @@ public class RoutingHelper { public RoutingHelper(OsmandApplication context){ this.app = context; settings = context.getSettings(); - voiceRouter = new VoiceRouter(this, settings); + voiceRouter = new VoiceRouter(this); provider = new RouteProvider(); transportRoutingHelper = context.getTransportRoutingHelper(); transportRoutingHelper.setRoutingHelper(this); setAppMode(settings.APPLICATION_MODE.get()); + + OsmAndAppCustomizationListener customizationListener = new OsmAndAppCustomizationListener() { + @Override + public void onOsmAndSettingsCustomized() { + settings = app.getSettings(); + } + }; + app.getAppCustomization().addListener(customizationListener); } public TransportRoutingHelper getTransportRoutingHelper() { diff --git a/OsmAnd/src/net/osmand/plus/routing/VoiceRouter.java b/OsmAnd/src/net/osmand/plus/routing/VoiceRouter.java index a05ebe5a40..3daebfa531 100644 --- a/OsmAnd/src/net/osmand/plus/routing/VoiceRouter.java +++ b/OsmAnd/src/net/osmand/plus/routing/VoiceRouter.java @@ -8,6 +8,8 @@ import net.osmand.Location; import net.osmand.binary.RouteDataObject; import net.osmand.data.PointDescription; import net.osmand.plus.ApplicationMode; +import net.osmand.plus.OsmAndAppCustomization.OsmAndAppCustomizationListener; +import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandSettings; import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper; import net.osmand.plus.routing.AlarmInfo.AlarmInfoType; @@ -45,9 +47,11 @@ public class VoiceRouter { public static final String FROM_STREET_NAME = "fromStreetName"; public static final String FROM_DEST = "fromDest"; - protected final RoutingHelper router; protected static CommandPlayer player; - protected final OsmandSettings settings; + + protected final OsmandApplication app; + protected final RoutingHelper router; + protected OsmandSettings settings; private static int currentStatus = STATUS_UNKNOWN; private static boolean playedAndArriveAtTarget = false; @@ -83,9 +87,18 @@ public class VoiceRouter { private List> voiceMessageListeners = new ArrayList<>(); - VoiceRouter(RoutingHelper router, final OsmandSettings settings) { + VoiceRouter(RoutingHelper router) { this.router = router; - this.settings = settings; + this.app = router.getApplication(); + this.settings = app.getSettings(); + + OsmAndAppCustomizationListener customizationListener = new OsmAndAppCustomizationListener() { + @Override + public void onOsmAndSettingsCustomized() { + settings = app.getSettings(); + } + }; + app.getAppCustomization().addListener(customizationListener); } public void setPlayer(CommandPlayer player) { diff --git a/OsmAnd/src/net/osmand/plus/views/TransportStopsLayer.java b/OsmAnd/src/net/osmand/plus/views/TransportStopsLayer.java index 9246a49fab..ee19fce4f0 100644 --- a/OsmAnd/src/net/osmand/plus/views/TransportStopsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/TransportStopsLayer.java @@ -22,6 +22,7 @@ import net.osmand.data.RotatedTileBox; import net.osmand.data.TransportStop; import net.osmand.osm.edit.Node; import net.osmand.osm.edit.Way; +import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.render.RenderingIcons; @@ -36,6 +37,9 @@ import java.util.List; import java.util.TreeSet; public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider { + + public static final String TRANSPORT_STOPS_OVER_MAP = "transportStops"; + private static final int startZoom = 12; private static final int startZoomRoute = 10; @@ -53,13 +57,16 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa private MapLayerData> data; private TransportStopRoute stopRoute = null; - private boolean showTransportStops; + private OsmandSettings.CommonPreference showTransportStops; + private Path path; private float backgroundIconHalfWidth; private float backgroundIconHalfHeight; public TransportStopsLayer(MapActivity mapActivity) { this.mapActivity = mapActivity; + OsmandSettings settings = mapActivity.getMyApplication().getSettings(); + showTransportStops = settings.getCustomRenderBooleanProperty(TRANSPORT_STOPS_OVER_MAP).cache(); } @SuppressWarnings("deprecation") @@ -168,14 +175,6 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa this.stopRoute = route; } - public boolean isShowTransportStops() { - return showTransportStops; - } - - public void setShowTransportStops(boolean showTransportStops) { - this.showTransportStops = showTransportStops; - } - private int getRadiusPoi(RotatedTileBox tb){ final double zoom = tb.getZoom(); int r; @@ -227,7 +226,7 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa } } - if (showTransportStops && tb.getZoom() >= startZoom && objects == null) { + if (showTransportStops.get() && tb.getZoom() >= startZoom && objects == null) { data.queryNewData(tb); objects = data.getResults(); }