feat: add some icons
This commit is contained in:
@@ -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 ?: "<N/A>"
|
||||
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<TextView>(R.id.measurement_label).text =
|
||||
measurements[position].getLabel()
|
||||
val labelView = measurementView.findViewById<TextView>(R.id.measurement_label)
|
||||
labelView.text = measurement.getLabel()
|
||||
labelView.setCompoundDrawablesWithIntrinsicBounds(
|
||||
measurement.getIcon() ?: 0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
)
|
||||
measurementView.findViewById<TextView>(R.id.measurement_value).text =
|
||||
measurements[position].getFormattedValue()
|
||||
measurement.getFormattedValue()
|
||||
measurementView.layoutParams.height = measurementsRowHeight
|
||||
return measurementView
|
||||
}
|
||||
|
||||
@@ -50,6 +50,47 @@ fun decodeDemoPayload(bytes: ByteArray): DemoPayload {
|
||||
return DemoPayload(ts, pressure, temp)
|
||||
}
|
||||
|
||||
private fun demoPayloadToMeasurements(payload: DemoPayload): List<Measurement> {
|
||||
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<Action> {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user