Merge remote-tracking branch 'origin/master'

# Conflicts:
#	app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/NewRoadtripOverlay.kt
#	app/src/main/res/values-fr/strings.xml
#	app/src/main/res/values/strings.xml
master
Arthur VALIN 2 years ago
commit fd33116210

@ -44,7 +44,7 @@ class Converters {
fun Date.toFrenchFormat(): String {
val day: String = if(this.date < 10) "0${this.date}" else "${this.date}"
val month: String = if(this.month < 10) "0${this.month}" else "${this.month}"
val month: String = if(this.month < 10) "0${this.month+1}" else "${this.month+1}"
val year = "${this.year + 1900}"
val hours: String = if(this.hours < 10) "0${this.hours}" else "${this.hours}"
val minutes: String = if(this.minutes < 10) "0${this.minutes}" else "${this.minutes}"

@ -17,8 +17,8 @@ class PlacesAdapter (val places: List<Place>) : RecyclerView.Adapter<PlacesViewH
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: PlacesViewHolder, position: Int) {
holder.placeAddress.text = places[position].address.displayName
holder.placeCoordinates.text = "(${places[position].longitude}, ${places[position].latitude}), ${places[position].address.country}"
holder.placeAddress.text = "${places[position].address.displayName}, ${places[position].address.country}"
holder.placeCoordinates.text = "(${places[position].longitude}, ${places[position].latitude})"
}
override fun getItemCount(): Int = places.size

@ -17,7 +17,8 @@ class RoadTripAdapter(val voyages: List<RoadTripEntity>, val navController: NavC
@SuppressLint("SetTextI18n", "ClickableViewAccessibility")
override fun onBindViewHolder(holder: RoadTripViewHolder, position: Int) {
holder.roadTripAccessButton.text = "> " + voyages[position].name
holder.roadTripAccessButton.text = "> " + if (voyages[position].name.length > 20) voyages[position].name.substring(0, 20) + "..." else voyages[position].name
holder.clickedRoadTrip = voyages[position]
}
override fun getItemCount(): Int = voyages.size

@ -1,15 +0,0 @@
package uca.baptistearthur.geocaching.services
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import uca.baptistearthur.geocaching.R
class FragmentService {
fun loadFragment(fragment: Fragment, supportFragmentManager: FragmentManager){
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.fragment_container, fragment)
transaction.commit()
}
}

@ -2,7 +2,6 @@ package uca.baptistearthur.geocaching.ui.activity
import android.annotation.SuppressLint
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
import androidx.navigation.ui.NavigationUI
@ -10,16 +9,9 @@ import androidx.navigation.ui.setupWithNavController
import com.google.android.material.bottomnavigation.BottomNavigationView
import kotlinx.coroutines.*
import uca.baptistearthur.geocaching.R
import uca.baptistearthur.geocaching.network.AddressAPI
import uca.baptistearthur.geocaching.network.AddressNetwork
class MainWindow: AppCompatActivity() {
// private val roadTripViewModel: RoadTripViewModel by viewModels<RoadTripViewModel> {
// RoadTripViewModelFactory((this.application as RTApplication).db.roadTripDAO())
// }
@SuppressLint("MissingInflatedId")
override fun onCreate(savedInstanceState: Bundle?) {

@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
@ -25,19 +26,20 @@ class RoadTripFragment : Fragment() {
RoadTripViewModelFactory((requireActivity().application as RTApplication).db.roadTripDAO())
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
roadTripViewModel.insertRoadTrip(RoadTripEntity(0, "Test", Date(),
listOf(Place(0.15, 45.2)) as MutableList<Place>
))
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_roadtrip, container, false)
roadTripRecyclerView = view?.findViewById(R.id.recyclerViewRoadTripList)
roadTripViewModel.getAllRoadTrips().observe(viewLifecycleOwner, { roadTrips ->
roadTripRecyclerView?.adapter = RoadTripAdapter(roadTrips, findNavController())
if(roadTrips.isEmpty()){
Toast.makeText(
context,
R.string.noRoadTripFound,
Toast.LENGTH_SHORT
).show()
}else roadTripRecyclerView?.adapter = RoadTripAdapter(roadTrips, findNavController())
})
roadTripRecyclerView?.layoutManager = LinearLayoutManager(context)

@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment
import android.util.Log
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.fragment.app.viewModels
import androidx.navigation.findNavController
@ -46,12 +47,30 @@ class RoadtripDetail : Fragment() {
placesRecyclerView?.adapter = PlacesAdapter(roadTrip.places)
placesRecyclerView?.layoutManager = LinearLayoutManager(context)
view?.findViewById<TextView>(R.id.roadTripDetailTitle)?.text = roadTrip.name
view?.findViewById<TextView>(R.id.roadTripDetailDate)?.text = roadTrip.date.toFrenchFormat()
view?.findViewById<Button>(R.id.btnDeleteRoadTrip)?.setOnClickListener {
roadTripViewModel.deleteRoadTrip(roadTrip)
findNavController().popBackStack()
try{
roadTripViewModel.deleteRoadTrip(roadTrip)
}catch (e: Exception){
Toast.makeText(
context,
R.string.roadTripDeleteError,
Toast.LENGTH_SHORT
).show()
}finally {
findNavController().popBackStack()
Toast.makeText(
context,
R.string.roadTripDeleteConfirmation,
Toast.LENGTH_SHORT
).show()
}
}
return view

@ -1,17 +1,20 @@
package uca.baptistearthur.geocaching.ui.overlay
import android.app.AlertDialog
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.RectF
import android.provider.Settings.System.getString
import android.text.InputFilter
import android.util.Log
import android.view.MotionEvent
import android.widget.EditText
import android.widget.Toast
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,8 +23,12 @@ import org.osmdroid.views.MapView
import org.osmdroid.views.overlay.Overlay
import org.osmdroid.views.overlay.Polyline
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.*
@ -29,6 +36,12 @@ class NewRoadtripOverlay(val points: MutableCollection<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
@ -96,7 +109,7 @@ class NewRoadtripOverlay(val points: MutableCollection<PlaceMarker>) : Overlay()
date = Date(),
places = places
)
// TODO: Persister le RoadTrip
getRoadTripViewModelFromOverlay(context).insertRoadTrip(newRoadTrip);
Toast.makeText(
context,
R.string.roadtripAdded,

@ -10,5 +10,8 @@
<string name="cancel">Annuler</string>
<string name="emptyTextError">Le texte ne peux pas être vide</string>
<string name="newRoadtripDialog">Entrez le nom de votre voyage</string>
<string name="roadTripDeleteConfirmation">Le voyage a bien été supprimé</string>
<string name="roadTripDeleteError">Une erreur est survenue lors de la suppresion du voyage</string>
<string name="noRoadTripFound">Aucun voyage n\'a été trouvé, utilisez la carte</string>
<string name="roadtripAdded">Roadtrip ajouté</string>
</resources>

@ -10,5 +10,8 @@
<string name="cancel">Cancel</string>
<string name="emptyTextError">The text cannot be empty</string>
<string name="newRoadtripDialog">Enter the name of your travel</string>
<string name="roadTripDeleteConfirmation">The road trip has been successfully deleted</string>
<string name="roadTripDeleteError">An error occurred while deleting the road trip.</string>
<string name="noRoadTripFound">No trip was found, add one with the map.</string>
<string name="roadtripAdded">Roadtrip added</string>
</resources>
Loading…
Cancel
Save