Poprawa elementów
This commit is contained in:
parent
727d639f4a
commit
747a784977
|
@ -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(),
|
||||||
|
|
|
@ -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> {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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";
|
||||||
|
|
Loading…
Reference in a new issue