Convert MapFragment to Kotlin

pull/1369/head
Alex Baker 5 years ago
parent c2af267ca3
commit 29fdba597b

@ -21,12 +21,12 @@ import org.tasks.data.Place
import org.tasks.location.MapFragment.MapFragmentCallback
class OsmMapFragment(private val context: Context) : MapFragment {
private lateinit var callbacks: MapFragmentCallback
private lateinit var callback: MapFragmentCallback
private lateinit var map: MapView
private var locationOverlay: MyLocationNewOverlay? = null
override fun init(activity: AppCompatActivity, callbacks: MapFragmentCallback, dark: Boolean) {
this.callbacks = callbacks
override fun init(activity: AppCompatActivity, callback: MapFragmentCallback, dark: Boolean) {
this.callback = callback
Configuration.getInstance()
.load(activity, PreferenceManager.getDefaultSharedPreferences(activity))
map = MapView(activity).apply {
@ -42,13 +42,14 @@ class OsmMapFragment(private val context: Context) : MapFragment {
overlays.add(copyright)
activity.findViewById<ViewGroup>(R.id.map).addView(this)
}
callbacks.onMapReady(this)
callback.onMapReady(this)
}
override fun getMapPosition(): MapPosition {
val center = map.mapCenter
return MapPosition(center.latitude, center.longitude, map.zoomLevelDouble.toFloat())
}
override val mapPosition: MapPosition
get() {
val center = map.mapCenter
return MapPosition(center.latitude, center.longitude, map.zoomLevelDouble.toFloat())
}
override fun movePosition(mapPosition: MapPosition, animate: Boolean) {
val controller = map.controller
@ -70,7 +71,7 @@ class OsmMapFragment(private val context: Context) : MapFragment {
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_TOP)
icon = ContextCompat.getDrawable(context, R.drawable.ic_map_marker_select_red_48dp)!!.mutate()
setOnMarkerClickListener { _, _ ->
callbacks.onPlaceSelected(place)
callback.onPlaceSelected(place)
false
}
})
@ -78,9 +79,7 @@ class OsmMapFragment(private val context: Context) : MapFragment {
}
@SuppressLint("ClickableViewAccessibility")
override fun disableGestures() {
map.setOnTouchListener { _, _ -> true }
}
override fun disableGestures() = map.setOnTouchListener { _, _ -> true }
@SuppressLint("MissingPermission")
override fun showMyLocation() {

@ -13,14 +13,16 @@ import org.tasks.data.Place
import org.tasks.location.MapFragment.MapFragmentCallback
import java.util.*
class GoogleMapFragment(private val context: Context) : MapFragment, OnMapReadyCallback, GoogleMap.OnMarkerClickListener {
class GoogleMapFragment(
private val context: Context
) : MapFragment, OnMapReadyCallback, GoogleMap.OnMarkerClickListener {
private val markers: MutableList<Marker> = ArrayList()
private lateinit var callbacks: MapFragmentCallback
private lateinit var callback: MapFragmentCallback
private var dark = false
private var map: GoogleMap? = null
override fun init(activity: AppCompatActivity, callbacks: MapFragmentCallback, dark: Boolean) {
this.callbacks = callbacks
override fun init(activity: AppCompatActivity, callback: MapFragmentCallback, dark: Boolean) {
this.callback = callback
this.dark = dark
val fragmentManager = activity.supportFragmentManager
var mapFragment = fragmentManager.findFragmentByTag(FRAG_TAG_MAP) as SupportMapFragment?
@ -31,14 +33,11 @@ class GoogleMapFragment(private val context: Context) : MapFragment, OnMapReadyC
mapFragment.getMapAsync(this)
}
override fun getMapPosition(): MapPosition? {
if (map == null) {
return null
override val mapPosition: MapPosition?
get() = map?.cameraPosition?.let { it ->
val target = it.target
return MapPosition(target.latitude, target.longitude, it.zoom)
}
val cameraPosition = map!!.cameraPosition
val target = cameraPosition.target
return MapPosition(target.latitude, target.longitude, cameraPosition.zoom)
}
override fun movePosition(mapPosition: MapPosition, animate: Boolean) {
val cameraUpdate = CameraUpdateFactory.newCameraPosition(
@ -70,7 +69,7 @@ class GoogleMapFragment(private val context: Context) : MapFragment, OnMapReadyC
}
override fun disableGestures() {
map!!.uiSettings.setAllGesturesEnabled(false)
map?.uiSettings?.setAllGesturesEnabled(false)
}
@SuppressLint("MissingPermission")
@ -87,7 +86,7 @@ class GoogleMapFragment(private val context: Context) : MapFragment, OnMapReadyC
uiSettings.isMyLocationButtonEnabled = false
uiSettings.isRotateGesturesEnabled = false
map!!.setOnMarkerClickListener(this)
callbacks.onMapReady(this)
callback.onMapReady(this)
}
override fun onPause() {}
@ -97,7 +96,7 @@ class GoogleMapFragment(private val context: Context) : MapFragment, OnMapReadyC
override fun onDestroy() {}
override fun onMarkerClick(marker: Marker): Boolean {
callbacks.onPlaceSelected(marker.tag as Place?)
callback.onPlaceSelected(marker.tag as Place)
return true
}

@ -103,12 +103,12 @@ class PlaceSettingsActivity : BaseListSettingsActivity(), MapFragment.MapFragmen
finish()
}
override fun onMapReady(mapFragment: MapFragment?) {
map = mapFragment!!
override fun onMapReady(mapFragment: MapFragment) {
map = mapFragment
map.setMarkers(listOf(place))
map.disableGestures()
map.movePosition(place.mapPosition, false)
}
override fun onPlaceSelected(place: Place?) {}
override fun onPlaceSelected(place: Place) {}
}

@ -188,11 +188,10 @@ class LocationPickerActivity : InjectingAppCompatActivity(), Toolbar.OnMenuItemC
if (permissionChecker.canAccessForegroundLocation()) {
mapFragment.showMyLocation()
}
if (mapPosition != null) {
map.movePosition(mapPosition, false)
} else if (permissionChecker.canAccessForegroundLocation()) {
moveToCurrentLocation(false)
}
mapPosition
?.let { map.movePosition(it, false) }
?: moveToCurrentLocation(false)
}
override fun onBackPressed() {
@ -213,11 +212,7 @@ class LocationPickerActivity : InjectingAppCompatActivity(), Toolbar.OnMenuItemC
}
@OnClick(R.id.current_location)
fun onClick() {
if (permissionRequestor.requestForegroundLocation()) {
moveToCurrentLocation(true)
}
}
fun onClick() = moveToCurrentLocation(true)
override fun onRequestPermissionsResult(
requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
@ -258,6 +253,9 @@ class LocationPickerActivity : InjectingAppCompatActivity(), Toolbar.OnMenuItemC
@SuppressLint("MissingPermission")
private fun moveToCurrentLocation(animate: Boolean) {
if (!permissionChecker.canAccessForegroundLocation()) {
return
}
LocationEngineProvider.getBestLocationEngine(this)
.getLastLocation(
object : LocationEngineCallback<LocationEngineResult> {

@ -1,33 +0,0 @@
package org.tasks.location;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import java.util.List;
import org.tasks.data.Place;
public interface MapFragment {
void init(AppCompatActivity activity, MapFragmentCallback callback, boolean dark);
@Nullable MapPosition getMapPosition();
void movePosition(MapPosition mapPosition, boolean animate);
void setMarkers(List<Place> places);
void disableGestures();
void showMyLocation();
void onPause();
void onResume();
void onDestroy();
interface MapFragmentCallback {
void onMapReady(MapFragment mapFragment);
void onPlaceSelected(Place place);
}
}

@ -0,0 +1,29 @@
package org.tasks.location
import androidx.appcompat.app.AppCompatActivity
import org.tasks.data.Place
interface MapFragment {
fun init(activity: AppCompatActivity, callback: MapFragmentCallback, dark: Boolean)
val mapPosition: MapPosition?
fun movePosition(mapPosition: MapPosition, animate: Boolean)
fun setMarkers(places: List<Place>)
fun disableGestures()
fun showMyLocation()
fun onPause()
fun onResume()
fun onDestroy()
interface MapFragmentCallback {
fun onMapReady(mapFragment: MapFragment)
fun onPlaceSelected(place: Place)
}
}
Loading…
Cancel
Save