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");
}
}
}