Skip to content

Commit f96500c

Browse files
OSUpdate app: replace "force update" checkbox with improved button labels
1 parent c73baf9 commit f96500c

File tree

2 files changed

+362
-23
lines changed

2 files changed

+362
-23
lines changed

internal_filesystem/builtin/apps/com.micropythonos.osupdate/assets/osupdate.py

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ class OSUpdate(Activity):
1111
# Widgets:
1212
status_label = None
1313
install_button = None
14-
force_update = None
1514
check_again_button = None
1615
main_screen = None
1716
progress_label = None
@@ -47,10 +46,6 @@ def onCreate(self):
4746
self.current_version_label = lv.label(self.main_screen)
4847
self.current_version_label.align(lv.ALIGN.TOP_LEFT,0,0)
4948
self.current_version_label.set_text(f"Installed OS version: {BuildInfo.version.release}")
50-
self.force_update = lv.checkbox(self.main_screen)
51-
self.force_update.set_text("Force Update")
52-
self.force_update.add_event_cb(lambda *args: self.force_update_clicked(), lv.EVENT.VALUE_CHANGED, None)
53-
self.force_update.align_to(self.current_version_label, lv.ALIGN.OUT_BOTTOM_LEFT, 0, DisplayMetrics.pct_of_height(5))
5449
self.install_button = lv.button(self.main_screen)
5550
self.install_button.align(lv.ALIGN.TOP_RIGHT, 0, 0)
5651
self.install_button.add_state(lv.STATE.DISABLED) # button will be enabled if there is an update available
@@ -71,7 +66,7 @@ def onCreate(self):
7166
check_again_label.center()
7267

7368
self.status_label = lv.label(self.main_screen)
74-
self.status_label.align_to(self.force_update, lv.ALIGN.OUT_BOTTOM_LEFT, 0, DisplayMetrics.pct_of_height(5))
69+
self.status_label.align_to(self.current_version_label, lv.ALIGN.OUT_BOTTOM_LEFT, 0, DisplayMetrics.pct_of_height(5))
7570
self.setContentView(self.main_screen)
7671

7772
def _update_ui_for_state(self):
@@ -215,18 +210,35 @@ async def show_update_info(self):
215210
def handle_update_info(self, version, download_url, changelog):
216211
self.download_update_url = download_url
217212

218-
# Use UpdateChecker to determine if update is available
219-
is_newer = self.update_checker.is_update_available(version, BuildInfo.version.release)
220-
221-
if is_newer:
222-
label = "New"
223-
self.install_button.remove_state(lv.STATE.DISABLED)
213+
# Compare versions to determine button text and state
214+
current_version = BuildInfo.version.release
215+
216+
# AppManager.compare_versions() returns 1 if ver1 > ver2, -1 if ver1 < ver2, 0 if equal
217+
# We need to check three cases: newer, same, or older
218+
is_newer = AppManager.compare_versions(version, current_version)
219+
is_older = AppManager.compare_versions(current_version, version)
220+
221+
# Determine button text based on version comparison
222+
if is_newer > 0:
223+
# Update version > installed OS version
224+
button_text = "Update OS"
225+
label = "newer"
226+
elif is_older > 0:
227+
# Update version < installed OS version
228+
button_text = "Install\nolder version"
229+
label = "older"
224230
else:
225-
label = "No new"
226-
if (self.force_update.get_state() & lv.STATE.CHECKED):
227-
self.install_button.remove_state(lv.STATE.DISABLED)
228-
label += f" version: {version}\n\nDetails:\n\n{changelog}"
229-
self.status_label.set_text(label)
231+
# Update version == installed OS version (neither is newer than the other)
232+
button_text = "Reinstall\nsame version"
233+
label = "the same version"
234+
235+
# Update button text and enable it
236+
install_label = self.install_button.get_child(0)
237+
install_label.set_text(button_text)
238+
install_label.center()
239+
self.install_button.remove_state(lv.STATE.DISABLED)
240+
241+
self.status_label.set_text(f"Available version: {version}\nis {label}.\n\nDetails:\n\n{changelog}")
230242

231243

232244
def install_button_click(self):
@@ -256,12 +268,6 @@ def install_button_click(self):
256268
# Use TaskManager instead of _thread for async download
257269
TaskManager.create_task(self.perform_update())
258270

259-
def force_update_clicked(self):
260-
if self.download_update_url and (self.force_update.get_state() & lv.STATE.CHECKED):
261-
self.install_button.remove_state(lv.STATE.DISABLED)
262-
else:
263-
self.install_button.add_state(lv.STATE.DISABLED)
264-
265271
def check_again_click(self):
266272
"""Handle 'Check Again' button click - retry update check."""
267273
print("OSUpdate: Check Again button clicked")

0 commit comments

Comments
 (0)