diff --git a/app/src/main/java/net/vonforst/evmap/adapter/DetailsAdapter.kt b/app/src/main/java/net/vonforst/evmap/adapter/DetailsAdapter.kt index 03cc68f2..ba504b56 100644 --- a/app/src/main/java/net/vonforst/evmap/adapter/DetailsAdapter.kt +++ b/app/src/main/java/net/vonforst/evmap/adapter/DetailsAdapter.kt @@ -87,7 +87,7 @@ fun buildDetails( if (loc.openinghours.days != null || loc.openinghours.twentyfourSeven) loc.openinghours.description else null, hoursDays = loc.openinghours.days ) else null, - if (loc.cost != null) DetailsAdapter.Detail( + if (loc.cost != null && !loc.cost.isEmpty) DetailsAdapter.Detail( R.drawable.ic_cost, R.string.cost, loc.cost.getStatusText(ctx), diff --git a/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricModel.kt b/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricModel.kt index b55eb760..1a7b2449 100644 --- a/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricModel.kt +++ b/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricModel.kt @@ -87,7 +87,14 @@ data class GECost( @JsonObjectOrFalse @Json(name = "description_short") val descriptionShort: String?, @JsonObjectOrFalse @Json(name = "description_long") val descriptionLong: String? ) { - fun convert() = Cost(freecharging, freeparking, descriptionShort, descriptionLong) + fun convert() = Cost( + // In GE, freecharging = false can either mean "paid charging" or "no information + // available", only freecharging = true provides useful information. Therefore convert + // false to null. Same for freeparking. + if (freecharging) freecharging else null, + if (freeparking) freeparking else null, + descriptionShort, descriptionLong + ) } @JsonClass(generateAdapter = true) diff --git a/app/src/main/java/net/vonforst/evmap/model/ChargersModel.kt b/app/src/main/java/net/vonforst/evmap/model/ChargersModel.kt index c9b8a70b..171cabcc 100644 --- a/app/src/main/java/net/vonforst/evmap/model/ChargersModel.kt +++ b/app/src/main/java/net/vonforst/evmap/model/ChargersModel.kt @@ -126,6 +126,9 @@ data class Cost( val descriptionShort: String? = null, val descriptionLong: String? = null ) : Parcelable { + val isEmpty: Boolean + get() = descriptionLong == null && descriptionShort == null && freecharging == null && freeparking == null + fun getStatusText(ctx: Context, emoji: Boolean = false): CharSequence { if (freecharging != null && freeparking != null) { val charging = @@ -137,6 +140,22 @@ data class Cost( } else { HtmlCompat.fromHtml(ctx.getString(R.string.cost_detail, charging, parking), 0) } + } else if (freecharging != null) { + val charging = + if (freecharging) ctx.getString(R.string.free) else ctx.getString(R.string.paid) + return if (emoji) { + "⚡ $charging" + } else { + HtmlCompat.fromHtml(ctx.getString(R.string.cost_detail_charging, charging), 0) + } + } else if (freeparking != null) { + val parking = + if (freeparking) ctx.getString(R.string.free) else ctx.getString(R.string.paid) + return if (emoji) { + "⚡ $parking" + } else { + HtmlCompat.fromHtml(ctx.getString(R.string.cost_detail_parking, parking), 0) + } } else if (descriptionShort != null) { return descriptionShort } else if (descriptionLong != null) { diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index f5b94bc0..8ed16ac5 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -17,6 +17,8 @@ Geschlossen · Öffnet um %s]]> Kosten Laden: %s · Parken: %s]]> + %s laden]]> + %s parken]]> Kostenlos Kostenpflichtig Ladeweile diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 851b20b3..17f02752 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -16,6 +16,8 @@ Holiday Cost Charging: %s · Parking: %s]]> + %s charging]]> + %s parking]]> Free Paid Amenities