1
0
Fork 0
mirror of synced 2024-05-17 19:03:08 +12:00
This commit is contained in:
Rafał Mikrut 2023-10-21 15:13:27 +02:00
parent 0c3dd22b0e
commit 0f56ca0187
2 changed files with 38 additions and 34 deletions

View file

@ -2,7 +2,7 @@ use crate::{split_path, CurrentTab, MainWindow};
use chrono::NaiveDateTime;
use czkawka_core::common_tool::CommonData;
use czkawka_core::empty_folder::EmptyFolder;
use slint::{ComponentHandle, ModelRc, SharedString, VecModel};
use slint::{ComponentHandle, ModelRc, SharedString, VecModel, Weak};
use std::path::PathBuf;
use std::rc::Rc;
use std::thread;
@ -16,39 +16,43 @@ pub fn connect_scan_button(app: &MainWindow) {
let a = app.as_weak();
match active_tab {
CurrentTab::EmptyFolders => {
thread::spawn(move || {
let mut ef = EmptyFolder::new();
ef.set_included_directory(vec![PathBuf::from("/home/rafal/Desktop")]);
ef.find_empty_folders(None, None);
ef.get_empty_folder_list();
let mut vector = ef.get_empty_folder_list().keys().cloned().collect::<Vec<PathBuf>>();
vector.sort_unstable_by_key(|e| {
let t = split_path(e.as_path());
(t.0, t.1)
});
a.upgrade_in_event_loop(move |app| {
let mut folder_map = ef.get_empty_folder_list();
let items = Rc::new(VecModel::default());
for path in vector {
let (directory, file) = split_path(&path);
let data_model = VecModel::from_slice(&[
SharedString::from(file),
SharedString::from(directory),
SharedString::from(NaiveDateTime::from_timestamp_opt(folder_map[&path].modified_date as i64, 0).unwrap().to_string()),
]);
items.push((false, false, false, ModelRc::new(data_model)));
}
app.set_empty_folder_model(items.into());
app.set_scanning(false);
})
});
scan_empty_folders(a);
}
_ => panic!(),
}
});
}
fn scan_empty_folders(a: Weak<MainWindow>) {
thread::spawn(move || {
let mut ef = EmptyFolder::new();
ef.set_included_directory(vec![PathBuf::from("/home/rafal/Desktop")]);
ef.find_empty_folders(None, None);
ef.get_empty_folder_list();
let mut vector = ef.get_empty_folder_list().keys().cloned().collect::<Vec<PathBuf>>();
vector.sort_unstable_by_key(|e| {
let t = split_path(e.as_path());
(t.0, t.1)
});
a.upgrade_in_event_loop(move |app| {
let mut folder_map = ef.get_empty_folder_list();
let items = Rc::new(VecModel::default());
for path in vector {
let (directory, file) = split_path(&path);
let data_model = VecModel::from_slice(&[
SharedString::from(file),
SharedString::from(directory),
SharedString::from(NaiveDateTime::from_timestamp_opt(folder_map[&path].modified_date as i64, 0).unwrap().to_string()),
]);
items.push((false, false, false, ModelRc::new(data_model)));
}
app.set_empty_folder_model(items.into());
app.set_scanning(false);
})
});
}

View file

@ -24,9 +24,9 @@ fn main() {
items.push(slint::format!("Item {r}.{c}").into());
}
row_data.push((r % 4 == 0, r % 3 == 0, r % 2 == 0, ModelRc::new(items)));
row_data.push((r % 2 == 0, false, true, ModelRc::new(items)));
}
// app.set_empty_folder_model(row_data.into());
app.set_empty_folder_model(row_data.into());
connect_delete_button(&app);
connect_scan_button(&app);