From a4bbb15f64dbeaa1cab0f3fdb88305c7fc7e1e52 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Thu, 9 Jun 2022 21:27:37 +0200 Subject: [PATCH] add option to disable map rotation gestures --- app/build.gradle | 7 +++-- .../vonforst/evmap/fragment/MapFragment.kt | 28 ++++++++++++++++++- .../evmap/storage/PreferenceDataSource.kt | 6 ++++ app/src/main/res/values-de/strings.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ app/src/main/res/xml/settings_ui.xml | 6 ++++ 6 files changed, 50 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e3c47db0..46c1aebe 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -174,11 +174,14 @@ dependencies { googleAutomotiveImplementation 'androidx.car.app:app-automotive:1.2.0-rc01' // AnyMaps - def anyMapsVersion = '751daec281' + def anyMapsVersion = '3c67d7a1dc' implementation "com.github.johan12345.AnyMaps:anymaps-base:$anyMapsVersion" googleImplementation "com.github.johan12345.AnyMaps:anymaps-google:$anyMapsVersion" googleImplementation 'com.google.android.gms:play-services-maps:18.0.2' - implementation "com.github.johan12345.AnyMaps:anymaps-mapbox:$anyMapsVersion" + implementation("com.github.johan12345.AnyMaps:anymaps-mapbox:$anyMapsVersion") { + exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-accounts' + exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-telemetry' + } // Google Places implementation 'com.google.android.libraries.places:places:2.5.0' 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 14f944ad..685719e6 100644 --- a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt +++ b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt @@ -23,7 +23,10 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.PopupMenu import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat -import androidx.core.view.* +import androidx.core.view.MenuCompat +import androidx.core.view.doOnLayout +import androidx.core.view.doOnNextLayout +import androidx.core.view.updateLayoutParams import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels @@ -92,6 +95,28 @@ import net.vonforst.evmap.utils.checkFineLocationPermission import net.vonforst.evmap.utils.distanceBetween import net.vonforst.evmap.viewmodel.* import java.io.IOException +import kotlin.collections.List +import kotlin.collections.Set +import kotlin.collections.any +import kotlin.collections.component1 +import kotlin.collections.component2 +import kotlin.collections.contains +import kotlin.collections.emptyList +import kotlin.collections.filterIsInstance +import kotlin.collections.find +import kotlin.collections.forEach +import kotlin.collections.getOrNull +import kotlin.collections.isNotEmpty +import kotlin.collections.iterator +import kotlin.collections.listOf +import kotlin.collections.map +import kotlin.collections.mapNotNull +import kotlin.collections.set +import kotlin.collections.sortedBy +import kotlin.collections.sortedByDescending +import kotlin.collections.toList +import kotlin.collections.toSet +import kotlin.collections.toTypedArray class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallback, @@ -811,6 +836,7 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac animator = MarkerAnimator(chargerIconGenerator) map.uiSettings.setTiltGesturesEnabled(false) + map.uiSettings.setRotateGesturesEnabled(prefs.mapRotateGesturesEnabled) map.setIndoorEnabled(false) map.uiSettings.setIndoorLevelPickerEnabled(false) map.setOnCameraIdleListener { diff --git a/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt b/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt index 0604c76e..1eb29a14 100644 --- a/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt +++ b/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt @@ -29,6 +29,12 @@ class PreferenceDataSource(val context: Context) { sp.edit().putBoolean("navigate_use_maps", value).apply() } + var mapRotateGesturesEnabled: Boolean + get() = sp.getBoolean("map_rotate_gestures_enabled", true) + set(value) { + sp.edit().putBoolean("map_rotate_gestures_enabled", value).apply() + } + var lastGeReferenceDataUpdate: Instant get() = Instant.ofEpochMilli(sp.getLong("last_ge_reference_data_update", 0L)) set(value) { diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 53692aa0..5bd3ae47 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -255,4 +255,7 @@ Android Auto Schieflast erlauben 4.5 kW an AC-Stationen für Autos mit 1-phasigem Lader]]> + Kartenrotation erlauben + Karte kann mit Zweifingergeste rotiert werden + Karte bleibt fest nach Norden ausgerichtet diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index aa870078..7a9324f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -240,4 +240,7 @@ Android Auto Enable unbalanced load 4.5 kW at AC stations for cars with single-phase charger]]> + Enable map rotation + Map can be rotated with two-finger gesture + Map will be fixed to north-up diff --git a/app/src/main/res/xml/settings_ui.xml b/app/src/main/res/xml/settings_ui.xml index 69dd7a1b..153fe5a7 100644 --- a/app/src/main/res/xml/settings_ui.xml +++ b/app/src/main/res/xml/settings_ui.xml @@ -15,6 +15,12 @@ android:entryValues="@array/pref_darkmode_values" android:defaultValue="default" android:summary="@string/pref_darkmode_summary" /> +