Header
This commit is contained in:
parent
38553afe93
commit
6a85acf341
|
@ -161,14 +161,14 @@ fn write_duplicate_results(app: &MainWindow, vector: Vec<(Option<DuplicateEntry>
|
|||
for (ref_fe, vec_fe) in vector {
|
||||
if let Some(ref_fe) = ref_fe {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_duplicates(&ref_fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, true);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, Some(true));
|
||||
} else {
|
||||
insert_data_to_model(&items, ModelRc::new(VecModel::default()), ModelRc::new(VecModel::default()), true);
|
||||
insert_data_to_model(&items, ModelRc::new(VecModel::default()), ModelRc::new(VecModel::default()), Some(false));
|
||||
}
|
||||
|
||||
for fe in vec_fe {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_duplicates(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
}
|
||||
app.set_duplicate_files_model(items.into());
|
||||
|
@ -214,7 +214,7 @@ fn write_empty_folders_results(app: &MainWindow, vector: Vec<FolderEntry>, messa
|
|||
let items = Rc::new(VecModel::default());
|
||||
for fe in vector {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_empty_folders(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
app.set_empty_folder_model(items.into());
|
||||
app.invoke_scan_ended(format!("Found {items_found} empty folders").into());
|
||||
|
@ -245,7 +245,12 @@ fn scan_big_files(a: Weak<MainWindow>, progress_sender: Sender<ProgressData>, st
|
|||
let mut vector = finder.get_big_files().clone();
|
||||
let messages = finder.get_text_messages().create_messages_text();
|
||||
|
||||
vector.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
// TODO - if biggest files
|
||||
if true {
|
||||
vector.par_sort_unstable_by_key(|fe| u64::MAX - fe.size);
|
||||
} else {
|
||||
vector.par_sort_unstable_by_key(|fe| fe.size);
|
||||
}
|
||||
|
||||
a.upgrade_in_event_loop(move |app| {
|
||||
write_big_files_results(&app, vector, messages);
|
||||
|
@ -258,7 +263,7 @@ fn write_big_files_results(app: &MainWindow, vector: Vec<FileEntry>, messages: S
|
|||
let items = Rc::new(VecModel::default());
|
||||
for fe in vector {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_big_files(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
app.set_big_files_model(items.into());
|
||||
app.invoke_scan_ended(format!("Found {items_found} files").into());
|
||||
|
@ -304,7 +309,7 @@ fn write_empty_files_results(app: &MainWindow, vector: Vec<FileEntry>, messages:
|
|||
let items = Rc::new(VecModel::default());
|
||||
for fe in vector {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_empty_files(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
app.set_empty_files_model(items.into());
|
||||
app.invoke_scan_ended(format!("Found {items_found} empty files").into());
|
||||
|
@ -379,14 +384,14 @@ fn write_similar_images_results(app: &MainWindow, vector: Vec<(Option<ImagesEntr
|
|||
for (ref_fe, vec_fe) in vector {
|
||||
if let Some(ref_fe) = ref_fe {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_similar_images(&ref_fe, hash_size);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, true);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, Some(true));
|
||||
} else {
|
||||
insert_data_to_model(&items, ModelRc::new(VecModel::default()), ModelRc::new(VecModel::default()), true);
|
||||
insert_data_to_model(&items, ModelRc::new(VecModel::default()), ModelRc::new(VecModel::default()), Some(false));
|
||||
}
|
||||
|
||||
for fe in vec_fe {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_similar_images(&fe, hash_size);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
}
|
||||
app.set_similar_images_model(items.into());
|
||||
|
@ -450,14 +455,14 @@ fn write_similar_videos_results(app: &MainWindow, vector: Vec<(Option<VideosEntr
|
|||
for (ref_fe, vec_fe) in vector {
|
||||
if let Some(ref_fe) = ref_fe {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_similar_videos(&ref_fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, true);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, Some(true));
|
||||
} else {
|
||||
insert_data_to_model(&items, ModelRc::new(VecModel::default()), ModelRc::new(VecModel::default()), true);
|
||||
insert_data_to_model(&items, ModelRc::new(VecModel::default()), ModelRc::new(VecModel::default()), Some(false));
|
||||
}
|
||||
|
||||
for fe in vec_fe {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_similar_videos(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
}
|
||||
app.set_similar_videos_model(items.into());
|
||||
|
@ -517,14 +522,14 @@ fn write_similar_music_results(app: &MainWindow, vector: Vec<(Option<MusicEntry>
|
|||
for (ref_fe, vec_fe) in vector {
|
||||
if let Some(ref_fe) = ref_fe {
|
||||
let (data_model_str, data_model_int) = crate::connect_scan::prepare_data_model_similar_music(&ref_fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, true);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, Some(true));
|
||||
} else {
|
||||
insert_data_to_model(&items, ModelRc::new(VecModel::default()), ModelRc::new(VecModel::default()), true);
|
||||
insert_data_to_model(&items, ModelRc::new(VecModel::default()), ModelRc::new(VecModel::default()), Some(false));
|
||||
}
|
||||
|
||||
for fe in vec_fe {
|
||||
let (data_model_str, data_model_int) = crate::connect_scan::prepare_data_model_similar_music(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
}
|
||||
app.set_similar_music_model(items.into());
|
||||
|
@ -576,7 +581,7 @@ fn write_invalid_symlinks_results(app: &MainWindow, vector: Vec<SymlinksFileEntr
|
|||
let items = Rc::new(VecModel::default());
|
||||
for fe in vector {
|
||||
let (data_model_str, data_model_int) = crate::connect_scan::prepare_data_model_invalid_symlinks(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
app.set_invalid_symlinks_model(items.into());
|
||||
app.invoke_scan_ended(format!("Found {items_found} invalid symlinks").into());
|
||||
|
@ -620,7 +625,7 @@ fn write_temporary_files_results(app: &MainWindow, vector: Vec<TemporaryFileEntr
|
|||
let items = Rc::new(VecModel::default());
|
||||
for fe in vector {
|
||||
let (data_model_str, data_model_int) = crate::connect_scan::prepare_data_model_temporary_files(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
app.set_temporary_files_model(items.into());
|
||||
app.invoke_scan_ended(format!("Found {items_found} files").into());
|
||||
|
@ -663,7 +668,7 @@ fn write_broken_files_results(app: &MainWindow, vector: Vec<BrokenEntry>, messag
|
|||
let items = Rc::new(VecModel::default());
|
||||
for fe in vector {
|
||||
let (data_model_str, data_model_int) = crate::connect_scan::prepare_data_model_broken_files(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
app.set_broken_files_model(items.into());
|
||||
app.invoke_scan_ended(format!("Found {items_found} files").into());
|
||||
|
@ -709,7 +714,7 @@ fn write_bad_extensions_results(app: &MainWindow, vector: Vec<BadFileEntry>, mes
|
|||
let items = Rc::new(VecModel::default());
|
||||
for fe in vector {
|
||||
let (data_model_str, data_model_int) = prepare_data_model_bad_extensions(&fe);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, false);
|
||||
insert_data_to_model(&items, data_model_str, data_model_int, None);
|
||||
}
|
||||
app.set_bad_extensions_model(items.into());
|
||||
app.invoke_scan_ended(format!("Found {items_found} files with bad extensions").into());
|
||||
|
@ -725,10 +730,11 @@ fn prepare_data_model_bad_extensions(fe: &BadFileEntry) -> (ModelRc<SharedString
|
|||
(data_model_str, data_model_int)
|
||||
}
|
||||
////////////////////////////////////////// Common
|
||||
fn insert_data_to_model(items: &Rc<VecModel<MainListModel>>, data_model_str: ModelRc<SharedString>, data_model_int: ModelRc<i32>, header_row: bool) {
|
||||
fn insert_data_to_model(items: &Rc<VecModel<MainListModel>>, data_model_str: ModelRc<SharedString>, data_model_int: ModelRc<i32>, full_header_row: Option<bool>) {
|
||||
let main = MainListModel {
|
||||
checked: false,
|
||||
header_row,
|
||||
header_row: full_header_row.is_some(),
|
||||
full_header_row: full_header_row.unwrap_or(false),
|
||||
selected_row: false,
|
||||
val_str: ModelRc::new(data_model_str),
|
||||
val_int: ModelRc::new(data_model_int),
|
||||
|
|
|
@ -28,6 +28,7 @@ export struct ProgressToSend {
|
|||
export struct MainListModel {
|
||||
checked: bool,
|
||||
header_row: bool,
|
||||
full_header_row: bool,
|
||||
selected_row: bool,
|
||||
val_str: [string],
|
||||
val_int: [int]
|
||||
|
|
|
@ -10,21 +10,21 @@ import {About} from "about.slint";
|
|||
export component MainList {
|
||||
in-out property <[MainListModel]> duplicate_files_model: [];
|
||||
in-out property <[MainListModel]> empty_folder_model: [
|
||||
{checked: false, selected_row: false, header_row: false, val_str: ["kropkarz", "/Xd1", "24.10.2023"], val_int: []} ,
|
||||
{checked: false, selected_row: false, header_row: false, val_str: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []},
|
||||
{checked: true, selected_row: false, header_row: false, val_str: ["lokkaler", "/Xd1/Vide2", "01.23.1911"], val_int: []}
|
||||
{checked: false, selected_row: false, header_row: false, full_header_row: false, val_str: ["kropkarz", "/Xd1", "24.10.2023"], val_int: []} ,
|
||||
{checked: false, selected_row: false, header_row: false, full_header_row: false, val_str: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []},
|
||||
{checked: true, selected_row: false, header_row: false, full_header_row: false, val_str: ["lokkaler", "/Xd1/Vide2", "01.23.1911"], val_int: []}
|
||||
];
|
||||
in-out property <[MainListModel]> big_files_model: [];
|
||||
in-out property <[MainListModel]> empty_files_model: [
|
||||
{checked: false, selected_row: false, header_row: false, val_str: ["kropkarz", "/Xd1", "24.10.2023"], val_int: []} ,
|
||||
{checked: false, selected_row: false, header_row: false, val_str: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []},
|
||||
{checked: true, selected_row: false, header_row: false, val_str: ["lokkaler", "/Xd1/Vide2", "01.23.1911"], val_int: []}
|
||||
{checked: false, selected_row: false, header_row: false, full_header_row: false, val_str: ["kropkarz", "/Xd1", "24.10.2023"], val_int: []} ,
|
||||
{checked: false, selected_row: false, header_row: false, full_header_row: false, val_str: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []},
|
||||
{checked: true, selected_row: false, header_row: false, full_header_row: false, val_str: ["lokkaler", "/Xd1/Vide2", "01.23.1911"], val_int: []}
|
||||
];
|
||||
in-out property <[MainListModel]> temporary_files_model: [];
|
||||
in-out property <[MainListModel]> similar_images_model: [
|
||||
{checked: false, selected_row: false, header_row: true, val_str: ["Original", "500KB", "100x100", "kropkarz", "/Xd1", "24.10.2023"], val_int: []},
|
||||
{checked: false, selected_row: false, header_row: false, val_str: ["Similar", "500KB", "100x100", "witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []},
|
||||
{checked: true, selected_row: false, header_row: false, val_str: ["Similar", "500KB", "100x100", "lokkaler", "/Xd1/Vide2", "01.23.1911"], val_int: []}
|
||||
{checked: false, selected_row: false, header_row: true, full_header_row: false, val_str: ["Original", "500KB", "100x100", "kropkarz", "/Xd1", "24.10.2023"], val_int: []},
|
||||
{checked: false, selected_row: false, header_row: false, full_header_row: false, val_str: ["Similar", "500KB", "100x100", "witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []},
|
||||
{checked: true, selected_row: false, header_row: false, full_header_row: false, val_str: ["Similar", "500KB", "100x100", "lokkaler", "/Xd1/Vide2", "01.23.1911"], val_int: []}
|
||||
];
|
||||
in-out property <[MainListModel]> similar_videos_model: [];
|
||||
in-out property <[MainListModel]> similar_music_model: [];
|
||||
|
|
|
@ -9,10 +9,10 @@ export component SelectableTableView inherits Rectangle {
|
|||
callback item_opened(string);
|
||||
in property <[string]> columns;
|
||||
in-out property <[MainListModel]> values: [
|
||||
{checked: false, selected_row: false, header_row: true, val_str: ["kropkarz", "/Xd1", "24.10.2023"], val_int: []} ,
|
||||
{checked: false, selected_row: false, header_row: false, val_str: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []} ,
|
||||
{checked: false, selected_row: false, header_row: false, val_str: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []} ,
|
||||
{checked: true, selected_row: false, header_row: false, val_str: ["lokkaler", "/Xd1/Vide2", "01.23.1911"], val_int: []}
|
||||
{checked: false, selected_row: false, header_row: true, full_header_row: false, val_str: ["kropkarz", "/Xd1", "24.10.2023"], val_int: []} ,
|
||||
{checked: false, selected_row: false, header_row: false, full_header_row: false, val_str: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []} ,
|
||||
{checked: false, selected_row: false, header_row: false, full_header_row: false, val_str: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"], val_int: []} ,
|
||||
{checked: true, selected_row: false, header_row: false, full_header_row: false, val_str: ["lokkaler", "/Xd1/Vide2", "01.23.1911"], val_int: []}
|
||||
];
|
||||
in-out property <[length]> column_sizes: [30px, 80px, 150px, 160px];
|
||||
private property <int> column_number: column-sizes.length + 1;
|
||||
|
@ -96,11 +96,17 @@ export component SelectableTableView inherits Rectangle {
|
|||
}
|
||||
}
|
||||
double-clicked => {
|
||||
if (r.header_row && !r.full_header_row) {
|
||||
return;
|
||||
}
|
||||
Callabler.item_opened(r.val_str[root.parentPathIdx - 1] + "/" + r.val_str[root.fileNameIdx - 1])
|
||||
}
|
||||
pointer-event(event) => {
|
||||
// TODO this should be clicked by double-click - https://github.com/slint-ui/slint/issues/4235
|
||||
if (event.button == PointerEventButton.right && event.kind == PointerEventKind.up) {
|
||||
if (r.header_row && !r.full_header_row) {
|
||||
return;
|
||||
}
|
||||
Callabler.item_opened(r.val_str[root.parentPathIdx - 1])
|
||||
} else if (event.button == PointerEventButton.left && event.kind == PointerEventKind.up) {
|
||||
clicked_manual();
|
||||
|
|
Loading…
Reference in a new issue