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