Add logger icon to AppBar

This commit is contained in:
Sylwester Zieliński
2022-04-04 13:35:00 +02:00
parent 6ffbd9b07b
commit 39adf9149a
45 changed files with 311 additions and 39 deletions

View File

@@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch
import no.nordicsemi.android.ble.ktx.suspend
import no.nordicsemi.android.logger.ToolboxLogger
import no.nordicsemi.android.logger.ToolboxLoggerFactory
import no.nordicsemi.android.service.BleManagerResult
import no.nordicsemi.android.service.ConnectingResult
import no.nordicsemi.android.service.ServiceManager
@@ -20,9 +21,11 @@ class UARTRepository @Inject internal constructor(
@ApplicationContext
private val context: Context,
private val serviceManager: ServiceManager,
private val configurationDataSource: ConfigurationDataSource
private val configurationDataSource: ConfigurationDataSource,
private val toolboxLoggerFactory: ToolboxLoggerFactory
) {
private var manager: UARTManager? = null
private var logger: ToolboxLogger? = null
private val _data = MutableStateFlow<BleManagerResult<UARTData>>(ConnectingResult())
internal val data = _data.asStateFlow()
@@ -37,7 +40,10 @@ class UARTRepository @Inject internal constructor(
}
fun start(device: BluetoothDevice, scope: CoroutineScope) {
val manager = UARTManager(context, scope, ToolboxLogger(context, "UART", device.address))
val createdLogger = toolboxLoggerFactory.create("UART", device.address).also {
logger = it
}
val manager = UARTManager(context, scope, createdLogger)
this.manager = manager
manager.dataHolder.status.onEach {
@@ -59,6 +65,10 @@ class UARTRepository @Inject internal constructor(
manager?.clearItems()
}
fun openLogger() {
logger?.openLogger()
}
suspend fun saveConfigurationName(name: String) {
configurationDataSource.saveConfigurationName(name)
}
@@ -77,5 +87,6 @@ class UARTRepository @Inject internal constructor(
fun release() {
manager?.disconnect()?.enqueue()
manager = null
logger = null
}
}

View File

@@ -10,6 +10,7 @@ import androidx.compose.ui.res.stringResource
import androidx.hilt.navigation.compose.hiltViewModel
import no.nordicsemi.android.service.*
import no.nordicsemi.android.theme.view.BackIconAppBar
import no.nordicsemi.android.theme.view.LoggerIconAppBar
import no.nordicsemi.ui.scanner.ui.DeviceConnectingView
import no.nordicsemi.ui.scanner.ui.NoDeviceView
import no.nordicsemi.android.uart.R
@@ -30,7 +31,9 @@ fun UARTScreen() {
Column {
val navigateUp = { viewModel.onEvent(NavigateUp) }
BackIconAppBar(stringResource(id = R.string.uart_title), navigateUp)
LoggerIconAppBar(stringResource(id = R.string.uart_title), navigateUp) {
viewModel.onEvent(OpenLogger)
}
Column(modifier = Modifier.verticalScroll(rememberScrollState())) {
when (state.uartManagerState) {

View File

@@ -20,3 +20,4 @@ internal object ClearOutputItems : UARTViewEvent()
internal object DisconnectEvent : UARTViewEvent()
internal object NavigateUp : UARTViewEvent()
internal object OpenLogger : UARTViewEvent()

View File

@@ -81,6 +81,7 @@ internal class UARTViewModel @Inject constructor(
OnDeleteConfiguration -> deleteConfiguration()
OnEditConfiguration -> onEditConfiguration()
ClearOutputItems -> repository.clearItems()
OpenLogger -> repository.openLogger()
}.exhaustive
}