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 cd4052f49..d50bb145e 100644
--- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt
+++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt
@@ -319,8 +319,11 @@ class SettingsFragment : ScreenFragment("Settings"), Logging {
val info = model.myNodeInfo.value
if (connected == MeshService.ConnectionState.CONNECTED && info != null && info.couldUpdate) {
updateFirmwareButton.visibility = View.VISIBLE
+ updateFirmwareButton.text =
+ getString(R.string.update_to).format(getString(R.string.cur_firmware_version))
} else {
updateFirmwareButton.visibility = View.GONE
+ updateProgressBar.visibility = View.GONE
}
when (connected) {
@@ -338,6 +341,10 @@ class SettingsFragment : ScreenFragment("Settings"), Logging {
updateFirmwareButton.setOnClickListener {
debug("User started firmware update")
+ updateFirmwareButton.isEnabled = false // Disable until things complete
+ updateProgressBar.visibility = View.VISIBLE
+ model.meshService?.startFirmwareUpdate()
+ scanStatusText.text = "Updating firmware, wait up to eight minutes..."
}
usernameEditText.on(EditorInfo.IME_ACTION_DONE) {
diff --git a/app/src/main/res/layout/settings_fragment.xml b/app/src/main/res/layout/settings_fragment.xml
index 32dd30270..a2454e00f 100644
--- a/app/src/main/res/layout/settings_fragment.xml
+++ b/app/src/main/res/layout/settings_fragment.xml
@@ -126,5 +126,15 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/scanStatusText" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8e5d67443..0976c025a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -58,4 +58,5 @@
Connected to radio (%s)
Not connected, select radio below
Connected to radio, but it is sleeping
+ Update to %s