1
0
Fork 0
mirror of synced 2024-05-03 12:03:22 +12:00
This commit is contained in:
Rafał Mikrut 2024-01-21 16:10:09 +01:00
parent e1ca412051
commit 5c36888825
8 changed files with 158 additions and 64 deletions

3
.gitignore vendored
View file

@ -20,4 +20,5 @@ krokiet/target
*.json
*.mm_profdata
perf.data
perf.data.old
perf.data.old
krokiet/ui/test.slint

154
Cargo.lock generated
View file

@ -944,7 +944,7 @@ dependencies = [
[[package]]
name = "const-field-offset"
version = "0.1.3"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"const-field-offset-macro",
"field-offset",
@ -953,7 +953,7 @@ dependencies = [
[[package]]
name = "const-field-offset-macro"
version = "0.1.3"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"proc-macro2",
"quote",
@ -1747,9 +1747,9 @@ dependencies = [
[[package]]
name = "femtovg"
version = "0.8.1"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19df4b4c86231086212f22513ccfdbce94a1e1270d1cb09c030bd39fd73f3ee4"
checksum = "18ab822e58e8bc2b89840dc5dde49afe39302e129c60d39c8520200c085404a7"
dependencies = [
"bitflags 2.4.2",
"fnv",
@ -1757,6 +1757,7 @@ dependencies = [
"glow",
"image",
"imgref",
"log",
"lru",
"rgb",
"rustybuzz 0.11.0",
@ -2660,7 +2661,7 @@ dependencies = [
[[package]]
name = "i-slint-backend-linuxkms"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"calloop",
"drm 0.9.0",
@ -2680,7 +2681,7 @@ dependencies = [
[[package]]
name = "i-slint-backend-selector"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"cfg-if",
"i-slint-backend-linuxkms",
@ -2693,7 +2694,7 @@ dependencies = [
[[package]]
name = "i-slint-backend-winit"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"bytemuck",
"cfg-if",
@ -2727,7 +2728,7 @@ dependencies = [
[[package]]
name = "i-slint-common"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"cfg-if",
"derive_more",
@ -2738,7 +2739,7 @@ dependencies = [
[[package]]
name = "i-slint-compiler"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"by_address",
"codemap",
@ -2767,7 +2768,7 @@ dependencies = [
[[package]]
name = "i-slint-core"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"auto_enums",
"bytemuck",
@ -2810,7 +2811,7 @@ dependencies = [
[[package]]
name = "i-slint-core-macros"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"quote",
"syn 2.0.48",
@ -2819,7 +2820,7 @@ dependencies = [
[[package]]
name = "i-slint-renderer-femtovg"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"cfg-if",
"const-field-offset",
@ -2851,7 +2852,7 @@ dependencies = [
[[package]]
name = "i-slint-renderer-skia"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"ash",
"bytemuck",
@ -2880,7 +2881,8 @@ dependencies = [
"unicode-segmentation",
"vtable",
"vulkano",
"windows 0.52.0",
"winapi",
"wio",
]
[[package]]
@ -3062,9 +3064,9 @@ checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284"
[[package]]
name = "imgref"
version = "1.10.0"
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90d944e334f00f4449c9640b440a171f816be0152305c12ef90424fc35fd035c"
checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126"
[[package]]
name = "indexmap"
@ -4407,9 +4409,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.76"
version = "1.0.78"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c"
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
dependencies = [
"unicode-ident",
]
@ -4558,13 +4560,13 @@ dependencies = [
[[package]]
name = "regex"
version = "1.10.2"
version = "1.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata 0.4.3",
"regex-automata 0.4.4",
"regex-syntax 0.8.2",
]
@ -4579,9 +4581,9 @@ dependencies = [
[[package]]
name = "regex-automata"
version = "0.4.3"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a"
dependencies = [
"aho-corasick",
"memchr",
@ -4646,6 +4648,20 @@ dependencies = [
"bytemuck",
]
[[package]]
name = "ring"
version = "0.17.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
dependencies = [
"cc",
"getrandom",
"libc",
"spin",
"untrusted",
"windows-sys 0.48.0",
]
[[package]]
name = "rle-decode-fast"
version = "1.0.3"
@ -4815,6 +4831,28 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "rustls"
version = "0.21.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
dependencies = [
"log",
"ring",
"rustls-webpki",
"sct",
]
[[package]]
name = "rustls-webpki"
version = "0.101.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
dependencies = [
"ring",
"untrusted",
]
[[package]]
name = "rustversion"
version = "1.0.14"
@ -4896,6 +4934,16 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "sct"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
dependencies = [
"ring",
"untrusted",
]
[[package]]
name = "sctk-adwaita"
version = "0.8.1"
@ -5062,9 +5110,9 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
[[package]]
name = "skia-bindings"
version = "0.70.0"
version = "0.69.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4bc61a106126a429bb4775ce5fbe23b2bcaa74d1a9c484997f4700de31480b44"
checksum = "8b4b5af96ee7d895763fa606f4531fddfb11de034217edd0c7beb9ea181efe5b"
dependencies = [
"bindgen",
"cc",
@ -5075,18 +5123,20 @@ dependencies = [
"serde_json",
"tar",
"toml 0.8.8",
"ureq",
]
[[package]]
name = "skia-safe"
version = "0.70.0"
version = "0.69.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3201eba92bca1f83864f5c3a48309bcfee7e0590bebd7826e7ab0a49aa24a750"
checksum = "4a3d25acaedea0a8ed1dac52f383fc90276f5679a68e3f84c5fb7f7bde8934ff"
dependencies = [
"bitflags 2.4.2",
"lazy_static",
"skia-bindings",
"windows 0.52.0",
"winapi",
"wio",
]
[[package]]
@ -5101,7 +5151,7 @@ dependencies = [
[[package]]
name = "slint"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"const-field-offset",
"i-slint-backend-selector",
@ -5117,7 +5167,7 @@ dependencies = [
[[package]]
name = "slint-build"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"i-slint-compiler",
"spin_on",
@ -5128,7 +5178,7 @@ dependencies = [
[[package]]
name = "slint-macros"
version = "1.4.0"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"i-slint-compiler",
"proc-macro2",
@ -6115,6 +6165,28 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
[[package]]
name = "untrusted"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "ureq"
version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97"
dependencies = [
"base64",
"flate2",
"log",
"once_cell",
"rustls",
"rustls-webpki",
"url",
"webpki-roots",
]
[[package]]
name = "url"
version = "2.5.0"
@ -6253,7 +6325,7 @@ dependencies = [
[[package]]
name = "vtable"
version = "0.1.11"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"const-field-offset",
"portable-atomic",
@ -6264,7 +6336,7 @@ dependencies = [
[[package]]
name = "vtable-macro"
version = "0.1.10"
source = "git+https://github.com/slint-ui/slint.git#f809b3ff41b643b6896e2af493160d8f7f2880f3"
source = "git+https://github.com/slint-ui/slint.git#43d1f62fb113e432ebfa7e9fb8a033ae1788e566"
dependencies = [
"proc-macro2",
"quote",
@ -6527,6 +6599,12 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "webpki-roots"
version = "0.25.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
[[package]]
name = "weezl"
version = "0.1.7"
@ -6603,16 +6681,6 @@ dependencies = [
"windows-targets 0.48.5",
]
[[package]]
name = "windows"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
dependencies = [
"windows-core",
"windows-targets 0.52.0",
]
[[package]]
name = "windows-core"
version = "0.52.0"

View file

@ -207,6 +207,7 @@ where
component.set_minimal_file_size(custom_settings.minimum_file_size as u64 * 1024);
component.set_maximal_file_size(custom_settings.maximum_file_size as u64 * 1024);
component.set_allowed_extensions(custom_settings.allowed_extensions.clone());
component.set_excluded_extensions(custom_settings.excluded_extensions.clone());
component.set_excluded_items(custom_settings.excluded_items.split(',').map(str::to_string).collect());
component.set_exclude_other_filesystems(custom_settings.ignore_other_file_systems);
component.set_use_cache(custom_settings.use_cache);

View file

@ -50,6 +50,8 @@ pub struct SettingsCustom {
pub excluded_items: String,
#[serde(default)]
pub allowed_extensions: String,
#[serde(default)]
pub excluded_extensions: String,
#[serde(default = "minimum_file_size")]
pub minimum_file_size: i32,
#[serde(default = "maximum_file_size")]
@ -357,6 +359,7 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
settings.set_excluded_items(custom_settings.excluded_items.clone().into());
settings.set_allowed_extensions(custom_settings.allowed_extensions.clone().into());
settings.set_excluded_extensions(custom_settings.excluded_extensions.clone().into());
settings.set_minimum_file_size(custom_settings.minimum_file_size.to_string().into());
settings.set_maximum_file_size(custom_settings.maximum_file_size.to_string().into());
settings.set_use_cache(custom_settings.use_cache);
@ -438,6 +441,7 @@ pub fn collect_settings(app: &MainWindow) -> SettingsCustom {
let excluded_items = settings.get_excluded_items().to_string();
let allowed_extensions = settings.get_allowed_extensions().to_string();
let excluded_extensions = settings.get_excluded_extensions().to_string();
let minimum_file_size = settings.get_minimum_file_size().parse::<i32>().unwrap_or(DEFAULT_MINIMUM_SIZE_KB);
let maximum_file_size = settings.get_maximum_file_size().parse::<i32>().unwrap_or(DEFAULT_MAXIMUM_SIZE_KB);
@ -481,6 +485,7 @@ pub fn collect_settings(app: &MainWindow) -> SettingsCustom {
excluded_directories,
excluded_items,
allowed_extensions,
excluded_extensions,
minimum_file_size,
maximum_file_size,
recursive_search,

View file

@ -27,4 +27,15 @@ export enum BottomPanelVisibility {
NotVisible,
TextErrors,
Directories
}
export struct IncludedDirectoriesModel {
path: string,
referenced_folder: bool,
selected_row: bool,
}
export struct ExcludedDirectoriesModel {
path: string,
selected_row: bool,
}

View file

@ -1,14 +1,11 @@
import {Button, StandardListView, VerticalBox, ListView, ScrollView, TextEdit, CheckBox} from "std-widgets.slint";
import {Callabler} from "callabler.slint";
export struct IncludedDirectoriesModel {
path: string,
referended_folder: bool,
}
import {IncludedDirectoriesModel, ExcludedDirectoriesModel} from "common.slint";
import {ColorPalette} from "color_palette.slint";
export component InlcudedDirectories {
in-out property <[IncludedDirectoriesModel]> model: [{path: "/home/path", referended_folder: false}];
in-out property <[IncludedDirectoriesModel]> model: [{path: "/home/path", referenced_folder: false, selected_row: false}];
in-out property <int> current_index: -1;
in-out property <length> size_referenced_folder: 40px;
@ -36,7 +33,7 @@ export component InlcudedDirectories {
width: parent.width;
CheckBox {
checked: data.referended_folder;
checked: data.referenced_folder;
width: size_referenced_folder;
}
Text {
@ -50,8 +47,8 @@ export component InlcudedDirectories {
}
}
export component ExcludeDirectories {
in-out property <[string]> model: ["/home/path"];
export component ExcludedDirectories {
in-out property <[ExcludedDirectoriesModel]> model: [{path:"/home/path", selected_row: false}, {path:"/home/path", selected_row: false}, ];
in-out property <int> current_index: -1;
private property <PointerEvent> event;
@ -64,21 +61,27 @@ export component ExcludeDirectories {
}
}
ListView {
for data[idx] in model : Rectangle {
for r[idx] in model : Rectangle {
height: 30px;
border_radius: 5px;
width: parent.width;
background: touch-area.has-hover ? (r.selected_row ? ColorPalette.list-view-normal-selected-header : ColorPalette.list_view_normal_color) : (r.selected_row ? ColorPalette.list-view-normal-selected-header : ColorPalette.list_view_normal_color);
touch_area := TouchArea {
clicked => {
if (current_index == -1) {
r.selected_row = true;
} else {
if (current_index != idx) {
model[current_index].selected_row = false;
}
r.selected_row = true;
}
current_index = idx;
}
double-clicked => {
if (event.button == PointerEventButton.middle && event.kind == PointerEventKind.up) {
Callabler.item_opened(data)
}
Callabler.item_opened(r.path);
}
pointer-event(event) => {
root.event = event;
@ -91,7 +94,7 @@ export component ExcludeDirectories {
Text {
horizontal-stretch: 1.0;
text: data;
text: r.path;
vertical-alignment: center;
}
}

View file

@ -8,6 +8,7 @@ export global Settings {
// Settings
in-out property <string> excluded_items: "Excluded items";
in-out property <string> allowed_extensions: "Allowed extensions";
in-out property <string> excluded_extensions: "Excluded extensions";
in-out property <string> minimum_file_size: 0;
in-out property <string> maximum_file_size: 0;
in-out property <bool> recursive_search: true;

View file

@ -69,7 +69,7 @@ component MinMaxSizeComponent inherits HorizontalLayout {
spacing: 20px;
Text {
horizontal-stretch: 0.0;
text:"Items Size(Bytes)";
text:"File Size(Kilobytes)";
vertical-alignment: TextVerticalAlignment.center;
}
HorizontalLayout {
@ -205,6 +205,10 @@ export component SettingsList inherits VerticalLayout {
name: "Allowed extensions:";
model <=> Settings.allowed_extensions;
}
TextComponent {
name: "Excluded extensions:";
model <=> Settings.excluded_extensions;
}
MinMaxSizeComponent {
}
@ -263,7 +267,7 @@ export component SettingsList inherits VerticalLayout {
model <=> Settings.duplicate_minimal_prehash_cache_size;
}
CheckBoxComponent {
name: "Delete outdated entries";
name: "Delete automatically outdated entries";
model <=> Settings.duplicate_delete_outdated_entries;
}
HeaderText {
@ -274,21 +278,21 @@ export component SettingsList inherits VerticalLayout {
model <=> Settings.similar_images_show_image_preview;
}
CheckBoxComponent {
name: "Delete outdated entries";
name: "Delete automatically outdated entries";
model <=> Settings.similar_images_delete_outdated_entries;
}
HeaderText {
text: "Similar Videos tool";
}
CheckBoxComponent {
name: "Delete outdated entries";
name: "Delete automatically outdated entries";
model <=> Settings.similar_videos_delete_outdated_entries;
}
HeaderText {
text: "Similar Music tool";
}
CheckBoxComponent {
name: "Delete outdated entries";
name: "Delete automatically outdated entries";
model <=> Settings.similar_music_delete_outdated_entries;
}
ConfigCacheButtons {