aboutsummaryrefslogtreecommitdiff
path: root/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/DevicesAdapter.kt
blob: e1ccd0a0eaeaf822879771d0cedd3807ac8136b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package mx.trackermap.TrackerMap.android.devices

import android.graphics.Color
import android.util.Size
import android.util.TypedValue
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.GridLayout
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.mousebird.maply.ImageLoaderInterpreter
import mx.trackermap.TrackerMap.android.R
import mx.trackermap.TrackerMap.android.databinding.UnitItemBinding
import mx.trackermap.TrackerMap.utils.Formatter
import mx.trackermap.TrackerMap.client.models.UnitInformation
import mx.trackermap.TrackerMap.utils.SpeedUnit

enum class Action {
    CLICK, DETAILS, REPORTS, COMMANDS
}

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)

        return ViewHolder(binding)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val unit = units[position]
        val context = holder.itemView.context
        holder.binding.apply {
            UnitRenderData.render(
                UnitRenderData.UnitRenderViewHolder(
                    unitName = unitName,
                    statusIcon = statusIcon,
                    engineStopIcon = engineStopIcon,
                    gridLayout = gridLayout,
                    detailsButton = detailsButton,
                    reportsButton = reportsButton,
                    commandsButton = commandsButton,
                    unitCard = unitCard,
                    swipeLayout = swipeLayout
                ), context, unit, actionCallback
            )
        }
    }

    override fun getItemCount(): Int = units.size

    inner class ViewHolder(val binding: UnitItemBinding) : RecyclerView.ViewHolder(binding.root)
}