mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-14 18:26:11 -04:00
When selecting automatic monitor-mode, check if the user has selected a device address, if not pop up the selection dialog.
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package eu.darken.capod.main.ui.settings.general
|
||||
|
||||
sealed class GeneralSettingsEvents {
|
||||
object SelectDeviceAddressEvent : GeneralSettingsEvents()
|
||||
}
|
||||
@@ -61,6 +61,13 @@ class GeneralSettingsFragment : PreferenceFragment3() {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
vm.events.observe2 {
|
||||
when (it) {
|
||||
GeneralSettingsEvents.SelectDeviceAddressEvent -> mainDeviceAddressPref.performClick()
|
||||
}
|
||||
}
|
||||
|
||||
mainDeviceModelPref.setOnPreferenceClickListener {
|
||||
val dialog = ModelSelectionDialogFactory(requireContext()).create(
|
||||
PodDevice.Model.values().toList(),
|
||||
|
||||
+23
-3
@@ -5,21 +5,41 @@ import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import eu.darken.capod.common.bluetooth.BluetoothManager2
|
||||
import eu.darken.capod.common.coroutine.DispatcherProvider
|
||||
import eu.darken.capod.common.debug.logging.logTag
|
||||
import eu.darken.capod.common.flow.withPrevious
|
||||
import eu.darken.capod.common.livedata.SingleLiveEvent
|
||||
import eu.darken.capod.common.uix.ViewModel3
|
||||
import eu.darken.capod.main.core.GeneralSettings
|
||||
import eu.darken.capod.main.core.MonitorMode
|
||||
import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class GeneralSettingsFragmentVM @Inject constructor(
|
||||
private val handle: SavedStateHandle,
|
||||
private val dispatcherProvider: DispatcherProvider,
|
||||
private val bluetoothManager: BluetoothManager2,
|
||||
@Suppress("unused") private val handle: SavedStateHandle,
|
||||
dispatcherProvider: DispatcherProvider,
|
||||
bluetoothManager: BluetoothManager2,
|
||||
private val generalSettings: GeneralSettings,
|
||||
) : ViewModel3(dispatcherProvider) {
|
||||
|
||||
val bondedDevices = bluetoothManager.bondedDevices()
|
||||
.map { it.toList() }
|
||||
.asLiveData2()
|
||||
|
||||
val events = SingleLiveEvent<GeneralSettingsEvents>()
|
||||
|
||||
init {
|
||||
|
||||
generalSettings.monitorMode.flow
|
||||
.withPrevious()
|
||||
.filter { (old, new) ->
|
||||
old != new && new == MonitorMode.AUTOMATIC && generalSettings.mainDeviceAddress.value == null
|
||||
}
|
||||
.onEach { events.postValue(GeneralSettingsEvents.SelectDeviceAddressEvent) }
|
||||
.launchInViewModel()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val TAG = logTag("Settings", "General", "VM")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user