From 04b33cf071672a955c3e3229f8d48de4c215dc18 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Thu, 16 Dec 2021 02:51:12 -0600 Subject: - Basically fully implemented device item with all details and icons. - Attributes for all models are deserialized as Map. - Removed redundant qualifier names --- .../TrackerMap/android/devices/DevicesAdapter.kt | 53 +++++++- .../res/drawable/ic_baseline_calendar_today_24.xml | 5 + .../ic_baseline_fiber_manual_record_24.xml | 5 + .../res/drawable/ic_baseline_location_on_24.xml | 10 ++ .../src/main/res/drawable/ic_baseline_lock_24.xml | 5 + .../main/res/drawable/ic_baseline_lock_open_24.xml | 5 + .../main/res/drawable/ic_baseline_person_24.xml | 10 ++ .../src/main/res/drawable/ic_baseline_speed_24.xml | 10 ++ androidApp/src/main/res/layout/unit_item.xml | 146 ++++++++++++++++----- androidApp/src/main/res/layout/units_activity.xml | 2 +- androidApp/src/main/res/values/strings.xml | 11 ++ 11 files changed, 222 insertions(+), 40 deletions(-) create mode 100644 androidApp/src/main/res/drawable/ic_baseline_calendar_today_24.xml create mode 100644 androidApp/src/main/res/drawable/ic_baseline_fiber_manual_record_24.xml create mode 100644 androidApp/src/main/res/drawable/ic_baseline_location_on_24.xml create mode 100644 androidApp/src/main/res/drawable/ic_baseline_lock_24.xml create mode 100644 androidApp/src/main/res/drawable/ic_baseline_lock_open_24.xml create mode 100644 androidApp/src/main/res/drawable/ic_baseline_person_24.xml create mode 100644 androidApp/src/main/res/drawable/ic_baseline_speed_24.xml (limited to 'androidApp/src/main') 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 4aa210d..dd7333d 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,9 +1,15 @@ package mx.trackermap.TrackerMap.android.devices +import android.graphics.Color +import android.graphics.ColorFilter +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.ViewStructure +import androidx.core.content.res.ResourcesCompat import androidx.recyclerview.widget.RecyclerView +import kotlinx.serialization.json.JsonNull import mx.trackermap.TrackerMap.android.R import mx.trackermap.TrackerMap.android.databinding.UnitItemBinding import mx.trackermap.TrackerMap.client.models.UnitInformation @@ -29,11 +35,46 @@ class DevicesAdapter( holder.toggleOptions(false) val unit = units[position] + val context = holder.itemView.context holder.binding.apply { + + 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 = "${unit.position?.speed ?: "--"} Km/h" - lastAddress.text = unit.position?.address ?: "Unknown location" + unitSpeed.text = context.getString(R.string.unit_speed_format, unit.position?.speed?.toInt() ?: 0) + lastAddress.text = unit.position?.address lastDate.text = "yyyy/mm/dd, hh:mm" actionCallback?.let { callback -> detailsButton.setOnClickListener { callback(unit, Action.DETAILS) } @@ -55,9 +96,11 @@ class DevicesAdapter( fun toggleOptions(shouldExpand: Boolean) { val context = binding.root.context binding.unitCard.setCardBackgroundColor( - context - .resources - .getColor(if (shouldExpand) R.color.background else R.color.darkBackground) + ResourcesCompat.getColor( + context.resources, + if (shouldExpand) R.color.background else R.color.darkBackground, + context.theme + ) ) binding.itemOptions.visibility = if (shouldExpand) View.VISIBLE else View.GONE binding.unitCard.cardElevation = if (shouldExpand) 5.0F else 0.0F diff --git a/androidApp/src/main/res/drawable/ic_baseline_calendar_today_24.xml b/androidApp/src/main/res/drawable/ic_baseline_calendar_today_24.xml new file mode 100644 index 0000000..e059617 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_baseline_calendar_today_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_baseline_fiber_manual_record_24.xml b/androidApp/src/main/res/drawable/ic_baseline_fiber_manual_record_24.xml new file mode 100644 index 0000000..13890d5 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_baseline_fiber_manual_record_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_baseline_location_on_24.xml b/androidApp/src/main/res/drawable/ic_baseline_location_on_24.xml new file mode 100644 index 0000000..71ef7bc --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_baseline_location_on_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_baseline_lock_24.xml b/androidApp/src/main/res/drawable/ic_baseline_lock_24.xml new file mode 100644 index 0000000..ed352bf --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_baseline_lock_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_baseline_lock_open_24.xml b/androidApp/src/main/res/drawable/ic_baseline_lock_open_24.xml new file mode 100644 index 0000000..1fe62c8 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_baseline_lock_open_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_baseline_person_24.xml b/androidApp/src/main/res/drawable/ic_baseline_person_24.xml new file mode 100644 index 0000000..0faf05d --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_baseline_person_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/androidApp/src/main/res/drawable/ic_baseline_speed_24.xml b/androidApp/src/main/res/drawable/ic_baseline_speed_24.xml new file mode 100644 index 0000000..febd057 --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_baseline_speed_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/androidApp/src/main/res/layout/unit_item.xml b/androidApp/src/main/res/layout/unit_item.xml index cdf0610..0c4b34d 100644 --- a/androidApp/src/main/res/layout/unit_item.xml +++ b/androidApp/src/main/res/layout/unit_item.xml @@ -9,56 +9,134 @@ app:cardCornerRadius="@dimen/card_border_radius" app:cardElevation="0dp" app:cardUseCompatPadding="true" - app:contentPadding="16dp"> + app:contentPadding="@dimen/card_padding"> - - + android:layout_marginEnd="5dp" + android:src="@drawable/ic_baseline_fiber_manual_record_24" + app:tint="?android:textColorPrimary" /> - + android:layout_toEndOf="@id/statusIcon" + android:visibility="gone" + android:layout_marginEnd="5dp" + android:src="@drawable/ic_baseline_lock_24" /> + android:layout_toEndOf="@id/engineStopIcon" + style="@style/TextAppearance.AppCompat.Body2" + tools:text="1AAUTO" /> - + android:layout_below="@id/unitName"> - + + + + + + + + + + + + + + + + + + + android:visibility="visible"> + android:textColor="@color/colorAccent" + style="?borderlessButtonStyle" /> + android:textColor="@color/colorAccent" + style="?borderlessButtonStyle" /> + android:textColor="@color/colorAccent" + style="?borderlessButtonStyle" /> - + \ No newline at end of file diff --git a/androidApp/src/main/res/layout/units_activity.xml b/androidApp/src/main/res/layout/units_activity.xml index 4f4ee77..f0d80ab 100644 --- a/androidApp/src/main/res/layout/units_activity.xml +++ b/androidApp/src/main/res/layout/units_activity.xml @@ -37,7 +37,7 @@ app:layout_constraintBottom_toBottomOf="@id/displayModeToggle" android:layout_marginVertical="@dimen/search_vertical_margin" android:layout_marginHorizontal="@dimen/search_horizontal_margin" - app:cardCornerRadius="25dp" + app:cardCornerRadius="@dimen/card_border_radius" app:cardElevation="@dimen/card_elevation"> Login + Status on + Status off + Engine stop on + Engine stop off + Driver name + Speed + Last position address + Last position datetime + + %1$d km/h + Details Reports Commands -- cgit v1.2.3