From fc1466e7d6d3548ef493bd411f27a10c1cd5fa7b Mon Sep 17 00:00:00 2001 From: Sylwester Zielinski Date: Thu, 26 Jan 2023 09:45:58 +0100 Subject: [PATCH] Fix UART profile --- .../android/uart/view/UARTScreen.kt | 58 +++++++++++++------ 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt index 03e38bd9..795de080 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt @@ -31,8 +31,8 @@ package no.nordicsemi.android.uart.view +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState @@ -62,7 +62,6 @@ import no.nordicsemi.android.service.MissingServiceResult import no.nordicsemi.android.service.SuccessResult import no.nordicsemi.android.service.UnknownErrorResult import no.nordicsemi.android.uart.R -import no.nordicsemi.android.uart.data.UARTData import no.nordicsemi.android.uart.viewmodel.UARTViewModel import no.nordicsemi.android.ui.view.BackIconAppBar import no.nordicsemi.android.ui.view.LoggerIconAppBar @@ -83,22 +82,29 @@ fun UARTScreen() { modifier = Modifier.padding(it) ) { when (state.uartManagerState) { - NoDeviceState -> DeviceConnectingView() + NoDeviceState -> PaddingBox { DeviceConnectingView() } is WorkingState -> when (state.uartManagerState.result) { is IdleResult, - is ConnectingResult -> DeviceConnectingView { NavigateUpButton(navigateUp) } - is ConnectedResult -> DeviceConnectingView { NavigateUpButton(navigateUp) } - is DisconnectedResult -> DeviceDisconnectedView(Reason.USER) { NavigateUpButton(navigateUp) } - is LinkLossResult -> DeviceDisconnectedView(Reason.LINK_LOSS) { NavigateUpButton(navigateUp) } - is MissingServiceResult -> DeviceDisconnectedView(Reason.MISSING_SERVICE) { NavigateUpButton(navigateUp) } - is UnknownErrorResult -> DeviceDisconnectedView(Reason.UNKNOWN) { NavigateUpButton(navigateUp) } - is SuccessResult -> SuccessScreen(state.uartManagerState.result.data, state, viewModel) + is ConnectingResult -> PaddingBox { DeviceConnectingView { NavigateUpButton(navigateUp) } } + is ConnectedResult -> PaddingBox { DeviceConnectingView { NavigateUpButton(navigateUp) } } + is DisconnectedResult -> PaddingBox { DeviceDisconnectedView(Reason.USER) { NavigateUpButton(navigateUp) } } + is LinkLossResult -> PaddingBox { DeviceDisconnectedView(Reason.LINK_LOSS) { NavigateUpButton(navigateUp) } } + is MissingServiceResult -> PaddingBox { DeviceDisconnectedView(Reason.MISSING_SERVICE) { NavigateUpButton(navigateUp) } } + is UnknownErrorResult -> PaddingBox { DeviceDisconnectedView(Reason.UNKNOWN) { NavigateUpButton(navigateUp) } } + is SuccessResult -> SuccessScreen() } } } } } +@Composable +private fun PaddingBox(content: @Composable () -> Unit) { + Box(modifier = Modifier.padding(16.dp)) { + content() + } +} + @Composable private fun AppBar(state: UARTViewState, navigateUp: () -> Unit, onEvent: (UARTViewEvent) -> Unit) { val toolbarName = (state.uartManagerState as? WorkingState)?.let { @@ -115,17 +121,13 @@ private fun AppBar(state: UARTViewState, navigateUp: () -> Unit, onEvent: (UARTV } @Composable -private fun SuccessScreen(data: UARTData, state: UARTViewState, viewModel: UARTViewModel) { +private fun SuccessScreen() { val input = stringResource(id = R.string.uart_input) val macros = stringResource(id = R.string.uart_macros) val viewEntity = remember { PagerViewEntity( listOf( - PagerViewItem(input) { - UARTContentView(data) { viewModel.onEvent(it) } - }, - PagerViewItem(macros) { - MacroSection(state) { viewModel.onEvent(it) } - } + PagerViewItem(input) { KeyboardView() }, + PagerViewItem(macros) { MacroView() } ) ) } PagerView( @@ -135,6 +137,28 @@ private fun SuccessScreen(data: UARTData, state: UARTViewState, viewModel: UARTV ) } +@Composable +private fun KeyboardView() { + val viewModel: UARTViewModel = hiltViewModel() + val state = viewModel.state.collectAsState().value + (state.uartManagerState as? WorkingState)?.let { + (state.uartManagerState.result as? SuccessResult)?.let { + UARTContentView(it.data) { viewModel.onEvent(it) } + } + } +} + +@Composable +private fun MacroView() { + val viewModel: UARTViewModel = hiltViewModel() + val state = viewModel.state.collectAsState().value + (state.uartManagerState as? WorkingState)?.let { + (state.uartManagerState.result as? SuccessResult)?.let { + MacroSection(state) { viewModel.onEvent(it) } + } + } +} + @Composable fun Scroll(content: @Composable () -> Unit) { Column(modifier = Modifier.verticalScroll(rememberScrollState())) {