From ec19a55db84bec840a3b100e3cc045b4706d7526 Mon Sep 17 00:00:00 2001 From: Johan von Forstner Date: Mon, 20 Apr 2020 20:15:36 +0200 Subject: [PATCH] add setting for how to open Maps app --- .../java/net/vonforst/evmap/MapsActivity.kt | 8 +++-- .../evmap/fragment/SettingsFragment.kt | 36 +++++++++++++++++++ .../evmap/storage/PreferenceDataSource.kt | 14 ++++++++ app/src/main/res/navigation/nav_graph.xml | 5 +++ app/src/main/res/values-de/strings.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ app/src/main/res/xml/settings.xml | 15 ++++++++ 7 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/net/vonforst/evmap/fragment/SettingsFragment.kt create mode 100644 app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt create mode 100644 app/src/main/res/xml/settings.xml diff --git a/app/src/main/java/net/vonforst/evmap/MapsActivity.kt b/app/src/main/java/net/vonforst/evmap/MapsActivity.kt index 15761253..b325b009 100644 --- a/app/src/main/java/net/vonforst/evmap/MapsActivity.kt +++ b/app/src/main/java/net/vonforst/evmap/MapsActivity.kt @@ -13,6 +13,7 @@ import androidx.navigation.ui.setupWithNavController import com.google.android.material.navigation.NavigationView import com.google.android.material.snackbar.Snackbar import net.vonforst.evmap.api.goingelectric.ChargeLocation +import net.vonforst.evmap.storage.PreferenceDataSource const val REQUEST_LOCATION_PERMISSION = 1 @@ -26,6 +27,7 @@ class MapsActivity : AppCompatActivity() { private lateinit var navController: NavController lateinit var appBarConfiguration: AppBarConfiguration var fragmentCallback: FragmentCallback? = null + private lateinit var prefs: PreferenceDataSource override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -42,6 +44,8 @@ class MapsActivity : AppCompatActivity() { findViewById(R.id.drawer_layout) ) findViewById(R.id.nav_view).setupWithNavController(navController) + + prefs = PreferenceDataSource(this) } override fun onBackPressed() { @@ -56,11 +60,11 @@ class MapsActivity : AppCompatActivity() { // google maps navigation intent.data = Uri.parse("google.navigation:q=${coord.lat},${coord.lng}") val pm = packageManager - if (intent.resolveActivity(pm) != null) { + if (intent.resolveActivity(pm) != null && prefs.navigateUseMaps) { startActivity(intent); } else { // fallback: generic geo intent - intent.data = Uri.parse("geo:${coord.lat},${coord.lng}") + intent.data = Uri.parse("geo:0,0?q=${coord.lat},${coord.lng}(${charger.name})") if (intent.resolveActivity(pm) != null) { startActivity(intent); } else { diff --git a/app/src/main/java/net/vonforst/evmap/fragment/SettingsFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/SettingsFragment.kt new file mode 100644 index 00000000..6f2f70fd --- /dev/null +++ b/app/src/main/java/net/vonforst/evmap/fragment/SettingsFragment.kt @@ -0,0 +1,36 @@ +package net.vonforst.evmap.fragment + +import android.os.Bundle +import android.view.View +import androidx.appcompat.widget.Toolbar +import androidx.navigation.fragment.findNavController +import androidx.navigation.ui.setupWithNavController +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import net.vonforst.evmap.MapsActivity +import net.vonforst.evmap.R + + +class SettingsFragment : PreferenceFragmentCompat() { + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val toolbar = view.findViewById(R.id.toolbar) as Toolbar + + val navController = findNavController() + toolbar.setupWithNavController( + navController, + (requireActivity() as MapsActivity).appBarConfiguration + ) + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.settings, rootKey) + } + + override fun onPreferenceTreeClick(preference: Preference?): Boolean { + return when (preference?.key) { + else -> super.onPreferenceTreeClick(preference) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt b/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt new file mode 100644 index 00000000..940b4301 --- /dev/null +++ b/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt @@ -0,0 +1,14 @@ +package net.vonforst.evmap.storage + +import android.content.Context +import androidx.preference.PreferenceManager + +class PreferenceDataSource(context: Context) { + val sp = PreferenceManager.getDefaultSharedPreferences(context) + + var navigateUseMaps: Boolean + get() = sp.getBoolean("navigate_use_maps", true) + set(value) { + sp.edit().putBoolean("navigate_use_maps", value).apply() + } +} \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index aca6f439..40038b3b 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -23,6 +23,11 @@ android:name="net.vonforst.evmap.fragment.AboutFragment" android:label="@string/about" tools:layout="@layout/fragment_preference" /> + Zu Favoriten hinzufügen Aus Favoriten entfernen %.1f km + Mit Google Maps navigieren + Google Maps-Navigation sofort starten + Karten-App mit Position der Ladesäule starten \ 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 a1c91ac3..ad82bd32 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -38,4 +38,7 @@ Add to favorites Remove from favorites %.1f km + Navigate using Google Maps + Start Google Maps navigation immediately + Launch Maps app with charger location diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml new file mode 100644 index 00000000..001ee7f7 --- /dev/null +++ b/app/src/main/res/xml/settings.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file