Choose maps based on gplay availability

pull/1376/head
Alex Baker 3 years ago
parent 90bc28c91c
commit 856cd04621

@ -6,10 +6,15 @@ import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import org.tasks.location.LocationService
import org.tasks.location.LocationServiceAndroid
import org.tasks.location.MapFragment
import org.tasks.location.OsmMapFragment
@Module
@InstallIn(SingletonComponent::class)
class FlavorModule {
@Provides
fun getLocationService(service: LocationServiceAndroid): LocationService = service
@Provides
fun getMapFragment(osm: OsmMapFragment): MapFragment = osm
}

@ -1,21 +0,0 @@
package org.tasks.injection
import android.content.Context
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.scopes.ActivityScoped
import org.tasks.location.MapFragment
import org.tasks.location.OsmMapFragment
@Module
@InstallIn(ActivityComponent::class)
class LocationModule {
@Provides
@ActivityScoped
fun getMapFragment(@ApplicationContext context: Context): MapFragment {
return OsmMapFragment(context)
}
}

@ -7,6 +7,5 @@
<string name="manage_subscription_url">%s</string>
<string name="support_email">support@tasks.org</string>
<string name="default_reverse_geocoder">1</string> <!-- Nominatim -->
<string name="default_maps">1</string> <!-- OpenStreetMaps -->
<string name="default_geofence_service">1</string> <!-- Android LocationManager -->
</resources>

@ -1,15 +1,23 @@
package org.tasks.injection
import dagger.Lazy
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import org.tasks.location.LocationService
import org.tasks.location.LocationServiceGooglePlay
import org.tasks.gtasks.PlayServices
import org.tasks.location.*
@Module
@InstallIn(SingletonComponent::class)
class FlavorModule {
@Provides
fun getLocationService(service: LocationServiceGooglePlay): LocationService = service
@Provides
fun getMapFragment(
playServices: PlayServices,
osm: Lazy<OsmMapFragment>,
google: Lazy<GoogleMapFragment>,
): MapFragment = if (playServices.isPlayServicesAvailable) google.get() else osm.get()
}

@ -1,28 +0,0 @@
package org.tasks.injection
import android.content.Context
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.scopes.ActivityScoped
import org.tasks.R
import org.tasks.location.GoogleMapFragment
import org.tasks.location.MapFragment
import org.tasks.location.OsmMapFragment
import org.tasks.preferences.Preferences
@Module
@InstallIn(ActivityComponent::class)
internal class LocationModule {
@Provides
@ActivityScoped
fun getMapFragment(
preferences: Preferences,
@ApplicationContext context: Context
): MapFragment = when (preferences.getIntegerFromString(R.string.p_map_tiles, 0)) {
1 -> OsmMapFragment(context)
else -> GoogleMapFragment(context)
}
}

