From 163e6864b977fa8b745d58febd567a4f196f7a7d Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 3 Jul 2020 13:03:27 +0300 Subject: [PATCH] Fix #9192 [Feature request] add new icons for the Canadian road signs --- .../warnings_speed_limit_ca.png | Bin 0 -> 6718 bytes OsmAnd/res/values-large/sizes.xml | 5 +- OsmAnd/res/values/sizes.xml | 5 +- .../plus/settings/backend/OsmandSettings.java | 4 ++ .../mapwidgets/RouteInfoWidgetsFactory.java | 62 ++++++++++-------- 5 files changed, 45 insertions(+), 31 deletions(-) create mode 100644 OsmAnd/res/drawable-large/warnings_speed_limit_ca.png diff --git a/OsmAnd/res/drawable-large/warnings_speed_limit_ca.png b/OsmAnd/res/drawable-large/warnings_speed_limit_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..987c7c4b3fa4b8186e89189226b27154eeb789e9 GIT binary patch literal 6718 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 literal 0 HcmV?d00001 diff --git a/OsmAnd/res/values-large/sizes.xml b/OsmAnd/res/values-large/sizes.xml index 94f7f9000f..d30012865a 100644 --- a/OsmAnd/res/values-large/sizes.xml +++ b/OsmAnd/res/values-large/sizes.xml @@ -25,9 +25,10 @@ 116dp 12dp 35sp + 30dp 22sp - - 140dp + 12sp + 131dp 81dp 36dp diff --git a/OsmAnd/res/values/sizes.xml b/OsmAnd/res/values/sizes.xml index 19d8397db7..d3eb9bf16d 100644 --- a/OsmAnd/res/values/sizes.xml +++ b/OsmAnd/res/values/sizes.xml @@ -141,15 +141,14 @@ 306dp 330dp 100dp - - - 23sp 22sp 15sp 18sp 25sp + 20dp 16sp + 8sp 1sp 3sp 2dp diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java index eb9308efa2..b92d1b2907 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java @@ -4172,6 +4172,10 @@ public class OsmandSettings { this == OsmandSettings.DrivingRegion.CANADA; } + public boolean isCanada() { + return this == OsmandSettings.DrivingRegion.CANADA; + } + public String getDescription(Context ctx) { return ctx.getString(leftHandDriving ? R.string.left_side_navigation : R.string.right_side_navigation) + ", " + diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java index 75c6fb9bef..9b22297628 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java @@ -5,6 +5,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; @@ -24,7 +25,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; -import net.osmand.AndroidUtils; import net.osmand.Location; import net.osmand.binary.RouteDataObject; import net.osmand.data.LatLon; @@ -62,6 +62,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static android.util.TypedValue.COMPLEX_UNIT_PX; + public class RouteInfoWidgetsFactory { public NextTurnInfoWidget createNextInfoControl(final Activity activity, @@ -1230,32 +1232,32 @@ public class RouteInfoWidgetsFactory { AndroidUiHelper.updateVisibility(layout, visible); return true; } - + public void setVisibility(boolean visibility) { layout.setVisibility(visibility ? View.VISIBLE : View.GONE); } } - - public static class AlarmWidget { - + + public static class AlarmWidget { + private View layout; private ImageView icon; - private TextView text; - private TextView bottomText; + private TextView widgetText; + private TextView widgetBottomText; private OsmandSettings settings; private RoutingHelper rh; private MapViewTrackingUtilities trackingUtilities; private OsmAndLocationProvider locationProvider; private WaypointHelper wh; private int imgId; - private String textString; - private String bottomTextString; + private String textOld; + private String bottomTextOld; public AlarmWidget(final OsmandApplication app, MapActivity ma) { layout = ma.findViewById(R.id.map_alarm_warning); icon = (ImageView) ma.findViewById(R.id.map_alarm_warning_icon); - text = (TextView) ma.findViewById(R.id.map_alarm_warning_text); - bottomText = (TextView) ma.findViewById(R.id.map_alarm_warning_text_bottom); + widgetText = (TextView) ma.findViewById(R.id.map_alarm_warning_text); + widgetBottomText = (TextView) ma.findViewById(R.id.map_alarm_warning_text_bottom); settings = app.getSettings(); rh = ma.getRoutingHelper(); trackingUtilities = ma.getMapViewTrackingUtilities(); @@ -1293,13 +1295,14 @@ public class RouteInfoWidgetsFactory { OsmandSettings.DrivingRegion region = settings.DRIVING_REGION.get(); boolean americanType = region.isAmericanTypeSigns(); if(alarm.getType() == AlarmInfoType.SPEED_LIMIT) { - if(region == OsmandSettings.DrivingRegion.CANADA) { + if (region.isCanada()) { locimgId = R.drawable.warnings_speed_limit_ca; - } else if(americanType){ + bottomText = settings.SPEED_SYSTEM.get().toShortString(settings.getContext()); + } else if (americanType) { locimgId = R.drawable.warnings_speed_limit_us; - //else case is done by drawing red ring + //else case is done by drawing red ring } - text = alarm.getIntValue() +""; + text = alarm.getIntValue() + ""; } else if(alarm.getType() == AlarmInfoType.SPEED_CAMERA) { locimgId = R.drawable.warnings_speed_camera; } else if(alarm.getType() == AlarmInfoType.BORDER_CONTROL) { @@ -1357,23 +1360,30 @@ public class RouteInfoWidgetsFactory { } } if(visible) { - if(locimgId != imgId) { + if (locimgId != imgId) { imgId = locimgId; icon.setImageResource(locimgId); } - if (!Algorithms.objectEquals(text, this.textString)) { - textString = text; - this.text.setText(this.textString); - if (alarm.getType() == AlarmInfoType.SPEED_LIMIT && americanType) { - this.text.setPadding(0, AndroidUtils.dpToPx(layout.getContext(), 20f), 0, 0); + Resources res = layout.getContext().getResources(); + if (!Algorithms.objectEquals(text, textOld)) { + textOld = text; + widgetText.setText(textOld); + if (alarm.getType() == AlarmInfoType.SPEED_LIMIT && americanType && !region.isCanada()) { + int topPadding = res.getDimensionPixelSize(R.dimen.map_alarm_text_top_padding); + widgetText.setPadding(0, topPadding, 0, 0); } else { - this.text.setPadding(0, 0, 0, 0); + widgetText.setPadding(0, 0, 0, 0); } } - if (!Algorithms.objectEquals(bottomText, this.bottomTextString)) { - bottomTextString = bottomText; - this.bottomText.setText(this.bottomTextString); - this.bottomText.setTextColor(ContextCompat.getColor(layout.getContext(), + if (!Algorithms.objectEquals(bottomText, bottomTextOld)) { + bottomTextOld = bottomText; + widgetBottomText.setText(bottomTextOld); + if (alarm.getType() == AlarmInfoType.SPEED_LIMIT && region.isCanada()) { + int bottomPadding = res.getDimensionPixelSize(R.dimen.map_button_margin); + widgetBottomText.setPadding(0, 0, 0, bottomPadding); + widgetBottomText.setTextSize(COMPLEX_UNIT_PX, res.getDimensionPixelSize(R.dimen.map_alarm_bottom_si_text_size)); + } + widgetBottomText.setTextColor(ContextCompat.getColor(layout.getContext(), americanType ? R.color.color_black : R.color.color_white)); } }