diff --git a/Cargo.lock b/Cargo.lock index 722acd2..de3cfda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", diff --git a/czkawka_gui/src/connect_things/connect_change_language.rs b/czkawka_gui/src/connect_things/connect_change_language.rs index 425aa24..f52817e 100644 --- a/czkawka_gui/src/connect_things/connect_change_language.rs +++ b/czkawka_gui/src/connect_things/connect_change_language.rs @@ -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) diff --git a/czkawka_gui/src/tests.rs b/czkawka_gui/src/tests.rs index f70a469..522f0fa 100644 --- a/czkawka_gui/src/tests.rs +++ b/czkawka_gui/src/tests.rs @@ -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); diff --git a/krokiet/Cargo.toml b/krokiet/Cargo.toml index 0204576..de5a113 100644 --- a/krokiet/Cargo.toml +++ b/krokiet/Cargo.toml @@ -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/"} diff --git a/krokiet/icons/logo.png b/krokiet/icons/logo.png index 1064e49..20230dc 100644 Binary files a/krokiet/icons/logo.png and b/krokiet/icons/logo.png differ diff --git a/krokiet/icons/settings.png b/krokiet/icons/settings.png deleted file mode 100644 index 475bd01..0000000 Binary files a/krokiet/icons/settings.png and /dev/null differ diff --git a/krokiet/icons/settings.svg b/krokiet/icons/settings.svg new file mode 100644 index 0000000..ac19230 --- /dev/null +++ b/krokiet/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/krokiet/src/connect_delete.rs b/krokiet/src/connect_delete.rs index a385d59..ec95daf 100644 --- a/krokiet/src/connect_delete.rs +++ b/krokiet/src/connect_delete.rs @@ -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) -> Option> { + 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) { 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); diff --git a/krokiet/ui/action_buttons.slint b/krokiet/ui/action_buttons.slint index 48c4536..56b5070 100644 --- a/krokiet/ui/action_buttons.slint +++ b/krokiet/ui/action_buttons.slint @@ -26,23 +26,28 @@ export component ActionButtons inherits HorizontalLayout { out property 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; + } } } diff --git a/krokiet/ui/left_side_panel.slint b/krokiet/ui/left_side_panel.slint index 85196aa..77f663b 100644 --- a/krokiet/ui/left_side_panel.slint +++ b/krokiet/ui/left_side_panel.slint @@ -113,7 +113,7 @@ export component LeftSidePanel { alignment: end; Image { width: 20px; - source: @image-url("../icons/settings.png"); + source: @image-url("../icons/settings.svg"); } } }