aboutsummaryrefslogtreecommitdiff
path: root/androidApp/src/main/java/mx/trackermap
diff options
context:
space:
mode:
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap')
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt6
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt117
2 files changed, 96 insertions, 27 deletions
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 106a2d9..4298058 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
@@ -24,17 +24,13 @@ import com.mousebird.maply.SphericalMercatorCoordSystem
import java.io.File
import kotlinx.coroutines.DelicateCoroutinesApi
import mx.trackermap.TrackerMap.android.R
+import mx.trackermap.TrackerMap.utils.MarkerType
typealias MarkerCallback = (Int?) -> Unit
@DelicateCoroutinesApi
class MapFragment : GlobeMapFragment() {
- enum class MarkerType {
- ANIMAL, BICYCLE, BOAT, BUS, CAR, CRANE, DEFAULT, HELICOPTER, MOTORCYCLE, OFFROAD, PERSON,
- PICKUP, PLANE, SCOOTER, SHIP, TRACTOR, TRAIN, TRAM, TROLLEYBUS, TRUCK, VAN
- }
-
data class Marker(
val id: Int,
val latitude: Double,
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt
index b8f79dd..0d046c4 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt
@@ -1,5 +1,7 @@
package mx.trackermap.TrackerMap.android.map
+import android.content.Intent
+import android.graphics.Color
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
@@ -9,8 +11,12 @@ import androidx.fragment.app.Fragment
import kotlinx.coroutines.DelicateCoroutinesApi
import mx.trackermap.TrackerMap.android.R
import mx.trackermap.TrackerMap.android.databinding.UnitMapFragmentBinding
+import mx.trackermap.TrackerMap.android.details.DetailsActivity
+import mx.trackermap.TrackerMap.android.devices.Action
import mx.trackermap.TrackerMap.android.units.UnitsViewModel
import mx.trackermap.TrackerMap.client.models.UnitInformation
+import mx.trackermap.TrackerMap.utils.Formatter
+import mx.trackermap.TrackerMap.utils.MarkerType
import org.koin.androidx.viewmodel.ext.android.viewModel
@DelicateCoroutinesApi
@@ -62,7 +68,58 @@ class UnitMapFragment : Fragment() {
return@let
}
- binding.unitInfoTest.text = unit.device.contact
+ binding.apply {
+ context?.let { context ->
+ unit.position?.let { position ->
+ /* Status icon */
+ position.speed?.let { speed ->
+ if (speed >= 2) {
+ statusIcon.setColorFilter(Color.GREEN)
+ } else {
+ statusIcon.setColorFilter(Color.RED)
+ }
+ } ?: run {
+ statusIcon.setColorFilter(Color.GRAY)
+ }
+
+ /* Engine stop */
+ val attributes = position.attributes
+ if (attributes["out1"].toString() == "null") {
+ engineStopIcon.visibility = View.GONE
+ } else {
+ engineStopIcon.visibility = View.VISIBLE
+ engineStopIcon.setImageResource(
+ when (attributes["out1"].toString()) {
+ "true" -> R.drawable.ic_baseline_lock_24
+ "false" -> R.drawable.ic_baseline_lock_open_24
+ else -> R.drawable.ic_baseline_lock_open_24
+ }
+ )
+ 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)
+ }
+ }
+ }
+
+ unitName.text = unit.device.name
+ driverName.text = unit.device.contact
+ unitSpeed.text = context.getString(
+ R.string.unit_speed_format,
+ unit.position?.speed?.toInt() ?: 0
+ )
+ lastAddress.text = unit.position?.address
+ unit.position?.fixTime?.let {
+ lastDate.text = Formatter.formatDate(it)
+ }
+ detailsButton.setOnClickListener { itemAction(unit, Action.DETAILS) }
+ reportsButton.setOnClickListener { itemAction(unit, Action.REPORTS) }
+ commandsButton.setOnClickListener { itemAction(unit, Action.COMMANDS) }
+ }
+ }
+
unitsMapFragment.focusOn(unit.position!!.latitude!!, unit.position!!.longitude!!)
}
}
@@ -78,29 +135,45 @@ class UnitMapFragment : Fragment() {
unit.position!!.latitude!!,
unit.position!!.longitude!!,
when (unit.device.category?.lowercase()) {
- "animal" -> MapFragment.MarkerType.ANIMAL
- "bicycle" -> MapFragment.MarkerType.BICYCLE
- "boat" -> MapFragment.MarkerType.BOAT
- "bus" -> MapFragment.MarkerType.BUS
- "car" -> MapFragment.MarkerType.CAR
- "crane" -> MapFragment.MarkerType.CRANE
- "helicopter" -> MapFragment.MarkerType.HELICOPTER
- "motorcycle" -> MapFragment.MarkerType.MOTORCYCLE
- "offroad" -> MapFragment.MarkerType.OFFROAD
- "person" -> MapFragment.MarkerType.PERSON
- "pickup" -> MapFragment.MarkerType.PICKUP
- "plane" -> MapFragment.MarkerType.PLANE
- "scooter" -> MapFragment.MarkerType.SCOOTER
- "ship" -> MapFragment.MarkerType.SHIP
- "tractor" -> MapFragment.MarkerType.TRACTOR
- "train" -> MapFragment.MarkerType.TRAIN
- "tram" -> MapFragment.MarkerType.TRAM
- "trolleybus" -> MapFragment.MarkerType.TROLLEYBUS
- "truck" -> MapFragment.MarkerType.TRUCK
- "van" -> MapFragment.MarkerType.VAN
- else -> MapFragment.MarkerType.DEFAULT
+ "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
}
)
}
+ private fun itemAction(unit: UnitInformation, action: Action) {
+ when (action) {
+ Action.DETAILS, Action.REPORTS, Action.COMMANDS -> {
+ Log.d("DevicesFragment", "Action: $action - Unit: $unit")
+ val activity = requireActivity()
+ val intent = Intent(activity.applicationContext, DetailsActivity::class.java)
+ intent.putExtra(DetailsActivity.DEVICE_ID_EXTRA, unit.device.id)
+ intent.putExtra(DetailsActivity.ACTION_EXTRA, action)
+ startActivity(intent)
+ }
+ Action.CLICK -> {
+ unitsViewModel.selectUnit(unit)
+ }
+ }
+ }
+
} \ No newline at end of file