From 23b0f52fa1e3befb7e8d337604be9172847cd3b0 Mon Sep 17 00:00:00 2001 From: Fabian Christoffel Date: Mon, 26 Jun 2023 11:35:36 +0200 Subject: [PATCH] feat: add some icons --- .idea/misc.xml | 1 - .../sensortestingapp/DeviceListAdapter.kt | 26 ++++++- .../example/sensortestingapp/KirbyDevice.kt | 67 ++++++++++++------- .../example/sensortestingapp/MainActivity.kt | 10 ++- .../res/drawable/baseline_access_time_24.xml | 6 ++ .../res/drawable/baseline_compress_24.xml | 6 ++ .../baseline_device_thermostat_24.xml | 5 ++ .../res/drawable/signal_strength_medium.xml | 17 +++++ .../res/drawable/signal_strength_strong.xml | 12 ++++ .../res/drawable/signal_strength_weak.xml | 15 +++++ app/src/main/res/layout/row_device_list.xml | 4 +- .../main/res/layout/row_measurements_list.xml | 4 +- app/src/main/res/values/colors.xml | 1 + 13 files changed, 142 insertions(+), 32 deletions(-) create mode 100644 app/src/main/res/drawable/baseline_access_time_24.xml create mode 100644 app/src/main/res/drawable/baseline_compress_24.xml create mode 100644 app/src/main/res/drawable/baseline_device_thermostat_24.xml create mode 100644 app/src/main/res/drawable/signal_strength_medium.xml create mode 100644 app/src/main/res/drawable/signal_strength_strong.xml create mode 100644 app/src/main/res/drawable/signal_strength_weak.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 9f71c83..773fe0f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/app/src/main/java/com/example/sensortestingapp/DeviceListAdapter.kt b/app/src/main/java/com/example/sensortestingapp/DeviceListAdapter.kt index c9d52fd..978b6bb 100644 --- a/app/src/main/java/com/example/sensortestingapp/DeviceListAdapter.kt +++ b/app/src/main/java/com/example/sensortestingapp/DeviceListAdapter.kt @@ -20,6 +20,7 @@ interface Action { interface Measurement { fun getLabel(): String + fun getIcon(): Int? fun getFormattedValue(): String } @@ -73,6 +74,18 @@ class DeviceListAdapter( deviceNameView.text = result.name ?: "" macAddressView.text = result.address signalStrengthView.text = "${result.rssi ?: "-"} dBm" + var signalStrengthIcon = R.drawable.signal_strength_weak + if (result.rssi >= -55) { + signalStrengthIcon = R.drawable.signal_strength_strong + } else if (result.rssi >= -80) { + signalStrengthIcon = R.drawable.signal_strength_medium + } + signalStrengthView.setCompoundDrawablesWithIntrinsicBounds( + 0, + 0, + signalStrengthIcon, + 0 + ) statusView.text = result.status deviceActions.setOnClickListener { val popup = PopupMenu(context, deviceActions) @@ -103,12 +116,19 @@ class DeviceListAdapter( parent: ViewGroup ): View { + val measurement = measurements[position] val measurementView = convertView ?: LayoutInflater.from(parent.context) .inflate(R.layout.row_measurements_list, parent, false) - measurementView.findViewById(R.id.measurement_label).text = - measurements[position].getLabel() + val labelView = measurementView.findViewById(R.id.measurement_label) + labelView.text = measurement.getLabel() + labelView.setCompoundDrawablesWithIntrinsicBounds( + measurement.getIcon() ?: 0, + 0, + 0, + 0 + ) measurementView.findViewById(R.id.measurement_value).text = - measurements[position].getFormattedValue() + measurement.getFormattedValue() measurementView.layoutParams.height = measurementsRowHeight return measurementView } diff --git a/app/src/main/java/com/example/sensortestingapp/KirbyDevice.kt b/app/src/main/java/com/example/sensortestingapp/KirbyDevice.kt index 4ee0797..fd0a7fa 100644 --- a/app/src/main/java/com/example/sensortestingapp/KirbyDevice.kt +++ b/app/src/main/java/com/example/sensortestingapp/KirbyDevice.kt @@ -50,6 +50,47 @@ fun decodeDemoPayload(bytes: ByteArray): DemoPayload { return DemoPayload(ts, pressure, temp) } +private fun demoPayloadToMeasurements(payload: DemoPayload): List { + return listOf(object : Measurement { + override fun getLabel(): String { + return "TS" + } + + override fun getFormattedValue(): String { + return "${payload.sysTs} (${payload.ts})" + } + + override fun getIcon(): Int? { + return R.drawable.baseline_access_time_24 + } + }, object : Measurement { + override fun getLabel(): String { + return "Temperature" + } + + override fun getFormattedValue(): String { + return "${payload.temperature} °C" + } + + override fun getIcon(): Int? { + return R.drawable.baseline_device_thermostat_24 + } + + }, object : Measurement { + override fun getLabel(): String { + return "Pressure" + } + + override fun getFormattedValue(): String { + return "${payload.pressure} hPa" + } + + override fun getIcon(): Int? { + return R.drawable.baseline_compress_24 + } + }) +} + enum class DeviceStatus { DISCOVERED, CONNECTED, BONDED, SUBSCRIBED } @@ -142,31 +183,7 @@ class KirbyDevice( return emptyList() } val latest = measurements.last() - return listOf(object : Measurement { - override fun getLabel(): String { - return "TS" - } - - override fun getFormattedValue(): String { - return "${latest.sysTs} (${latest.ts})" - } - }, object : Measurement { - override fun getLabel(): String { - return "Temperature" - } - - override fun getFormattedValue(): String { - return "${latest.temperature} °C" - } - }, object : Measurement { - override fun getLabel(): String { - return "Pressure" - } - - override fun getFormattedValue(): String { - return "${latest.pressure} hPa" - } - }) + return demoPayloadToMeasurements(latest) } override fun getActions(): List { diff --git a/app/src/main/java/com/example/sensortestingapp/MainActivity.kt b/app/src/main/java/com/example/sensortestingapp/MainActivity.kt index 3f6e800..5a71f2d 100644 --- a/app/src/main/java/com/example/sensortestingapp/MainActivity.kt +++ b/app/src/main/java/com/example/sensortestingapp/MainActivity.kt @@ -326,7 +326,7 @@ class MainActivity : AppCompatActivity() { @SuppressLint("MissingPermission") class DummyListEntry(override val address: String) : DeviceListEntry { - override var rssi: Int = 99 + override var rssi: Int = -30 override val name: String = "Device 123" override val status: String @@ -369,6 +369,10 @@ class DummyListEntry(override val address: String) : DeviceListEntry { override fun getFormattedValue(): String { return "21.2 °C" } + + override fun getIcon(): Int? { + return R.drawable.baseline_device_thermostat_24 + } }, object : Measurement { override fun getLabel(): String { return "Pressure" @@ -377,6 +381,10 @@ class DummyListEntry(override val address: String) : DeviceListEntry { override fun getFormattedValue(): String { return "232 bar" } + + override fun getIcon(): Int? { + return R.drawable.baseline_compress_24 + } }) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/baseline_access_time_24.xml b/app/src/main/res/drawable/baseline_access_time_24.xml new file mode 100644 index 0000000..b2bbb48 --- /dev/null +++ b/app/src/main/res/drawable/baseline_access_time_24.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/baseline_compress_24.xml b/app/src/main/res/drawable/baseline_compress_24.xml new file mode 100644 index 0000000..1af92ca --- /dev/null +++ b/app/src/main/res/drawable/baseline_compress_24.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/baseline_device_thermostat_24.xml b/app/src/main/res/drawable/baseline_device_thermostat_24.xml new file mode 100644 index 0000000..33cce62 --- /dev/null +++ b/app/src/main/res/drawable/baseline_device_thermostat_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/signal_strength_medium.xml b/app/src/main/res/drawable/signal_strength_medium.xml new file mode 100644 index 0000000..2e7e1a5 --- /dev/null +++ b/app/src/main/res/drawable/signal_strength_medium.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/app/src/main/res/drawable/signal_strength_strong.xml b/app/src/main/res/drawable/signal_strength_strong.xml new file mode 100644 index 0000000..8178739 --- /dev/null +++ b/app/src/main/res/drawable/signal_strength_strong.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/drawable/signal_strength_weak.xml b/app/src/main/res/drawable/signal_strength_weak.xml new file mode 100644 index 0000000..6a1e001 --- /dev/null +++ b/app/src/main/res/drawable/signal_strength_weak.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/app/src/main/res/layout/row_device_list.xml b/app/src/main/res/layout/row_device_list.xml index bb70ec8..b7451df 100644 --- a/app/src/main/res/layout/row_device_list.xml +++ b/app/src/main/res/layout/row_device_list.xml @@ -66,9 +66,11 @@ android:id="@+id/signal_strength" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:drawablePadding="2dp" android:textSize="14sp" - app:layout_constraintTop_toTopOf="parent" + app:drawableEndCompat="@drawable/signal_strength_medium" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" tools:text="-100 dBm" /> diff --git a/app/src/main/res/layout/row_measurements_list.xml b/app/src/main/res/layout/row_measurements_list.xml index 90101e0..c7c5eb4 100644 --- a/app/src/main/res/layout/row_measurements_list.xml +++ b/app/src/main/res/layout/row_measurements_list.xml @@ -9,9 +9,11 @@ android:id="@+id/measurement_label" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:drawablePadding="2dp" android:textSize="18sp" - app:layout_constraintTop_toTopOf="parent" + app:drawableStartCompat="@drawable/baseline_device_thermostat_24" app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" tools:text="Temperature" /> #FF000000 #FFFFFFFF #ECECEC + #D5D5D5 \ No newline at end of file