diff --git a/src/core/database.rs b/src/core/database.rs index a24591b..be5b78c 100644 --- a/src/core/database.rs +++ b/src/core/database.rs @@ -1257,6 +1257,16 @@ impl Database { Ok(()) } + pub fn updatable_count(&self) -> i64 { + self.conn + .query_row( + "SELECT COUNT(*) FROM appimages WHERE latest_version IS NOT NULL", + [], + |row| row.get(0), + ) + .unwrap_or(0) + } + pub fn get_appimages_with_updates(&self) -> SqlResult> { let sql = format!( "SELECT {} FROM appimages WHERE latest_version IS NOT NULL diff --git a/src/window.rs b/src/window.rs index 6e5e4be..bc2e407 100644 --- a/src/window.rs +++ b/src/window.rs @@ -1114,6 +1114,9 @@ impl DriftwoodWindow { } } }); + + // Update badge on Updates tab + self.refresh_update_badge(); } fn trigger_scan(&self) { @@ -1317,6 +1320,19 @@ impl DriftwoodWindow { }); } + /// Update the badge number on the Updates tab in the ViewSwitcherBar. + fn refresh_update_badge(&self) { + let db = self.database(); + let count = db.updatable_count(); + if let Some(view_stack) = self.imp().view_stack.get() { + if let Some(child) = view_stack.child_by_name("updates") { + let page = view_stack.page(&child); + page.set_badge_number(count as u32); + page.set_needs_attention(count > 0); + } + } + } + fn start_file_watcher(&self) { let settings = self.settings(); let dirs: Vec = settings