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

Poprawa elementów

This commit is contained in:
Rafał Mikrut 2024-02-16 23:00:48 +01:00
parent 727d639f4a
commit 747a784977
4 changed files with 27 additions and 7 deletions

View file

@ -34,8 +34,6 @@ pub fn collect_path_name_from_model(items: &[MainListModel], active_tab: Current
items items
.iter() .iter()
.map(|item| { .map(|item| {
dbg!(item.val_str.iter().nth(path_idx).unwrap().to_string());
dbg!(item.val_str.iter().nth(name_idx).unwrap().to_string());
( (
item.val_str.iter().nth(path_idx).unwrap().to_string(), item.val_str.iter().nth(path_idx).unwrap().to_string(),
item.val_str.iter().nth(name_idx).unwrap().to_string(), item.val_str.iter().nth(name_idx).unwrap().to_string(),

View file

@ -8,7 +8,7 @@ use home::home_dir;
use image_hasher::{FilterType, HashAlg}; use image_hasher::{FilterType, HashAlg};
use log::{debug, error, info, warn}; use log::{debug, error, info, warn};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use slint::{ComponentHandle, Model, ModelRc}; use slint::{ComponentHandle, Model, ModelRc, SharedString, VecModel};
use czkawka_core::common::{get_all_available_threads, set_number_of_threads}; use czkawka_core::common::{get_all_available_threads, set_number_of_threads};
use czkawka_core::common_dir_traversal::CheckingMethod; use czkawka_core::common_dir_traversal::CheckingMethod;
@ -447,6 +447,8 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
0 0
}); });
settings.set_similar_images_sub_hash_size_index(similar_images_sub_hash_size_idx as i32); settings.set_similar_images_sub_hash_size_index(similar_images_sub_hash_size_idx as i32);
settings.set_similar_images_sub_hash_size_value(ALLOWED_HASH_SIZE_VALUES[similar_images_sub_hash_size_idx].1.to_string().into());
// TODO all items with _value are not necessary, but due bug in slint are required, because combobox is not updated properly
let similar_images_sub_hash_type_idx = get_hash_type_idx(&custom_settings.similar_images_sub_hash_type).unwrap_or_else(|| { let similar_images_sub_hash_type_idx = get_hash_type_idx(&custom_settings.similar_images_sub_hash_type).unwrap_or_else(|| {
warn!( warn!(
@ -465,6 +467,7 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
0 0
}); });
settings.set_similar_images_sub_resize_algorithm_index(similar_images_sub_resize_algorithm_idx as i32); settings.set_similar_images_sub_resize_algorithm_index(similar_images_sub_resize_algorithm_idx as i32);
settings.set_similar_images_sub_resize_algorithm_value(ALLOWED_RESIZE_ALGORITHM_VALUES[similar_images_sub_resize_algorithm_idx].1.to_string().into());
settings.set_similar_images_sub_ignore_same_size(custom_settings.similar_images_sub_ignore_same_size); settings.set_similar_images_sub_ignore_same_size(custom_settings.similar_images_sub_ignore_same_size);
settings.set_similar_images_sub_max_similarity(40.0); settings.set_similar_images_sub_max_similarity(40.0);
@ -478,6 +481,7 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
0 0
}); });
settings.set_duplicates_sub_check_method_index(duplicates_sub_check_method_idx as i32); settings.set_duplicates_sub_check_method_index(duplicates_sub_check_method_idx as i32);
settings.set_duplicates_sub_check_method_value(ALLOWED_DUPLICATES_CHECK_METHOD_VALUES[duplicates_sub_check_method_idx].1.to_string().into());
let duplicates_sub_available_hash_type_idx = get_duplicates_hash_type_idx(&custom_settings.duplicates_sub_available_hash_type).unwrap_or_else(|| { let duplicates_sub_available_hash_type_idx = get_duplicates_hash_type_idx(&custom_settings.duplicates_sub_available_hash_type).unwrap_or_else(|| {
warn!( warn!(
"Value of duplicates hash type \"{}\" is invalid, setting it to default value", "Value of duplicates hash type \"{}\" is invalid, setting it to default value",
@ -486,6 +490,7 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
0 0
}); });
settings.set_duplicates_sub_available_hash_type_index(duplicates_sub_available_hash_type_idx as i32); settings.set_duplicates_sub_available_hash_type_index(duplicates_sub_available_hash_type_idx as i32);
settings.set_duplicates_sub_available_hash_type_value(ALLOWED_DUPLICATES_HASH_TYPE_VALUES[duplicates_sub_available_hash_type_idx].1.to_string().into());
let biggest_files_sub_method_idx = get_biggest_item_idx(&custom_settings.biggest_files_sub_method).unwrap_or_else(|| { let biggest_files_sub_method_idx = get_biggest_item_idx(&custom_settings.biggest_files_sub_method).unwrap_or_else(|| {
warn!( warn!(
@ -495,7 +500,10 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
0 0
}); });
settings.set_biggest_files_sub_method_index(biggest_files_sub_method_idx as i32); settings.set_biggest_files_sub_method_index(biggest_files_sub_method_idx as i32);
settings.set_biggest_files_sub_method_value(ALLOWED_BIG_FILE_SIZE_VALUES[biggest_files_sub_method_idx].1.to_string().into());
settings.set_biggest_files_sub_number_of_files(custom_settings.biggest_files_sub_number_of_files.to_string().into()); settings.set_biggest_files_sub_number_of_files(custom_settings.biggest_files_sub_number_of_files.to_string().into());
let all_gui_items: Vec<SharedString> = ALLOWED_BIG_FILE_SIZE_VALUES.iter().map(|(_, gui_name, _)| (*gui_name).into()).collect::<Vec<_>>();
settings.set_biggest_files_sub_method(ModelRc::new(VecModel::from(all_gui_items)));
settings.set_similar_videos_sub_ignore_same_size(custom_settings.similar_videos_sub_ignore_same_size); settings.set_similar_videos_sub_ignore_same_size(custom_settings.similar_videos_sub_ignore_same_size);
settings.set_similar_videos_sub_current_similarity(custom_settings.similar_videos_sub_similarity as f32); settings.set_similar_videos_sub_current_similarity(custom_settings.similar_videos_sub_similarity as f32);
@ -509,6 +517,7 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
0 0
}); });
settings.set_similar_music_sub_audio_check_type_index(similar_music_sub_audio_check_type_idx as i32); settings.set_similar_music_sub_audio_check_type_index(similar_music_sub_audio_check_type_idx as i32);
settings.set_similar_music_sub_audio_check_type_value(ALLOWED_AUDIO_CHECK_TYPE_VALUES[similar_music_sub_audio_check_type_idx].1.to_string().into());
settings.set_similar_music_sub_approximate_comparison(custom_settings.similar_music_sub_approximate_comparison); settings.set_similar_music_sub_approximate_comparison(custom_settings.similar_music_sub_approximate_comparison);
settings.set_similar_music_sub_title(custom_settings.similar_music_sub_title); settings.set_similar_music_sub_title(custom_settings.similar_music_sub_title);
settings.set_similar_music_sub_artist(custom_settings.similar_music_sub_artist); settings.set_similar_music_sub_artist(custom_settings.similar_music_sub_artist);
@ -704,9 +713,6 @@ fn default_biggest_method() -> String {
fn default_audio_check_type() -> String { fn default_audio_check_type() -> String {
ALLOWED_AUDIO_CHECK_TYPE_VALUES[0].0.to_string() ALLOWED_AUDIO_CHECK_TYPE_VALUES[0].0.to_string()
} }
fn default_hash_size() -> u8 {
DEFAULT_HASH_SIZE
}
fn default_video_similarity() -> i32 { fn default_video_similarity() -> i32 {
DEFAULT_VIDEO_SIMILARITY DEFAULT_VIDEO_SIMILARITY
} }
@ -752,7 +758,7 @@ pub fn default_hash_type() -> String {
ALLOWED_HASH_TYPE_VALUES[0].0.to_string() ALLOWED_HASH_TYPE_VALUES[0].0.to_string()
} }
pub fn default_sub_hash_size() -> u8 { pub fn default_sub_hash_size() -> u8 {
16 DEFAULT_HASH_SIZE
} }
fn get_allowed_hash_size_idx(h_size: u8) -> Option<usize> { fn get_allowed_hash_size_idx(h_size: u8) -> Option<usize> {

View file

@ -43,10 +43,13 @@ export global Settings {
// Similar Images // Similar Images
in-out property <[string]> similar_images_sub_available_hash_size: ["8", "16", "32", "64"]; in-out property <[string]> similar_images_sub_available_hash_size: ["8", "16", "32", "64"];
in-out property <int> similar_images_sub_hash_size_index: 0; in-out property <int> similar_images_sub_hash_size_index: 0;
in-out property <string> similar_images_sub_hash_size_value: "8";
in-out property <[string]> similar_images_sub_available_resize_algorithm: ["Lanczos3", "Nearest", "Triangle", "Gaussian", "CatmullRom"]; in-out property <[string]> similar_images_sub_available_resize_algorithm: ["Lanczos3", "Nearest", "Triangle", "Gaussian", "CatmullRom"];
in-out property <int> similar_images_sub_resize_algorithm_index: 0; in-out property <int> similar_images_sub_resize_algorithm_index: 0;
in-out property <string> similar_images_sub_resize_algorithm_value: "Lanczos3";
in-out property <[string]> similar_images_sub_available_hash_type: ["Gradient", "Mean", "VertGradient", "BlockHash", "DoubleGradient"]; in-out property <[string]> similar_images_sub_available_hash_type: ["Gradient", "Mean", "VertGradient", "BlockHash", "DoubleGradient"];
in-out property <int> similar_images_sub_hash_type_index: 0; in-out property <int> similar_images_sub_hash_type_index: 0;
in-out property <string> similar_images_sub_hash_type_value: "Gradient";
in-out property <float> similar_images_sub_max_similarity: 40; in-out property <float> similar_images_sub_max_similarity: 40;
in-out property <float> similar_images_sub_current_similarity: 20; in-out property <float> similar_images_sub_current_similarity: 20;
in-out property <bool> similar_images_sub_ignore_same_size; in-out property <bool> similar_images_sub_ignore_same_size;
@ -54,12 +57,15 @@ export global Settings {
// Duplicates // Duplicates
in-out property <[string]> duplicates_sub_check_method: ["Hash", "Size", "Name", "Size and Name"]; in-out property <[string]> duplicates_sub_check_method: ["Hash", "Size", "Name", "Size and Name"];
in-out property <int> duplicates_sub_check_method_index: 0; in-out property <int> duplicates_sub_check_method_index: 0;
in-out property <string> duplicates_sub_check_method_value: "Hash";
in-out property <[string]> duplicates_sub_available_hash_type: ["Blake3", "CRC32", "XXH3"]; in-out property <[string]> duplicates_sub_available_hash_type: ["Blake3", "CRC32", "XXH3"];
in-out property <int> duplicates_sub_available_hash_type_index: 0; in-out property <int> duplicates_sub_available_hash_type_index: 0;
in-out property <string> duplicates_sub_available_hash_type_value: "Blake3";
// Big files // Big files
in-out property <[string]> biggest_files_sub_method: ["The Biggest", "The Smallest"]; in-out property <[string]> biggest_files_sub_method: ["The Biggest", "The Smallest"];
in-out property <int> biggest_files_sub_method_index: 0; in-out property <int> biggest_files_sub_method_index: 0;
in-out property <string> biggest_files_sub_method_value: "The Biggest";
in-out property <string> biggest_files_sub_number_of_files: 50; in-out property <string> biggest_files_sub_number_of_files: 50;
// Similar Videos // Similar Videos
@ -70,6 +76,7 @@ export global Settings {
// Same Music // Same Music
in-out property <[string]> similar_music_sub_audio_check_type: ["Tags", "Fingerprint"]; in-out property <[string]> similar_music_sub_audio_check_type: ["Tags", "Fingerprint"];
in-out property <int> similar_music_sub_audio_check_type_index: 0; in-out property <int> similar_music_sub_audio_check_type_index: 0;
in-out property <string> similar_music_sub_audio_check_type_value: "Tags";
in-out property <bool> similar_music_sub_approximate_comparison; in-out property <bool> similar_music_sub_approximate_comparison;
in-out property <bool> similar_music_sub_title: true; in-out property <bool> similar_music_sub_title: true;
in-out property <bool> similar_music_sub_artist: true; in-out property <bool> similar_music_sub_artist: true;

View file

@ -19,6 +19,7 @@ component ComboBoxWrapper inherits HorizontalLayout {
in-out property <string> text; in-out property <string> text;
in-out property <[string]> model; in-out property <[string]> model;
in-out property <int> current_index; in-out property <int> current_index;
in-out property <string> current_value;
spacing: 5px; spacing: 5px;
Text { Text {
text <=> root.text; text <=> root.text;
@ -27,6 +28,7 @@ component ComboBoxWrapper inherits HorizontalLayout {
ComboBox { ComboBox {
model: root.model; model: root.model;
current_index <=> root.current_index; current_index <=> root.current_index;
current_value <=> root.current_value;
} }
} }
@ -72,16 +74,19 @@ export component ToolSettings {
text: "Hash size"; text: "Hash size";
model: Settings.similar_images_sub_available_hash_size; model: Settings.similar_images_sub_available_hash_size;
current_index <=> Settings.similar_images_sub_hash_size_index; current_index <=> Settings.similar_images_sub_hash_size_index;
current_value <=> Settings.similar_images_sub_hash_size_value;
} }
ComboBoxWrapper { ComboBoxWrapper {
text: "Resize Algorithm"; text: "Resize Algorithm";
model: Settings.similar_images_sub_available_resize_algorithm; model: Settings.similar_images_sub_available_resize_algorithm;
current_index <=> Settings.similar_images_sub_resize_algorithm_index; current_index <=> Settings.similar_images_sub_resize_algorithm_index;
current_value <=> Settings.similar_images_sub_resize_algorithm_value;
} }
ComboBoxWrapper { ComboBoxWrapper {
text: "Hash type"; text: "Hash type";
model: Settings.similar_images_sub_available_hash_type; model: Settings.similar_images_sub_available_hash_type;
current_index <=> Settings.similar_images_sub_hash_type_index; current_index <=> Settings.similar_images_sub_hash_type_index;
current_value <=> Settings.similar_images_sub_hash_type_value;
} }
CheckBoxWrapper { CheckBoxWrapper {
text: "Ignore same size"; text: "Ignore same size";
@ -105,11 +110,13 @@ export component ToolSettings {
text: "Check method"; text: "Check method";
model: Settings.duplicates_sub_check_method; model: Settings.duplicates_sub_check_method;
current_index <=> Settings.duplicates_sub_check_method_index; current_index <=> Settings.duplicates_sub_check_method_index;
current_value <=> Settings.duplicates_sub_check_method_value;
} }
ComboBoxWrapper { ComboBoxWrapper {
text: "Hash type"; text: "Hash type";
model: Settings.duplicates_sub_available_hash_type; model: Settings.duplicates_sub_available_hash_type;
current_index <=> Settings.duplicates_sub_available_hash_type_index; current_index <=> Settings.duplicates_sub_available_hash_type_index;
current_value <=> Settings.duplicates_sub_available_hash_type_value;
} }
Rectangle {} Rectangle {}
} }
@ -122,6 +129,7 @@ export component ToolSettings {
text: "Checked files"; text: "Checked files";
model: Settings.biggest_files_sub_method; model: Settings.biggest_files_sub_method;
current_index <=> Settings.biggest_files_sub_method_index; current_index <=> Settings.biggest_files_sub_method_index;
current_value <=> Settings.biggest_files_sub_method_value;
} }
TextComponent { TextComponent {
name: "Number of files"; name: "Number of files";
@ -156,6 +164,7 @@ export component ToolSettings {
text: "Audio check type"; text: "Audio check type";
model: Settings.similar_music_sub_audio_check_type; model: Settings.similar_music_sub_audio_check_type;
current_index <=> Settings.similar_music_sub_audio_check_type_index; current_index <=> Settings.similar_music_sub_audio_check_type_index;
current_value <=> Settings.similar_music_sub_audio_check_type_value;
} }
CheckBoxWrapper { CheckBoxWrapper {
text: "Approximate Tag Comparison"; text: "Approximate Tag Comparison";