From f5355cf5b6281c8475a06061ac5fc80f7b9cdedf Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Sun, 16 Jan 2022 16:39:00 -0600 Subject: Moved stuff to shared package --- .../TrackerMap/android/devices/UnitRenderData.kt | 218 --------------------- 1 file changed, 218 deletions(-) delete mode 100644 androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/UnitRenderData.kt (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/UnitRenderData.kt') diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/UnitRenderData.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/UnitRenderData.kt deleted file mode 100644 index c7999de..0000000 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/devices/UnitRenderData.kt +++ /dev/null @@ -1,218 +0,0 @@ -package mx.trackermap.TrackerMap.android.devices - -import android.content.Context -import android.graphics.Color -import android.util.TypedValue -import android.view.Gravity -import android.view.View -import android.widget.Button -import android.widget.GridLayout -import android.widget.ImageView -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 - -class UnitRenderData { - data class UnitRenderViewHolder( - val unitName: TextView, - val unitIcon: ImageView? = null, - val statusIcon: ImageView, - val engineStopIcon: ImageView, - val gridLayout: GridLayout, - val detailsButton: Button? = null, - val reportsButton: Button? = null, - val commandsButton: Button? = null, - val unitCard: CardView? = null, - val swipeLayout: SwipeLayout? = null - ) - - companion object { - fun render( - viewHolder: UnitRenderViewHolder, - context: Context, - unit: UnitInformation, - actionCallback: ActionCallback? - ) { - viewHolder.apply { - val details: MutableList> = mutableListOf() - - /* Device name */ - unitName.text = unit.device.name - - /* Device icon */ - unitIcon?.setImageResource( - MarkerTransformations.categoryToResourceId(unit.device.category) - ) - unitIcon?.contentDescription = context.getString( - MarkerTransformations.categoryToStringId(unit.device.category) - ) - - /* Contact */ - unit.device.contact?.let { contact -> - if (contact.isNotEmpty()) { - details.add( - Triple( - R.drawable.device_contact, - contact, - context.getString(R.string.unit_driver_name) - ) - ) - } - } - - 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 { - statusIcon.setColorFilter(Color.GRAY) - } - - /* Engine stop */ - val attributes = position.attributes - if (attributes["out1"].toString() != "null") { - 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) - } - } - - /* Speed */ - position.speed?.let { speed -> - details.add( - Triple( - R.drawable.position_speed, - Formatter.formatSpeed(speed, SpeedUnit.KMH), - context.getString(R.string.unit_speed) - ) - ) - } - - /* Address */ - position.address?.let { address -> - details.add( - Triple( - R.drawable.position_address, - address, - context.getString(R.string.unit_last_address) - ) - ) - } - - /* 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( - Triple( - R.drawable.position_datetime, - Formatter.formatDate(fixTime), - context.getString(R.string.unit_last_date) - ) - ) - } - } - - gridLayout.removeAllViewsInLayout() - val metrics = context.resources.displayMetrics - details.forEachIndexed { i, detail -> - /* Property icon */ - val imageView = ImageView(gridLayout.context) - imageView.setImageResource(detail.first) - imageView.contentDescription = detail.third - imageView.setColorFilter( - ContextCompat.getColor( - context, - androidx.appcompat.R.color.secondary_text_default_material_light - ) - ) - - val imageLayout = GridLayout.LayoutParams() - imageLayout.width = GridLayout.LayoutParams.WRAP_CONTENT - imageLayout.height = GridLayout.LayoutParams.WRAP_CONTENT - imageLayout.marginEnd = - TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 6f, metrics).toInt() - imageLayout.rowSpec = GridLayout.spec(i) - imageLayout.columnSpec = GridLayout.spec(0) - imageView.layoutParams = imageLayout - - /* Property text */ - val textView = TextView(gridLayout.context) - textView.text = detail.second - - val textLayout = GridLayout.LayoutParams() - textLayout.width = 0 - textLayout.height = GridLayout.LayoutParams.MATCH_PARENT - textLayout.rowSpec = GridLayout.spec(i) - textLayout.columnSpec = GridLayout.spec(1, 1, 5f) - textView.layoutParams = textLayout - - gridLayout.addView(imageView) - gridLayout.addView(textView) - - imageLayout.setGravity(Gravity.CENTER) - } - - actionCallback?.let { callback -> - unitCard?.setOnClickListener { - swipeLayout?.close() - callback(unit, Action.CLICK) - } - detailsButton?.setOnClickListener { - swipeLayout?.close() - callback(unit, Action.DETAILS) - } - reportsButton?.setOnClickListener { - swipeLayout?.close() - callback(unit, Action.REPORTS) - } - commandsButton?.setOnClickListener { - swipeLayout?.close() - callback(unit, Action.COMMANDS) - } - } - } - } - } -} \ No newline at end of file -- cgit v1.2.3