1
0
Fork 0
mirror of synced 2024-09-28 07:11:42 +12:00
czkawka/czkawka_slint_gui/src/main.rs

46 lines
1.3 KiB
Rust
Raw Normal View History

2023-10-19 20:32:37 +13:00
use std::rc::Rc;
2023-10-20 08:39:48 +13:00
use slint::{Model, ModelRc, SharedString, VecModel};
2023-10-18 08:31:08 +13:00
slint::include_modules!();
2023-10-20 08:39:48 +13:00
use std::borrow::BorrowMut;
2023-10-18 08:31:08 +13:00
fn main() {
2023-10-19 20:32:37 +13:00
let app = MainWindow::new().unwrap();//.run().unwrap();
2023-10-20 08:39:48 +13:00
let row_data: Rc<VecModel<(bool,bool,ModelRc<SharedString>)>> = Rc::new(VecModel::default());
2023-10-18 04:40:05 +13:00
2023-10-20 08:39:48 +13:00
for r in 0..1000 {
2023-10-19 20:32:37 +13:00
let items = VecModel::default();
for c in 0..3 {
items.push(slint::format!("Item {r}.{c}").into());
}
2023-10-20 08:39:48 +13:00
row_data.push((r % 2 == 0, r% 3 == 0, ModelRc::new(items)));
2023-10-19 20:32:37 +13:00
}
app.set_empty_folder_model(row_data.into());
2023-10-20 08:39:48 +13:00
let a = app.as_weak();
app.on_deleted(move || {
let app = a.upgrade().unwrap();
let mut r = app.get_empty_folder_model();
let m = r.borrow_mut();
let length_before = m.iter().count();
let mut s: Vec<_> = m.iter().filter(|(a,_b,_c)|{
!*a
}).collect();
let length_after = s.len();
if length_before != length_after {
dbg!(format!("Items to remove {}", length_before - length_after));
s.iter_mut().for_each(|(_a, selected_row, _)|{
*selected_row = false;
});
let r = ModelRc::new(VecModel::from(s));
app.set_empty_folder_model(r.into());
}
});
2023-10-19 20:32:37 +13:00
app.run().unwrap();
}