From a84bf4efdc7ec8e0bd477010b63ff9b5e3e74a70 Mon Sep 17 00:00:00 2001 From: Ward from fusion-voyager-3 Date: Sat, 6 Jul 2024 23:31:42 +0300 Subject: [PATCH] make searchbar work --- .idea/workspace.xml | 3 +-- src/apt_update_page/mod.rs | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index b0a230b..73c01a3 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -9,7 +9,6 @@ - diff --git a/src/apt_update_page/mod.rs b/src/apt_update_page/mod.rs index d33f76a..6322820 100644 --- a/src/apt_update_page/mod.rs +++ b/src/apt_update_page/mod.rs @@ -65,8 +65,8 @@ pub fn apt_update_page(window: adw::ApplicationWindow) -> gtk::Box { let searchbar = gtk::SearchEntry::builder() .search_delay(500) + .margin_top(15) .margin_bottom(15) - .margin_start(15) .margin_end(30) .margin_start(30) .build(); @@ -217,6 +217,25 @@ pub fn apt_update_page(window: adw::ApplicationWindow) -> gtk::Box { }), ); + searchbar.connect_search_changed(clone!(@weak searchbar, @weak packages_boxedlist => move |_| { + let mut counter = packages_boxedlist.first_child(); + while let Some(row) = counter { + if row.widget_name() == "AptPackageRow" { + if !searchbar.text().is_empty() { + if row.property::("package-name").to_lowercase().contains(&searchbar.text().to_string().to_lowercase()) { + row.set_property("visible", true); + searchbar.grab_focus(); + } else { + row.set_property("visible", false); + } + } else { + row.set_property("visible", true); + } + } + counter = row.next_sibling(); + } + })); + main_box.append(&searchbar); main_box.append(&packages_viewport);