mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Replaced the types selection dialog with modes selection
This commit is contained in:
1 parent
2d3adfc6a6
commit
f9806d7f7f
24 files changed
+393
-192
No files matched your search
@@ -62,16 +62,9 @@ import com.rtbishop.look4sat.core.presentation.SharedDialog
|
||||
import com.rtbishop.look4sat.core.presentation.ElevationHighColor
|
||||
import com.rtbishop.look4sat.core.presentation.ElevationLowColor
|
||||
import com.rtbishop.look4sat.core.presentation.elevationColor
|
||||
import com.rtbishop.look4sat.core.domain.source.Sources
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
private val allModes = listOf(
|
||||
"AFSK", "AFSK S-Net", "AFSK SALSAT", "AHRPT", "AM", "APT", "BPSK", "BPSK PMT-A3",
|
||||
"CERTO", "CW", "DQPSK", "DSTAR", "DUV", "FFSK", "FM", "FMN", "FSK", "FSK AX.100 Mode 5",
|
||||
"FSK AX.100 Mode 6", "FSK AX.25 G3RUH", "GFSK", "GFSK Rktr", "GMSK", "HRPT", "LoRa",
|
||||
"LRPT", "LSB", "MFSK", "MSK", "MSK AX.100 Mode 5", "MSK AX.100 Mode 6", "OFDM", "OQPSK",
|
||||
"PSK", "PSK31", "PSK63", "QPSK", "QPSK31", "QPSK63", "SSTV", "USB", "WSJT"
|
||||
)
|
||||
|
||||
private val hourSteps = listOf(1, 2, 4, 8, 12, 24, 48, 72, 96, 120, 144, 168, 192, 216, 240)
|
||||
private const val dayMinutes = 24 * 60
|
||||
private const val minuteStep = 15
|
||||
@@ -381,7 +374,7 @@ internal fun RadiosDialog(modes: List<String>, cancel: () -> Unit, accept: (List
|
||||
horizontalArrangement = Arrangement.spacedBy(1.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(1.dp)
|
||||
) {
|
||||
itemsIndexed(allModes) { index, item ->
|
||||
itemsIndexed(Sources.satelliteModes) { index, item ->
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier
|
||||
|
||||
+27
-22
@@ -60,7 +60,7 @@ class PassesViewModel(
|
||||
aosEndMinute = settingsRepo.passesSettings.value.aosEndMinute,
|
||||
invertAosTimeWindow = settingsRepo.passesSettings.value.invertAosTimeWindow,
|
||||
showDeepSpace = settingsRepo.passesSettings.value.showDeepSpace,
|
||||
modes = settingsRepo.passesSettings.value.selectedModes,
|
||||
modes = settingsRepo.selectedSatModes.value,
|
||||
shouldSeeWhatsNew = settingsRepo.otherSettings.value.shouldSeeWhatsNew
|
||||
)
|
||||
)
|
||||
@@ -86,6 +86,11 @@ class PassesViewModel(
|
||||
}
|
||||
}
|
||||
}
|
||||
viewModelScope.launch {
|
||||
settingsRepo.selectedSatModes.collectLatest { modes ->
|
||||
_uiState.update { it.copy(modes = modes) }
|
||||
}
|
||||
}
|
||||
// Main tick loop: reacts to new passes, then ticks every second
|
||||
viewModelScope.launch {
|
||||
satelliteRepo.passes.collectLatest { allPasses ->
|
||||
@@ -127,21 +132,9 @@ class PassesViewModel(
|
||||
aosStartMinute = action.aosStartMinute,
|
||||
aosEndMinute = action.aosEndMinute,
|
||||
invertAosTimeWindow = action.invertAosTimeWindow,
|
||||
showDeepSpace = action.showDeepSpace,
|
||||
modes = _uiState.value.modes
|
||||
)
|
||||
is PassesAction.FilterRadios ->
|
||||
applyFilter(
|
||||
hoursAhead = _uiState.value.hours,
|
||||
minElevation = _uiState.value.elevation,
|
||||
lowElevation = _uiState.value.lowElevation,
|
||||
highElevation = _uiState.value.highElevation,
|
||||
aosStartMinute = _uiState.value.aosStartMinute,
|
||||
aosEndMinute = _uiState.value.aosEndMinute,
|
||||
invertAosTimeWindow = _uiState.value.invertAosTimeWindow,
|
||||
showDeepSpace = _uiState.value.showDeepSpace,
|
||||
modes = action.modes
|
||||
showDeepSpace = action.showDeepSpace
|
||||
)
|
||||
is PassesAction.FilterRadios -> setModesFilter(action.modes)
|
||||
PassesAction.RefreshPasses -> refreshPasses()
|
||||
PassesAction.TogglePassesDialog ->
|
||||
_uiState.update { it.copy(isPassesDialogShown = !it.isPassesDialogShown) }
|
||||
@@ -235,8 +228,7 @@ class PassesViewModel(
|
||||
aosStartMinute: Int,
|
||||
aosEndMinute: Int,
|
||||
invertAosTimeWindow: Boolean,
|
||||
showDeepSpace: Boolean,
|
||||
modes: List<String>
|
||||
showDeepSpace: Boolean
|
||||
) = viewModelScope.launch {
|
||||
settingsRepo.setPassesSettings(
|
||||
PassesSettings(
|
||||
@@ -245,8 +237,7 @@ class PassesViewModel(
|
||||
minElevation,
|
||||
aosStartMinute,
|
||||
aosEndMinute,
|
||||
invertAosTimeWindow,
|
||||
modes
|
||||
invertAosTimeWindow
|
||||
)
|
||||
)
|
||||
settingsRepo.updateOtherSettings { it.copy(lowElevation = lowElevation, highElevation = highElevation) }
|
||||
@@ -259,10 +250,10 @@ class PassesViewModel(
|
||||
aosStartMinute = aosStartMinute,
|
||||
aosEndMinute = aosEndMinute,
|
||||
invertAosTimeWindow = invertAosTimeWindow,
|
||||
showDeepSpace = showDeepSpace,
|
||||
modes = modes
|
||||
showDeepSpace = showDeepSpace
|
||||
)
|
||||
}
|
||||
val modes = settingsRepo.selectedSatModes.value
|
||||
satelliteRepo.calculatePasses(
|
||||
time = System.currentTimeMillis(),
|
||||
hoursAhead = hoursAhead,
|
||||
@@ -274,6 +265,20 @@ class PassesViewModel(
|
||||
)
|
||||
}
|
||||
|
||||
private fun setModesFilter(modes: List<String>) = viewModelScope.launch {
|
||||
settingsRepo.setSelectedSatModes(modes)
|
||||
_uiState.update { it.copy(modes = modes) }
|
||||
satelliteRepo.calculatePasses(
|
||||
time = System.currentTimeMillis(),
|
||||
hoursAhead = _uiState.value.hours,
|
||||
minElevation = _uiState.value.elevation,
|
||||
aosStartMinute = _uiState.value.aosStartMinute,
|
||||
aosEndMinute = _uiState.value.aosEndMinute,
|
||||
invertAosTimeWindow = _uiState.value.invertAosTimeWindow,
|
||||
modes = modes
|
||||
)
|
||||
}
|
||||
|
||||
private fun refreshPasses() = viewModelScope.launch {
|
||||
val settings = settingsRepo.passesSettings.value
|
||||
satelliteRepo.calculatePasses(
|
||||
@@ -283,7 +288,7 @@ class PassesViewModel(
|
||||
aosStartMinute = settings.aosStartMinute,
|
||||
aosEndMinute = settings.aosEndMinute,
|
||||
invertAosTimeWindow = settings.invertAosTimeWindow,
|
||||
modes = settings.selectedModes
|
||||
modes = settingsRepo.selectedSatModes.value
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user