66 lines
2.1 KiB
Rust
66 lines
2.1 KiB
Rust
mod common;
|
|
mod connect_delete;
|
|
mod connect_open;
|
|
mod connect_progress_receiver;
|
|
mod connect_scan;
|
|
mod connect_stop;
|
|
|
|
use crossbeam_channel::{unbounded, Receiver, Sender};
|
|
use std::path::Path;
|
|
use std::rc::Rc;
|
|
|
|
use crate::connect_delete::connect_delete_button;
|
|
use crate::connect_open::connect_open_items;
|
|
use crate::connect_scan::connect_scan_button;
|
|
|
|
use crate::common::ModelType;
|
|
use crate::connect_progress_receiver::connect_progress_gathering;
|
|
use crate::connect_stop::connect_stop_button;
|
|
use czkawka_core::common_dir_traversal::ProgressData;
|
|
use slint::{ModelRc, VecModel};
|
|
|
|
slint::include_modules!();
|
|
fn main() {
|
|
handsome_logger::init().unwrap();
|
|
|
|
let app = MainWindow::new().unwrap(); //.run().unwrap();
|
|
|
|
let (progress_sender, progress_receiver): (Sender<ProgressData>, Receiver<ProgressData>) = unbounded();
|
|
let (stop_sender, stop_receiver): (Sender<()>, Receiver<()>) = unbounded();
|
|
// Fills model at start, don't really needed too much after testing
|
|
to_remove_debug(&app);
|
|
|
|
connect_delete_button(&app);
|
|
connect_scan_button(&app, progress_sender, stop_receiver);
|
|
connect_stop_button(&app, stop_sender);
|
|
connect_open_items(&app);
|
|
connect_progress_gathering(&app, progress_receiver);
|
|
|
|
app.run().unwrap();
|
|
}
|
|
|
|
// TODO remove this after trying
|
|
pub fn to_remove_debug(app: &MainWindow) {
|
|
let row_data: Rc<VecModel<ModelType>> = Rc::new(VecModel::default());
|
|
for r in 0..100_000 {
|
|
let items = VecModel::default();
|
|
|
|
for c in 0..3 {
|
|
items.push(slint::format!("Item {r}.{c}"));
|
|
}
|
|
|
|
let is_header = r % 3 == 0;
|
|
let is_checked = (r % 2 == 0) && !is_header;
|
|
row_data.push((is_checked, is_header, false, ModelRc::new(items)));
|
|
}
|
|
app.set_empty_folder_model(row_data.into());
|
|
}
|
|
|
|
pub fn split_path(path: &Path) -> (String, String) {
|
|
match (path.parent(), path.file_name()) {
|
|
(Some(dir), Some(file)) => (dir.display().to_string(), file.to_string_lossy().into_owned()),
|
|
(Some(dir), None) => (dir.display().to_string(), String::new()),
|
|
(None, _) => (String::new(), String::new()),
|
|
}
|
|
}
|