From c5714c859267341aa09b0fcb763ba09f765aa775 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Thu, 20 Apr 2023 19:51:30 +0200 Subject: [PATCH] OpenChargeMap: add networkUrl and chargerUrl #273 --- app/src/google/res/drawable/ic_link.xml | 10 ++++ .../vonforst/evmap/adapter/DetailsAdapter.kt | 3 +- .../api/goingelectric/GoingElectricModel.kt | 2 + .../api/openchargemap/OpenChargeMapModel.kt | 2 + .../api/openstreetmap/OpenStreetMapModel.kt | 2 + .../vonforst/evmap/fragment/MapFragment.kt | 7 +++ .../net/vonforst/evmap/model/ChargersModel.kt | 6 +- .../net/vonforst/evmap/storage/Database.kt | 11 +++- app/src/main/res/layout/detail_view.xml | 55 ++++++++++++++----- app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 11 files changed, 80 insertions(+), 20 deletions(-) create mode 100644 app/src/google/res/drawable/ic_link.xml 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" /> -