diff options
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt')
-rw-r--r-- | androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt | 30 |
1 files changed, 25 insertions, 5 deletions
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 72d61e3..4aa210d 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 @@ -4,11 +4,20 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import mx.trackermap.TrackerMap.android.R import mx.trackermap.TrackerMap.android.databinding.UnitItemBinding import mx.trackermap.TrackerMap.client.models.UnitInformation -class DevicesAdapter(private val units: List<UnitInformation>) : - RecyclerView.Adapter<DevicesAdapter.ViewHolder>() { +enum class Action { + DETAILS, REPORTS, COMMANDS +} + +typealias ActionCallback = (unit: UnitInformation, action: Action) -> Unit + +class DevicesAdapter( + private val units: List<UnitInformation>, + private val actionCallback: ActionCallback? +) : RecyclerView.Adapter<DevicesAdapter.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val binding = UnitItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) @@ -26,6 +35,11 @@ class DevicesAdapter(private val units: List<UnitInformation>) : unitSpeed.text = "${unit.position?.speed ?: "--"} Km/h" lastAddress.text = unit.position?.address ?: "Unknown location" lastDate.text = "yyyy/mm/dd, hh:mm" + actionCallback?.let { callback -> + detailsButton.setOnClickListener { callback(unit, Action.DETAILS) } + reportsButton.setOnClickListener { callback(unit, Action.REPORTS) } + commandsButton.setOnClickListener { callback(unit, Action.COMMANDS) } + } } } @@ -38,9 +52,15 @@ class DevicesAdapter(private val units: List<UnitInformation>) : } } - fun toggleOptions(shouldShow: Boolean) { - binding.itemOptions.visibility = if (shouldShow) View.VISIBLE else View.GONE - binding.unitCard.cardElevation = if (shouldShow) 5.0F else 0.0F + fun toggleOptions(shouldExpand: Boolean) { + val context = binding.root.context + binding.unitCard.setCardBackgroundColor( + context + .resources + .getColor(if (shouldExpand) R.color.background else R.color.darkBackground) + ) + binding.itemOptions.visibility = if (shouldExpand) View.VISIBLE else View.GONE + binding.unitCard.cardElevation = if (shouldExpand) 5.0F else 0.0F } } }
\ No newline at end of file |