1
0
Fork 0
mirror of synced 2024-05-17 19:03:08 +12:00
This commit is contained in:
Rafał Mikrut 2023-11-16 21:33:35 +01:00
parent a14ace1b44
commit 447eb98b51
10 changed files with 131 additions and 81 deletions

120
Cargo.lock generated
View file

@ -231,6 +231,19 @@ dependencies = [
"futures-core",
]
[[package]]
name = "async-channel"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d37875bd9915b7d67c2f117ea2c30a0989874d0b2cb694fe25403c85763c0c9e"
dependencies = [
"concurrent-queue",
"event-listener 3.1.0",
"event-listener-strategy",
"futures-core",
"pin-project-lite",
]
[[package]]
name = "async-executor"
version = "1.6.0"
@ -263,7 +276,7 @@ version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776"
dependencies = [
"async-channel",
"async-channel 1.9.0",
"async-executor",
"async-io 1.13.0",
"async-lock 2.8.0",
@ -298,14 +311,14 @@ version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41ed9d5715c2d329bf1b4da8d60455b99b187f27ba726df2883799af9af60997"
dependencies = [
"async-lock 3.0.0",
"async-lock 3.1.0",
"cfg-if",
"concurrent-queue",
"futures-io",
"futures-lite 2.0.1",
"parking",
"polling 3.3.0",
"rustix 0.38.21",
"rustix 0.38.24",
"slab",
"tracing",
"waker-fn",
@ -323,11 +336,11 @@ dependencies = [
[[package]]
name = "async-lock"
version = "3.0.0"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45e900cdcd39bb94a14487d3f7ef92ca222162e6c7c3fe7cb3550ea75fb486ed"
checksum = "deb2ab2aa8a746e221ab826c73f48bc6ba41be6763f0855cb249eb6d154cf1d7"
dependencies = [
"event-listener 3.0.1",
"event-listener 3.1.0",
"event-listener-strategy",
"pin-project-lite",
]
@ -343,9 +356,9 @@ dependencies = [
"async-signal",
"blocking",
"cfg-if",
"event-listener 3.0.1",
"event-listener 3.1.0",
"futures-lite 1.13.0",
"rustix 0.38.21",
"rustix 0.38.24",
"windows-sys 0.48.0",
]
@ -372,7 +385,7 @@ dependencies = [
"cfg-if",
"futures-core",
"futures-io",
"rustix 0.38.21",
"rustix 0.38.24",
"signal-hook-registry",
"slab",
"windows-sys 0.48.0",
@ -384,7 +397,7 @@ version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
dependencies = [
"async-channel",
"async-channel 1.9.0",
"async-global-executor",
"async-io 1.13.0",
"async-lock 2.8.0",
@ -593,16 +606,16 @@ dependencies = [
[[package]]
name = "blocking"
version = "1.4.1"
version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a"
checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
dependencies = [
"async-channel",
"async-lock 2.8.0",
"async-channel 2.1.0",
"async-lock 3.1.0",
"async-task",
"fastrand 2.0.1",
"futures-io",
"futures-lite 1.13.0",
"futures-lite 2.0.1",
"piper",
"tracing",
]
@ -721,7 +734,7 @@ dependencies = [
"bitflags 2.4.1",
"log",
"polling 3.3.0",
"rustix 0.38.21",
"rustix 0.38.24",
"slab",
"thiserror",
]
@ -733,7 +746,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
dependencies = [
"calloop 0.12.3",
"rustix 0.38.21",
"rustix 0.38.24",
"wayland-backend",
"wayland-client",
]
@ -851,9 +864,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.4.7"
version = "4.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b"
checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64"
dependencies = [
"clap_builder",
"clap_derive",
@ -861,9 +874,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.4.7"
version = "4.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663"
checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc"
dependencies = [
"anstream",
"anstyle",
@ -1635,9 +1648,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
version = "0.3.6"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e"
checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8"
dependencies = [
"libc",
"windows-sys 0.48.0",
@ -1660,9 +1673,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
[[package]]
name = "event-listener"
version = "3.0.1"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01cec0252c2afff729ee6f00e903d479fba81784c8e2bd77447673471fdfaea1"
checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2"
dependencies = [
"concurrent-queue",
"parking",
@ -1675,7 +1688,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d96b852f1345da36d551b9473fa1e2b1eb5c5195585c6c018118bc92a8d91160"
dependencies = [
"event-listener 3.0.1",
"event-listener 3.1.0",
"pin-project-lite",
]
@ -1848,7 +1861,7 @@ dependencies = [
"intl-memoizer",
"intl_pluralrules",
"rustc-hash",
"self_cell",
"self_cell 0.10.3",
"smallvec",
"unic-langid",
]
@ -4277,7 +4290,7 @@ dependencies = [
"cfg-if",
"concurrent-queue",
"pin-project-lite",
"rustix 0.38.21",
"rustix 0.38.24",
"tracing",
"windows-sys 0.48.0",
]
@ -4780,9 +4793,9 @@ dependencies = [
[[package]]
name = "rustix"
version = "0.38.21"
version = "0.38.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"
checksum = "9ad981d6c340a49cdc40a1028d9c6084ec7e9fa33fcb839cab656a267071e234"
dependencies = [
"bitflags 2.4.1",
"errno",
@ -4793,9 +4806,9 @@ dependencies = [
[[package]]
name = "rustls"
version = "0.21.8"
version = "0.21.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c"
checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9"
dependencies = [
"log",
"ring",
@ -4903,9 +4916,18 @@ dependencies = [
[[package]]
name = "self_cell"
version = "0.10.2"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ef965a420fe14fdac7dd018862966a4c14094f900e1650bbc71ddd7d580c8af"
checksum = "e14e4d63b804dc0c7ec4a1e52bcb63f02c7ac94476755aa579edac21e01f915d"
dependencies = [
"self_cell 1.0.2",
]
[[package]]
name = "self_cell"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e388332cd64eb80cd595a00941baf513caffae8dce9cfd0467fc9c66397dade6"
[[package]]
name = "semver"
@ -5158,7 +5180,7 @@ dependencies = [
"libc",
"log",
"memmap2 0.9.0",
"rustix 0.38.21",
"rustix 0.38.24",
"thiserror",
"wayland-backend",
"wayland-client",
@ -5241,7 +5263,7 @@ dependencies = [
"objc",
"raw-window-handle 0.5.2",
"redox_syscall 0.4.1",
"rustix 0.38.21",
"rustix 0.38.24",
"tiny-xlib",
"wasm-bindgen",
"wayland-backend",
@ -5605,15 +5627,15 @@ dependencies = [
"cfg-if",
"fastrand 2.0.1",
"redox_syscall 0.4.1",
"rustix 0.38.21",
"rustix 0.38.24",
"windows-sys 0.48.0",
]
[[package]]
name = "termcolor"
version = "1.3.0"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64"
checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449"
dependencies = [
"winapi-util",
]
@ -5882,9 +5904,9 @@ dependencies = [
[[package]]
name = "tracing-log"
version = "0.1.4"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2"
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
dependencies = [
"log",
"once_cell",
@ -5893,9 +5915,9 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
version = "0.3.17"
version = "0.3.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
dependencies = [
"matchers",
"nu-ansi-term",
@ -6553,7 +6575,7 @@ dependencies = [
"either",
"home",
"once_cell",
"rustix 0.38.21",
"rustix 0.38.24",
]
[[package]]
@ -6784,7 +6806,7 @@ dependencies = [
"percent-encoding",
"raw-window-handle 0.5.2",
"redox_syscall 0.3.5",
"rustix 0.38.21",
"rustix 0.38.24",
"sctk-adwaita",
"smithay-client-toolkit",
"smol_str",
@ -7026,18 +7048,18 @@ dependencies = [
[[package]]
name = "zerocopy"
version = "0.7.25"
version = "0.7.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557"
checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.7.25"
version = "0.7.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b"
checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f"
dependencies = [
"proc-macro2",
"quote",

View file

@ -37,7 +37,7 @@ fn change_language(gui_data: &GuiData) {
pub fn load_system_language(gui_data: &GuiData) {
let requested_languages = DesktopLanguageRequester::requested_languages();
if let Some(language) = requested_languages.get(0) {
if let Some(language) = requested_languages.first() {
let old_short_lang = language.to_string();
let mut short_lang = String::new();
// removes from e.g. en_zb, ending _zd since Czkawka don't support this(maybe could add this in future, but only when)

View file

@ -6,7 +6,7 @@ use crate::GuiData;
pub fn validate_notebook_data(gui_data: &GuiData) {
// Test treeviews names, each treeview should have set name same as variable name
for (_i, item) in gui_data.main_notebook.get_main_tree_views().iter().enumerate() {
for item in gui_data.main_notebook.get_main_tree_views().iter() {
// println!("Checking {} element", i);
get_notebook_enum_from_tree_view(item);

View file

@ -14,29 +14,29 @@ build = "build.rs"
# Try to use only needed features from https://github.com/slint-ui/slint/blob/master/api/rs/slint/Cargo.toml#L23-L31
#slint = { path = "/home/rafal/test/slint/api/rs/slint/", default-features = false, features = ["std",
#slint = { git = "https://github.com/slint-ui/slint.git", default-features = false, features = [
slint = { version = "1.3.0", default-features = false, features = [
slint = { version = "1.3", default-features = false, features = [
"std",
"backend-winit",
"compat-1-2"
] }
rand = "0.8.5"
rand = "0.8"
czkawka_core = { version = "6.1.0", path = "../czkawka_core" }
chrono = "0.4.31"
open = "5.0.0"
open = "5.0"
crossbeam-channel = "0.5.8"
handsome_logger = "0.8.0"
rfd = { version = "0.12.0", default-features = false, features = ["xdg-portal"] }
home = "0.5.5"
handsome_logger = "0.8"
rfd = { version = "0.12", default-features = false, features = ["xdg-portal"] }
home = "0.5"
log = "0.4.20"
serde = "1.0"
serde_json = "1.0"
humansize = "2.1.3"
image = "0.24.7"
humansize = "2.1"
image = "0.24"
directories-next = "2.0"
[build-dependencies]
slint-build = "1.3.0"
slint-build = "1.3"
#slint-build = { git = "https://github.com/slint-ui/slint.git" }
#slint-build = { path = "/home/rafal/test/slint/api/rs/build/"}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

View file

@ -0,0 +1 @@
<svg height="48" viewBox="0 0 48 48" width="48" xmlns="http://www.w3.org/2000/svg"><path d="m39.6 27.2c.1-.7.2-1.4.2-2.2s-.1-1.5-.2-2.2l4.5-3.2c.4-.3.6-.9.3-1.4l-4.4-7.4c-.3-.5-.8-.7-1.3-.4l-5 2.3c-1.2-.9-2.4-1.6-3.8-2.2l-.5-5.5c-.1-.5-.5-.9-1-.9h-8.6c-.5 0-1 .4-1 .9l-.5 5.5c-1.4.6-2.7 1.3-3.8 2.2l-5-2.3c-.5-.2-1.1 0-1.3.4l-4.3 7.4c-.3.5-.1 1.1.3 1.4l4.5 3.2c-.1.7-.2 1.4-.2 2.2s.1 1.5.2 2.2l-4.7 3.2c-.4.3-.6.9-.3 1.4l4.3 7.4c.3.5.8.7 1.3.4l5-2.3c1.2.9 2.4 1.6 3.8 2.2l.5 5.5c.1.5.5.9 1 .9h8.6c.5 0 1-.4 1-.9l.5-5.5c1.4-.6 2.7-1.3 3.8-2.2l5 2.3c.5.2 1.1 0 1.3-.4l4.3-7.4c.3-.5.1-1.1-.3-1.4zm-15.6 7.8c-5.5 0-10-4.5-10-10s4.5-10 10-10 10 4.5 10 10-4.5 10-10 10z" fill="#607d8b"/><path d="m24 13c-6.6 0-12 5.4-12 12s5.4 12 12 12 12-5.4 12-12-5.4-12-12-12zm0 17c-2.8 0-5-2.2-5-5s2.2-5 5-5 5 2.2 5 5-2.2 5-5 5z" fill="#455a64"/></svg>

After

Width:  |  Height:  |  Size: 833 B

View file

@ -12,9 +12,18 @@ pub fn connect_delete_button(app: &MainWindow) {
let active_tab = app.get_active_tab();
match active_tab {
CurrentTab::EmptyFolders => handle_delete_empty_folders(&app),
let model = match active_tab {
CurrentTab::EmptyFolders => app.get_empty_folder_model(),
_ => panic!(),
};
let new_model = handle_delete_items(&model);
if let Some(new_model) = new_model {
match active_tab {
CurrentTab::EmptyFolders => app.set_empty_folder_model(new_model),
_ => panic!(),
}
}
});
}
@ -32,6 +41,19 @@ fn handle_delete_empty_folders(app: &MainWindow) {
}
}
fn handle_delete_items(items: &ModelRc<MainListModel>) -> Option<ModelRc<MainListModel>> {
let (entries_to_delete, mut entries_left) = filter_out_checked_items(items.borrow(), false);
if !entries_to_delete.is_empty() {
remove_selected_items(entries_to_delete);
deselect_all_items(&mut entries_left);
let r = ModelRc::new(VecModel::from(entries_left));
return Some(r);
}
None
}
// TODO delete in parallel items, consider to add progress bar
fn remove_selected_items(items: Vec<MainListModel>) {
info!("Items to remove {}", items.len());
@ -145,13 +167,13 @@ mod tests {
}
#[test]
#[should_panic]
#[should_panic(expected = "First item in normal model, cannot be header")]
fn test_filter_out_checked_items_one_element_invalid_normal() {
let items = create_new_model(vec![(false, true, false, vec![])]);
filter_out_checked_items(&items, false);
}
#[test]
#[should_panic]
#[should_panic(expected = "First item in header model must be a header")]
fn test_filter_out_checked_items_one_element_invalid_header() {
let items = create_new_model(vec![(false, false, false, vec![])]);
filter_out_checked_items(&items, true);

View file

@ -26,23 +26,28 @@ export component ActionButtons inherits HorizontalLayout {
out property <int> name;
height: 30px;
spacing: 4px;
scan_button := Button {
height: parent.height;
enabled: !scanning;
text: "Scan";
clicked => {
root.scanning = true;
root.scan_starting(active-tab);
}
}
stop_button := Button {
height: parent.height;
enabled: scanning && !stop_requested;
text: "Stop";
clicked => {
root.scan_stopping();
root.stop_requested = true;
Rectangle {
scan_button := Button {
height: parent.height;
enabled: !scanning;
visible: !scanning;
text: "Scan";
clicked => {
root.scanning = true;
root.scan_starting(active-tab);
}
}
stop_button := Button {
height: parent.height;
visible: scanning;
enabled: scanning && !stop_requested;
text: "Stop";
clicked => {
root.scan_stopping();
root.stop_requested = true;
}
}
}

View file

@ -113,7 +113,7 @@ export component LeftSidePanel {
alignment: end;
Image {
width: 20px;
source: @image-url("../icons/settings.png");
source: @image-url("../icons/settings.svg");
}
}
}