diff --git a/app/src/google/java/net/vonforst/evmap/auto/CarAppService.kt b/app/src/google/java/net/vonforst/evmap/auto/CarAppService.kt
index f815d43b..ab7b53a5 100644
--- a/app/src/google/java/net/vonforst/evmap/auto/CarAppService.kt
+++ b/app/src/google/java/net/vonforst/evmap/auto/CarAppService.kt
@@ -42,7 +42,10 @@ import net.vonforst.evmap.ui.availabilityText
import net.vonforst.evmap.ui.getMarkerTint
import net.vonforst.evmap.utils.distanceBetween
import java.time.Duration
+import java.time.ZoneId
import java.time.ZonedDateTime
+import java.time.format.DateTimeFormatter
+import java.time.format.FormatStyle
import kotlin.math.roundToInt
interface LocationAwareScreen {
@@ -421,8 +424,7 @@ class ChargerDetailScreen(ctx: CarContext, val chargerSparse: ChargeLocation) :
GoingElectricApi.create(apikey, context = ctx)
}
- private val iconScale = 64f / 44
- private val iconGen = ChargerIconGenerator(carContext, null, oversize = iconScale)
+ private val iconGen = ChargerIconGenerator(carContext, null, oversize = 1.4f, height = 64)
override fun getTemplate(): Template {
if (charger == null) loadCharger()
@@ -436,8 +438,7 @@ class ChargerDetailScreen(ctx: CarContext, val chargerSparse: ChargeLocation) :
val icon = iconGen.getBitmap(
tint = getMarkerTint(charger),
fault = charger.faultReport != null,
- multi = charger.isMulti(),
- scale = iconScale
+ multi = charger.isMulti()
)
setImage(
CarIcon.of(IconCompat.createWithBitmap(icon)),
@@ -482,6 +483,15 @@ class ChargerDetailScreen(ctx: CarContext, val chargerSparse: ChargeLocation) :
setTitle(operatorText)
charger.cost?.let { addText(it.getStatusText(carContext, emoji = true)) }
+ charger.faultReport?.created?.let {
+ addText(
+ carContext.getString(
+ R.string.auto_fault_report_date,
+ it.atZone(ZoneId.systemDefault())
+ .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT))
+ )
+ )
+ }
/*val types = charger.chargepoints.map { it.type }.distinct()
if (types.size == 1) {
diff --git a/app/src/google/res/values-de/values.xml b/app/src/google/res/values-de/values.xml
index f9ac7f37..3953081d 100644
--- a/app/src/google/res/values-de/values.xml
+++ b/app/src/google/res/values-de/values.xml
@@ -14,4 +14,5 @@
Auf Telefon zulassen
In der Nähe
Favoriten
+ ⚠️ Störungsmeldung (%s)
\ No newline at end of file
diff --git a/app/src/google/res/values/values.xml b/app/src/google/res/values/values.xml
index 02695d37..4e2db896 100644
--- a/app/src/google/res/values/values.xml
+++ b/app/src/google/res/values/values.xml
@@ -19,4 +19,5 @@
Grant on phone
Nearby chargers
Favorites
+ ⚠️ Fault report (%s)
\ No newline at end of file
diff --git a/app/src/main/java/net/vonforst/evmap/ui/IconGenerators.kt b/app/src/main/java/net/vonforst/evmap/ui/IconGenerators.kt
index f2ad37f1..e6660d19 100644
--- a/app/src/main/java/net/vonforst/evmap/ui/IconGenerators.kt
+++ b/app/src/main/java/net/vonforst/evmap/ui/IconGenerators.kt
@@ -46,7 +46,8 @@ class ChargerIconGenerator(
val context: Context,
val factory: BitmapDescriptorFactory?,
val scaleResolution: Int = 20,
- val oversize: Float = 1.4f // increase to add padding for fault icon or scale > 1
+ val oversize: Float = 1.4f, // increase to add padding for fault icon or scale > 1
+ val height: Int = 44
) {
private data class BitmapData(
val tint: Int,
@@ -142,17 +143,22 @@ class ChargerIconGenerator(
DrawableCompat.setTint(vd, ContextCompat.getColor(context, data.tint));
DrawableCompat.setTintMode(vd, PorterDuff.Mode.MULTIPLY);
- val leftPadding = vd.intrinsicWidth * (oversize - 1) / 2
- val topPadding = vd.intrinsicHeight * (oversize - 1)
+ val density = context.resources.displayMetrics.density
+ val width =
+ (height.toFloat() * density / vd.intrinsicHeight * vd.intrinsicWidth).roundToInt()
+ val height = (height * density).roundToInt()
+
+ val leftPadding = width * (oversize - 1) / 2
+ val topPadding = height * (oversize - 1)
vd.setBounds(
leftPadding.toInt(), topPadding.toInt(),
- leftPadding.toInt() + vd.intrinsicWidth,
- topPadding.toInt() + vd.intrinsicHeight
+ leftPadding.toInt() + width,
+ topPadding.toInt() + height
)
vd.alpha = data.alpha
val bm = Bitmap.createBitmap(
- (vd.intrinsicWidth * oversize).toInt(), (vd.intrinsicHeight * oversize).toInt(),
+ (width * oversize).toInt(), (height * oversize).toInt(),
Bitmap.Config.ARGB_8888
)
val canvas = Canvas(bm)
@@ -161,8 +167,8 @@ class ChargerIconGenerator(
canvas.scale(
scale,
scale,
- leftPadding + vd.intrinsicWidth / 2f,
- topPadding + vd.intrinsicHeight.toFloat()
+ leftPadding + width / 2f,
+ topPadding + height.toFloat()
)
vd.draw(canvas)
@@ -172,8 +178,8 @@ class ChargerIconGenerator(
val highlightDrawable = ContextCompat.getDrawable(context, hIcon)!!
highlightDrawable.setBounds(
leftPadding.toInt(), topPadding.toInt(),
- leftPadding.toInt() + vd.intrinsicWidth,
- topPadding.toInt() + vd.intrinsicHeight
+ leftPadding.toInt() + width,
+ topPadding.toInt() + height
)
highlightDrawable.alpha = data.alpha
highlightDrawable.draw(canvas)
@@ -183,7 +189,7 @@ class ChargerIconGenerator(
val faultDrawable = ContextCompat.getDrawable(context, faultIcon)!!
val faultSize = 0.75
val faultShift = 0.25
- val base = vd.intrinsicWidth
+ val base = width
faultDrawable.setBounds(
(leftPadding.toInt() + base * (1 - faultSize + faultShift)).toInt(),
(topPadding.toInt() - base * faultShift).toInt(),