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-05 19:06:47 +13:00
|
|
|
|
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();
|
|
|
|
}
|