More fixes for SettingsScreen.kt and its states

This commit is contained in:
Arty Bishop committed 2025-12-27 15:01:33 +00:00
1 parent 466c029be6
commit 6572dd4eab
5 files changed
+181 -230

No files matched your search

@@ -82,13 +82,17 @@ fun MapScreen(viewModel: MapViewModel = hiltViewModel()) {
} }
private fun setStationPosition(stationPos: GeoPos, mapView: MapView) { private fun setStationPosition(stationPos: GeoPos, mapView: MapView) {
Marker(mapView).apply { try {
setInfoWindow(null) Marker(mapView).apply {
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM) setInfoWindow(null)
icon = ContextCompat.getDrawable(mapView.context, R.drawable.ic_position) setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM)
position = GeoPoint(stationPos.lat, stationPos.lon) icon = ContextCompat.getDrawable(mapView.context, R.drawable.ic_position)
mapView.overlays[0] = this position = GeoPoint(stationPos.lat, stationPos.lon)
mapView.invalidate() mapView.overlays[0] = this
mapView.invalidate()
}
} catch (exception: Exception) {
Timber.d(exception)
} }
} }
@@ -97,20 +101,24 @@ private fun setPositions(
) { ) {
val markers = FolderOverlay() val markers = FolderOverlay()
posMap.entries.forEach { posMap.entries.forEach {
Marker(mapView).apply { try {
setInfoWindow(null) Marker(mapView).apply {
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER) setInfoWindow(null)
icon = getCustomTextIcon(it.key.data.name, mapView) setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER)
try { icon = getCustomTextIcon(it.key.data.name, mapView)
position = GeoPoint(it.value.lat, it.value.lon) try {
} catch (exception: IllegalArgumentException) { position = GeoPoint(it.value.lat, it.value.lon)
println(exception.stackTraceToString()) } catch (exception: IllegalArgumentException) {
println(exception.stackTraceToString())
}
setOnMarkerClickListener { _, _ ->
action(it.key)
return@setOnMarkerClickListener true
}
markers.add(this)
} }
setOnMarkerClickListener { _, _ -> } catch (exception: Exception) {
action(it.key) Timber.d(exception)
return@setOnMarkerClickListener true
}
markers.add(this)
} }
} }
mapView.overlays[3] = markers mapView.overlays[3] = markers
@@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@@ -25,7 +24,6 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController import androidx.navigation.NavController
import com.rtbishop.look4sat.BuildConfig import com.rtbishop.look4sat.BuildConfig
import com.rtbishop.look4sat.R import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.domain.model.OtherSettings
import com.rtbishop.look4sat.presentation.CardButton import com.rtbishop.look4sat.presentation.CardButton
import com.rtbishop.look4sat.presentation.MainTheme import com.rtbishop.look4sat.presentation.MainTheme
import com.rtbishop.look4sat.presentation.gotoUrl import com.rtbishop.look4sat.presentation.gotoUrl
@@ -50,7 +48,7 @@ fun SettingsScreen(navController: NavController) {
else -> Manifest.permission.BLUETOOTH_CONNECT else -> Manifest.permission.BLUETOOTH_CONNECT
} }
val bluetoothRequest = rememberLauncherForActivityResult(bluetoothContract) { isGranted -> val bluetoothRequest = rememberLauncherForActivityResult(bluetoothContract) { isGranted ->
viewModel.setBTEnabled(isGranted) // viewModel.setBTEnabled(isGranted)
if (!isGranted) showToast(context, bluetoothError) if (!isGranted) showToast(context, bluetoothError)
} }
val locationContract = ActivityResultContracts.RequestMultiplePermissions() val locationContract = ActivityResultContracts.RequestMultiplePermissions()
@@ -59,51 +57,43 @@ fun SettingsScreen(navController: NavController) {
val locationPermFine = Manifest.permission.ACCESS_FINE_LOCATION val locationPermFine = Manifest.permission.ACCESS_FINE_LOCATION
val locationRequest = rememberLauncherForActivityResult(locationContract) { permissions -> val locationRequest = rememberLauncherForActivityResult(locationContract) { permissions ->
when { when {
permissions[locationPermFine] == true -> viewModel.setPositionFromGps() permissions[locationPermFine] == true -> viewModel.locationSettings.value.setGpsLoc
permissions[locationPermCoarse] == true -> viewModel.setPositionFromNet() permissions[locationPermCoarse] == true -> viewModel.locationSettings.value.setGpsLoc
else -> showToast(context, locationError) else -> showToast(context, locationError)
} }
} }
val contentContract = ActivityResultContracts.GetContent() val contentContract = ActivityResultContracts.GetContent()
val contentRequest = rememberLauncherForActivityResult(contentContract) { uri -> val contentRequest = rememberLauncherForActivityResult(contentContract) { uri ->
uri?.let { viewModel.updateFromFile(uri.toString()) } uri?.let { viewModel.dataSettings.value.updateFromFile(uri.toString()) }
} }
// Location settings // Location settings
val locSettings = viewModel.locationSettings.value
val setGpsLoc = { locationRequest.launch(arrayOf(locationPermCoarse, locationPermFine)) } val setGpsLoc = { locationRequest.launch(arrayOf(locationPermCoarse, locationPermFine)) }
val geoPos = viewModel.getStationPosition()
val showPosDialog = rememberSaveable { mutableStateOf(false) } val showPosDialog = rememberSaveable { mutableStateOf(false) }
val togglePosDialog = { showPosDialog.value = showPosDialog.value.not() } val togglePosDialog = { showPosDialog.value = showPosDialog.value.not() }
val savePos = { lat: Double, lon: Double -> viewModel.setStationPosition(lat, lon) }
if (showPosDialog.value) { if (showPosDialog.value) {
PositionDialog(lat = geoPos.lat, lon = geoPos.lon, hide = togglePosDialog, save = savePos) PositionDialog(
locSettings.getLatitude,
locSettings.getLongitude,
togglePosDialog,
locSettings.setManualLoc
)
} }
val qthLocator = viewModel.getStationLocator()
val showLocDialog = rememberSaveable { mutableStateOf(false) } val showLocDialog = rememberSaveable { mutableStateOf(false) }
val toggleLocDialog = { showLocDialog.value = showLocDialog.value.not() } val toggleLocDialog = { showLocDialog.value = showLocDialog.value.not() }
val saveLocator = { locator: String -> viewModel.setPositionFromQth(locator) }
if (showLocDialog.value) { if (showLocDialog.value) {
LocatorDialog(qthLocator = qthLocator, hide = toggleLocDialog, save = saveLocator) LocatorDialog(locSettings.getLocator, toggleLocDialog, locSettings.setQthLoc)
} }
// Data settings
val updateFromWeb = { viewModel.updateFromWeb() }
val updateFromFile = { contentRequest.launch("*/*") }
val clearAllData = { viewModel.clearAllData() }
// Other settings
val otherSettings = viewModel.otherSettings.collectAsState()
val setUtc = { value: Boolean -> viewModel.setUtcState(value) }
val setUpdate = { value: Boolean -> viewModel.setUpdateState(value) }
val setSweep = { value: Boolean -> viewModel.setSweepState(value) }
val setSensor = { value: Boolean -> viewModel.setSensorState(value) }
// Screen setup // Screen setup
LazyColumn( LazyColumn(
modifier = Modifier.padding(6.dp), verticalArrangement = Arrangement.spacedBy(6.dp) modifier = Modifier.padding(6.dp), verticalArrangement = Arrangement.spacedBy(6.dp)
) { ) {
item { CardAbout(BuildConfig.VERSION_NAME) } item { CardAbout(BuildConfig.VERSION_NAME) }
item { LocationCard(setGpsLoc, togglePosDialog, toggleLocDialog) } item { LocationCard(locSettings, setGpsLoc, togglePosDialog, toggleLocDialog) }
item { DataCard(updateFromWeb, updateFromFile, clearAllData) } item { DataCard(viewModel.dataSettings.value) { contentRequest.launch("*/*") } }
item { OtherCard(otherSettings.value, setUtc, setUpdate, setSweep, setSensor) } item { OtherCard(viewModel.otherSettings.value) }
item { CardCredits() } item { CardCredits() }
} }
} }
@@ -164,36 +154,33 @@ private fun CardAbout(version: String, modifier: Modifier = Modifier) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun LocationCardPreview() { private fun LocationCardPreview() {
MainTheme { LocationCard({}, {}, {}) } MainTheme { }
} }
@Composable @Composable
private fun LocationCard( private fun LocationCard(
setGpsLoc: () -> Unit, togglePosDialog: () -> Unit, toggleLocDialog: () -> Unit settings: LocationSettings,
setGpsLoc: () -> Unit,
togglePosDialog: () -> Unit,
toggleLocDialog: () -> Unit
) { ) {
val context = LocalContext.current
// setPositionText(viewModel.getStationPosition())
ElevatedCard(modifier = Modifier.fillMaxWidth()) { ElevatedCard(modifier = Modifier.fillMaxWidth()) {
Column(modifier = Modifier.padding(4.dp)) { Column(modifier = Modifier.padding(4.dp)) {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
Text(text = "Station position") Text(text = "Station position")
LinearProgressIndicator( UpdateIndicator(isUpdating = settings.getUpdating, Modifier.weight(1f))
modifier = Modifier
.weight(1f)
.padding(start = 6.dp, end = 6.dp)
)
} }
Row( Row(
horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth() horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = "Updated: 3 Mar 2023 - 15:51") Text(text = "Updated: ${settings.getLastUpdated}")
Text(text = "QTH: IO91vl") Text(text = "QTH: ${settings.getLocator}")
} }
Row( Row(
horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth() horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = "Latitude: *") Text(text = "Latitude: ${settings.getLatitude}")
Text(text = "Longitude: *") Text(text = "Longitude: ${settings.getLongitude}")
} }
Row(horizontalArrangement = Arrangement.SpaceEvenly) { Row(horizontalArrangement = Arrangement.SpaceEvenly) {
CardButton( CardButton(
@@ -216,48 +203,40 @@ private fun LocationCard(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DataCardPreview() { private fun DataCardPreview() {
MainTheme { DataCard({}, {}, {}) } MainTheme { }
} }
@Composable @Composable
private fun DataCard(updateOnline: () -> Unit, updateFile: () -> Unit, clearData: () -> Unit) { private fun DataCard(settings: DataSettings, updateFromFile: () -> Unit) {
val context = LocalContext.current
// setUpdateTime(viewModel.getLastUpdateTime())
// viewModel.entriesTotal
// viewModel.radiosTotal
ElevatedCard(modifier = Modifier.fillMaxWidth()) { ElevatedCard(modifier = Modifier.fillMaxWidth()) {
Column(modifier = Modifier.padding(4.dp)) { Column(modifier = Modifier.padding(4.dp)) {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
Text(text = "Satellite data") Text(text = "Satellite data")
LinearProgressIndicator( UpdateIndicator(isUpdating = settings.getUpdating, Modifier.weight(1f))
modifier = Modifier
.weight(1f)
.padding(start = 6.dp, end = 6.dp)
)
} }
Row( Row(
horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth() horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = "Updated: 3 Mar 2023 - 15:51") Text(text = "Updated: ${settings.getLastUpdated}")
Text(text = "") Text(text = "")
} }
Row( Row(
horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth() horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = "Satellites: 7749") Text(text = "Satellites: ${settings.getSatellites}")
Text(text = "Transceivers: 2240") Text(text = "Transceivers: ${settings.getRadios}")
} }
Row(horizontalArrangement = Arrangement.SpaceEvenly) { Row(horizontalArrangement = Arrangement.SpaceEvenly) {
CardButton( CardButton(
onClick = updateOnline, // viewModel.updateFromWeb() onClick = settings.updateFromWeb, // viewModel.updateFromWeb()
text = stringResource(id = R.string.btn_web), modifier = Modifier.weight(1f) text = stringResource(id = R.string.btn_web), modifier = Modifier.weight(1f)
) )
CardButton( CardButton(
onClick = updateFile, // contentRequest.launch("*/*") onClick = updateFromFile, // contentRequest.launch("*/*")
text = stringResource(id = R.string.btn_file), modifier = Modifier.weight(1f) text = stringResource(id = R.string.btn_file), modifier = Modifier.weight(1f)
) )
CardButton( CardButton(
onClick = clearData, // viewModel.clearAllData() onClick = settings.clearAllData, // viewModel.clearAllData()
text = stringResource(id = R.string.btn_clear), modifier = Modifier.weight(1f) text = stringResource(id = R.string.btn_clear), modifier = Modifier.weight(1f)
) )
} }
@@ -317,13 +296,7 @@ private fun OtherCardPreview() {
} }
@Composable @Composable
private fun OtherCard( private fun OtherCard(settings: OtherSettings) {
settings: OtherSettings,
setUtc: (Boolean) -> Unit,
setUpdate: (Boolean) -> Unit,
setSweep: (Boolean) -> Unit,
setSensor: (Boolean) -> Unit
) {
ElevatedCard(modifier = Modifier.fillMaxWidth()) { ElevatedCard(modifier = Modifier.fillMaxWidth()) {
Column(modifier = Modifier.padding(4.dp)) { Column(modifier = Modifier.padding(4.dp)) {
Text(text = stringResource(id = R.string.other_title)) Text(text = stringResource(id = R.string.other_title))
@@ -333,7 +306,7 @@ private fun OtherCard(
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = stringResource(id = R.string.other_switch_utc)) Text(text = stringResource(id = R.string.other_switch_utc))
Switch(checked = settings.isUtcEnabled, onCheckedChange = { setUtc(it) }) Switch(checked = settings.getUtc, onCheckedChange = { settings.setUtc(it) })
} // viewModel.setUseUTC(isChecked) } // viewModel.setUseUTC(isChecked)
Row( Row(
horizontalArrangement = Arrangement.SpaceBetween, horizontalArrangement = Arrangement.SpaceBetween,
@@ -341,7 +314,7 @@ private fun OtherCard(
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = stringResource(id = R.string.other_switch_update)) Text(text = stringResource(id = R.string.other_switch_update))
Switch(checked = settings.isUpdateEnabled, onCheckedChange = { setUpdate(it) }) Switch(checked = settings.getUpdate, onCheckedChange = { settings.setUpdate(it) })
} // AutoUpdateEnabled(isChecked) } // AutoUpdateEnabled(isChecked)
Row( Row(
horizontalArrangement = Arrangement.SpaceBetween, horizontalArrangement = Arrangement.SpaceBetween,
@@ -349,7 +322,7 @@ private fun OtherCard(
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = stringResource(id = R.string.other_switch_sweep)) Text(text = stringResource(id = R.string.other_switch_sweep))
Switch(checked = settings.isSweepEnabled, onCheckedChange = { setSweep(it) }) Switch(checked = settings.getSweep, onCheckedChange = { settings.setSweep(it) })
} // viewModel.setShowSweep(isChecked) } // viewModel.setShowSweep(isChecked)
Row( Row(
horizontalArrangement = Arrangement.SpaceBetween, horizontalArrangement = Arrangement.SpaceBetween,
@@ -357,65 +330,15 @@ private fun OtherCard(
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Text(text = stringResource(id = R.string.other_switch_sensors)) Text(text = stringResource(id = R.string.other_switch_sensors))
Switch(checked = settings.isSensorEnabled, onCheckedChange = { setSensor(it) }) Switch(checked = settings.getSensor, onCheckedChange = { settings.setSensor(it) })
} // viewModel.setUseCompass(isChecked) } // viewModel.setUseCompass(isChecked)
} }
} }
} }
// //
//private fun handleStationPosition(pos: DataState<GeoPos>) {
// when (pos) {
// is DataState.Success -> {
// setPositionText(pos.data)
// binding.settingsLocation.locationProgress.isIndeterminate = false
// viewModel.setPositionHandled()
// showToast(getString(R.string.location_success))
// }
// is DataState.Error -> {
// binding.settingsLocation.locationProgress.isIndeterminate = false
// viewModel.setPositionHandled()
// showToast(pos.message.toString())
// }
// DataState.Loading -> {
// binding.settingsLocation.locationProgress.isIndeterminate = true
// }
// DataState.Handled -> {}
// }
//}
//
//private fun setPositionText(geoPos: GeoPos) {
// binding.run {
// val latFormat = getString(R.string.location_lat)
// val lonFormat = getString(R.string.location_lon)
// settingsLocation.locationLat.text = String.format(latFormat, geoPos.lat)
// settingsLocation.locationLon.text = String.format(lonFormat, geoPos.lon)
// }
//}
//
//private fun handleSatState(state: DataState<Long>) {
// when (state) {
// is DataState.Success -> {
// binding.settingsData.dataProgress.isIndeterminate = false
// setUpdateTime(state.data)
// viewModel.setUpdateHandled()
// if (state.data == 0L) {
// showToast(getString(R.string.data_clear_success)) // showToast(getString(R.string.data_clear_success))
// } else {
// showToast(getString(R.string.data_success)) // showToast(getString(R.string.data_success))
// }
// }
// is DataState.Error -> {
// binding.settingsData.dataProgress.isIndeterminate = false
// viewModel.setUpdateHandled()
// showToast(getString(R.string.data_error))
// }
// is DataState.Loading -> {
// binding.settingsData.dataProgress.isIndeterminate = true
// }
// is DataState.Handled -> {}
// }
//}
// //
//private fun setUpdateTime(updateTime: Long) { //private fun setUpdateTime(updateTime: Long) {
// val updatePattern = getString(R.string.data_update) // val updatePattern = getString(R.string.data_update)
@@ -469,3 +392,10 @@ private fun CardCredits(modifier: Modifier = Modifier) {
} }
} }
} }
@Composable
private fun UpdateIndicator(isUpdating: Boolean, modifier: Modifier = Modifier) = if (isUpdating) {
LinearProgressIndicator(modifier = modifier.padding(start = 6.dp, end = 6.dp))
} else {
LinearProgressIndicator(modifier = modifier.padding(start = 6.dp, end = 6.dp), progress = 0f)
}
@@ -0,0 +1,33 @@
package com.rtbishop.look4sat.presentation.settingsScreen
data class LocationSettings(
val getUpdating: Boolean,
val getLastUpdated: Long,
val getLatitude: Double,
val getLongitude: Double,
val getLocator: String,
val setGpsLoc: () -> Unit,
val setManualLoc: (Double, Double) -> Unit,
val setQthLoc: (String) -> Unit
)
data class DataSettings(
val getUpdating: Boolean,
val getLastUpdated: Long,
val getSatellites: Int,
val getRadios: Int,
val updateFromWeb: () -> Unit,
val updateFromFile: (String) -> Unit,
val clearAllData: () -> Unit
)
data class OtherSettings(
val getUtc: Boolean,
val getUpdate: Boolean,
val getSweep: Boolean,
val getSensor: Boolean,
val setUtc: (Boolean) -> Unit,
val setUpdate: (Boolean) -> Unit,
val setSweep: (Boolean) -> Unit,
val setSensor: (Boolean) -> Unit
)
@@ -17,17 +17,16 @@
*/ */
package com.rtbishop.look4sat.presentation.settingsScreen package com.rtbishop.look4sat.presentation.settingsScreen
import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.rtbishop.look4sat.domain.IDataRepository import com.rtbishop.look4sat.domain.IDataRepository
import com.rtbishop.look4sat.domain.ILocationManager import com.rtbishop.look4sat.domain.ILocationManager
import com.rtbishop.look4sat.domain.ISettingsManager import com.rtbishop.look4sat.domain.ISettingsManager
import com.rtbishop.look4sat.domain.model.DataState import com.rtbishop.look4sat.domain.model.DataState
import com.rtbishop.look4sat.domain.model.OtherSettings
import com.rtbishop.look4sat.domain.predict.GeoPos
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.launch
import kotlinx.coroutines.flow.StateFlow
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
@@ -37,100 +36,89 @@ class SettingsViewModel @Inject constructor(
private val settings: ISettingsManager private val settings: ISettingsManager
) : ViewModel() { ) : ViewModel() {
private val _otherSettings = MutableStateFlow( private val defaultLocationSettings = LocationSettings(false,
OtherSettings( settings.getLastUpdateTime(),
settings.isUtcEnabled(), locationManager.getStationPosition().lat,
settings.isUpdateEnabled(), locationManager.getStationPosition().lon,
settings.isSweepEnabled(), settings.loadStationLocator(),
settings.isSensorEnabled() { locationManager.setPositionFromGps() },
) { lat, lon -> locationManager.setStationPosition(lat, lon) },
) { locationManager.setPositionFromQth(it) })
val otherSettings: StateFlow<OtherSettings> = _otherSettings var locationSettings = mutableStateOf(defaultLocationSettings)
private set
fun setUtcState(value: Boolean) { private val defaultDataSettings = DataSettings(false,
settings.getLastUpdateTime(),
0,
0,
{ repository.updateFromWeb() },
{ repository.updateFromFile(it) },
{ repository.clearAllData() })
var dataSettings = mutableStateOf(defaultDataSettings)
private set
private val defaultOtherSettings = OtherSettings(settings.isUtcEnabled(),
settings.isUpdateEnabled(),
settings.isSweepEnabled(),
settings.isSensorEnabled(),
{ setUtc(it) },
{ setUpdate(it) },
{ setSweep(it) },
{ setSensor(it) })
var otherSettings = mutableStateOf(defaultOtherSettings)
private set
init {
viewModelScope.launch {
repository.updateState.collect {
val isUpdating = it is DataState.Loading
dataSettings.value = dataSettings.value.copy(
getUpdating = isUpdating, getLastUpdated = settings.getLastUpdateTime()
)
}
}
viewModelScope.launch {
combine(repository.getEntriesTotal(), repository.getRadiosTotal()) { sats, radios ->
dataSettings.value =
dataSettings.value.copy(getSatellites = sats, getRadios = radios)
}.collect {
}
}
}
private fun setUtc(value: Boolean) {
settings.setUtcState(value) settings.setUtcState(value)
_otherSettings.value = otherSettings.value.copy(isUtcEnabled = value) otherSettings.value = otherSettings.value.copy(getUtc = value)
} }
fun setUpdateState(value: Boolean) { private fun setUpdate(value: Boolean) {
settings.setUpdateState(value) settings.setUpdateState(value)
_otherSettings.value = otherSettings.value.copy(isUpdateEnabled = value) otherSettings.value = otherSettings.value.copy(getUpdate = value)
} }
fun setSweepState(value: Boolean) { private fun setSweep(value: Boolean) {
settings.setSweepState(value) settings.setSweepState(value)
_otherSettings.value = otherSettings.value.copy(isSweepEnabled = value) otherSettings.value = otherSettings.value.copy(getSweep = value)
} }
fun setSensorState(value: Boolean) { private fun setSensor(value: Boolean) {
settings.setSensorState(value) settings.setSensorState(value)
_otherSettings.value = otherSettings.value.copy(isSensorEnabled = value) otherSettings.value = otherSettings.value.copy(getSensor = value)
} }
val entriesTotal = repository.getEntriesTotal() // fun getRotatorEnabled(): Boolean = settings.getRotatorEnabled()
val radiosTotal = repository.getRadiosTotal() // fun setRotatorEnabled(value: Boolean) = settings.setRotatorEnabled(value)
// fun getRotatorServer(): String = settings.getRotatorServer()
fun updateFromFile(uri: String) = repository.updateFromFile(uri) // fun setRotatorServer(value: String) = settings.setRotatorServer(value)
// fun getRotatorPort(): String = settings.getRotatorPort()
fun updateFromWeb() = repository.updateFromWeb() // fun setRotatorPort(value: String) = settings.setRotatorPort(value)
// fun getBTEnabled(): Boolean = settings.getBTEnabled()
fun clearAllData() = repository.clearAllData() // fun setBTEnabled(value: Boolean) = settings.setBTEnabled(value)
// fun getBTFormat(): String = settings.getBTFormat()
fun getUseUTC(): Boolean = settings.isUtcEnabled() // fun setBTFormat(value: String) = settings.setBTFormat(value)
fun getLastUpdateTime(): Long = settings.getLastUpdateTime()
fun getAutoUpdateEnabled(): Boolean = settings.isUpdateEnabled()
fun getUseCompass(): Boolean = settings.isSensorEnabled()
fun getShowSweep(): Boolean = settings.isSweepEnabled()
fun getRotatorEnabled(): Boolean = settings.getRotatorEnabled()
fun setRotatorEnabled(value: Boolean) = settings.setRotatorEnabled(value)
fun getRotatorServer(): String = settings.getRotatorServer()
fun setRotatorServer(value: String) = settings.setRotatorServer(value)
fun getRotatorPort(): String = settings.getRotatorPort()
fun setRotatorPort(value: String) = settings.setRotatorPort(value)
fun getBTEnabled(): Boolean = settings.getBTEnabled()
fun setBTEnabled(value: Boolean) = settings.setBTEnabled(value)
fun getBTFormat(): String = settings.getBTFormat()
fun setBTFormat(value: String) = settings.setBTFormat(value)
// fun getBTDeviceName(): String = settings.getBTDeviceName() // fun getBTDeviceName(): String = settings.getBTDeviceName()
// fun setBTDeviceName(value: String) = settings.setBTDeviceName(value) // fun setBTDeviceName(value: String) = settings.setBTDeviceName(value)
// fun getBTDeviceAddr(): String = settings.getBTDeviceAddr()
fun getBTDeviceAddr(): String = settings.getBTDeviceAddr() // fun setBTDeviceAddr(value: String) = settings.setBTDeviceAddr(value)
fun setBTDeviceAddr(value: String) = settings.setBTDeviceAddr(value)
fun getDataUpdateState() = repository.updateState
fun setUpdateHandled() = repository.setUpdateStateHandled()
val stationPosition: SharedFlow<DataState<GeoPos>> = locationManager.stationPosition
fun getStationPosition(): GeoPos = locationManager.getStationPosition()
fun getStationLocator(): String = settings.loadStationLocator()
fun setStationPosition(lat: Double, lon: Double) = locationManager.setStationPosition(lat, lon)
fun setPositionFromGps() = locationManager.setPositionFromGps()
fun setPositionFromNet() = locationManager.setPositionFromNet()
fun setPositionFromQth(qthString: String) = locationManager.setPositionFromQth(qthString)
fun setPositionHandled() = locationManager.setPositionHandled()
} }
@@ -1,8 +0,0 @@
package com.rtbishop.look4sat.domain.model
data class OtherSettings(
val isUtcEnabled: Boolean,
val isUpdateEnabled: Boolean,
val isSweepEnabled: Boolean,
val isSensorEnabled: Boolean
)