Done
This commit is contained in:
parent
7e49bc6d33
commit
28111121aa
|
@ -122,7 +122,6 @@ impl Directories {
|
|||
}
|
||||
|
||||
// Try to canonicalize them
|
||||
|
||||
if cfg!(windows) {
|
||||
// Only canonicalize if it's not a network path
|
||||
// This can be check by checking if path starts with \\?\UNC\
|
||||
|
|
|
@ -310,7 +310,7 @@ impl PrintResults for EmptyFolder {
|
|||
writeln!(writer, "--------------------------Empty folder list--------------------------")?;
|
||||
writeln!(writer, "Found {} empty folders", self.information.number_of_empty_folders)?;
|
||||
let mut empty_folder_list = self.empty_folder_list.keys().collect::<Vec<_>>();
|
||||
empty_folder_list.sort_unstable();
|
||||
empty_folder_list.par_sort_unstable();
|
||||
for name in empty_folder_list {
|
||||
writeln!(writer, "{name}")?;
|
||||
}
|
||||
|
|
|
@ -12,12 +12,13 @@ repository = "https://github.com/qarmin/czkawka"
|
|||
[dependencies]
|
||||
gdk4 = "0.7"
|
||||
glib = "0.18"
|
||||
gtk4 = { version = "0.7", default-features = false, features = ["v4_6"] }
|
||||
|
||||
humansize = "2.1"
|
||||
chrono = "0.4.31"
|
||||
|
||||
# Used for sending stop signal across threads
|
||||
crossbeam-channel = "0.5.8"
|
||||
crossbeam-channel = "0.5"
|
||||
|
||||
# For saving/loading config files to specific directories
|
||||
directories-next = "2.0"
|
||||
|
@ -49,9 +50,9 @@ once_cell = "1.19"
|
|||
log = "0.4.20"
|
||||
handsome_logger = "0.8"
|
||||
fun_time = { version = "0.3", features = ["log"] }
|
||||
rayon = "1.8"
|
||||
|
||||
czkawka_core = { path = "../czkawka_core", version = "6.1.0", features = [] }
|
||||
gtk4 = { version = "0.7", default-features = false, features = ["v4_6"] }
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
winapi = { version = "0.3.9", features = ["combaseapi", "objbase", "shobjidl_core", "windef", "winerror", "wtypesbase", "winuser"] }
|
||||
|
|
|
@ -8,6 +8,7 @@ use glib::Receiver;
|
|||
use gtk4::prelude::*;
|
||||
use gtk4::{Entry, ListStore, TextView, TreeView, Widget};
|
||||
use humansize::{format_size, BINARY};
|
||||
use rayon::prelude::*;
|
||||
|
||||
use czkawka_core::bad_extensions::BadExtensions;
|
||||
use czkawka_core::big_file::BigFile;
|
||||
|
@ -265,7 +266,7 @@ fn computer_bad_extensions(
|
|||
|
||||
// Sort
|
||||
let mut vector = vector.clone();
|
||||
vector.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vector.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
|
||||
for file_entry in vector {
|
||||
let (directory, file) = split_path(&file_entry.path);
|
||||
|
@ -337,7 +338,7 @@ fn computer_broken_files(
|
|||
|
||||
// Sort
|
||||
let mut vector = vector.clone();
|
||||
vector.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vector.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
|
||||
for file_entry in vector {
|
||||
let (directory, file) = split_path(&file_entry.path);
|
||||
|
@ -500,7 +501,7 @@ fn computer_same_music(
|
|||
// Sort
|
||||
let vec_file_entry = if vec_file_entry.len() >= 2 {
|
||||
let mut vec_file_entry = vec_file_entry.clone();
|
||||
vec_file_entry.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vec_file_entry.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vec_file_entry
|
||||
} else {
|
||||
vec_file_entry.clone()
|
||||
|
@ -552,7 +553,7 @@ fn computer_same_music(
|
|||
// Sort
|
||||
let vec_file_entry = if vec_file_entry.len() >= 2 {
|
||||
let mut vec_file_entry = vec_file_entry.clone();
|
||||
vec_file_entry.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vec_file_entry.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vec_file_entry
|
||||
} else {
|
||||
vec_file_entry.clone()
|
||||
|
@ -658,7 +659,7 @@ fn computer_similar_videos(
|
|||
// Sort
|
||||
let vec_file_entry = if vec_file_entry.len() >= 2 {
|
||||
let mut vec_file_entry = vec_file_entry.clone();
|
||||
vec_file_entry.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vec_file_entry.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vec_file_entry
|
||||
} else {
|
||||
vec_file_entry.clone()
|
||||
|
@ -677,7 +678,7 @@ fn computer_similar_videos(
|
|||
// Sort
|
||||
let vec_file_entry = if vec_file_entry.len() >= 2 {
|
||||
let mut vec_file_entry = vec_file_entry.clone();
|
||||
vec_file_entry.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vec_file_entry.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vec_file_entry
|
||||
} else {
|
||||
vec_file_entry.clone()
|
||||
|
@ -756,7 +757,7 @@ fn computer_similar_images(
|
|||
let vec_file_entry = if vec_file_entry.len() >= 2 {
|
||||
let mut vec_file_entry = vec_file_entry.clone();
|
||||
// Use comparison by similarity, because it is more important that path here
|
||||
vec_file_entry.sort_unstable_by_key(|e| e.similarity);
|
||||
vec_file_entry.par_sort_unstable_by_key(|e| e.similarity);
|
||||
vec_file_entry
|
||||
} else {
|
||||
vec_file_entry.clone()
|
||||
|
@ -799,7 +800,7 @@ fn computer_similar_images(
|
|||
let vec_file_entry = if vec_file_entry.len() >= 2 {
|
||||
let mut vec_file_entry = vec_file_entry.clone();
|
||||
// Use comparison by similarity, because it is more important that path here
|
||||
vec_file_entry.sort_unstable_by_key(|e| e.similarity);
|
||||
vec_file_entry.par_sort_unstable_by_key(|e| e.similarity);
|
||||
vec_file_entry
|
||||
} else {
|
||||
vec_file_entry.clone()
|
||||
|
@ -877,7 +878,7 @@ fn computer_temporary_files(
|
|||
|
||||
// Sort // TODO maybe simplify this via common file entry
|
||||
let mut vector = vector.clone();
|
||||
vector.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vector.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
|
||||
for file_entry in vector {
|
||||
let (directory, file) = split_path(&file_entry.path);
|
||||
|
@ -1081,7 +1082,7 @@ fn computer_empty_folders(
|
|||
let hashmap = ef.get_empty_folder_list();
|
||||
let mut vector = hashmap.values().collect::<Vec<_>>();
|
||||
|
||||
vector.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vector.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
|
||||
for fe in vector {
|
||||
let (directory, file) = split_path(&fe.path);
|
||||
|
@ -1329,10 +1330,11 @@ fn computer_duplicate_finder(
|
|||
fn vector_sort_unstable_entry_by_path<T>(vector: &[T]) -> Vec<T>
|
||||
where
|
||||
T: ResultEntry + Clone,
|
||||
T: std::marker::Send,
|
||||
{
|
||||
if vector.len() >= 2 {
|
||||
let mut vector = vector.to_vec();
|
||||
vector.sort_unstable_by(|a, b| split_path_compare(a.get_path(), b.get_path()));
|
||||
vector.par_sort_unstable_by(|a, b| split_path_compare(a.get_path(), b.get_path()));
|
||||
vector
|
||||
} else {
|
||||
vector.to_vec()
|
||||
|
@ -1342,9 +1344,10 @@ where
|
|||
fn vector_sort_simple_unstable_entry_by_path<T>(vector: &[T]) -> Vec<T>
|
||||
where
|
||||
T: ResultEntry + Clone,
|
||||
T: std::marker::Send,
|
||||
{
|
||||
let mut vector = vector.to_vec();
|
||||
vector.sort_unstable_by(|a, b| split_path_compare(a.get_path(), b.get_path()));
|
||||
vector.par_sort_unstable_by(|a, b| split_path_compare(a.get_path(), b.get_path()));
|
||||
vector
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ rand = "0.8"
|
|||
czkawka_core = { version = "6.1.0", path = "../czkawka_core" }
|
||||
chrono = "0.4.31"
|
||||
open = "5.0"
|
||||
crossbeam-channel = "0.5.8"
|
||||
crossbeam-channel = "0.5"
|
||||
handsome_logger = "0.8"
|
||||
rfd = { version = "0.12", default-features = false, features = ["xdg-portal"] }
|
||||
home = "0.5"
|
||||
|
|
|
@ -11,6 +11,7 @@ use czkawka_core::empty_folder::{EmptyFolder, FolderEntry};
|
|||
use czkawka_core::similar_images;
|
||||
use czkawka_core::similar_images::SimilarImages;
|
||||
use humansize::{format_size, BINARY};
|
||||
use rayon::prelude::*;
|
||||
use slint::{ComponentHandle, ModelRc, SharedString, VecModel, Weak};
|
||||
use std::rc::Rc;
|
||||
use std::thread;
|
||||
|
@ -74,7 +75,7 @@ fn scan_similar_images(a: Weak<MainWindow>, progress_sender: Sender<ProgressData
|
|||
let messages = finder.get_text_messages().create_messages_text();
|
||||
|
||||
for vec_fe in &mut vector {
|
||||
vec_fe.sort_unstable_by_key(|e| e.similarity);
|
||||
vec_fe.par_sort_unstable_by_key(|e| e.similarity);
|
||||
}
|
||||
|
||||
let hash_size = custom_settings.similar_images_sub_hash_size;
|
||||
|
@ -120,7 +121,7 @@ fn scan_empty_files(a: Weak<MainWindow>, progress_sender: Sender<ProgressData>,
|
|||
let mut vector = finder.get_empty_files().clone();
|
||||
let messages = finder.get_text_messages().create_messages_text();
|
||||
|
||||
vector.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vector.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
|
||||
a.upgrade_in_event_loop(move |app| {
|
||||
write_empty_files_results(&app, vector, messages);
|
||||
|
@ -157,7 +158,7 @@ fn scan_empty_folders(a: Weak<MainWindow>, progress_sender: Sender<ProgressData>
|
|||
let mut vector = finder.get_empty_folder_list().values().cloned().collect::<Vec<_>>();
|
||||
let messages = finder.get_text_messages().create_messages_text();
|
||||
|
||||
vector.sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
vector.par_sort_unstable_by(|a, b| split_path_compare(a.path.as_path(), b.path.as_path()));
|
||||
|
||||
a.upgrade_in_event_loop(move |app| {
|
||||
write_empty_folders_results(&app, vector, messages);
|
||||
|
|
Loading…
Reference in a new issue