From 069c0646f43cb6d826f97efac710f7da9ecb8373 Mon Sep 17 00:00:00 2001 From: geeksville Date: Mon, 13 Apr 2020 16:00:48 -0700 Subject: [PATCH] fix autobug with setting channels - for now allow only while device is awake --- .../java/com/geeksville/mesh/ui/ChannelFragment.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt index 0490c9e63..580db8846 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt @@ -18,6 +18,7 @@ import com.geeksville.android.Logging import com.geeksville.android.hideKeyboard import com.geeksville.mesh.R import com.geeksville.mesh.model.UIViewModel +import com.geeksville.mesh.service.MeshService import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.android.synthetic.main.channel_fragment.* @@ -70,7 +71,11 @@ class ChannelFragment : ScreenFragment("Channel"), Logging { qrView.visibility = View.VISIBLE channelNameEdit.visibility = View.VISIBLE channelNameEdit.setText(channel.name) - editableCheckbox.isEnabled = true + + // For now, we only let the user edit/save channels while the radio is awake - because the service + // doesn't cache radioconfig writes. + val connected = model.isConnected.value == MeshService.ConnectionState.CONNECTED + editableCheckbox.isEnabled = connected qrView.setImageBitmap(channel.getChannelQR()) } else { @@ -156,7 +161,12 @@ class ChannelFragment : ScreenFragment("Channel"), Logging { shareChannel() } - model.radioConfig.observe(viewLifecycleOwner, Observer { config -> + model.radioConfig.observe(viewLifecycleOwner, Observer { + setGUIfromModel() + }) + + // If connection state changes, we might need to enable/disable buttons + model.isConnected.observe(viewLifecycleOwner, Observer { setGUIfromModel() }) }