Change DFU label depends on DFU app presence.

This commit is contained in:
Sylwester Zieliński
2022-03-31 14:44:55 +02:00
parent 30d7375c6d
commit c599c20696
7 changed files with 62 additions and 3 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
@@ -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

@@ -20,6 +20,7 @@
<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_install">Install from Google Play Store.</string>
<string name="viewmodel_profiles">ViewModel profiles</string>
<string name="service_profiles">Service profiles</string>