From 9bcddd990b4a665f0f55f73da44e7930efcec945 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Fri, 10 Mar 2023 17:01:39 +0100 Subject: [PATCH 1/4] Adding better recenter algorithm following the location --- .../baptistearthur/geocaching/MainWindow.kt | 4 +- .../java/uca/baptistearthur/geocaching/Map.kt | 10 +++- .../geocaching/RecenterOverlay.kt | 51 ++++++++++++------- app/src/main/res/layout/fragment_map.xml | 8 +++ 4 files changed, 53 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/uca/baptistearthur/geocaching/MainWindow.kt b/app/src/main/java/uca/baptistearthur/geocaching/MainWindow.kt index 0774e7a..846ae52 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/MainWindow.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/MainWindow.kt @@ -9,6 +9,8 @@ import org.osmdroid.config.Configuration class MainWindow: AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { + val map = Map(); + super.onCreate(savedInstanceState) setContentView(R.layout.main_window) @@ -22,7 +24,7 @@ class MainWindow: AppCompatActivity() { true } R.id.map -> { - loadFragment(Map()) + loadFragment(map) true } R.id.list -> { diff --git a/app/src/main/java/uca/baptistearthur/geocaching/Map.kt b/app/src/main/java/uca/baptistearthur/geocaching/Map.kt index 5d66bc5..31a90ef 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/Map.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/Map.kt @@ -17,6 +17,7 @@ import android.Manifest.permission.ACCESS_FINE_LOCATION import android.hardware.SensorManager import android.location.Location import android.location.LocationListener +import android.widget.ProgressBar import androidx.activity.result.contract.ActivityResultContracts import org.osmdroid.views.overlay.compass.CompassOverlay import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider @@ -26,13 +27,16 @@ import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay class Map : Fragment() { private lateinit var map : MapView + private lateinit var spinner: ProgressBar; val defaultPoint = GeoPoint(48.8583, 2.2944) var isMapCentered = false; + val locationListener = object : LocationListener { override fun onLocationChanged(location: Location) { val geoPoint = GeoPoint(location.latitude, location.longitude) if(!isMapCentered){ map.controller.setCenter(geoPoint) + spinner.visibility=View.GONE; isMapCentered=true; } map.invalidate() @@ -50,7 +54,10 @@ class Map : Fragment() { private fun configureMap(view: View){ map = view.findViewById(R.id.mapView) - map.controller.setZoom(20.0); + spinner = view.findViewById(R.id.mapLoading); + spinner.visibility=View.VISIBLE; + map.minZoomLevel = 10.0 + map.controller.setZoom(21.0); if (ContextCompat.checkSelfPermission(requireActivity(), ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { requestPermissionLauncher.launch(ACCESS_FINE_LOCATION) } @@ -65,7 +72,6 @@ class Map : Fragment() { map.overlays.add(scaleBarOverlay) val myLocation = MyLocationNewOverlay(GpsMyLocationProvider(context), map) - myLocation.enableFollowLocation() myLocation.enableMyLocation() map.overlays.add(myLocation) diff --git a/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt b/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt index 47aae20..d494dc2 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt @@ -1,25 +1,23 @@ package uca.baptistearthur.geocaching import android.graphics.* -import android.graphics.drawable.shapes.Shape import android.location.Location import android.view.GestureDetector import android.view.MotionEvent -import androidx.appcompat.widget.AppCompatDrawableManager import androidx.core.content.ContextCompat import org.osmdroid.util.GeoPoint import org.osmdroid.views.MapView import org.osmdroid.views.overlay.Overlay import org.osmdroid.views.overlay.mylocation.IMyLocationConsumer import org.osmdroid.views.overlay.mylocation.IMyLocationProvider +import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay -class RecenterOverlay(val myLocationProvider: IMyLocationProvider, val mapView: MapView) : Overlay(), GestureDetector.OnGestureListener, IMyLocationConsumer { - - private val gestureDetector: GestureDetector = GestureDetector(mapView.context, this) - private var circleRectF=RectF(); - +class RecenterOverlay(val myLocationProvider: IMyLocationProvider, val mapView: MapView) : Overlay(), IMyLocationConsumer { + private var circleRectF=RectF() + private var mIsFollowing = false + private var mLocation: Location? = null override fun draw(canvas: Canvas, mapView: MapView, shadow: Boolean) { val circleSize = 300f @@ -49,20 +47,47 @@ class RecenterOverlay(val myLocationProvider: IMyLocationProvider, val mapView: icon?.draw(canvas) } + override fun onLocationChanged(location: Location, source: IMyLocationProvider) { + mLocation = myLocationProvider.lastKnownLocation + if (mIsFollowing) { + mapView.controller.animateTo(GeoPoint(location.latitude, location.longitude)); + } else { + mapView.postInvalidate(); + } + } + fun enableMyLocation() { + mLocation = myLocationProvider.lastKnownLocation + mIsFollowing = true; + if(mLocation!=null) { + mapView.controller?.animateTo(GeoPoint(mLocation!!.latitude, mLocation!!.longitude)) + } myLocationProvider.startLocationProvider(this); } fun disableMyLocation(){ + mapView.controller?.stopAnimation(false) + mIsFollowing = false myLocationProvider.stopLocationProvider(); } + override fun onTouchEvent(event: MotionEvent?, mapView: MapView?): Boolean { + val isSingleFingerDrag = + event!!.action == MotionEvent.ACTION_MOVE && event.pointerCount == 1 + if (event.action == MotionEvent.ACTION_DOWN) { + disableMyLocation() + } else if (isSingleFingerDrag && mIsFollowing) { + return true // prevent the pan + } + return super.onTouchEvent(event, mapView) + } + override fun onSingleTapConfirmed(e: MotionEvent?, mapView: MapView?) = myLocationProvider.lastKnownLocation?.let { if (e != null && circleRectF.contains(e.x, e.y)) { mapView?.controller?.setCenter(GeoPoint(it.latitude, it.longitude)) - mapView?.controller?.setZoom(20.0); - + mapView?.controller?.setZoom(21.0); + enableMyLocation() } true } ?: false @@ -82,12 +107,4 @@ class RecenterOverlay(val myLocationProvider: IMyLocationProvider, val mapView: disableMyLocation() super.onDetach(mapView) } - - override fun onDown(p0: MotionEvent) = true - override fun onShowPress(p0: MotionEvent) = Unit - override fun onSingleTapUp(p0: MotionEvent) = true - override fun onScroll(p0: MotionEvent, p1: MotionEvent, p2: Float, p3: Float) = true; - override fun onLongPress(p0: MotionEvent) = Unit - override fun onFling(p0: MotionEvent, p1: MotionEvent, p2: Float, p3: Float) = true - override fun onLocationChanged(location: Location?, source: IMyLocationProvider?) = Unit } diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml index 6ebeadb..b3be230 100644 --- a/app/src/main/res/layout/fragment_map.xml +++ b/app/src/main/res/layout/fragment_map.xml @@ -12,4 +12,12 @@ android:clickable="true" android:focusable="true" /> + + \ No newline at end of file -- 2.36.3 From 8da6f5eff3d4ee91cfbb529340bfe2231f818ec5 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Fri, 10 Mar 2023 17:51:55 +0100 Subject: [PATCH 2/4] Adding data class for geocaches --- app/src/main/AndroidManifest.xml | 2 +- .../geocaching/model/Geocache.kt | 14 +++++++++++++ .../{ => ui/activity}/MainWindow.kt | 9 +++++--- .../geocaching/{ => ui/fragment}/List.kt | 3 ++- .../geocaching/{ => ui/fragment}/Map.kt | 21 ++++++++++++------- .../geocaching/{ => ui/fragment}/Profile.kt | 3 ++- .../{ => ui/overlay}/RecenterOverlay.kt | 8 +++---- app/src/main/res/layout/fragment_list.xml | 2 +- app/src/main/res/layout/fragment_map.xml | 2 +- app/src/main/res/layout/fragment_profile.xml | 2 +- 10 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/uca/baptistearthur/geocaching/model/Geocache.kt rename app/src/main/java/uca/baptistearthur/geocaching/{ => ui/activity}/MainWindow.kt (81%) rename app/src/main/java/uca/baptistearthur/geocaching/{ => ui/fragment}/List.kt (95%) rename app/src/main/java/uca/baptistearthur/geocaching/{ => ui/fragment}/Map.kt (85%) rename app/src/main/java/uca/baptistearthur/geocaching/{ => ui/fragment}/Profile.kt (95%) rename app/src/main/java/uca/baptistearthur/geocaching/{ => ui/overlay}/RecenterOverlay.kt (93%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7804d9a..0fdc512 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,7 +21,7 @@ android:theme="@style/Theme.Geocaching" tools:targetApi="31" > diff --git a/app/src/main/java/uca/baptistearthur/geocaching/model/Geocache.kt b/app/src/main/java/uca/baptistearthur/geocaching/model/Geocache.kt new file mode 100644 index 0000000..df1142d --- /dev/null +++ b/app/src/main/java/uca/baptistearthur/geocaching/model/Geocache.kt @@ -0,0 +1,14 @@ +package uca.baptistearthur.geocaching.model + +import java.time.LocalDateTime + +data class Geocache( + val id: String, + val name: String, + val difficulty: Float, + val placedDate: LocalDateTime, + val backgroundImageUrl: String, + val findCount: Int, + val latitude: Double, + val longitude: Double +) \ No newline at end of file diff --git a/app/src/main/java/uca/baptistearthur/geocaching/MainWindow.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/activity/MainWindow.kt similarity index 81% rename from app/src/main/java/uca/baptistearthur/geocaching/MainWindow.kt rename to app/src/main/java/uca/baptistearthur/geocaching/ui/activity/MainWindow.kt index 846ae52..5e6fa3b 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/MainWindow.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/ui/activity/MainWindow.kt @@ -1,11 +1,14 @@ -package uca.baptistearthur.geocaching +package uca.baptistearthur.geocaching.ui.activity import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import com.google.android.material.bottomnavigation.BottomNavigationView -import org.osmdroid.config.Configuration +import uca.baptistearthur.geocaching.R +import uca.baptistearthur.geocaching.ui.fragment.Map +import uca.baptistearthur.geocaching.ui.fragment.Profile + class MainWindow: AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -28,7 +31,7 @@ class MainWindow: AppCompatActivity() { true } R.id.list -> { - loadFragment(List()) + loadFragment(uca.baptistearthur.geocaching.ui.fragment.List()) true } else -> false diff --git a/app/src/main/java/uca/baptistearthur/geocaching/List.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/List.kt similarity index 95% rename from app/src/main/java/uca/baptistearthur/geocaching/List.kt rename to app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/List.kt index d082f99..5588242 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/List.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/List.kt @@ -1,10 +1,11 @@ -package uca.baptistearthur.geocaching +package uca.baptistearthur.geocaching.ui.fragment import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import uca.baptistearthur.geocaching.R // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER diff --git a/app/src/main/java/uca/baptistearthur/geocaching/Map.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Map.kt similarity index 85% rename from app/src/main/java/uca/baptistearthur/geocaching/Map.kt rename to app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Map.kt index 31a90ef..b93786c 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/Map.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Map.kt @@ -1,4 +1,4 @@ -package uca.baptistearthur.geocaching +package uca.baptistearthur.geocaching.ui.fragment import android.content.Context import android.content.pm.PackageManager @@ -14,23 +14,24 @@ import org.osmdroid.util.GeoPoint import org.osmdroid.views.MapView import org.osmdroid.views.overlay.ScaleBarOverlay import android.Manifest.permission.ACCESS_FINE_LOCATION -import android.hardware.SensorManager import android.location.Location import android.location.LocationListener +import android.util.Log import android.widget.ProgressBar import androidx.activity.result.contract.ActivityResultContracts import org.osmdroid.views.overlay.compass.CompassOverlay import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay - +import uca.baptistearthur.geocaching.R +import uca.baptistearthur.geocaching.ui.overlay.RecenterOverlay class Map : Fragment() { private lateinit var map : MapView private lateinit var spinner: ProgressBar; + private lateinit var locationManager: LocationManager; val defaultPoint = GeoPoint(48.8583, 2.2944) var isMapCentered = false; - val locationListener = object : LocationListener { override fun onLocationChanged(location: Location) { val geoPoint = GeoPoint(location.latitude, location.longitude) @@ -43,6 +44,8 @@ class Map : Fragment() { } } + + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Configuration.getInstance().userAgentValue = "Geocaching" @@ -50,9 +53,10 @@ class Map : Fragment() { } val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) - { map.controller.setCenter(defaultPoint); } + { map.controller.setCenter(defaultPoint) } private fun configureMap(view: View){ + Log.d("GeoMap", "MAP CONFIGURE") map = view.findViewById(R.id.mapView) spinner = view.findViewById(R.id.mapLoading); spinner.visibility=View.VISIBLE; @@ -85,6 +89,7 @@ class Map : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { + Log.d("GeoMap", "MAP ON CREATE VIEW") // Inflate the layout for this fragment val view = inflater.inflate(R.layout.fragment_map, container, false) configureMap(view) @@ -93,8 +98,9 @@ class Map : Fragment() { override fun onResume() { super.onResume() + Log.d("GeoMap", "MAP RESUME") if (ContextCompat.checkSelfPermission(requireActivity(), ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - val locationManager = requireActivity().getSystemService(Context.LOCATION_SERVICE) as LocationManager + locationManager = requireActivity().getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0f, locationListener) } map.onResume() //needed for compass, my location overlays, v6.0.0 and up @@ -102,8 +108,9 @@ class Map : Fragment() { override fun onPause() { super.onPause() + Log.d("GeoMap", "MAP PAUSE") if (ContextCompat.checkSelfPermission(requireActivity(), ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - val locationManager = requireActivity().getSystemService(Context.LOCATION_SERVICE) as LocationManager + locationManager = requireActivity().getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.removeUpdates(locationListener) isMapCentered=false; } diff --git a/app/src/main/java/uca/baptistearthur/geocaching/Profile.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Profile.kt similarity index 95% rename from app/src/main/java/uca/baptistearthur/geocaching/Profile.kt rename to app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Profile.kt index 5cca43b..6643ff3 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/Profile.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Profile.kt @@ -1,10 +1,11 @@ -package uca.baptistearthur.geocaching +package uca.baptistearthur.geocaching.ui.fragment import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import uca.baptistearthur.geocaching.R // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER diff --git a/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/RecenterOverlay.kt similarity index 93% rename from app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt rename to app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/RecenterOverlay.kt index d494dc2..a647f94 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/RecenterOverlay.kt @@ -1,8 +1,7 @@ -package uca.baptistearthur.geocaching +package uca.baptistearthur.geocaching.ui.overlay import android.graphics.* import android.location.Location -import android.view.GestureDetector import android.view.MotionEvent import androidx.core.content.ContextCompat import org.osmdroid.util.GeoPoint @@ -10,7 +9,7 @@ import org.osmdroid.views.MapView import org.osmdroid.views.overlay.Overlay import org.osmdroid.views.overlay.mylocation.IMyLocationConsumer import org.osmdroid.views.overlay.mylocation.IMyLocationProvider -import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay +import uca.baptistearthur.geocaching.R class RecenterOverlay(val myLocationProvider: IMyLocationProvider, val mapView: MapView) : Overlay(), IMyLocationConsumer { @@ -72,8 +71,7 @@ class RecenterOverlay(val myLocationProvider: IMyLocationProvider, val mapView: } override fun onTouchEvent(event: MotionEvent?, mapView: MapView?): Boolean { - val isSingleFingerDrag = - event!!.action == MotionEvent.ACTION_MOVE && event.pointerCount == 1 + val isSingleFingerDrag = event!!.action == MotionEvent.ACTION_MOVE && event.pointerCount == 1 if (event.action == MotionEvent.ACTION_DOWN) { disableMyLocation() } else if (isSingleFingerDrag && mIsFollowing) { diff --git a/app/src/main/res/layout/fragment_list.xml b/app/src/main/res/layout/fragment_list.xml index a037be3..c6232c3 100644 --- a/app/src/main/res/layout/fragment_list.xml +++ b/app/src/main/res/layout/fragment_list.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".List"> + tools:context=".ui.fragment.List"> + tools:context=".ui.fragment.Map"> + tools:context=".ui.fragment.Profile"> Date: Thu, 16 Mar 2023 18:53:57 +0100 Subject: [PATCH 3/4] fetch function that return a string --- .../services/GeocacheAPIServices.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 app/src/main/java/uca/baptistearthur/geocaching/services/GeocacheAPIServices.kt diff --git a/app/src/main/java/uca/baptistearthur/geocaching/services/GeocacheAPIServices.kt b/app/src/main/java/uca/baptistearthur/geocaching/services/GeocacheAPIServices.kt new file mode 100644 index 0000000..a69f17a --- /dev/null +++ b/app/src/main/java/uca/baptistearthur/geocaching/services/GeocacheAPIServices.kt @@ -0,0 +1,27 @@ +package uca.baptistearthur.geocaching.services + +import java.net.HttpURLConnection +import java.net.URL +import java.io.BufferedReader +import java.io.InputStreamReader + +class GeocacheAPIServices { + + fun fetchGeocacheAPI(linkToApi: String): String{ + val url = URL(linkToApi) + val connection = url.openConnection() as HttpURLConnection + connection.requestMethod = "GET" + val input = BufferedReader(InputStreamReader(connection.inputStream)) + val response = StringBuilder() + var inputLine: String? + while (input.readLine().also { inputLine = it } != null) { + response.append(inputLine) + } + input.close() + connection.disconnect() + return response.toString(); + } + + + +} \ No newline at end of file -- 2.36.3 From 7a9b159621cbcf5634ab2992dca0a29b411be6ee Mon Sep 17 00:00:00 2001 From: Baptiiiiste Date: Thu, 16 Mar 2023 21:53:52 +0100 Subject: [PATCH 4/4] Project redesign: Profile deleted & List edited to "RoadTrip" --- .../geocaching/model/Geocache.kt | 14 ----- .../baptistearthur/geocaching/model/Place.kt | 6 ++ .../geocaching/model/RoadTrip.kt | 14 +++++ .../services/GeocacheAPIServices.kt | 27 --------- .../geocaching/ui/activity/MainWindow.kt | 13 ++-- .../geocaching/ui/fragment/Profile.kt | 60 ------------------- .../ui/fragment/{List.kt => RoadTrip.kt} | 8 +-- app/src/main/res/drawable/profile.xml | 5 -- .../res/drawable/{list.xml => road_trip.xml} | 0 app/src/main/res/layout/fragment_profile.xml | 13 ---- ...ragment_list.xml => fragment_roadtrip.xml} | 4 +- app/src/main/res/menu/bottom_tabs.xml | 11 +--- app/src/main/res/values/strings.xml | 5 +- 13 files changed, 37 insertions(+), 143 deletions(-) delete mode 100644 app/src/main/java/uca/baptistearthur/geocaching/model/Geocache.kt create mode 100644 app/src/main/java/uca/baptistearthur/geocaching/model/Place.kt create mode 100644 app/src/main/java/uca/baptistearthur/geocaching/model/RoadTrip.kt delete mode 100644 app/src/main/java/uca/baptistearthur/geocaching/services/GeocacheAPIServices.kt delete mode 100644 app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Profile.kt rename app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/{List.kt => RoadTrip.kt} (89%) delete mode 100644 app/src/main/res/drawable/profile.xml rename app/src/main/res/drawable/{list.xml => road_trip.xml} (100%) delete mode 100644 app/src/main/res/layout/fragment_profile.xml rename app/src/main/res/layout/{fragment_list.xml => fragment_roadtrip.xml} (78%) diff --git a/app/src/main/java/uca/baptistearthur/geocaching/model/Geocache.kt b/app/src/main/java/uca/baptistearthur/geocaching/model/Geocache.kt deleted file mode 100644 index df1142d..0000000 --- a/app/src/main/java/uca/baptistearthur/geocaching/model/Geocache.kt +++ /dev/null @@ -1,14 +0,0 @@ -package uca.baptistearthur.geocaching.model - -import java.time.LocalDateTime - -data class Geocache( - val id: String, - val name: String, - val difficulty: Float, - val placedDate: LocalDateTime, - val backgroundImageUrl: String, - val findCount: Int, - val latitude: Double, - val longitude: Double -) \ No newline at end of file diff --git a/app/src/main/java/uca/baptistearthur/geocaching/model/Place.kt b/app/src/main/java/uca/baptistearthur/geocaching/model/Place.kt new file mode 100644 index 0000000..6904b27 --- /dev/null +++ b/app/src/main/java/uca/baptistearthur/geocaching/model/Place.kt @@ -0,0 +1,6 @@ +package uca.baptistearthur.geocaching.model + +data class Place( + val latitude : Long, + val longitude : Long +) diff --git a/app/src/main/java/uca/baptistearthur/geocaching/model/RoadTrip.kt b/app/src/main/java/uca/baptistearthur/geocaching/model/RoadTrip.kt new file mode 100644 index 0000000..cbabb74 --- /dev/null +++ b/app/src/main/java/uca/baptistearthur/geocaching/model/RoadTrip.kt @@ -0,0 +1,14 @@ +package uca.baptistearthur.geocaching.model + +import java.util.Date + +class RoadTrip( + val name: String, + val date: Date, + val places: ArrayList +){ + + fun addPlaceToRoadTripList(place: Place) = places.add(place) + fun addPlaceToRoadTripList(latitude: Long, longitude: Long) = places.add(Place(latitude, longitude)) + +} \ No newline at end of file diff --git a/app/src/main/java/uca/baptistearthur/geocaching/services/GeocacheAPIServices.kt b/app/src/main/java/uca/baptistearthur/geocaching/services/GeocacheAPIServices.kt deleted file mode 100644 index a69f17a..0000000 --- a/app/src/main/java/uca/baptistearthur/geocaching/services/GeocacheAPIServices.kt +++ /dev/null @@ -1,27 +0,0 @@ -package uca.baptistearthur.geocaching.services - -import java.net.HttpURLConnection -import java.net.URL -import java.io.BufferedReader -import java.io.InputStreamReader - -class GeocacheAPIServices { - - fun fetchGeocacheAPI(linkToApi: String): String{ - val url = URL(linkToApi) - val connection = url.openConnection() as HttpURLConnection - connection.requestMethod = "GET" - val input = BufferedReader(InputStreamReader(connection.inputStream)) - val response = StringBuilder() - var inputLine: String? - while (input.readLine().also { inputLine = it } != null) { - response.append(inputLine) - } - input.close() - connection.disconnect() - return response.toString(); - } - - - -} \ No newline at end of file diff --git a/app/src/main/java/uca/baptistearthur/geocaching/ui/activity/MainWindow.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/activity/MainWindow.kt index 5e6fa3b..ceb0f0c 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/ui/activity/MainWindow.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/ui/activity/MainWindow.kt @@ -7,7 +7,6 @@ import com.google.android.material.bottomnavigation.BottomNavigationView import uca.baptistearthur.geocaching.R import uca.baptistearthur.geocaching.ui.fragment.Map -import uca.baptistearthur.geocaching.ui.fragment.Profile class MainWindow: AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -22,16 +21,16 @@ class MainWindow: AppCompatActivity() { navigation.selectedItemId= R.id.map navigation.setOnItemSelectedListener { when (it.itemId) { - R.id.profile -> { - loadFragment(Profile()) - true - } +// R.id.profile -> { +// loadFragment(Profile()) +// true +// } R.id.map -> { loadFragment(map) true } - R.id.list -> { - loadFragment(uca.baptistearthur.geocaching.ui.fragment.List()) + R.id.roadTrip -> { + loadFragment(uca.baptistearthur.geocaching.ui.fragment.RoadTrip()) true } else -> false diff --git a/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Profile.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Profile.kt deleted file mode 100644 index 6643ff3..0000000 --- a/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/Profile.kt +++ /dev/null @@ -1,60 +0,0 @@ -package uca.baptistearthur.geocaching.ui.fragment - -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import uca.baptistearthur.geocaching.R - -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" - -/** - * A simple [Fragment] subclass. - * Use the [Profile.newInstance] factory method to - * create an instance of this fragment. - */ -class Profile : Fragment() { - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } - } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_profile, container, false) - } - - companion object { - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment Profile. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - Profile().apply { - arguments = Bundle().apply { - putString(ARG_PARAM1, param1) - putString(ARG_PARAM2, param2) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/List.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/RoadTrip.kt similarity index 89% rename from app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/List.kt rename to app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/RoadTrip.kt index 5588242..4dce937 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/List.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/ui/fragment/RoadTrip.kt @@ -14,10 +14,10 @@ private const val ARG_PARAM2 = "param2" /** * A simple [Fragment] subclass. - * Use the [List.newInstance] factory method to + * Use the [RoadTrip.newInstance] factory method to * create an instance of this fragment. */ -class List : Fragment() { +class RoadTrip : Fragment() { // TODO: Rename and change types of parameters private var param1: String? = null private var param2: String? = null @@ -35,7 +35,7 @@ class List : Fragment() { savedInstanceState: Bundle? ): View? { // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_list, container, false) + return inflater.inflate(R.layout.fragment_roadtrip, container, false) } companion object { @@ -50,7 +50,7 @@ class List : Fragment() { // TODO: Rename and change types and number of parameters @JvmStatic fun newInstance(param1: String, param2: String) = - List().apply { + RoadTrip().apply { arguments = Bundle().apply { putString(ARG_PARAM1, param1) putString(ARG_PARAM2, param2) diff --git a/app/src/main/res/drawable/profile.xml b/app/src/main/res/drawable/profile.xml deleted file mode 100644 index d36b73c..0000000 --- a/app/src/main/res/drawable/profile.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/list.xml b/app/src/main/res/drawable/road_trip.xml similarity index 100% rename from app/src/main/res/drawable/list.xml rename to app/src/main/res/drawable/road_trip.xml diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml deleted file mode 100644 index 9049f19..0000000 --- a/app/src/main/res/layout/fragment_profile.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_list.xml b/app/src/main/res/layout/fragment_roadtrip.xml similarity index 78% rename from app/src/main/res/layout/fragment_list.xml rename to app/src/main/res/layout/fragment_roadtrip.xml index c6232c3..23cccd5 100644 --- a/app/src/main/res/layout/fragment_list.xml +++ b/app/src/main/res/layout/fragment_roadtrip.xml @@ -3,11 +3,11 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.fragment.List"> + tools:context=".ui.fragment.RoadTrip"> + android:text="Mes voyages !" /> \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_tabs.xml b/app/src/main/res/menu/bottom_tabs.xml index d8469db..0fabe7a 100644 --- a/app/src/main/res/menu/bottom_tabs.xml +++ b/app/src/main/res/menu/bottom_tabs.xml @@ -1,18 +1,13 @@ - + android:title="@string/voyages" + android:icon="@drawable/road_trip" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 24696d9..101072f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,8 +1,7 @@ - Geocaching - Profil + RoadTrip Carte - Liste + Voyages Hello blank fragment \ No newline at end of file -- 2.36.3