1
0
Fork 0
mirror of synced 2024-05-17 19:03:08 +12:00

Simplify code

This commit is contained in:
Rafał Mikrut 2023-04-01 16:22:16 +02:00
parent f4a2ee904c
commit d7f5e37d83
7 changed files with 339 additions and 615 deletions

130
Cargo.lock generated
View file

@ -81,7 +81,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa"
dependencies = [
"anstyle",
"windows-sys 0.45.0",
"windows-sys",
]
[[package]]
@ -116,7 +116,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.11",
"syn 2.0.12",
]
[[package]]
@ -356,9 +356,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.2.0"
version = "4.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6efb5f0a41b5ef5b50c5da28c07609c20091df0c1fc33d418fa2a7e693c2b624"
checksum = "046ae530c528f252094e4a77886ee1374437744b2bff1497aa898bbddbbb29b3"
dependencies = [
"clap_builder",
"clap_derive",
@ -367,9 +367,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.2.0"
version = "4.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "671fcaa5debda4b9a84aa7fde49c907c8986c0e6ab927e04217c9cb74e7c8bc9"
checksum = "223163f58c9a40c3b0a43e1c4b50a9ce09f007ea2cb1ec258a687945b4b7929f"
dependencies = [
"anstream",
"anstyle",
@ -387,7 +387,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
"syn 2.0.11",
"syn 2.0.12",
]
[[package]]
@ -424,7 +424,7 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf"
dependencies = [
"windows-sys 0.45.0",
"windows-sys",
]
[[package]]
@ -546,7 +546,7 @@ dependencies = [
"proc-macro2",
"quote",
"scratch",
"syn 2.0.11",
"syn 2.0.12",
]
[[package]]
@ -563,7 +563,7 @@ checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.11",
"syn 2.0.12",
]
[[package]]
@ -756,18 +756,18 @@ checksum = "48016319042fb7c87b78d2993084a831793a897a5cd1a2a67cab9d1eeb4b7d76"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.11",
"syn 2.0.12",
]
[[package]]
name = "errno"
version = "0.2.8"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
checksum = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0"
dependencies = [
"errno-dragonfly",
"libc",
"winapi",
"windows-sys",
]
[[package]]
@ -954,9 +954,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
[[package]]
name = "futures"
version = "0.3.27"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549"
checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
dependencies = [
"futures-channel",
"futures-core",
@ -969,9 +969,9 @@ dependencies = [
[[package]]
name = "futures-channel"
version = "0.3.27"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
dependencies = [
"futures-core",
"futures-sink",
@ -979,15 +979,15 @@ dependencies = [
[[package]]
name = "futures-core"
version = "0.3.27"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
[[package]]
name = "futures-executor"
version = "0.3.27"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
dependencies = [
"futures-core",
"futures-task",
@ -996,38 +996,38 @@ dependencies = [
[[package]]
name = "futures-io"
version = "0.3.27"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91"
checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
[[package]]
name = "futures-macro"
version = "0.3.27"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
"syn 2.0.12",
]
[[package]]
name = "futures-sink"
version = "0.3.27"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2"
checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
[[package]]
name = "futures-task"
version = "0.3.27"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
[[package]]
name = "futures-util"
version = "0.3.27"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
dependencies = [
"futures-channel",
"futures-core",
@ -1645,19 +1645,19 @@ checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb"
dependencies = [
"hermit-abi 0.3.1",
"libc",
"windows-sys 0.45.0",
"windows-sys",
]
[[package]]
name = "is-terminal"
version = "0.4.5"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8687c819457e979cc940d09cb16e42a1bf70aa6b60a549de6d3a62a0ee90c69e"
checksum = "256017f749ab3117e93acb91063009e1f1bb56d03965b14c2c8df4eb02c524d8"
dependencies = [
"hermit-abi 0.3.1",
"io-lifetimes",
"rustix",
"windows-sys 0.45.0",
"windows-sys",
]
[[package]]
@ -1763,9 +1763,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]]
name = "linux-raw-sys"
version = "0.1.4"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f"
[[package]]
name = "locale_config"
@ -2101,9 +2101,9 @@ checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521"
dependencies = [
"cfg-if",
"libc",
"redox_syscall",
"redox_syscall 0.2.16",
"smallvec",
"windows-sys 0.45.0",
"windows-sys",
]
[[package]]
@ -2387,6 +2387,15 @@ dependencies = [
"bitflags 1.3.2",
]
[[package]]
name = "redox_syscall"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
dependencies = [
"bitflags 1.3.2",
]
[[package]]
name = "redox_users"
version = "0.4.3"
@ -2394,7 +2403,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
dependencies = [
"getrandom",
"redox_syscall",
"redox_syscall 0.2.16",
"thiserror",
]
@ -2522,16 +2531,16 @@ dependencies = [
[[package]]
name = "rustix"
version = "0.36.11"
version = "0.37.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e"
checksum = "d097081ed288dfe45699b72f5b5d648e5f15d64d900c7080273baa20c16a6849"
dependencies = [
"bitflags 1.3.2",
"errno",
"io-lifetimes",
"libc",
"linux-raw-sys",
"windows-sys 0.45.0",
"windows-sys",
]
[[package]]
@ -2602,7 +2611,7 @@ checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.11",
"syn 2.0.12",
]
[[package]]
@ -2953,9 +2962,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.11"
version = "2.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21e3787bb71465627110e7d87ed4faaa36c1f61042ee67badb9e2ef173accc40"
checksum = "79d9531f94112cfc3e4c8f5f02cb2b58f72c97b7efd85f70203cc6d8efda5927"
dependencies = [
"proc-macro2",
"quote",
@ -2977,15 +2986,15 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.4.0"
version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95"
checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
dependencies = [
"cfg-if",
"fastrand",
"redox_syscall",
"redox_syscall 0.3.5",
"rustix",
"windows-sys 0.42.0",
"windows-sys",
]
[[package]]
@ -3014,7 +3023,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.11",
"syn 2.0.12",
]
[[package]]
@ -3485,21 +3494,6 @@ dependencies = [
"windows-targets",
]
[[package]]
name = "windows-sys"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
name = "windows-sys"
version = "0.45.0"

View file

@ -29,7 +29,7 @@ bitflags = "2.0.2"
lofty = "0.11.0"
# Futures - needed by async progress sender
futures = "0.3.27"
futures = "0.3.28"
# Needed by broken files
zip = { version = "0.6.4", features = ["aes-crypto", "bzip2", "deflate", "time"], default-features = false }
@ -41,7 +41,7 @@ blake3 = "1.3.3"
crc32fast = "1.3.2"
xxhash-rust = { version = "0.8.6", features = ["xxh3"] }
tempfile = "3.4.0"
tempfile = "3.5.0"
# Video Duplicates
vid_dup_finder_lib = "0.1.1"

View file

@ -965,7 +965,7 @@ impl SimilarImages {
let mut found = false;
for vec_file_entry in collected_similar_images.values() {
if vec_file_entry.is_empty() {
println!("Empty Element {vec_file_entry:?}");
println!("Empty group");
found = true;
continue;
}
@ -984,7 +984,7 @@ impl SimilarImages {
}
}
}
assert!(!found, "Found Invalid entries");
assert!(!found, "Found Invalid entries, verify errors before"); // TODO crashes with empty result with reference folder, verify why
}
self.similar_vectors = collected_similar_images.into_values().collect();

View file

@ -20,7 +20,7 @@ chrono = "0.4.24"
crossbeam-channel = "0.5.7"
# To get information about progress
futures = "0.3.27"
futures = "0.3.28"
# For saving/loading config files to specific directories
directories-next = "2.0.0"

View file

@ -4,15 +4,15 @@ use std::path::PathBuf;
use std::rc::Rc;
use chrono::NaiveDateTime;
use czkawka_core::bad_extensions::BadExtensions;
use czkawka_core::big_file::BigFile;
use czkawka_core::broken_files::BrokenFiles;
use glib::Receiver;
use gtk4::prelude::*;
use gtk4::{Entry, TextView, TreeView, Widget};
use gtk4::{Entry, ListStore, TextView, TreeView, Widget};
use humansize::format_size;
use humansize::BINARY;
use czkawka_core::bad_extensions::BadExtensions;
use czkawka_core::big_file::BigFile;
use czkawka_core::broken_files::BrokenFiles;
use czkawka_core::common::split_path;
use czkawka_core::common_dir_traversal::CheckingMethod;
use czkawka_core::duplicate::DuplicateFinder;
@ -475,7 +475,6 @@ fn computer_same_music(
buttons_array: &[Widget; 9],
buttons_names: &[BottomButtonsEnum; 9],
) {
const COLUMNS_NUMBER: usize = 18;
if mf.get_stopped_search() {
entry_info.set_text(&flg!("compute_stopped_by_user"));
} else {
@ -531,62 +530,46 @@ fn computer_same_music(
};
let (directory, file) = split_path(&base_file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSameMusic::ActivatableSelectButton as u32, &false),
(ColumnsSameMusic::SelectionButton as u32, &false),
(ColumnsSameMusic::Size as u32, &format_size(base_file_entry.size, BINARY)),
(ColumnsSameMusic::SizeAsBytes as u32, &base_file_entry.size),
(ColumnsSameMusic::Name as u32, &file),
(ColumnsSameMusic::Path as u32, &directory),
(ColumnsSameMusic::Title as u32, &base_file_entry.track_title),
(ColumnsSameMusic::Artist as u32, &base_file_entry.track_artist),
(ColumnsSameMusic::Year as u32, &base_file_entry.year.to_string()),
(ColumnsSameMusic::Genre as u32, &base_file_entry.genre),
(ColumnsSameMusic::Bitrate as u32, &(format!("{} kbps", base_file_entry.bitrate))),
(ColumnsSameMusic::BitrateAsNumber as u32, &(base_file_entry.bitrate)),
(ColumnsSameMusic::Length as u32, &base_file_entry.length),
(
ColumnsSameMusic::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(base_file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsSameMusic::ModificationAsSecs as u32, &(base_file_entry.modified_date)),
(ColumnsSameMusic::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsSameMusic::IsHeader as u32, &true),
(ColumnsSameMusic::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
same_music_add_to_list_store(
&list_store,
&file,
&directory,
base_file_entry.size,
base_file_entry.modified_date,
&base_file_entry.track_title,
&base_file_entry.track_artist,
&base_file_entry.year,
base_file_entry.bitrate,
&format!("{} kbps", base_file_entry.bitrate),
&base_file_entry.genre,
&base_file_entry.length,
true,
true,
);
for file_entry in vec_file_entry {
let (directory, file) = split_path(&file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSameMusic::ActivatableSelectButton as u32, &true),
(ColumnsSameMusic::SelectionButton as u32, &false),
(ColumnsSameMusic::Size as u32, &format_size(file_entry.size, BINARY)),
(ColumnsSameMusic::SizeAsBytes as u32, &file_entry.size),
(ColumnsSameMusic::Name as u32, &file),
(ColumnsSameMusic::Path as u32, &directory),
(ColumnsSameMusic::Title as u32, &file_entry.track_title),
(ColumnsSameMusic::Artist as u32, &file_entry.track_artist),
(ColumnsSameMusic::Year as u32, &file_entry.year.to_string()),
(ColumnsSameMusic::Genre as u32, &file_entry.genre),
(ColumnsSameMusic::Bitrate as u32, &(format!("{} kbps", file_entry.bitrate))),
(ColumnsSameMusic::BitrateAsNumber as u32, &(file_entry.bitrate)),
(ColumnsSameMusic::Length as u32, &file_entry.length),
(
ColumnsSameMusic::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsSameMusic::ModificationAsSecs as u32, &(file_entry.modified_date)),
(ColumnsSameMusic::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsSameMusic::IsHeader as u32, &false),
(ColumnsSameMusic::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
same_music_add_to_list_store(
&list_store,
&file,
&directory,
file_entry.size,
file_entry.modified_date,
&file_entry.track_title,
&file_entry.track_artist,
&file_entry.year,
file_entry.bitrate,
&format!("{} kbps", file_entry.bitrate),
&file_entry.genre,
&file_entry.length,
false,
true,
);
}
}
} else {
let vector = mf.get_duplicated_music_entries();
let text: String = "-----".to_string();
let text: &str = "-----";
for vec_file_entry in vector {
// Sort
@ -601,53 +584,40 @@ fn computer_same_music(
vec_file_entry.clone()
};
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSameMusic::ActivatableSelectButton as u32, &false),
(ColumnsSameMusic::SelectionButton as u32, &false),
(ColumnsSameMusic::Size as u32, &String::new()),
(ColumnsSameMusic::SizeAsBytes as u32, &(0)),
(ColumnsSameMusic::Name as u32, &String::new()),
(ColumnsSameMusic::Path as u32, &String::new()),
(ColumnsSameMusic::Title as u32, &(if is_track_title { text.clone() } else { String::new() })),
(ColumnsSameMusic::Artist as u32, &(if is_track_artist { text.clone() } else { String::new() })),
(ColumnsSameMusic::Year as u32, &(if is_year { text.clone() } else { String::new() })),
(ColumnsSameMusic::Bitrate as u32, &(if is_bitrate { text.clone() } else { String::new() })),
(ColumnsSameMusic::BitrateAsNumber as u32, &(0)),
(ColumnsSameMusic::Genre as u32, &(if is_genre { text.clone() } else { String::new() })),
(ColumnsSameMusic::Length as u32, &(if is_length { text.clone() } else { String::new() })),
(ColumnsSameMusic::Modification as u32, &String::new()),
(ColumnsSameMusic::ModificationAsSecs as u32, &(0)),
(ColumnsSameMusic::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsSameMusic::IsHeader as u32, &true),
(ColumnsSameMusic::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
same_music_add_to_list_store(
&list_store,
"",
"",
0,
0,
if is_track_title { text } else { "" },
if is_track_artist { text } else { "" },
if is_year { text } else { "" },
0,
if is_bitrate { text } else { "" },
if is_genre { text } else { "" },
if is_length { text } else { "" },
true,
false,
);
for file_entry in vec_file_entry {
let (directory, file) = split_path(&file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSameMusic::ActivatableSelectButton as u32, &true),
(ColumnsSameMusic::SelectionButton as u32, &false),
(ColumnsSameMusic::Size as u32, &format_size(file_entry.size, BINARY)),
(ColumnsSameMusic::SizeAsBytes as u32, &file_entry.size),
(ColumnsSameMusic::Name as u32, &file),
(ColumnsSameMusic::Path as u32, &directory),
(ColumnsSameMusic::Title as u32, &file_entry.track_title),
(ColumnsSameMusic::Artist as u32, &file_entry.track_artist),
(ColumnsSameMusic::Year as u32, &file_entry.year.to_string()),
(ColumnsSameMusic::Genre as u32, &file_entry.genre),
(ColumnsSameMusic::Bitrate as u32, &(format!("{} kbps", file_entry.bitrate))),
(ColumnsSameMusic::BitrateAsNumber as u32, &(file_entry.bitrate)),
(ColumnsSameMusic::Length as u32, &file_entry.length),
(
ColumnsSameMusic::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsSameMusic::ModificationAsSecs as u32, &(file_entry.modified_date)),
(ColumnsSameMusic::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsSameMusic::IsHeader as u32, &false),
(ColumnsSameMusic::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
same_music_add_to_list_store(
&list_store,
&file,
&directory,
file_entry.size,
file_entry.modified_date,
&file_entry.track_title,
&file_entry.track_artist,
&file_entry.year,
file_entry.bitrate,
&format!("{} kbps", file_entry.bitrate),
&file_entry.genre,
&file_entry.length,
false,
false,
);
}
}
}
@ -681,6 +651,7 @@ fn computer_same_music(
}
}
}
fn computer_similar_videos(
ff: SimilarVideos,
entry_info: &Entry,
@ -691,7 +662,6 @@ fn computer_similar_videos(
buttons_array: &[Widget; 9],
buttons_names: &[BottomButtonsEnum; 9],
) {
const COLUMNS_NUMBER: usize = 11;
if ff.get_stopped_search() {
entry_info.set_text(&flg!("compute_stopped_by_user"));
} else {
@ -735,46 +705,10 @@ fn computer_similar_videos(
vec_file_entry.clone()
};
// Header
let (directory, file) = split_path(&base_file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarVideos::ActivatableSelectButton as u32, &false),
(ColumnsSimilarVideos::SelectionButton as u32, &false),
(ColumnsSimilarVideos::Size as u32, &format_size(base_file_entry.size, BINARY)),
(ColumnsSimilarVideos::SizeAsBytes as u32, &base_file_entry.size),
(ColumnsSimilarVideos::Name as u32, &file),
(ColumnsSimilarVideos::Path as u32, &directory),
(
ColumnsSimilarVideos::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(base_file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsSimilarVideos::ModificationAsSecs as u32, &(base_file_entry.modified_date)),
(ColumnsSimilarVideos::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsSimilarVideos::IsHeader as u32, &true),
(ColumnsSimilarVideos::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
// Meat
similar_videos_add_to_list_store(&list_store, "", "", base_file_entry.size, base_file_entry.modified_date, true, true);
for file_entry in &vec_file_entry {
let (directory, file) = split_path(&file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarVideos::ActivatableSelectButton as u32, &true),
(ColumnsSimilarVideos::SelectionButton as u32, &false),
(ColumnsSimilarVideos::Size as u32, &format_size(file_entry.size, BINARY)),
(ColumnsSimilarVideos::SizeAsBytes as u32, &file_entry.size),
(ColumnsSimilarVideos::Name as u32, &file),
(ColumnsSimilarVideos::Path as u32, &directory),
(
ColumnsSimilarVideos::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsSimilarVideos::ModificationAsSecs as u32, &(file_entry.modified_date)),
(ColumnsSimilarVideos::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsSimilarVideos::IsHeader as u32, &false),
(ColumnsSimilarVideos::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
similar_videos_add_to_list_store(&list_store, &file, &directory, file_entry.size, file_entry.modified_date, false, true);
}
}
} else {
@ -793,42 +727,10 @@ fn computer_similar_videos(
vec_file_entry.clone()
};
// Header
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarVideos::ActivatableSelectButton as u32, &false),
(ColumnsSimilarVideos::SelectionButton as u32, &false),
(ColumnsSimilarVideos::Size as u32, &String::new()),
(ColumnsSimilarVideos::SizeAsBytes as u32, &(0)),
(ColumnsSimilarVideos::Name as u32, &String::new()),
(ColumnsSimilarVideos::Path as u32, &String::new()),
(ColumnsSimilarVideos::Modification as u32, &String::new()),
(ColumnsSimilarVideos::ModificationAsSecs as u32, &(0)),
(ColumnsSimilarVideos::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsSimilarVideos::IsHeader as u32, &true),
(ColumnsSimilarVideos::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
// Meat
similar_videos_add_to_list_store(&list_store, "", "", 0, 0, true, false);
for file_entry in &vec_file_entry {
let (directory, file) = split_path(&file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarVideos::ActivatableSelectButton as u32, &true),
(ColumnsSimilarVideos::SelectionButton as u32, &false),
(ColumnsSimilarVideos::Size as u32, &format_size(file_entry.size, BINARY)),
(ColumnsSimilarVideos::SizeAsBytes as u32, &file_entry.size),
(ColumnsSimilarVideos::Name as u32, &file),
(ColumnsSimilarVideos::Path as u32, &directory),
(
ColumnsSimilarVideos::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsSimilarVideos::ModificationAsSecs as u32, &(file_entry.modified_date)),
(ColumnsSimilarVideos::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsSimilarVideos::IsHeader as u32, &false),
(ColumnsSimilarVideos::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
similar_videos_add_to_list_store(&list_store, &file, &directory, file_entry.size, file_entry.modified_date, false, false);
}
}
}
@ -863,6 +765,7 @@ fn computer_similar_videos(
}
}
}
fn computer_similar_images(
sf: SimilarImages,
entry_info: &Entry,
@ -874,7 +777,6 @@ fn computer_similar_images(
buttons_names: &[BottomButtonsEnum; 9],
hash_size: u8,
) {
const COLUMNS_NUMBER: usize = 13;
if sf.get_stopped_search() {
entry_info.set_text(&flg!("compute_stopped_by_user"));
} else {
@ -918,51 +820,21 @@ fn computer_similar_images(
// Header
let (directory, file) = split_path(&base_file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarImages::ActivatableSelectButton as u32, &false),
(ColumnsSimilarImages::SelectionButton as u32, &false),
(ColumnsSimilarImages::Similarity as u32, &String::new()),
(ColumnsSimilarImages::Size as u32, &format_size(base_file_entry.size, BINARY)),
(ColumnsSimilarImages::SizeAsBytes as u32, &base_file_entry.size),
(ColumnsSimilarImages::Dimensions as u32, &base_file_entry.dimensions),
(ColumnsSimilarImages::Name as u32, &file),
(ColumnsSimilarImages::Path as u32, &directory),
(
ColumnsSimilarImages::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(base_file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsSimilarImages::ModificationAsSecs as u32, &(base_file_entry.modified_date)),
(ColumnsSimilarImages::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsSimilarImages::IsHeader as u32, &true),
(ColumnsSimilarImages::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
// Meat
similar_images_add_to_list_store(&list_store, &file, &directory, 0, 0, "", 0, 0, true, true);
for file_entry in &vec_file_entry {
let (directory, file) = split_path(&file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarImages::ActivatableSelectButton as u32, &true),
(ColumnsSimilarImages::SelectionButton as u32, &false),
(
ColumnsSimilarImages::Similarity as u32,
&(similar_images::get_string_from_similarity(&file_entry.similarity, hash_size).to_string()),
),
(ColumnsSimilarImages::Size as u32, &format_size(file_entry.size, BINARY)),
(ColumnsSimilarImages::SizeAsBytes as u32, &file_entry.size),
(ColumnsSimilarImages::Dimensions as u32, &file_entry.dimensions),
(ColumnsSimilarImages::Name as u32, &file),
(ColumnsSimilarImages::Path as u32, &directory),
(
ColumnsSimilarImages::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsSimilarImages::ModificationAsSecs as u32, &(file_entry.modified_date)),
(ColumnsSimilarImages::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsSimilarImages::IsHeader as u32, &false),
(ColumnsSimilarImages::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
similar_images_add_to_list_store(
&list_store,
&file,
&directory,
file_entry.size,
file_entry.modified_date,
&file_entry.dimensions,
file_entry.similarity,
hash_size,
false,
true,
);
}
}
} else {
@ -978,49 +850,21 @@ fn computer_similar_images(
vec_file_entry.clone()
};
// Header
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarImages::ActivatableSelectButton as u32, &false),
(ColumnsSimilarImages::SelectionButton as u32, &false),
(ColumnsSimilarImages::Similarity as u32, &String::new()),
(ColumnsSimilarImages::Size as u32, &String::new()),
(ColumnsSimilarImages::SizeAsBytes as u32, &(0)),
(ColumnsSimilarImages::Dimensions as u32, &String::new()),
(ColumnsSimilarImages::Name as u32, &String::new()),
(ColumnsSimilarImages::Path as u32, &String::new()),
(ColumnsSimilarImages::Modification as u32, &String::new()),
(ColumnsSimilarImages::ModificationAsSecs as u32, &(0)),
(ColumnsSimilarImages::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsSimilarImages::IsHeader as u32, &true),
(ColumnsSimilarImages::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
// Meat
similar_images_add_to_list_store(&list_store, "", "", 0, 0, "", 0, 0, true, false);
for file_entry in &vec_file_entry {
let (directory, file) = split_path(&file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarImages::ActivatableSelectButton as u32, &true),
(ColumnsSimilarImages::SelectionButton as u32, &false),
(
ColumnsSimilarImages::Similarity as u32,
&(similar_images::get_string_from_similarity(&file_entry.similarity, hash_size).to_string()),
),
(ColumnsSimilarImages::Size as u32, &format_size(file_entry.size, BINARY)),
(ColumnsSimilarImages::SizeAsBytes as u32, &file_entry.size),
(ColumnsSimilarImages::Dimensions as u32, &file_entry.dimensions),
(ColumnsSimilarImages::Name as u32, &file),
(ColumnsSimilarImages::Path as u32, &directory),
(
ColumnsSimilarImages::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsSimilarImages::ModificationAsSecs as u32, &(file_entry.modified_date)),
(ColumnsSimilarImages::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsSimilarImages::IsHeader as u32, &false),
(ColumnsSimilarImages::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
similar_images_add_to_list_store(
&list_store,
&file,
&directory,
file_entry.size,
file_entry.modified_date,
&file_entry.dimensions,
file_entry.similarity,
hash_size,
false,
false,
);
}
}
}
@ -1364,7 +1208,6 @@ fn computer_duplicate_finder(
buttons_array: &[Widget; 9],
buttons_names: &[BottomButtonsEnum; 9],
) {
const COLUMNS_NUMBER: usize = 11;
if df.get_stopped_search() {
entry_info.set_text(&flg!("compute_stopped_by_user"));
} else {
@ -1450,48 +1293,12 @@ fn computer_duplicate_finder(
vector.clone()
};
// HEADER
let (directory, file) = split_path(&base_file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &false),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(base_file_entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &base_file_entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(base_file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(base_file_entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &true),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
duplicates_add_to_list_store(&list_store, &file, &directory, base_file_entry.size, base_file_entry.modified_date, true, true);
list_store.set(&list_store.append(), &values);
// MEAT
for entry in vector {
let (directory, file) = split_path(&entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &true),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &false),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, entry.size, entry.modified_date, false, true);
}
}
}
@ -1514,46 +1321,10 @@ fn computer_duplicate_finder(
// HEADER
let (directory, file) = split_path(&base_file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &false),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(base_file_entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &base_file_entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(base_file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(base_file_entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &true),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
// MEAT
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, base_file_entry.size, base_file_entry.modified_date, true, true);
for entry in vector {
let (directory, file) = split_path(&entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &true),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &false),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, entry.size, entry.modified_date, false, true);
}
}
}
@ -1574,46 +1345,11 @@ fn computer_duplicate_finder(
vector.clone()
};
// HEADER
let (directory, file) = split_path(&base_file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &false),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(base_file_entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &base_file_entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(base_file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(base_file_entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &true),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
// MEAT
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, base_file_entry.size, base_file_entry.modified_date, true, true);
for entry in vector {
let (directory, file) = split_path(&entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &true),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &false),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, entry.size, entry.modified_date, false, true);
}
}
}
@ -1633,46 +1369,11 @@ fn computer_duplicate_finder(
vector.clone()
};
// HEADER
let (directory, file) = split_path(&base_file_entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &false),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(base_file_entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &base_file_entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(base_file_entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(base_file_entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &true),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
// MEAT
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, base_file_entry.size, base_file_entry.modified_date, true, true);
for entry in vector {
let (directory, file) = split_path(&entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &true),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &false),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, entry.size, entry.modified_date, false, true);
}
}
}
@ -1698,44 +1399,10 @@ fn computer_duplicate_finder(
vector.clone()
};
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &false),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&String::new())),
(ColumnsDuplicates::SizeAsBytes as u32, &0),
(ColumnsDuplicates::Name as u32, (&String::new())),
(ColumnsDuplicates::Path as u32, (&(format!("{} results", vector.len())))),
(ColumnsDuplicates::Modification as u32, (&String::new())), // No text in 3 column
(ColumnsDuplicates::ModificationAsSecs as u32, (&(0))), // Not used here
(ColumnsDuplicates::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &true),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, "", "", 0, 0, true, false);
for entry in vector {
let (directory, file) = split_path(&entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &true),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(format!(
"{} - ({})",
NaiveDateTime::from_timestamp_opt(entry.modified_date as i64, 0).unwrap(),
format_size(entry.size, BINARY)
)),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &false),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, entry.size, entry.modified_date, false, false);
}
}
}
@ -1755,43 +1422,11 @@ fn computer_duplicate_finder(
} else {
vector.clone()
};
duplicates_add_to_list_store(&list_store, "", "", 0, 0, true, false);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &false),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&String::new())),
(ColumnsDuplicates::SizeAsBytes as u32, &0),
(ColumnsDuplicates::Name as u32, (&String::new())),
(ColumnsDuplicates::Path as u32, (&String::new())),
(ColumnsDuplicates::Modification as u32, &String::new()), // No text in 3 column
(ColumnsDuplicates::ModificationAsSecs as u32, &(0)),
(ColumnsDuplicates::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &true),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
for entry in vector {
let (directory, file) = split_path(&entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &true),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &false),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, entry.size, entry.modified_date, false, false);
}
}
}
@ -1811,40 +1446,11 @@ fn computer_duplicate_finder(
} else {
vector.clone()
};
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &false),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&String::new())),
(ColumnsDuplicates::SizeAsBytes as u32, &0),
(ColumnsDuplicates::Name as u32, (&String::new())),
(ColumnsDuplicates::Path as u32, (&String::new())),
(ColumnsDuplicates::Modification as u32, &String::new()), // No text in 3 column
(ColumnsDuplicates::ModificationAsSecs as u32, &(0)), // Not used here
(ColumnsDuplicates::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &true),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
duplicates_add_to_list_store(&list_store, "", "", 0, 0, true, false);
list_store.set(&list_store.append(), &values);
for entry in vector {
let (directory, file) = split_path(&entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &true),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &false),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, entry.size, entry.modified_date, false, false);
}
}
}
@ -1863,40 +1469,11 @@ fn computer_duplicate_finder(
} else {
vector.clone()
};
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &false),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&String::new())),
(ColumnsDuplicates::SizeAsBytes as u32, &0),
(ColumnsDuplicates::Name as u32, (&String::new())),
(ColumnsDuplicates::Path as u32, (&String::new())),
(ColumnsDuplicates::Modification as u32, &String::new()), // No text in 3 column
(ColumnsDuplicates::ModificationAsSecs as u32, &(0)), // Not used here
(ColumnsDuplicates::Color as u32, &(HEADER_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &true),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
duplicates_add_to_list_store(&list_store, "", "", 0, 0, true, false);
list_store.set(&list_store.append(), &values);
for entry in vector {
let (directory, file) = split_path(&entry.path);
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &true),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, (&format_size(entry.size, BINARY))),
(ColumnsDuplicates::SizeAsBytes as u32, &entry.size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(
ColumnsDuplicates::Modification as u32,
&(NaiveDateTime::from_timestamp_opt(entry.modified_date as i64, 0).unwrap().to_string()),
),
(ColumnsDuplicates::ModificationAsSecs as u32, &(entry.modified_date)),
(ColumnsDuplicates::Color as u32, &(MAIN_ROW_COLOR.to_string())),
(ColumnsDuplicates::IsHeader as u32, &false),
(ColumnsDuplicates::TextColor as u32, &(TEXT_COLOR.to_string())),
];
list_store.set(&list_store.append(), &values);
duplicates_add_to_list_store(&list_store, &file, &directory, entry.size, entry.modified_date, false, false);
}
}
}
@ -1935,7 +1512,160 @@ fn computer_duplicate_finder(
}
}
}
fn duplicates_add_to_list_store(list_store: &ListStore, file: &str, directory: &str, size: u64, modified_date: u64, is_header: bool, is_reference_folder: bool) {
const COLUMNS_NUMBER: usize = 11;
let size_str;
let string_date;
let color = if is_header { HEADER_ROW_COLOR } else { MAIN_ROW_COLOR };
if is_header && !is_reference_folder {
size_str = String::new();
string_date = String::new();
} else {
size_str = format_size(size, BINARY);
string_date = NaiveDateTime::from_timestamp_opt(modified_date as i64, 0).unwrap().to_string();
};
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsDuplicates::ActivatableSelectButton as u32, &(!is_header)),
(ColumnsDuplicates::SelectionButton as u32, &false),
(ColumnsDuplicates::Size as u32, &size_str),
(ColumnsDuplicates::SizeAsBytes as u32, &size),
(ColumnsDuplicates::Name as u32, &file),
(ColumnsDuplicates::Path as u32, &directory),
(ColumnsDuplicates::Modification as u32, &string_date),
(ColumnsDuplicates::ModificationAsSecs as u32, &modified_date),
(ColumnsDuplicates::Color as u32, &color),
(ColumnsDuplicates::IsHeader as u32, &is_header),
(ColumnsDuplicates::TextColor as u32, &TEXT_COLOR),
];
list_store.set(&list_store.append(), &values);
}
fn similar_images_add_to_list_store(
list_store: &ListStore,
file: &str,
directory: &str,
size: u64,
modified_date: u64,
dimensions: &str,
similarity: u32,
hash_size: u8,
is_header: bool,
is_reference_folder: bool,
) {
const COLUMNS_NUMBER: usize = 13;
let size_str;
let string_date;
let similarity_string;
let color = if is_header { HEADER_ROW_COLOR } else { MAIN_ROW_COLOR };
if is_header && !is_reference_folder {
size_str = String::new();
string_date = String::new();
similarity_string = String::new();
} else {
size_str = format_size(size, BINARY);
string_date = NaiveDateTime::from_timestamp_opt(modified_date as i64, 0).unwrap().to_string();
similarity_string = similar_images::get_string_from_similarity(&similarity, hash_size);
};
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarImages::ActivatableSelectButton as u32, &(!is_header)),
(ColumnsSimilarImages::SelectionButton as u32, &false),
(ColumnsSimilarImages::Similarity as u32, &similarity_string),
(ColumnsSimilarImages::Size as u32, &size_str),
(ColumnsSimilarImages::SizeAsBytes as u32, &size),
(ColumnsSimilarImages::Dimensions as u32, &dimensions),
(ColumnsSimilarImages::Name as u32, &file),
(ColumnsSimilarImages::Path as u32, &directory),
(ColumnsSimilarImages::Modification as u32, &string_date),
(ColumnsSimilarImages::ModificationAsSecs as u32, &modified_date),
(ColumnsSimilarImages::Color as u32, &color),
(ColumnsSimilarImages::IsHeader as u32, &is_header),
(ColumnsSimilarImages::TextColor as u32, &TEXT_COLOR),
];
list_store.set(&list_store.append(), &values);
}
fn similar_videos_add_to_list_store(list_store: &ListStore, file: &str, directory: &str, size: u64, modified_date: u64, is_header: bool, is_reference_folder: bool) {
const COLUMNS_NUMBER: usize = 11;
let size_str;
let string_date;
let color = if is_header { HEADER_ROW_COLOR } else { MAIN_ROW_COLOR };
if is_header && !is_reference_folder {
size_str = String::new();
string_date = String::new();
} else {
size_str = format_size(size, BINARY);
string_date = NaiveDateTime::from_timestamp_opt(modified_date as i64, 0).unwrap().to_string();
};
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSimilarVideos::ActivatableSelectButton as u32, &(!is_header)),
(ColumnsSimilarVideos::SelectionButton as u32, &false),
(ColumnsSimilarVideos::Size as u32, &size_str),
(ColumnsSimilarVideos::SizeAsBytes as u32, &size),
(ColumnsSimilarVideos::Name as u32, &file),
(ColumnsSimilarVideos::Path as u32, &directory),
(ColumnsSimilarVideos::Modification as u32, &(string_date)),
(ColumnsSimilarVideos::ModificationAsSecs as u32, &(modified_date)),
(ColumnsSimilarVideos::Color as u32, &color),
(ColumnsSimilarVideos::IsHeader as u32, &false),
(ColumnsSimilarVideos::TextColor as u32, &TEXT_COLOR),
];
list_store.set(&list_store.append(), &values);
}
fn same_music_add_to_list_store(
list_store: &ListStore,
file: &str,
directory: &str,
size: u64,
modified_date: u64,
track_title: &str,
track_artist: &str,
track_year: &str,
track_bitrate: u32,
bitrate_string: &str,
track_genre: &str,
track_length: &str,
is_header: bool,
is_reference_folder: bool,
) {
const COLUMNS_NUMBER: usize = 18;
let size_str;
let string_date;
let color = if is_header { HEADER_ROW_COLOR } else { MAIN_ROW_COLOR };
if is_header && !is_reference_folder {
size_str = String::new();
string_date = String::new();
} else {
size_str = format_size(size, BINARY);
string_date = NaiveDateTime::from_timestamp_opt(modified_date as i64, 0).unwrap().to_string();
};
let values: [(u32, &dyn ToValue); COLUMNS_NUMBER] = [
(ColumnsSameMusic::ActivatableSelectButton as u32, &(!is_header)),
(ColumnsSameMusic::SelectionButton as u32, &false),
(ColumnsSameMusic::Size as u32, &size_str),
(ColumnsSameMusic::SizeAsBytes as u32, &size),
(ColumnsSameMusic::Name as u32, &file),
(ColumnsSameMusic::Path as u32, &directory),
(ColumnsSameMusic::Title as u32, &track_title),
(ColumnsSameMusic::Artist as u32, &track_artist),
(ColumnsSameMusic::Year as u32, &track_year),
(ColumnsSameMusic::Genre as u32, &track_genre),
(ColumnsSameMusic::Bitrate as u32, &bitrate_string),
(ColumnsSameMusic::BitrateAsNumber as u32, &track_bitrate),
(ColumnsSameMusic::Length as u32, &track_length),
(ColumnsSameMusic::Modification as u32, &string_date),
(ColumnsSameMusic::ModificationAsSecs as u32, &modified_date),
(ColumnsSameMusic::Color as u32, &(color)),
(ColumnsSameMusic::IsHeader as u32, &is_header),
(ColumnsSameMusic::TextColor as u32, &TEXT_COLOR),
];
list_store.set(&list_store.append(), &values);
}
fn set_specific_buttons_as_active(
buttons_array: &Rc<RefCell<HashMap<NotebookMainEnum, HashMap<BottomButtonsEnum, bool>>>>,
notebook_enum: &NotebookMainEnum,

View file

@ -21,7 +21,7 @@ pub fn connect_duplicate_combo_box(gui_data: &GuiData) {
label_duplicate_hash_type.set_visible(false);
}
if DUPLICATES_CHECK_METHOD_COMBO_BOX[chosen_index as usize].check_method == CheckingMethod::Name {
if [CheckingMethod::Name, CheckingMethod::SizeName].contains(&DUPLICATES_CHECK_METHOD_COMBO_BOX[chosen_index as usize].check_method) {
check_button_duplicate_case_sensitive_name.set_visible(true);
} else {
check_button_duplicate_case_sensitive_name.set_visible(false);

View file

@ -938,7 +938,7 @@ pub fn load_configuration(
main_notebook.label_duplicate_hash_type.set_visible(false);
}
if DUPLICATES_CHECK_METHOD_COMBO_BOX[combo_chosen_index as usize].check_method == CheckingMethod::Name {
if [CheckingMethod::Name, CheckingMethod::SizeName].contains(&DUPLICATES_CHECK_METHOD_COMBO_BOX[combo_chosen_index as usize].check_method) {
main_notebook.check_button_duplicate_case_sensitive_name.set_visible(true);
} else {
main_notebook.check_button_duplicate_case_sensitive_name.set_visible(false);