aboutsummaryrefslogtreecommitdiff
path: root/androidApp/src/main/java/mx/trackermap/TrackerMap/android
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2022-01-16 18:21:12 -0600
committerIván Ávalos <avalos@disroot.org>2022-01-16 18:21:12 -0600
commitc7b28c25b032a1b82b782ef5ff8dd5e703d5a8ad (patch)
tree4095a6c4c64442277081e58fff72829ac01c7d11 /androidApp/src/main/java/mx/trackermap/TrackerMap/android
parentf47c9f6b62dd1949cd2f926348a7e057c3ae221c (diff)
parent21e16e27f047053582d8b0c722feedf3c8badebe (diff)
downloadetbsa-trackermap-mobile-c7b28c25b032a1b82b782ef5ff8dd5e703d5a8ad.tar.gz
etbsa-trackermap-mobile-c7b28c25b032a1b82b782ef5ff8dd5e703d5a8ad.tar.bz2
etbsa-trackermap-mobile-c7b28c25b032a1b82b782ef5ff8dd5e703d5a8ad.zip
Merge branch 'main' of https://git.sr.ht/~avalos/trackermap-mobile
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android')
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/DetailsActivity.kt15
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/commands/UnitCommandsFragment.kt2
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/information/UnitInformationFragment.kt8
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt44
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt20
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt8
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesFragment.kt11
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt40
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt14
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationActivity.kt2
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/MarkerTransformations.kt (renamed from androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MarkerTransformations.kt)3
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/UnitRenderData.kt (renamed from androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/UnitRenderData.kt)23
12 files changed, 122 insertions, 68 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/DetailsActivity.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/DetailsActivity.kt
index f66a760..c6d260b 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/DetailsActivity.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/DetailsActivity.kt
@@ -12,7 +12,7 @@ import com.google.android.material.tabs.TabLayoutMediator
import kotlinx.coroutines.DelicateCoroutinesApi
import mx.trackermap.TrackerMap.android.R
import mx.trackermap.TrackerMap.android.databinding.DetailsActivityBinding
-import mx.trackermap.TrackerMap.android.devices.Action
+import mx.trackermap.TrackerMap.android.shared.UnitRenderData
@DelicateCoroutinesApi
class DetailsActivity : AppCompatActivity() {
@@ -47,7 +47,7 @@ class DetailsActivity : AppCompatActivity() {
private fun initialize() {
deviceId = intent.getIntExtra(DEVICE_ID_EXTRA, 0)
deviceName = intent.getStringExtra(DEVICE_NAME_EXTRA) ?: ""
- val initialSection = intent.getSerializableExtra(ACTION_EXTRA) as Action
+ val initialSection = intent.getSerializableExtra(ACTION_EXTRA) as UnitRenderData.Action
Log.d("DetailsActivity", "Device ID - $deviceId")
Log.d("DetailsActivity", "Initial Section - $initialSection")
@@ -62,14 +62,14 @@ class DetailsActivity : AppCompatActivity() {
}.attach()
binding.detailsPager.setCurrentItem(
when (initialSection) {
- Action.DETAILS -> 0
- Action.REPORTS -> 1
+ UnitRenderData.Action.DETAILS -> 0
+ UnitRenderData.Action.REPORTS -> 1
else -> 2
}, false
)
binding.detailsPager.isUserInputEnabled = when (initialSection) {
- Action.DETAILS -> true
- Action.REPORTS -> false
+ UnitRenderData.Action.DETAILS -> true
+ UnitRenderData.Action.REPORTS -> false
else -> true
}
binding.detailsTabs.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener {
@@ -84,6 +84,9 @@ class DetailsActivity : AppCompatActivity() {
override fun onTabUnselected(tab: TabLayout.Tab?) {}
override fun onTabReselected(tab: TabLayout.Tab?) {}
})
+ binding.closeButton.setOnClickListener {
+ finish()
+ }
requestPermission {}
}
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/commands/UnitCommandsFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/commands/UnitCommandsFragment.kt
index b56a403..822d351 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/commands/UnitCommandsFragment.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/commands/UnitCommandsFragment.kt
@@ -75,7 +75,7 @@ class UnitCommandsFragment: Fragment() {
setPositiveButton(R.string.shared_cancel) { dialogInterface, _ ->
dialogInterface.dismiss()
}
- setNegativeButton(R.string.send_command) { dialogInterface, _ ->
+ setNegativeButton(R.string.shared_send) { dialogInterface, _ ->
unitCommandsViewModel.sendCommand()
dialogInterface.dismiss()
}
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/information/UnitInformationFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/information/UnitInformationFragment.kt
index 0c3577e..6c15ae4 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/information/UnitInformationFragment.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/information/UnitInformationFragment.kt
@@ -13,6 +13,7 @@ import androidx.core.widget.TextViewCompat
import androidx.fragment.app.Fragment
import com.google.android.material.button.MaterialButton
import kotlinx.coroutines.DelicateCoroutinesApi
+import kotlinx.serialization.json.longOrNull
import mx.trackermap.TrackerMap.android.R
import mx.trackermap.TrackerMap.android.databinding.UnitDetailsInformationBinding
import mx.trackermap.TrackerMap.android.details.UnitDetailsAdapter
@@ -94,6 +95,13 @@ class UnitInformationFragment : Fragment() {
unit.position?.address?.let { address ->
details.add(getString(R.string.unit_info_address) to address)
}
+ unit.position?.attributes?.get("hours")?.longOrNull?.let {
+ if (it > 0) {
+ details.add(
+ getString(R.string.unit_hourmeter) to Formatter.formatHours(it)
+ )
+ }
+ }
unit.position?.protocol?.let { protocol ->
details.add(getString(R.string.unit_info_protocol) to protocol)
}
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt
index 20d2a48..4c87b31 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt
@@ -22,7 +22,7 @@ import mx.trackermap.TrackerMap.android.R
import mx.trackermap.TrackerMap.android.databinding.UnitDetailsReportsBinding
import mx.trackermap.TrackerMap.android.details.UnitDetailsAdapter
import mx.trackermap.TrackerMap.android.map.MapFragment
-import mx.trackermap.TrackerMap.android.map.MarkerTransformations
+import mx.trackermap.TrackerMap.android.shared.MarkerTransformations
import mx.trackermap.TrackerMap.client.models.EventInformation
import mx.trackermap.TrackerMap.client.models.Position
import mx.trackermap.TrackerMap.client.models.Stop
@@ -205,26 +205,28 @@ class UnitReportsFragment : Fragment() {
datetimeText.text = Formatter.formatDate(it)
}
event.event.type?.let {
- eventText.text = getString(when (it) {
- "deviceOnline" -> R.string.event_device_online
- "deviceUnknown" -> R.string.event_device_unknown
- "deviceOffline" -> R.string.event_device_offline
- "deviceInactive" -> R.string.event_device_inactive
- "deviceMoving" -> R.string.event_device_moving
- "deviceStopped" -> R.string.event_device_stopped
- "deviceOverspeed" -> R.string.event_device_overspeed
- "deviceFuelDrop" -> R.string.event_device_fuel_drop
- "commandResult" -> R.string.event_command_result
- "geofenceEnter" -> R.string.event_geofence_enter
- "geofenceExit" -> R.string.event_geofence_exit
- "alarm" -> R.string.event_alarm
- "ignitionOn" -> R.string.event_ignition_on
- "ignitionOff" -> R.string.event_ignition_off
- "maintenance" -> R.string.event_maintenance
- "textMessage" -> R.string.event_text_message
- "driverChanged" -> R.string.event_driver_changed
- else -> R.string.event_unknown
- })
+ eventText.text = getString(
+ when (EventInformation.stringToReportType(it)) {
+ EventInformation.Type.DEVICE_ONLINE -> R.string.event_device_online
+ EventInformation.Type.DEVICE_UNKNOWN -> R.string.event_device_unknown
+ EventInformation.Type.DEVICE_OFFLINE -> R.string.event_device_offline
+ EventInformation.Type.DEVICE_INACTIVE -> R.string.event_device_inactive
+ EventInformation.Type.DEVICE_MOVING -> R.string.event_device_moving
+ EventInformation.Type.DEVICE_STOPPED -> R.string.event_device_stopped
+ EventInformation.Type.DEVICE_OVERSPEED -> R.string.event_device_overspeed
+ EventInformation.Type.DEVICE_FUEL_DROP -> R.string.event_device_fuel_drop
+ EventInformation.Type.COMMAND_RESULT -> R.string.event_command_result
+ EventInformation.Type.GEOFENCE_ENTER -> R.string.event_geofence_enter
+ EventInformation.Type.GEOFENCE_EXIT -> R.string.event_geofence_exit
+ EventInformation.Type.ALARM -> R.string.event_alarm
+ EventInformation.Type.IGNITION_ON -> R.string.event_ignition_on
+ EventInformation.Type.IGNITION_OFF -> R.string.event_ignition_off
+ EventInformation.Type.MAINTENANCE -> R.string.event_maintenance
+ EventInformation.Type.TEXT_MESSAGE -> R.string.event_text_message
+ EventInformation.Type.DRIVER_CHANGED -> R.string.event_driver_changed
+ EventInformation.Type.UNKNOWN -> R.string.event_unknown
+ else -> R.string.event_unknown
+ })
}
event.geofence?.let {
geofenceText.text = it.name
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt
index 865f096..62ac4f2 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt
@@ -4,6 +4,7 @@ import androidx.lifecycle.*
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
+import mx.trackermap.TrackerMap.client.models.EventInformation
import mx.trackermap.TrackerMap.controllers.ReportController
import mx.trackermap.TrackerMap.utils.ReportDates
import org.koin.core.component.KoinComponent
@@ -84,7 +85,24 @@ class UnitReportsViewModel(
deviceId = id,
reportType = _reportType.value,
reportPeriod = _reportPeriod.value,
- xlsx = xlsx
+ xlsx = xlsx,
+ eventTypes = arrayOf(
+ EventInformation.Type.DEVICE_INACTIVE,
+ EventInformation.Type.DEVICE_MOVING,
+ EventInformation.Type.DEVICE_STOPPED,
+ EventInformation.Type.DEVICE_OVERSPEED,
+ EventInformation.Type.DEVICE_FUEL_DROP,
+ EventInformation.Type.COMMAND_RESULT,
+ EventInformation.Type.GEOFENCE_ENTER,
+ EventInformation.Type.GEOFENCE_EXIT,
+ EventInformation.Type.ALARM,
+ EventInformation.Type.IGNITION_ON,
+ EventInformation.Type.IGNITION_OFF,
+ EventInformation.Type.MAINTENANCE,
+ EventInformation.Type.TEXT_MESSAGE,
+ EventInformation.Type.DRIVER_CHANGED,
+ EventInformation.Type.UNKNOWN
+ )
)
}
}
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt
index 344907c..b1854a9 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt
@@ -1,19 +1,15 @@
package mx.trackermap.TrackerMap.android.devices
-import android.util.TypedValue
import android.view.LayoutInflater
import android.view.ViewGroup
-import android.widget.FrameLayout
import androidx.core.view.updateLayoutParams
import androidx.recyclerview.widget.RecyclerView
import mx.trackermap.TrackerMap.android.R
import mx.trackermap.TrackerMap.android.databinding.UnitItemBinding
+import mx.trackermap.TrackerMap.android.shared.ActionCallback
+import mx.trackermap.TrackerMap.android.shared.UnitRenderData
import mx.trackermap.TrackerMap.client.models.UnitInformation
-enum class Action {
- CLICK, DETAILS, REPORTS, COMMANDS
-}
-
class DevicesAdapter(
private val units: List<UnitInformation>,
private val actionCallback: ActionCallback?
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesFragment.kt
index 96d4696..b1a3663 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesFragment.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesFragment.kt
@@ -6,12 +6,11 @@ import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.view.ViewTreeObserver
-import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.coroutines.DelicateCoroutinesApi
import mx.trackermap.TrackerMap.android.databinding.DevicesFragmentBinding
import mx.trackermap.TrackerMap.android.details.DetailsActivity
+import mx.trackermap.TrackerMap.android.shared.UnitRenderData
import mx.trackermap.TrackerMap.android.units.UnitFragment
import mx.trackermap.TrackerMap.android.units.UnitsViewModel
import mx.trackermap.TrackerMap.client.models.UnitInformation
@@ -82,9 +81,11 @@ class DevicesFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment
unitsViewModel.units.removeObservers(viewLifecycleOwner)
}
- private fun itemAction(unit: UnitInformation, action: Action) {
+ private fun itemAction(unit: UnitInformation, action: UnitRenderData.Action) {
when (action) {
- Action.DETAILS, Action.REPORTS, Action.COMMANDS -> {
+ UnitRenderData.Action.DETAILS,
+ UnitRenderData.Action.REPORTS,
+ UnitRenderData.Action.COMMANDS -> {
Log.d("DevicesFragment", "Action: $action - Unit: $unit")
val activity = requireActivity()
val intent = Intent(activity.applicationContext, DetailsActivity::class.java)
@@ -93,7 +94,7 @@ class DevicesFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment
intent.putExtra(DetailsActivity.ACTION_EXTRA, action)
startActivity(intent)
}
- Action.CLICK -> {
+ UnitRenderData.Action.CLICK -> {
unitsViewModel.selectUnit(unit)
}
}
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 f577613..6a80f95 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
@@ -17,6 +17,7 @@ import mil.nga.sf.util.SFException
import mil.nga.sf.wkt.GeometryReader
import java.io.File
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.utils.MapCalculus
@@ -65,7 +66,7 @@ class MapFragment : GlobeMapFragment() {
val tmpInfo = RemoteTileInfoNew(layer[0], layer[1].toInt(), layer[2].toInt())
tileInfo = tileInfoSetCacheDir(layer[0], tmpInfo)
tileInfo?.let {
- setZoomLimits(it.minZoom, it.maxZoom)
+ setZoomLimits(layer[1].toInt(), layer[2].toInt())
}
}
@@ -81,9 +82,9 @@ class MapFragment : GlobeMapFragment() {
loader = QuadImageLoader(params, tileInfo, baseControl)
loader?.setImageFormat(RenderController.ImageFormat.MaplyImageUShort565)
- val latitude = 23.191
- val longitude = -100.36
- focusOn(latitude, longitude, height = 0.4, animated = false)
+ val latitude = 23.191 * Math.PI / 180
+ val longitude = -100.36 * Math.PI / 180
+ mapControl.setPositionGeo(latitude, longitude, 0.4)
}
override fun mapDidStopMoving(
@@ -92,7 +93,7 @@ class MapFragment : GlobeMapFragment() {
userMotion: Boolean
) {
super.mapDidStopMoving(mapControl, corners, userMotion)
- Log.d("MapFragment", "Height: ${mapControl?.height}")
+ Log.d("MapFragment", "Height: %7.7f".format(mapControl?.height))
}
override fun userDidSelect(
@@ -235,9 +236,9 @@ class MapFragment : GlobeMapFragment() {
}
mbr.expandByFraction(0.1)
- mapControl.addPostSurfaceRunnable {
- val zoom = mapControl.zoomLimitMax.coerceAtLeast(
- mapControl.findHeightToViewBounds(mbr, mbr.middle()))
+ mapControl?.addPostSurfaceRunnable {
+ val zoom = mapControl.findHeightToViewBounds(mbr, mbr.middle())
+ .coerceAtLeast(mapControl.zoomLimitMin)
mapControl.setPositionGeo(mbr.middle(), zoom)
}
}
@@ -320,17 +321,22 @@ class MapFragment : GlobeMapFragment() {
fun focusOn(
latitude: Double,
longitude: Double,
- height: Double? = 0.00001,
+ height: Double = 0.00001,
animated: Boolean = true
) {
- val lat = latitude * Math.PI / 180
- val lon = longitude * Math.PI / 180
- // Ensure height is equal or higher than bottom limit
- val z = mapControl.zoomLimitMin.coerceAtLeast(height ?: 0.0)
- if (animated) {
- mapControl.animatePositionGeo(lon, lat, z, 0.2)
- } else {
- mapControl.setPositionGeo(lon, lat, z)
+ mapControl?.addPostSurfaceRunnable {
+ val lat = latitude * Math.PI / 180
+ val lon = longitude * Math.PI / 180
+ // Ensure height is equal or higher than bottom limit
+ Log.d("MapFragment", "Target: %7.7f".format(height))
+ Log.d("MapFragment", "Min: %7.7f".format(mapControl.zoomLimitMin))
+ val z = height.coerceAtLeast(mapControl.zoomLimitMin)
+ Log.d("MapFragment", "Final: %7.7f".format(z))
+ if (animated) {
+ mapControl.animatePositionGeo(lon, lat, z, 0.2)
+ } else {
+ mapControl.setPositionGeo(lon, lat, z)
+ }
}
}
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 6f6596f..6ea5f82 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
@@ -11,8 +11,8 @@ 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.devices.UnitRenderData
+import mx.trackermap.TrackerMap.android.shared.MarkerTransformations
+import mx.trackermap.TrackerMap.android.shared.UnitRenderData
import mx.trackermap.TrackerMap.android.units.UnitFragment
import mx.trackermap.TrackerMap.android.units.UnitsViewModel
import mx.trackermap.TrackerMap.client.models.UnitInformation
@@ -117,10 +117,12 @@ class UnitMapFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment
unitsViewModel.geofences.removeObservers(viewLifecycleOwner)
}
- private fun itemAction(unit: UnitInformation, action: Action) {
+ private fun itemAction(unit: UnitInformation, action: UnitRenderData.Action) {
when (action) {
- Action.DETAILS, Action.REPORTS, Action.COMMANDS -> {
- Log.d("DevicesFragment", "Action: $action - Unit: $unit")
+ UnitRenderData.Action.DETAILS,
+ UnitRenderData.Action.REPORTS,
+ UnitRenderData.Action.COMMANDS -> {
+ Log.d("UnitMapFragment", "Action: $action - Unit: $unit")
val activity = requireActivity()
val intent = Intent(activity.applicationContext, DetailsActivity::class.java)
intent.putExtra(DetailsActivity.DEVICE_ID_EXTRA, unit.device.id)
@@ -128,7 +130,7 @@ class UnitMapFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment
intent.putExtra(DetailsActivity.ACTION_EXTRA, action)
startActivity(intent)
}
- Action.CLICK -> {
+ UnitRenderData.Action.CLICK -> {
unitsViewModel.selectUnit(unit)
}
}
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationActivity.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationActivity.kt
index b0a4482..13deed0 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationActivity.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/session/UserInformationActivity.kt
@@ -69,7 +69,7 @@ class UserInformationActivity : AppCompatActivity() {
}
private fun setupEvents() {
- binding.backButton.setOnClickListener { onBackPressed() }
+ binding.closeButton.setOnClickListener { onBackPressed() }
binding.signoutButton.setOnClickListener {
userInformationViewModel.signOut(PreferenceManager
.getDefaultSharedPreferences(this)
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MarkerTransformations.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/MarkerTransformations.kt
index 63dd9ed..f684a10 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MarkerTransformations.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/MarkerTransformations.kt
@@ -1,7 +1,8 @@
-package mx.trackermap.TrackerMap.android.map
+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
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/UnitRenderData.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/UnitRenderData.kt
index beeba6f..e8a4bd6 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/UnitRenderData.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/shared/UnitRenderData.kt
@@ -1,4 +1,4 @@
-package mx.trackermap.TrackerMap.android.devices
+package mx.trackermap.TrackerMap.android.shared
import android.content.Context
import android.graphics.Color
@@ -12,13 +12,13 @@ import android.widget.TextView
import androidx.cardview.widget.CardView
import androidx.core.content.ContextCompat
import com.zerobranch.layout.SwipeLayout
+import kotlinx.serialization.json.longOrNull
import mx.trackermap.TrackerMap.android.R
-import mx.trackermap.TrackerMap.android.map.MarkerTransformations
import mx.trackermap.TrackerMap.client.models.UnitInformation
import mx.trackermap.TrackerMap.utils.Formatter
import mx.trackermap.TrackerMap.utils.SpeedUnit
-typealias ActionCallback = (unit: UnitInformation, action: Action) -> Unit
+typealias ActionCallback = (unit: UnitInformation, action: UnitRenderData.Action) -> Unit
class UnitRenderData {
data class UnitRenderViewHolder(
@@ -34,6 +34,10 @@ class UnitRenderData {
val swipeLayout: SwipeLayout? = null
)
+ enum class Action {
+ CLICK, DETAILS, REPORTS, COMMANDS
+ }
+
companion object {
fun render(
viewHolder: UnitRenderViewHolder,
@@ -128,6 +132,19 @@ class UnitRenderData {
)
}
+ /* Hourmeter */
+ position.attributes["hours"]?.longOrNull?.let {
+ if (it > 0) {
+ details.add(
+ Triple(
+ R.drawable.position_hourmeter,
+ Formatter.formatHours(it),
+ context.getString(R.string.unit_hourmeter)
+ )
+ )
+ }
+ }
+
/* Date time */
position.fixTime?.let { fixTime ->
details.add(