diff --git a/app/src/google/res/drawable/ic_link.xml b/app/src/google/res/drawable/ic_link.xml
new file mode 100644
index 00000000..0fe90e67
--- /dev/null
+++ b/app/src/google/res/drawable/ic_link.xml
@@ -0,0 +1,10 @@
+
+
+
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 bb7728f5..a1f40ee0 100644
--- a/app/src/main/java/net/vonforst/evmap/adapter/DetailsAdapter.kt
+++ b/app/src/main/java/net/vonforst/evmap/adapter/DetailsAdapter.kt
@@ -61,7 +61,8 @@ fun buildDetails(
if (loc.network != null) DetailsAdapter.Detail(
R.drawable.ic_network,
R.string.network,
- loc.network
+ loc.network,
+ clickable = loc.networkUrl != null
) else null,
if (loc.faultReport != null) DetailsAdapter.Detail(
R.drawable.ic_fault_report,
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 06e568cf..cd7f7328 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
@@ -77,6 +77,8 @@ data class GEChargeLocation(
cost?.convert(),
null,
ChargepriceData(address.country, network, chargepoints.map { it.type }),
+ null,
+ null,
Instant.now(),
isDetailed
)
diff --git a/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapModel.kt b/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapModel.kt
index def20402..65e1b602 100644
--- a/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapModel.kt
+++ b/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapModel.kt
@@ -71,6 +71,8 @@ data class OCMChargepoint(
addressInfo.countryISOCode(refData),
operatorId?.toString(),
connections.map { "${it.connectionTypeId},${it.currentTypeId}" }),
+ operatorInfo?.websiteUrl,
+ addressInfo.relatedUrl,
Instant.now(),
isDetailed
)
diff --git a/app/src/main/java/net/vonforst/evmap/api/openstreetmap/OpenStreetMapModel.kt b/app/src/main/java/net/vonforst/evmap/api/openstreetmap/OpenStreetMapModel.kt
index 73b58960..21aba15c 100644
--- a/app/src/main/java/net/vonforst/evmap/api/openstreetmap/OpenStreetMapModel.kt
+++ b/app/src/main/java/net/vonforst/evmap/api/openstreetmap/OpenStreetMapModel.kt
@@ -105,6 +105,8 @@ data class OSMChargingStation(
getCost(),
"© OpenStreetMap contributors",
null,
+ null,
+ null,
dataFetchTimestamp,
true,
)
diff --git a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt
index 8272e9bf..2dfa782d 100644
--- a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt
+++ b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt
@@ -377,6 +377,10 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac
null, extras
)
}
+ binding.detailView.btnChargerWebsite.setOnClickListener {
+ val charger = vm.charger.value?.data ?: return@setOnClickListener
+ charger.chargerUrl?.let { (activity as? MapsActivity)?.openUrl(it) }
+ }
binding.detailView.imgPredictionSource.setOnClickListener {
(activity as? MapsActivity)?.openUrl(getString(R.string.fronyx_url))
}
@@ -808,6 +812,9 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac
R.drawable.ic_payment -> {
showPaymentMethodsDialog(charger)
}
+ R.drawable.ic_network -> {
+ charger.networkUrl?.let { (activity as? MapsActivity)?.openUrl(it) }
+ }
}
}
}
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 31a5216b..db7543eb 100644
--- a/app/src/main/java/net/vonforst/evmap/model/ChargersModel.kt
+++ b/app/src/main/java/net/vonforst/evmap/model/ChargersModel.kt
@@ -62,8 +62,8 @@ data class ChargeLocation(
@Embedded val address: Address?,
val chargepoints: List,
val network: String?,
- val url: String,
- val editUrl: String?,
+ val url: String, // URL of this charger at the data source
+ val editUrl: String?, // URL to edit this charger at the data source
@Embedded(prefix = "fault_report_") val faultReport: FaultReport?,
val verified: Boolean,
val barrierFree: Boolean?,
@@ -78,6 +78,8 @@ data class ChargeLocation(
@Embedded val cost: Cost?,
val license: String?,
@Embedded(prefix = "chargeprice") val chargepriceData: ChargepriceData?,
+ val networkUrl: String?, // Website of the network
+ val chargerUrl: String?, // Website for this specific charging site. Might be an ad-hoc payment page.
val timeRetrieved: Instant,
val isDetailed: Boolean
) : ChargepointListItem(), Equatable, Parcelable {
diff --git a/app/src/main/java/net/vonforst/evmap/storage/Database.kt b/app/src/main/java/net/vonforst/evmap/storage/Database.kt
index 63151282..8823cfc6 100644
--- a/app/src/main/java/net/vonforst/evmap/storage/Database.kt
+++ b/app/src/main/java/net/vonforst/evmap/storage/Database.kt
@@ -32,7 +32,7 @@ import net.vonforst.evmap.model.*
OCMConnectionType::class,
OCMCountry::class,
OCMOperator::class
- ], version = 18
+ ], version = 19
)
@TypeConverters(Converters::class)
abstract class AppDatabase : RoomDatabase() {
@@ -56,7 +56,7 @@ abstract class AppDatabase : RoomDatabase() {
MIGRATION_2, MIGRATION_3, MIGRATION_4, MIGRATION_5, MIGRATION_6,
MIGRATION_7, MIGRATION_8, MIGRATION_9, MIGRATION_10, MIGRATION_11,
MIGRATION_12, MIGRATION_13, MIGRATION_14, MIGRATION_15, MIGRATION_16,
- MIGRATION_17, MIGRATION_18
+ MIGRATION_17, MIGRATION_18, MIGRATION_19
)
.addCallback(object : Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
@@ -376,5 +376,12 @@ abstract class AppDatabase : RoomDatabase() {
}
}
+
+ private val MIGRATION_19 = object : Migration(18, 19) {
+ override fun migrate(db: SupportSQLiteDatabase) {
+ db.execSQL("ALTER TABLE `ChargeLocation` ADD `networkUrl` TEXT")
+ db.execSQL("ALTER TABLE `ChargeLocation` ADD `chargerUrl` TEXT")
+ }
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/detail_view.xml b/app/src/main/res/layout/detail_view.xml
index f163bf4d..b78d5c35 100644
--- a/app/src/main/res/layout/detail_view.xml
+++ b/app/src/main/res/layout/detail_view.xml
@@ -330,20 +330,6 @@
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toTopOf="@+id/txtName" />
-
-
+ app:layout_constraintTop_toBottomOf="@+id/buttonsScroller" />
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 3f1324ad..3a1bca33 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -295,4 +295,5 @@
Entwicklermodus deaktiviert
GPS
Kompass
+ Website
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a1ee7ac1..c6bc541b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -295,4 +295,5 @@
Developer mode disabled
GPS
Compass
+ Website
\ No newline at end of file