From 460288d99f90e8d9e591809c4f55999566cb435f Mon Sep 17 00:00:00 2001 From: andrekir Date: Tue, 21 Dec 2021 16:28:57 -0300 Subject: [PATCH] add isAlwaysPowered --- .../main/java/com/geeksville/mesh/model/UIState.kt | 11 +++++++++++ .../geeksville/mesh/ui/AdvancedSettingsFragment.kt | 9 +++++++++ app/src/main/res/layout/advanced_settings.xml | 12 ++++++++++++ 3 files changed, 32 insertions(+) diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index 20fdb0e99..66ea6ff1c 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -136,6 +136,17 @@ class UIViewModel(private val app: Application) : AndroidViewModel(app), Logging } } + var isAlwaysPowered: Boolean? + get() = radioConfig.value?.preferences?.isAlwaysPowered + set(value) { + val config = radioConfig.value + if (value != null && config != null) { + val builder = config.toBuilder() + builder.preferencesBuilder.isAlwaysPowered = value + setRadioConfig(builder.build()) + } + } + var region: RadioConfigProtos.RegionCode get() = meshService?.region?.let { RadioConfigProtos.RegionCode.forNumber(it) } ?: RadioConfigProtos.RegionCode.Unset diff --git a/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt index 6b22b7e6a..f3485e999 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt @@ -39,12 +39,14 @@ class AdvancedSettingsFragment : ScreenFragment("Advanced Settings"), Logging { model.radioConfig.observe(viewLifecycleOwner, { _ -> binding.positionBroadcastPeriodEditText.setText(model.positionBroadcastSecs.toString()) binding.lsSleepEditText.setText(model.lsSleepSecs.toString()) + binding.isAlwaysPoweredCheckbox.isChecked = model.isAlwaysPowered?: false }) model.isConnected.observe(viewLifecycleOwner, Observer { connectionState -> val connected = connectionState == MeshService.ConnectionState.CONNECTED binding.positionBroadcastPeriodView.isEnabled = connected binding.lsSleepView.isEnabled = connected + binding.isAlwaysPoweredCheckbox.isEnabled = connected }) binding.positionBroadcastPeriodEditText.on(EditorInfo.IME_ACTION_DONE) { @@ -84,5 +86,12 @@ class AdvancedSettingsFragment : ScreenFragment("Advanced Settings"), Logging { } requireActivity().hideKeyboard() } + + binding.isAlwaysPoweredCheckbox.setOnCheckedChangeListener { view, isChecked -> + if (view.isPressed) { + model.isAlwaysPowered = isChecked + debug("User changed isAlwaysPowered to $isChecked") + } + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/advanced_settings.xml b/app/src/main/res/layout/advanced_settings.xml index 690a745c7..673625c9e 100644 --- a/app/src/main/res/layout/advanced_settings.xml +++ b/app/src/main/res/layout/advanced_settings.xml @@ -47,4 +47,16 @@ android:inputType="number" android:singleLine="true" /> + + + \ No newline at end of file