Adding data class for geocaches

arthur
Arthur VALIN 2 years ago
parent 9bcddd990b
commit 8da6f5eff3

@ -21,7 +21,7 @@
android:theme="@style/Theme.Geocaching" android:theme="@style/Theme.Geocaching"
tools:targetApi="31" > tools:targetApi="31" >
<activity <activity
android:name=".MainWindow" android:name=".ui.activity.MainWindow"
android:exported="true" > android:exported="true" >
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

@ -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
)

@ -1,11 +1,14 @@
package uca.baptistearthur.geocaching package uca.baptistearthur.geocaching.ui.activity
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.google.android.material.bottomnavigation.BottomNavigationView 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() { class MainWindow: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -28,7 +31,7 @@ class MainWindow: AppCompatActivity() {
true true
} }
R.id.list -> { R.id.list -> {
loadFragment(List()) loadFragment(uca.baptistearthur.geocaching.ui.fragment.List())
true true
} }
else -> false else -> false

@ -1,10 +1,11 @@
package uca.baptistearthur.geocaching package uca.baptistearthur.geocaching.ui.fragment
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import uca.baptistearthur.geocaching.R
// TODO: Rename parameter arguments, choose names that match // TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER

@ -1,4 +1,4 @@
package uca.baptistearthur.geocaching package uca.baptistearthur.geocaching.ui.fragment
import android.content.Context import android.content.Context
import android.content.pm.PackageManager import android.content.pm.PackageManager
@ -14,23 +14,24 @@ import org.osmdroid.util.GeoPoint
import org.osmdroid.views.MapView import org.osmdroid.views.MapView
import org.osmdroid.views.overlay.ScaleBarOverlay import org.osmdroid.views.overlay.ScaleBarOverlay
import android.Manifest.permission.ACCESS_FINE_LOCATION import android.Manifest.permission.ACCESS_FINE_LOCATION
import android.hardware.SensorManager
import android.location.Location import android.location.Location
import android.location.LocationListener import android.location.LocationListener
import android.util.Log
import android.widget.ProgressBar import android.widget.ProgressBar
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import org.osmdroid.views.overlay.compass.CompassOverlay import org.osmdroid.views.overlay.compass.CompassOverlay
import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider
import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay
import uca.baptistearthur.geocaching.R
import uca.baptistearthur.geocaching.ui.overlay.RecenterOverlay
class Map : Fragment() { class Map : Fragment() {
private lateinit var map : MapView private lateinit var map : MapView
private lateinit var spinner: ProgressBar; private lateinit var spinner: ProgressBar;
private lateinit var locationManager: LocationManager;
val defaultPoint = GeoPoint(48.8583, 2.2944) val defaultPoint = GeoPoint(48.8583, 2.2944)
var isMapCentered = false; var isMapCentered = false;
val locationListener = object : LocationListener { val locationListener = object : LocationListener {
override fun onLocationChanged(location: Location) { override fun onLocationChanged(location: Location) {
val geoPoint = GeoPoint(location.latitude, location.longitude) val geoPoint = GeoPoint(location.latitude, location.longitude)
@ -43,6 +44,8 @@ class Map : Fragment() {
} }
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
Configuration.getInstance().userAgentValue = "Geocaching" Configuration.getInstance().userAgentValue = "Geocaching"
@ -50,9 +53,10 @@ class Map : Fragment() {
} }
val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission())
{ map.controller.setCenter(defaultPoint); } { map.controller.setCenter(defaultPoint) }
private fun configureMap(view: View){ private fun configureMap(view: View){
Log.d("GeoMap", "MAP CONFIGURE")
map = view.findViewById(R.id.mapView) map = view.findViewById(R.id.mapView)
spinner = view.findViewById(R.id.mapLoading); spinner = view.findViewById(R.id.mapLoading);
spinner.visibility=View.VISIBLE; spinner.visibility=View.VISIBLE;
@ -85,6 +89,7 @@ class Map : Fragment() {
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View? {
Log.d("GeoMap", "MAP ON CREATE VIEW")
// Inflate the layout for this fragment // Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_map, container, false) val view = inflater.inflate(R.layout.fragment_map, container, false)
configureMap(view) configureMap(view)
@ -93,8 +98,9 @@ class Map : Fragment() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
Log.d("GeoMap", "MAP RESUME")
if (ContextCompat.checkSelfPermission(requireActivity(), ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 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) locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0f, locationListener)
} }
map.onResume() //needed for compass, my location overlays, v6.0.0 and up map.onResume() //needed for compass, my location overlays, v6.0.0 and up
@ -102,8 +108,9 @@ class Map : Fragment() {
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
Log.d("GeoMap", "MAP PAUSE")
if (ContextCompat.checkSelfPermission(requireActivity(), ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 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) locationManager.removeUpdates(locationListener)
isMapCentered=false; isMapCentered=false;
} }

@ -1,10 +1,11 @@
package uca.baptistearthur.geocaching package uca.baptistearthur.geocaching.ui.fragment
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import uca.baptistearthur.geocaching.R
// TODO: Rename parameter arguments, choose names that match // TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER

@ -1,8 +1,7 @@
package uca.baptistearthur.geocaching package uca.baptistearthur.geocaching.ui.overlay
import android.graphics.* import android.graphics.*
import android.location.Location import android.location.Location
import android.view.GestureDetector
import android.view.MotionEvent import android.view.MotionEvent
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import org.osmdroid.util.GeoPoint 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.Overlay
import org.osmdroid.views.overlay.mylocation.IMyLocationConsumer import org.osmdroid.views.overlay.mylocation.IMyLocationConsumer
import org.osmdroid.views.overlay.mylocation.IMyLocationProvider 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 { 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 { override fun onTouchEvent(event: MotionEvent?, mapView: MapView?): Boolean {
val isSingleFingerDrag = val isSingleFingerDrag = event!!.action == MotionEvent.ACTION_MOVE && event.pointerCount == 1
event!!.action == MotionEvent.ACTION_MOVE && event.pointerCount == 1
if (event.action == MotionEvent.ACTION_DOWN) { if (event.action == MotionEvent.ACTION_DOWN) {
disableMyLocation() disableMyLocation()
} else if (isSingleFingerDrag && mIsFollowing) { } else if (isSingleFingerDrag && mIsFollowing) {

@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".List"> tools:context=".ui.fragment.List">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"

@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".Map"> tools:context=".ui.fragment.Map">
<org.osmdroid.views.MapView <org.osmdroid.views.MapView
android:id="@+id/mapView" android:id="@+id/mapView"

@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".Profile"> tools:context=".ui.fragment.Profile">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"

Loading…
Cancel
Save