Merge pull request #106 from NordicSemiconductor/feature/ui-fixes

Feature/UI fixes
This commit is contained in:
Sylwester Zieliński
2022-03-31 15:01:27 +02:00
committed by GitHub
9 changed files with 75 additions and 20 deletions

View File

@@ -2,6 +2,16 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="no.nordicsemi.android.nrftoolbox">
<queries>
<package android:name="no.nordicsemi.android.dfu" />
<intent>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent>
</queries>
<application
android:name=".NrfToolboxApplication"
android:allowBackup="true"

View File

@@ -2,6 +2,7 @@ package no.nordicsemi.android.nrftoolbox
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
@@ -11,11 +12,17 @@ import no.nordicsemi.android.gls.GLSDestinations
import no.nordicsemi.android.material.you.NordicActivity
import no.nordicsemi.android.material.you.NordicTheme
import no.nordicsemi.android.navigation.NavigationView
import no.nordicsemi.android.nrftoolbox.repository.ActivitySignals
import no.nordicsemi.android.nrftoolbox.viewmodel.HomeViewModel
import no.nordicsemi.ui.scanner.ScannerDestinations
import javax.inject.Inject
@AndroidEntryPoint
class MainActivity : NordicActivity() {
@Inject
lateinit var activitySignals: ActivitySignals
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -30,4 +37,9 @@ class MainActivity : NordicActivity() {
}
}
}
override fun onResume() {
super.onResume()
activitySignals.onResume()
}
}

View File

@@ -0,0 +1,17 @@
package no.nordicsemi.android.nrftoolbox.repository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class ActivitySignals @Inject constructor() {
private val _onResumeTrigger = MutableStateFlow(false)
val state = _onResumeTrigger.asStateFlow()
fun onResume() {
_onResumeTrigger.value = !_onResumeTrigger.value
}
}

View File

