From 51a9a739c2b7ee6868298505c7d13de9a279c91a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sylwester=20Zieli=C5=84ski?= Date: Tue, 3 May 2022 12:44:36 +0200 Subject: [PATCH] Modify UART layout --- .../nordicsemi/android/uart/data/UARTData.kt | 9 +++- .../android/uart/data/UARTManager.kt | 3 +- .../android/uart/view/UARTContentView.kt | 50 +++++++++++++------ profile_uart/src/main/res/values/strings.xml | 5 +- 4 files changed, 49 insertions(+), 18 deletions(-) diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTData.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTData.kt index 3980b64b..ce96c0fc 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTData.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTData.kt @@ -1,14 +1,19 @@ package no.nordicsemi.android.uart.data internal data class UARTData( - val messages: List = emptyList(), + val messages: List = emptyList(), val batteryLevel: Int? = null, ) { val displayMessages = messages.reversed().take(10) } -internal data class UARTOutputRecord( +internal data class UARTRecord( val text: String, + val type: UARTRecordType, val timestamp: Long = System.currentTimeMillis() ) + +enum class UARTRecordType { + INPUT, OUTPUT +} diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTManager.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTManager.kt index 2205529b..be65cabf 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTManager.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTManager.kt @@ -90,7 +90,7 @@ internal class UARTManager( setNotificationCallback(txCharacteristic).asFlow().onEach { val text: String = it.getStringValue(0) ?: String.EMPTY log(10, "\"$text\" received") - data.value = data.value.copy(messages = data.value.messages + UARTOutputRecord(text)) + data.value = data.value.copy(messages = data.value.messages + UARTRecord(text, UARTRecordType.OUTPUT)) }.launchIn(scope) requestMtu(517).enqueue() @@ -153,6 +153,7 @@ internal class UARTManager( request.split() } request.suspend() + data.value = data.value.copy(messages = data.value.messages + UARTRecord(text, UARTRecordType.INPUT)) log(10, "\"$text\" sent") } } diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTContentView.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTContentView.kt index a4b9259d..dcf08dbe 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTContentView.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTContentView.kt @@ -1,6 +1,7 @@ package no.nordicsemi.android.uart.view import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.RowScopeInstance.weight import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Delete @@ -11,6 +12,8 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp @@ -19,7 +22,8 @@ import no.nordicsemi.android.theme.view.SectionTitle import no.nordicsemi.android.uart.R import no.nordicsemi.android.uart.data.MacroEol import no.nordicsemi.android.uart.data.UARTData -import no.nordicsemi.android.uart.data.UARTOutputRecord +import no.nordicsemi.android.uart.data.UARTRecord +import no.nordicsemi.android.uart.data.UARTRecordType import no.nordicsemi.android.utils.EMPTY import java.text.SimpleDateFormat import java.util.* @@ -34,18 +38,19 @@ internal fun UARTContentView( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.padding(16.dp) ) { - InputSection(onEvent = onEvent) - - Spacer(modifier = Modifier.size(16.dp)) - - MacroSection(viewState, onEvent) - - Spacer(modifier = Modifier.size(16.dp)) OutputSection(state.displayMessages, onEvent) Spacer(modifier = Modifier.size(16.dp)) +// MacroSection(viewState, onEvent) +// +// Spacer(modifier = Modifier.size(16.dp)) + + InputSection(onEvent = onEvent) + + Spacer(modifier = Modifier.size(16.dp)) + Button( onClick = { onEvent(DisconnectEvent) } ) { @@ -201,8 +206,8 @@ private fun DeleteConfigurationDialog(onEvent: (UARTViewEvent) -> Unit, onDismis } @Composable -private fun OutputSection(records: List, onEvent: (UARTViewEvent) -> Unit) { - ScreenSection { +private fun OutputSection(records: List, onEvent: (UARTViewEvent) -> Unit) { + ScreenSection(modifier = Modifier.weight(1f)) { Column( horizontalAlignment = Alignment.CenterHorizontally ) { @@ -243,7 +248,7 @@ private fun OutputSection(records: List, onEvent: (UARTViewEve } @Composable -private fun MessageItem(record: UARTOutputRecord) { +private fun MessageItem(record: UARTRecord) { Column { Text( text = record.timeToString(), @@ -252,14 +257,31 @@ private fun MessageItem(record: UARTOutputRecord) { ) Spacer(modifier = Modifier.height(4.dp)) Text( - text = record.text, - style = MaterialTheme.typography.bodyMedium + text = createRecordText(record = record), + style = MaterialTheme.typography.bodyMedium, + color = createRecordColor(record = record) ) } } +@Composable +private fun createRecordText(record: UARTRecord): String { + return when (record.type) { + UARTRecordType.INPUT -> stringResource(id = R.string.uart_input_log, record.text) + UARTRecordType.OUTPUT -> stringResource(id = R.string.uart_output_log, record.text) + } +} + +@Composable +private fun createRecordColor(record: UARTRecord): Color { + return when (record.type) { + UARTRecordType.INPUT -> colorResource(id = R.color.nordicGrass) + UARTRecordType.OUTPUT -> MaterialTheme.colorScheme.onBackground + } +} + private val datFormatter = SimpleDateFormat("dd MMMM yyyy, HH:mm:ss", Locale.ENGLISH) -private fun UARTOutputRecord.timeToString(): String { +private fun UARTRecord.timeToString(): String { return datFormatter.format(timestamp) } diff --git a/profile_uart/src/main/res/values/strings.xml b/profile_uart/src/main/res/values/strings.xml index 00bcf127..7a069e45 100644 --- a/profile_uart/src/main/res/values/strings.xml +++ b/profile_uart/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - + UART Please define a macro to send command to the device. @@ -52,4 +52,7 @@ Are you sure that you want to delete this configuration? Your data will be irretrievably lost. Confirm Cancel + + --> %s + <-- %s