@@ -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\n older 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 \n Details:\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\n same 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 } \n is { label } .\n \n Details:\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