mirror of
https://github.com/aljazceru/Android-nRF-Toolbox.git
synced 2025-12-22 00:44:26 +01:00
Change DFU label depends on DFU app presence.
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user