@@ -14,6 +14,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.OnLifecycleEvent
import no.nordicsemi.android.nrftoolbox.BuildConfig
import no.nordicsemi.android.nrftoolbox.ProfileDestination
import no.nordicsemi.android.nrftoolbox.R
@@ -51,14 +52,14 @@ fun HomeScreen() {
Spacer(modifier = Modifier.height(16.dp))
FeatureButton(R.drawable.ic_bps, R.string.bps_module, R.string.bps_module_full) {
viewModel.openProfile(ProfileDestination.BPS)
FeatureButton(R.drawable.ic_gls, R.string.gls_module, R.string.gls_module_full) {
viewModel.openProfile(ProfileDestination.GLS)
}
Spacer(modifier = Modifier.height(16.dp))
FeatureButton(R.drawable.ic_gls, R.string.gls_module, R.string.gls_module_full) {
viewModel.openProfile(ProfileDestination.GLS)
FeatureButton(R.drawable.ic_bps, R.string.bps_module, R.string.bps_module_full) {
viewModel.openProfile(ProfileDestination.BPS)
}
Spacer(modifier = Modifier.height(16.dp))
@@ -95,14 +96,14 @@ fun HomeScreen() {
Spacer(modifier = Modifier.height(16.dp))
FeatureButton(R.drawable.ic_prx, R.string.prx_module, R.string.prx_module_full, state.isPRXModuleRunning) {
viewModel.openProfile(ProfileDestination.PRX)
FeatureButton(R.drawable.ic_cgm, R.string.cgm_module, R.string.cgm_module_full, state.isCGMModuleRunning) {
viewModel.openProfile(ProfileDestination.CGMS)
}
Spacer(modifier = Modifier.height(16.dp))
FeatureButton(R.drawable.ic_cgm, R.string.cgm_module, R.string.cgm_module_full, state.isCGMModuleRunning) {
viewModel.openProfile(ProfileDestination.CGMS)
FeatureButton(R.drawable.ic_prx, R.string.prx_module, R.string.prx_module_full, state.isPRXModuleRunning) {
viewModel.openProfile(ProfileDestination.PRX)
}
Spacer(modifier = Modifier.height(16.dp))
@@ -124,7 +125,12 @@ fun HomeScreen() {
val uriHandler = LocalUriHandler.current
val context = LocalContext.current
val packageManger = context.packageManager
FeatureButton(R.drawable.ic_dfu, R.string.dfu_module, R.string.dfu_module_full, null, R.string.dfu_module_info) {
val description = packageManger.getLaunchIntentForPackage(DFU_PACKAGE_NAME)?.let {
R.string.dfu_module_info
} ?: R.string.dfu_module_install
FeatureButton(R.drawable.ic_dfu, R.string.dfu_module, R.string.dfu_module_full, null, description) {
val intent = packageManger.getLaunchIntentForPackage(DFU_PACKAGE_NAME)
if (intent != null) {
context.startActivity(intent)

View File

@@ -7,5 +7,11 @@ data class HomeViewState(
val isRSCSModuleRunning: Boolean = false,
val isPRXModuleRunning: Boolean = false,
val isCGMModuleRunning: Boolean = false,
val isUARTModuleRunning: Boolean = false
)
val isUARTModuleRunning: Boolean = false,
val refreshToggle: Boolean = false
) {
fun copyWithRefresh(): HomeViewState {
return copy(refreshToggle = !refreshToggle)
}
}

View File

@@ -1,5 +1,6 @@
package no.nordicsemi.android.nrftoolbox.viewmodel
import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -13,6 +14,7 @@ import no.nordicsemi.android.hrs.service.HRSRepository
import no.nordicsemi.android.hts.repository.HTSRepository
import no.nordicsemi.android.navigation.NavigationManager
import no.nordicsemi.android.nrftoolbox.ProfileDestination
import no.nordicsemi.android.nrftoolbox.repository.ActivitySignals
import no.nordicsemi.android.nrftoolbox.view.HomeViewState
import no.nordicsemi.android.prx.repository.PRXRepository
import no.nordicsemi.android.rscs.repository.RSCSRepository
@@ -22,6 +24,7 @@ import javax.inject.Inject
@HiltViewModel
class HomeViewModel @Inject constructor(
private val navigationManager: NavigationManager,
private val activitySignals: ActivitySignals,
cgmRepository: CGMRepository,
cscRepository: CSCRepository,
hrsRepository: HRSRepository,
@@ -62,6 +65,10 @@ class HomeViewModel @Inject constructor(
uartRepository.isRunning.onEach {
_state.value = _state.value.copy(isUARTModuleRunning = it)
}.launchIn(viewModelScope)
activitySignals.state.onEach {
_state.value = _state.value.copyWithRefresh()
}.launchIn(viewModelScope)
}
fun openProfile(destination: ProfileDestination) {

View File

@@ -16,10 +16,11 @@
<string name="cgm_module">CGMS</string>
<string name="cgm_module_full">Continuous Glucose</string>
<string name="uart_module">UART</string>
<string name="uart_module_full">Serial port over BLE</string>
<string name="uart_module_full">Universal Asynchronous Receiver/Transmitter (UART)</string>
<string name="dfu_module">DFU</string>
<string name="dfu_module_full">Device Firmware Update</string>
<string name="dfu_module_info">Available in separate application.</string>
<string name="dfu_module_info">Open DFU application.</string>
<string name="dfu_module_install">Download from Google Play.</string>
<string name="viewmodel_profiles">ViewModel profiles</string>
<string name="service_profiles">Service profiles</string>

View File

@@ -39,14 +39,10 @@ internal fun UARTAddConfigurationDialog(onEvent: (UARTViewEvent) -> Unit, onDism
.padding(16.dp)
)
// Spacer(modifier = Modifier.height(16.dp))
NameInput(name, isError)
// Spacer(modifier = Modifier.height(16.dp))
Row(
modifier = Modifier.fillMaxWidth(),
modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp),
horizontalArrangement = Arrangement.End
) {
TextButton(onClick = { onDismiss() }) {
@@ -96,8 +92,6 @@ private fun NameInput(
style = MaterialTheme.typography.labelMedium,
color = MaterialTheme.colorScheme.error
)
Spacer(modifier = Modifier.size(16.dp))
}
}

View File

@@ -22,6 +22,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
@@ -90,6 +91,7 @@ internal fun UARTAddMacroDialog(macro: UARTMacro?, onEvent: (UARTViewEvent) -> U
Image(
painter = painterResource(id = icon.toResId()),
contentDescription = stringResource(id = R.string.uart_macro_icon),
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onPrimary),
modifier = Modifier
.size(40.dp)
.clip(RoundedCornerShape(10.dp))