diff --git a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt
index 1a82c47fd..9b02a1d93 100644
--- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt
+++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt
@@ -29,6 +29,7 @@ import com.geeksville.mesh.MainActivity
import com.geeksville.mesh.R
import com.geeksville.mesh.anonymized
import com.geeksville.mesh.model.UIViewModel
+import com.geeksville.mesh.service.MeshService
import com.geeksville.mesh.service.RadioInterfaceService
import com.geeksville.util.exceptionReporter
import com.google.android.material.dialog.MaterialAlertDialogBuilder
@@ -310,6 +311,11 @@ class SettingsFragment : ScreenFragment("Settings"), Logging {
usernameEditText.setText(name)
})
+ // Only let user edit their name while connected to a radio
+ model.isConnected.observe(viewLifecycleOwner, Observer { connected ->
+ usernameView.isEnabled = connected == MeshService.ConnectionState.CONNECTED
+ })
+
usernameEditText.on(EditorInfo.IME_ACTION_DONE) {
debug("did IME action")
val n = usernameEditText.text.toString().trim()
diff --git a/app/src/main/res/layout/settings_fragment.xml b/app/src/main/res/layout/settings_fragment.xml
index d4cd48e75..82927d756 100644
--- a/app/src/main/res/layout/settings_fragment.xml
+++ b/app/src/main/res/layout/settings_fragment.xml
@@ -20,7 +20,7 @@
app:layout_constraintTop_toBottomOf="@+id/deviceRadioGroup" />
+ app:layout_constraintTop_toBottomOf="@+id/usernameView" />