From cc97020216d8cd112a36f692157f167a114a51ff Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sun, 18 Jul 2021 19:20:33 +0200 Subject: [PATCH] adjust "report new charger" button in menu to use OpenChargeMap if chosen --- ...tomTabsNavigator.kt => CustomNavigator.kt} | 29 ++++++++++++++----- .../evmap/navigation/NavHostFragment.kt | 2 +- app/src/main/res/navigation/nav_graph.xml | 4 +-- app/src/main/res/values/attrs.xml | 4 +-- app/src/main/res/values/donottranslate.xml | 1 - 5 files changed, 26 insertions(+), 14 deletions(-) rename app/src/main/java/net/vonforst/evmap/navigation/{ChromeCustomTabsNavigator.kt => CustomNavigator.kt} (63%) diff --git a/app/src/main/java/net/vonforst/evmap/navigation/ChromeCustomTabsNavigator.kt b/app/src/main/java/net/vonforst/evmap/navigation/CustomNavigator.kt similarity index 63% rename from app/src/main/java/net/vonforst/evmap/navigation/ChromeCustomTabsNavigator.kt rename to app/src/main/java/net/vonforst/evmap/navigation/CustomNavigator.kt index 3b78bd98..1407cf58 100644 --- a/app/src/main/java/net/vonforst/evmap/navigation/ChromeCustomTabsNavigator.kt +++ b/app/src/main/java/net/vonforst/evmap/navigation/CustomNavigator.kt @@ -13,11 +13,12 @@ import androidx.navigation.NavDestination import androidx.navigation.NavOptions import androidx.navigation.Navigator import net.vonforst.evmap.R +import net.vonforst.evmap.storage.PreferenceDataSource -@Navigator.Name("chrome") -class ChromeCustomTabsNavigator( +@Navigator.Name("custom") +class CustomNavigator( private val context: Context -) : Navigator() { +) : Navigator() { override fun createDestination() = Destination(this) @@ -28,6 +29,19 @@ class ChromeCustomTabsNavigator( navOptions: NavOptions?, navigatorExtras: Extras? ): NavDestination? { + if (destination.destination == "report_new_charger") { + val prefs = PreferenceDataSource(context) + val url = when (prefs.dataSource) { + "goingelectric" -> "https://www.goingelectric.de/stromtankstellen/new/" + "openchargemap" -> "https://openchargemap.org/site/poi/add" + else -> throw IllegalArgumentException() + } + launchCustomTab(url) + } + return null // Do not add to the back stack, managed by Chrome Custom Tabs + } + + fun launchCustomTab(url: String) { val intent = CustomTabsIntent.Builder() .setDefaultColorSchemeParams( CustomTabColorSchemeParams.Builder() @@ -35,20 +49,19 @@ class ChromeCustomTabsNavigator( .build() ) .build() - intent.launchUrl(context, destination.url!!) - return null // Do not add to the back stack, managed by Chrome Custom Tabs + intent.launchUrl(context, Uri.parse(url)) } override fun popBackStack() = true // Managed by Chrome Custom Tabs @NavDestination.ClassType(Activity::class) class Destination(navigator: Navigator) : NavDestination(navigator) { - var url: Uri? = null + lateinit var destination: String override fun onInflate(context: Context, attrs: AttributeSet) { super.onInflate(context, attrs) - context.withStyledAttributes(attrs, R.styleable.ChromeCustomTabsNavigator, 0, 0) { - url = Uri.parse(getString(R.styleable.ChromeCustomTabsNavigator_url)) + context.withStyledAttributes(attrs, R.styleable.CustomNavigator, 0, 0) { + destination = getString(R.styleable.CustomNavigator_customDestination)!! } } } diff --git a/app/src/main/java/net/vonforst/evmap/navigation/NavHostFragment.kt b/app/src/main/java/net/vonforst/evmap/navigation/NavHostFragment.kt index dd704674..e6188f65 100644 --- a/app/src/main/java/net/vonforst/evmap/navigation/NavHostFragment.kt +++ b/app/src/main/java/net/vonforst/evmap/navigation/NavHostFragment.kt @@ -7,7 +7,7 @@ class NavHostFragment : NavHostFragment() { override fun onCreateNavController(navController: NavController) { super.onCreateNavController(navController) navController.navigatorProvider.addNavigator( - ChromeCustomTabsNavigator( + CustomNavigator( requireContext() ) ) diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 8a26722d..687ae10a 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -90,9 +90,9 @@ android:name="net.vonforst.evmap.fragment.updatedialogs.Update060AndroidAutoDialogFramgent" android:label="@string/welcome_to_evmap" tools:layout="@layout/dialog_update_060_androidauto" /> - + app:customDestination="report_new_charger" /> - - + + diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index f79ddcd0..4a3f903b 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -7,5 +7,4 @@ \@ev_map https://twitter.com/ev_map - https://www.goingelectric.de/stromtankstellen/new/ \ No newline at end of file