@ -8,13 +8,15 @@ import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.*
import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.R
import org.tasks.data.Place
import org.tasks.location.MapFragment.MapFragmentCallback
import java.util.*
import javax.inject.Inject
class GoogleMapFragment(
private val context: Context
class GoogleMapFragment @Inject constructor(
@ApplicationContext private val context: Context
) : MapFragment, OnMapReadyCallback, GoogleMap.OnMarkerClickListener {
private val markers: MutableList<Marker> = ArrayList()
private lateinit var callback: MapFragmentCallback

@ -7,6 +7,5 @@
<string name="manage_subscription_url">https://play.google.com/store/account/subscriptions?sku=%s&amp;package=org.tasks</string>
<string name="support_email">play-support@tasks.org</string>
<string name="default_reverse_geocoder">0</string> <!-- Mapbox -->
<string name="default_maps">0</string> <!-- Google Maps -->
<string name="default_geofence_service">0</string> <!-- Google Play Location Services -->
</resources>

@ -6,6 +6,7 @@ import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.preference.PreferenceManager
import dagger.hilt.android.qualifiers.ApplicationContext
import org.osmdroid.config.Configuration
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
import org.osmdroid.util.GeoPoint
@ -19,8 +20,11 @@ import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay
import org.tasks.R
import org.tasks.data.Place
import org.tasks.location.MapFragment.MapFragmentCallback
import javax.inject.Inject
class OsmMapFragment(private val context: Context) : MapFragment {
class OsmMapFragment @Inject constructor(
@ApplicationContext private val context: Context
) : MapFragment {
private lateinit var callback: MapFragmentCallback
private lateinit var map: MapView
private var locationOverlay: MyLocationNewOverlay? = null

@ -38,7 +38,7 @@ class LocationPreferences : InjectingPreferenceFragment() {
findPreference(R.string.p_geofence_service)
.setOnPreferenceChangeListener(this::onGeofenceServiceChanged)
} else {
disable(R.string.p_map_tiles, R.string.p_geofence_service)
disable(R.string.p_geofence_service)
}
}

@ -702,7 +702,6 @@
<string name="geofence_service">Servicio de geovallas</string>
<string name="location_based_reminders">Recordatorios basados en la ubicación</string>
<string name="map_theme_use_app_theme">Utilizar el tema de la aplicación</string>
<string name="map_tiles">Azulejos del mapa</string>
<string name="maps">Mapas</string>
<string name="reverse_geocoder">Geocodificador inverso</string>
<string name="tasks_org_account_required">Se requiere una cuenta de Tasks.org</string>

@ -692,7 +692,6 @@
<string name="tasks_org_account">Compte Tasks.org</string>
<string name="subscription">Abonnement</string>
<string name="widget_show_title">Afficher le titre</string>
<string name="map_tiles">Carte des tuiles</string>
<string name="reverse_geocoder">Géocodeur inversé</string>
<string name="map_theme">Thème de la carte</string>
<string name="android_location_services">Service de localisation Android</string>

@ -701,7 +701,6 @@
<string name="location_based_reminders">Hely alapú emlékeztetők</string>
<string name="reverse_geocoder">Fordított geokódoló</string>
<string name="map_theme_use_app_theme">Alkalmazás témájának használata</string>
<string name="map_tiles">Térkép csempék</string>
<string name="maps">Térképek</string>
<string name="tasks_org_account_required">Tasks.org fiók szükséges</string>
<string name="map_theme">Térkép téma</string>

@ -699,7 +699,6 @@
<string name="location_based_reminders">Locatiegebaseerde herinneringen</string>
<string name="map_theme">Kaartthema</string>
<string name="map_theme_use_app_theme">Gebruik app-thema</string>
<string name="map_tiles">Kaarttegels</string>
<string name="maps">Kaarten</string>
<string name="tasks_org_account_required">Vereist een Tasks.org account</string>
</resources>

@ -722,7 +722,6 @@
<string name="geofence_service">Служба геозон</string>
<string name="location_based_reminders">Нагадування на основі розташування</string>
<string name="map_theme_use_app_theme">Використовувати тему застосунку</string>
<string name="map_tiles">Плитки карти</string>
<string name="maps">Карти</string>
<string name="reverse_geocoder">Зворотний геокодер</string>
<string name="tasks_org_account_required">Потрібен обліковий запис Tasks.org</string>

@ -692,7 +692,6 @@
<string name="geofence_service">地理围栏服务</string>
<string name="location_based_reminders">基于位置的提醒</string>
<string name="map_theme_use_app_theme">使用应用主题</string>
<string name="map_tiles">地图图块</string>
<string name="maps">地图</string>
<string name="reverse_geocoder">反向地理编码器</string>
<string name="tasks_org_account_required">需要 Tasks.org 账户</string>

@ -270,16 +270,6 @@
<item>2</item>
</string-array>
<string-array name="map_tile_names">
<item>@string/google_maps</item>
<item>@string/openstreetmap</item>
</string-array>
<string-array name="map_tile_values">
<item>0</item>
<item>1</item>
</string-array>
<string-array name="map_theme_names">
<item>@string/map_theme_use_app_theme</item>
<item>@string/theme_light</item>

@ -397,8 +397,6 @@
<string name="p_linkify_task_edit">linkify_task_edit</string>
<string name="mapbox">Mapbox</string>
<string name="nominatim">Nominatim</string>
<string name="google_maps">Google Maps</string>
<string name="openstreetmap">OpenStreetMap</string>
<string name="android">Android</string>
<string name="p_location_based_reminders">location_based_reminders</string>
<string name="p_geofence_service">geofence_service</string>
@ -449,6 +447,5 @@
<string name="legacy_etesync">legacy_etesync</string>
<string name="param_type">type</string>
<string name="p_reverse_geocoder">reverse_geocoder</string>
<string name="p_map_tiles">map_tiles</string>
<string name="p_map_theme">map_theme</string>
</resources>

@ -701,7 +701,6 @@ File %1$s contained %2$s.\n\n
<string name="account_not_included">Not included with \'Name your price\' subscriptions</string>
<string name="reverse_geocoder">Reverse geocoder</string>
<string name="maps">Maps</string>
<string name="map_tiles">Map tiles</string>
<string name="map_theme_use_app_theme">Use app theme</string>
<string name="location_based_reminders">Location-based reminders</string>
<string name="geofence_service">Geofence service</string>

@ -24,14 +24,6 @@
android:key="@string/maps"
android:title="@string/maps">
<ListPreference
android:defaultValue="@string/default_maps"
android:key="@string/p_map_tiles"
android:title="@string/map_tiles"
android:entries="@array/map_tile_names"
android:entryValues="@array/map_tile_values"
android:summary="%s" />
<ListPreference
android:defaultValue="0"
android:key="@string/p_map_theme"

Loading…
Cancel
Save