diff options
Diffstat (limited to 'androidApp/src/main')
5 files changed, 100 insertions, 178 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/TrackerApp.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/TrackerApp.kt index 1d181dd..cdeb85b 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/TrackerApp.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/TrackerApp.kt @@ -26,6 +26,7 @@ import mx.trackermap.TrackerMap.android.session.LoginViewModel import mx.trackermap.TrackerMap.android.session.UserInformationViewModel import mx.trackermap.TrackerMap.android.units.UnitsViewModel import mx.trackermap.TrackerMap.client.apis.* +import mx.trackermap.TrackerMap.client.infrastructure.SessionManager import mx.trackermap.TrackerMap.controllers.GeofencesController import mx.trackermap.TrackerMap.controllers.ReportController import mx.trackermap.TrackerMap.controllers.SessionController @@ -47,6 +48,9 @@ open class TrackerApp : Application() { val appModule = module { single { getString(R.string.default_server_url) } + + factory { SessionManager(get()) } + factory { SessionApi(get()) } factory { UsersApi(get()) } factory { DevicesApi(get()) } diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt index a76ebde..b04bfbc 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt @@ -38,8 +38,8 @@ import mx.trackermap.TrackerMap.android.R import mx.trackermap.TrackerMap.android.shared.MarkerTransformations import mx.trackermap.TrackerMap.client.models.Geofence import mx.trackermap.TrackerMap.client.models.MapLayer +import mx.trackermap.TrackerMap.client.models.Marker import mx.trackermap.TrackerMap.utils.MapCalculus -import mx.trackermap.TrackerMap.utils.MarkerType typealias SetupCallback = () -> Unit typealias MarkerCallback = (Int?) -> Unit @@ -48,14 +48,6 @@ open class MapFragment : GlobeMapFragment() { private var loader: QuadImageLoader? = null - data class Marker( - val id: Int, - val name: String, - val latitude: Double, - val longitude: Double, - val type: MarkerType = MarkerType.DEFAULT - ) - var hasStarted: Boolean = false val setupCallbacks = mutableListOf<SetupCallback>() var markerCallback: MarkerCallback? = null @@ -185,9 +177,9 @@ open class MapFragment : GlobeMapFragment() { }.toTypedArray() val fontSize = context?.resources?.getDimensionPixelSize(R.dimen.marker_label_text_size) - val colorReport = ContextCompat.getColor(context!!, R.color.colorReport) - val colorLabel = ContextCompat.getColor(context!!, R.color.colorMarkerLabel) - val colorLabelOutline = ContextCompat.getColor(context!!, R.color.colorMarkerLabelOutline) + val colorReport = ContextCompat.getColor(requireContext(), R.color.colorReport) + val colorLabel = ContextCompat.getColor(requireContext(), R.color.colorMarkerLabel) + val colorLabelOutline = ContextCompat.getColor(requireContext(), R.color.colorMarkerLabelOutline) val vectorWidth = context?.resources?.getDimensionPixelSize(R.dimen.report_label_width)?.toFloat() val vectorInfo = VectorInfo() @@ -210,9 +202,9 @@ open class MapFragment : GlobeMapFragment() { screenMarker.image = if (isReport) { // For reports, position, start and end, icons must be different when (i) { - 0 -> getIcon(MarkerType.REPORT_START) - markers.size - 1 -> getIcon(MarkerType.REPORT_END) - else -> getIcon(MarkerType.REPORT_POSITION) + 0 -> getIcon(Marker.Type.REPORT_START) + markers.size - 1 -> getIcon(Marker.Type.REPORT_END) + else -> getIcon(Marker.Type.REPORT_POSITION) } } else getIcon(marker.type) screenMarker.size = if (isReport) { @@ -291,9 +283,9 @@ open class MapFragment : GlobeMapFragment() { clear(true) val fontSize = context?.resources?.getDimensionPixelSize(R.dimen.marker_label_text_size) - val colorFill = ContextCompat.getColor(context!!, R.color.colorGeofence) - val colorLabel = ContextCompat.getColor(context!!, R.color.colorGeofenceLabel) - val colorLabelOutline = ContextCompat.getColor(context!!, R.color.colorMarkerLabelOutline) + val colorFill = ContextCompat.getColor(requireContext(), R.color.colorGeofence) + val colorLabel = ContextCompat.getColor(requireContext(), R.color.colorGeofenceLabel) + val colorLabelOutline = ContextCompat.getColor(requireContext(), R.color.colorMarkerLabelOutline) val vectorWidth = context?.resources?.getDimensionPixelSize(R.dimen.geofence_label_width)?.toFloat() val vectorInfo = VectorInfo() @@ -428,10 +420,10 @@ open class MapFragment : GlobeMapFragment() { } } - private fun getIcon(markerType: MarkerType): Bitmap { + private fun getIcon(markerType: Marker.Type): Bitmap { return ResourcesCompat.getDrawable( - activity!!.resources, + requireActivity().resources, MarkerTransformations.markerTypeToResourceId(markerType), - activity!!.theme)!!.toBitmap(144, 144) + requireActivity().theme)!!.toBitmap(144, 144) } }
\ No newline at end of file diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapWrapperFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapWrapperFragment.kt index c9eab70..aa2faf9 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapWrapperFragment.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapWrapperFragment.kt @@ -165,7 +165,7 @@ class MapWrapperFragment: Fragment() { Log.d("MapWrapperFragment", "Displaying positions: $positions") mapFragment.display( - positions.mapNotNull(MarkerTransformations::positionToMarker).toTypedArray(), + positions.mapNotNull(Marker::fromPosition).toTypedArray(), isReport = isReport, center = center ) @@ -181,7 +181,7 @@ class MapWrapperFragment: Fragment() { Log.d("MapWrapperFragment", "Displaying units: $units") mapFragment.display( - units.mapNotNull(MarkerTransformations::unitToMarker).toTypedArray(), + units.mapNotNull(Marker::fromUnit).toTypedArray(), isReport = isReport, center = center ) @@ -197,7 +197,7 @@ class MapWrapperFragment: Fragment() { Log.d("MapWrapperFragment", "Displaying stops: $stops") mapFragment.display( - stops.mapNotNull(MarkerTransformations::stopToMarker).toTypedArray(), + stops.mapNotNull(Marker::fromStop).toTypedArray(), isReport = true ) } else { diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/MarkerTransformations.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/MarkerTransformations.kt index 58ee108..1e5c4de 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/MarkerTransformations.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/MarkerTransformations.kt @@ -17,144 +17,72 @@ */ package mx.trackermap.TrackerMap.android.shared -import android.util.Log import mx.trackermap.TrackerMap.android.R -import mx.trackermap.TrackerMap.android.map.MapFragment -import mx.trackermap.TrackerMap.client.models.Position -import mx.trackermap.TrackerMap.client.models.Stop -import mx.trackermap.TrackerMap.client.models.UnitInformation -import mx.trackermap.TrackerMap.utils.MarkerType +import mx.trackermap.TrackerMap.client.models.Marker object MarkerTransformations { - fun unitToMarker(unit: UnitInformation): MapFragment.Marker? { - if (unit.position == null || unit.position!!.latitude == null || unit.position!!.longitude == null) { - return null - } - - return MapFragment.Marker( - unit.position!!.id!!, - unit.device.name, - unit.position!!.latitude!!, - unit.position!!.longitude!!, - categoryToMarkerType(unit.device.category ?: "") - ) - } - - fun positionToMarker(position: Position): MapFragment.Marker? { - if (position.latitude == null || position.longitude == null) { - return null - } - - return MapFragment.Marker( - position.id!!, - "", - position.latitude!!, - position.longitude!! - ) - } - - fun stopToMarker(stop: Stop): MapFragment.Marker? { - Log.d("MarkerTransformations", "stopToMarker($stop)") - if (stop.latitude == null || stop.longitude == null) { - return null - } - - return MapFragment.Marker( - stop.deviceId!!, - stop.deviceName!!, - stop.latitude!!, - stop.longitude!! - ) - } - - private fun categoryToMarkerType(category: String?): MarkerType { - return when (category?.lowercase()) { - "animal" -> MarkerType.ANIMAL - "bicycle" -> MarkerType.BICYCLE - "boat" -> MarkerType.BOAT - "bus" -> MarkerType.BUS - "car" -> MarkerType.CAR - "crane" -> MarkerType.CRANE - "helicopter" -> MarkerType.HELICOPTER - "motorcycle" -> MarkerType.MOTORCYCLE - "offroad" -> MarkerType.OFFROAD - "person" -> MarkerType.PERSON - "pickup" -> MarkerType.PICKUP - "plane" -> MarkerType.PLANE - "scooter" -> MarkerType.SCOOTER - "ship" -> MarkerType.SHIP - "tractor" -> MarkerType.TRACTOR - "train" -> MarkerType.TRAIN - "tram" -> MarkerType.TRAM - "trolleybus" -> MarkerType.TROLLEYBUS - "truck" -> MarkerType.TRUCK - "van" -> MarkerType.VAN - else -> MarkerType.DEFAULT - } - } - - fun markerTypeToResourceId(markerType: MarkerType): Int { + fun markerTypeToResourceId(markerType: Marker.Type): Int { return when (markerType) { - MarkerType.ANIMAL -> R.drawable.map_animal - MarkerType.BICYCLE -> R.drawable.map_bicycle - MarkerType.BOAT -> R.drawable.map_boat - MarkerType.BUS -> R.drawable.map_bus - MarkerType.CAR -> R.drawable.map_car - MarkerType.CRANE -> R.drawable.map_crane - MarkerType.DEFAULT -> R.drawable.map_default - MarkerType.HELICOPTER -> R.drawable.map_helicopter - MarkerType.MOTORCYCLE -> R.drawable.map_motorcycle - MarkerType.OFFROAD -> R.drawable.map_offroad - MarkerType.PERSON -> R.drawable.map_person - MarkerType.PICKUP -> R.drawable.map_pickup - MarkerType.PLANE -> R.drawable.map_plane - MarkerType.SCOOTER -> R.drawable.map_scooter - MarkerType.SHIP -> R.drawable.map_ship - MarkerType.TRACTOR -> R.drawable.map_tractor - MarkerType.TRAIN -> R.drawable.map_train - MarkerType.TRAM -> R.drawable.map_tram - MarkerType.TROLLEYBUS -> R.drawable.map_trolleybus - MarkerType.TRUCK -> R.drawable.map_truck - MarkerType.VAN -> R.drawable.map_van + Marker.Type.ANIMAL -> R.drawable.map_animal + Marker.Type.BICYCLE -> R.drawable.map_bicycle + Marker.Type.BOAT -> R.drawable.map_boat + Marker.Type.BUS -> R.drawable.map_bus + Marker.Type.CAR -> R.drawable.map_car + Marker.Type.CRANE -> R.drawable.map_crane + Marker.Type.DEFAULT -> R.drawable.map_default + Marker.Type.HELICOPTER -> R.drawable.map_helicopter + Marker.Type.MOTORCYCLE -> R.drawable.map_motorcycle + Marker.Type.OFFROAD -> R.drawable.map_offroad + Marker.Type.PERSON -> R.drawable.map_person + Marker.Type.PICKUP -> R.drawable.map_pickup + Marker.Type.PLANE -> R.drawable.map_plane + Marker.Type.SCOOTER -> R.drawable.map_scooter + Marker.Type.SHIP -> R.drawable.map_ship + Marker.Type.TRACTOR -> R.drawable.map_tractor + Marker.Type.TRAIN -> R.drawable.map_train + Marker.Type.TRAM -> R.drawable.map_tram + Marker.Type.TROLLEYBUS -> R.drawable.map_trolleybus + Marker.Type.TRUCK -> R.drawable.map_truck + Marker.Type.VAN -> R.drawable.map_van - MarkerType.REPORT_POSITION -> R.drawable.map_report_position - MarkerType.REPORT_START -> R.drawable.map_report_start - MarkerType.REPORT_END -> R.drawable.map_report_end + Marker.Type.REPORT_POSITION -> R.drawable.map_report_position + Marker.Type.REPORT_START -> R.drawable.map_report_start + Marker.Type.REPORT_END -> R.drawable.map_report_end } } - fun markerTypeToStringId(markerType: MarkerType): Int { + fun markerTypeToStringId(markerType: Marker.Type): Int { return when (markerType) { - MarkerType.ANIMAL -> R.string.unit_category_animal - MarkerType.BICYCLE -> R.string.unit_category_bicycle - MarkerType.BOAT -> R.string.unit_category_boat - MarkerType.BUS -> R.string.unit_category_bus - MarkerType.CAR -> R.string.unit_category_car - MarkerType.CRANE -> R.string.unit_category_crane - MarkerType.DEFAULT -> R.string.unit_category_default - MarkerType.HELICOPTER -> R.string.unit_category_helicopter - MarkerType.MOTORCYCLE -> R.string.unit_category_motorcycle - MarkerType.OFFROAD -> R.string.unit_category_offroad - MarkerType.PERSON -> R.string.unit_category_person - MarkerType.PICKUP -> R.string.unit_category_pickup - MarkerType.PLANE -> R.string.unit_category_plane - MarkerType.SCOOTER -> R.string.unit_category_scooter - MarkerType.SHIP -> R.string.unit_category_ship - MarkerType.TRACTOR -> R.string.unit_category_tractor - MarkerType.TRAIN -> R.string.unit_category_train - MarkerType.TRAM -> R.string.unit_category_tram - MarkerType.TROLLEYBUS -> R.string.unit_category_trolleybus - MarkerType.TRUCK -> R.string.unit_category_truck - MarkerType.VAN -> R.string.unit_category_van + Marker.Type.ANIMAL -> R.string.unit_category_animal + Marker.Type.BICYCLE -> R.string.unit_category_bicycle + Marker.Type.BOAT -> R.string.unit_category_boat + Marker.Type.BUS -> R.string.unit_category_bus + Marker.Type.CAR -> R.string.unit_category_car + Marker.Type.CRANE -> R.string.unit_category_crane + Marker.Type.DEFAULT -> R.string.unit_category_default + Marker.Type.HELICOPTER -> R.string.unit_category_helicopter + Marker.Type.MOTORCYCLE -> R.string.unit_category_motorcycle + Marker.Type.OFFROAD -> R.string.unit_category_offroad + Marker.Type.PERSON -> R.string.unit_category_person + Marker.Type.PICKUP -> R.string.unit_category_pickup + Marker.Type.PLANE -> R.string.unit_category_plane + Marker.Type.SCOOTER -> R.string.unit_category_scooter + Marker.Type.SHIP -> R.string.unit_category_ship + Marker.Type.TRACTOR -> R.string.unit_category_tractor + Marker.Type.TRAIN -> R.string.unit_category_train + Marker.Type.TRAM -> R.string.unit_category_tram + Marker.Type.TROLLEYBUS -> R.string.unit_category_trolleybus + Marker.Type.TRUCK -> R.string.unit_category_truck + Marker.Type.VAN -> R.string.unit_category_van else -> R.string.unit_category_default } } fun categoryToResourceId(category: String?): Int { - return markerTypeToResourceId(categoryToMarkerType(category)) + return markerTypeToResourceId(Marker.categoryToMarkerType(category)) } fun categoryToStringId(category: String?): Int { - return markerTypeToResourceId(categoryToMarkerType(category)) + return markerTypeToStringId(Marker.categoryToMarkerType(category)) } }
\ No newline at end of file diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/UnitRenderData.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/UnitRenderData.kt index 123e1ab..7b66bd3 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/UnitRenderData.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/UnitRenderData.kt @@ -89,43 +89,41 @@ class UnitRenderData { } } - statusIcon.visibility = View.GONE - engineStopIcon.visibility = View.GONE - - unit.position?.let { position -> - /* Status icon */ - statusIcon.visibility = View.VISIBLE - position.speed?.let { speed -> - if (speed >= 2) { - statusIcon.setColorFilter( - ContextCompat.getColor(context, R.color.colorOnline) - ) - } else { - statusIcon.setColorFilter( - ContextCompat.getColor(context, R.color.colorOffline) - ) - } - } ?: run { + /* Status icon */ + when (unit.getStatus()) { + UnitInformation.Status.ONLINE -> { + statusIcon.setColorFilter( + ContextCompat.getColor(context, R.color.colorOnline) + ) + } + UnitInformation.Status.OFFLINE -> { + statusIcon.setColorFilter( + ContextCompat.getColor(context, R.color.colorOffline) + ) + } + else -> { statusIcon.setColorFilter(Color.GRAY) } + } - /* Engine stop */ - val attributes = position.attributes - if (attributes["out1"].toString() != "null") { + /* Engine stop */ + when(unit.getEngineStop()) { + UnitInformation.EngineStop.ON -> { engineStopIcon.visibility = View.VISIBLE - engineStopIcon.setImageResource( - when (attributes["out1"].toString()) { - "true" -> R.drawable.device_unlocked - "false" -> R.drawable.device_locked - else -> R.drawable.device_locked - } - ) - engineStopIcon.contentDescription = when (attributes["out1"].toString()) { - "true" -> context.getString(R.string.unit_lock_on) - "false" -> context.getString(R.string.unit_lock_off) - else -> context.getString(R.string.unit_lock_on) - } + engineStopIcon.setImageResource(R.drawable.device_unlocked) + engineStopIcon.contentDescription = context.getString(R.string.unit_lock_on) + } + UnitInformation.EngineStop.OFF -> { + engineStopIcon.visibility = View.VISIBLE + engineStopIcon.setImageResource(R.drawable.device_locked) + engineStopIcon.contentDescription = context.getString(R.string.unit_lock_off) } + UnitInformation.EngineStop.UNKNOWN -> { + engineStopIcon.visibility = View.GONE + } + } + + unit.position?.let { position -> /* Speed */ position.speed?.let { speed -> |