|
|
|
@ -11,7 +11,11 @@ import android.util.Log
|
|
|
|
|
import android.view.MotionEvent
|
|
|
|
|
import android.widget.EditText
|
|
|
|
|
import android.widget.Toast
|
|
|
|
|
import androidx.core.content.ContentProviderCompat.requireContext
|
|
|
|
|
import androidx.core.content.ContextCompat
|
|
|
|
|
import androidx.fragment.app.viewModels
|
|
|
|
|
import androidx.lifecycle.ViewModelProvider
|
|
|
|
|
import androidx.lifecycle.ViewModelStoreOwner
|
|
|
|
|
import kotlinx.coroutines.CoroutineScope
|
|
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
@ -20,9 +24,12 @@ import org.osmdroid.util.GeoPoint
|
|
|
|
|
import org.osmdroid.views.MapView
|
|
|
|
|
import org.osmdroid.views.overlay.Overlay
|
|
|
|
|
import uca.baptistearthur.geocaching.R
|
|
|
|
|
import uca.baptistearthur.geocaching.application.RTApplication
|
|
|
|
|
import uca.baptistearthur.geocaching.model.Address
|
|
|
|
|
import uca.baptistearthur.geocaching.model.Place
|
|
|
|
|
import uca.baptistearthur.geocaching.model.RoadTripEntity
|
|
|
|
|
import uca.baptistearthur.geocaching.viewModels.RoadTripViewModel
|
|
|
|
|
import uca.baptistearthur.geocaching.viewModels.RoadTripViewModelFactory
|
|
|
|
|
import java.util.*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -30,6 +37,12 @@ class NewRoadtripOverlay(val points: Collection<PlaceMarker>) : Overlay() {
|
|
|
|
|
|
|
|
|
|
private var circleRectF=RectF()
|
|
|
|
|
|
|
|
|
|
fun getRoadTripViewModelFromOverlay(overlayContext: Context): RoadTripViewModel {
|
|
|
|
|
val roadTripDao = (overlayContext.applicationContext as RTApplication).db.roadTripDAO()
|
|
|
|
|
val viewModelFactory = RoadTripViewModelFactory(roadTripDao)
|
|
|
|
|
return ViewModelProvider(overlayContext as ViewModelStoreOwner, viewModelFactory).get(RoadTripViewModel::class.java)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun draw(canvas: Canvas, mapView: MapView, shadow: Boolean) {
|
|
|
|
|
|
|
|
|
|
val circleSize = 300f
|
|
|
|
@ -80,6 +93,7 @@ class NewRoadtripOverlay(val points: Collection<PlaceMarker>) : Overlay() {
|
|
|
|
|
.setPositiveButton(R.string.confirm) { _, _ ->
|
|
|
|
|
val userInput = input.text.toString()
|
|
|
|
|
if (userInput.isNotBlank()) {
|
|
|
|
|
|
|
|
|
|
val places: MutableList<Place> = points.map { Place(it.position.latitude, it.position.longitude) }.toMutableList()
|
|
|
|
|
CoroutineScope(Dispatchers.Main).launch {
|
|
|
|
|
places.forEach{
|
|
|
|
@ -89,11 +103,12 @@ class NewRoadtripOverlay(val points: Collection<PlaceMarker>) : Overlay() {
|
|
|
|
|
}
|
|
|
|
|
val newRoadTrip = RoadTripEntity(
|
|
|
|
|
id = 0, // auto-generated ID
|
|
|
|
|
name = input.text.toString(),
|
|
|
|
|
name = input.text.trim().toString(),
|
|
|
|
|
date = Date(),
|
|
|
|
|
places = places
|
|
|
|
|
)
|
|
|
|
|
// TODO: Persister le RoadTrip
|
|
|
|
|
getRoadTripViewModelFromOverlay(context).insertRoadTrip(newRoadTrip);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
Toast.makeText(
|
|
|
|
|