diff --git a/krokiet/src/connect_scan.rs b/krokiet/src/connect_scan.rs index 927393e..226cbdc 100644 --- a/krokiet/src/connect_scan.rs +++ b/krokiet/src/connect_scan.rs @@ -1,4 +1,5 @@ use crate::settings::{collect_settings, SettingsCustom}; +use crate::Settings; use crate::{CurrentTab, MainListModel, MainWindow, ProgressToSend}; use chrono::NaiveDateTime; use crossbeam_channel::{Receiver, Sender}; @@ -49,6 +50,7 @@ fn scan_empty_files(a: Weak, progress_sender: Sender, finder.find_empty_files(Some(&stop_receiver), Some(&progress_sender)); let mut vector = finder.get_empty_files().clone(); + let messages = finder.get_text_messages().create_messages_text(); vector.sort_unstable_by_key(|e| { let t = split_path(e.get_path()); @@ -56,6 +58,7 @@ fn scan_empty_files(a: Weak, progress_sender: Sender, }); a.upgrade_in_event_loop(move |app| { + let number_of_empty_files = vector.len(); let items = Rc::new(VecModel::default()); for fe in vector { let (directory, file) = split_path(fe.get_path()); @@ -74,7 +77,8 @@ fn scan_empty_files(a: Weak, progress_sender: Sender, items.push(main); } app.set_empty_files_model(items.into()); - app.invoke_scan_ended(); + app.invoke_scan_ended(format!("Found {} empty files", number_of_empty_files).into()); + app.global::().set_info_text(messages.into()); }) }); } @@ -87,6 +91,7 @@ fn scan_empty_folders(a: Weak, progress_sender: Sender finder.find_empty_folders(Some(&stop_receiver), Some(&progress_sender)); let mut vector = finder.get_empty_folder_list().keys().cloned().collect::>(); + let messages = finder.get_text_messages().create_messages_text(); vector.sort_unstable_by_key(|e| { let t = split_path(e.as_path()); @@ -113,7 +118,8 @@ fn scan_empty_folders(a: Weak, progress_sender: Sender items.push(main); } app.set_empty_folder_model(items.into()); - app.invoke_scan_ended(); + app.invoke_scan_ended(format!("Found {} empty folders", folder_map.len()).into()); + app.global::().set_info_text(messages.into()); }) }); } diff --git a/krokiet/src/settings.rs b/krokiet/src/settings.rs index 2366960..9fdb834 100644 --- a/krokiet/src/settings.rs +++ b/krokiet/src/settings.rs @@ -5,16 +5,19 @@ use std::path::PathBuf; use crate::common::create_string_standard_list_view_from_pathbuf; use crate::Settings; use home::home_dir; -use slint::{ComponentHandle, Model, SharedString}; +use slint::{ComponentHandle, Model}; #[cfg(target_family = "unix")] const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["/proc", "/dev", "/sys", "/run", "/snap"]; #[cfg(not(target_family = "unix"))] const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["C:\\Windows"]; -pub fn reset_settings(app: &MainWindow) { - app.invoke_set_console_text(SharedString::from("")); +pub struct SettingsCustom { + pub included_directories: Vec, + pub excluded_directories: Vec, +} +pub fn reset_settings(app: &MainWindow) { set_settings_to_gui(app, &SettingsCustom::default()); } @@ -28,11 +31,9 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) { // Excluded directories let excluded_items = create_string_standard_list_view_from_pathbuf(&custom_settings.excluded_directories); settings.set_excluded_directories(excluded_items); -} -pub struct SettingsCustom { - pub included_directories: Vec, - pub excluded_directories: Vec, + // Clear text + app.global::().set_info_text("".into()); } impl Default for SettingsCustom { diff --git a/krokiet/ui/action_buttons.slint b/krokiet/ui/action_buttons.slint index 6d8e70e..4614ca0 100644 --- a/krokiet/ui/action_buttons.slint +++ b/krokiet/ui/action_buttons.slint @@ -87,7 +87,7 @@ export component ActionButtons inherits HorizontalLayout { height: parent.height; button-visibility: BottomPanelVisibility.NotVisible; bottom_panel_visibility <=> bottom_panel_visibility; - text: "NotVS"; + text: "None"; } } } \ No newline at end of file diff --git a/krokiet/ui/bottom_panel.slint b/krokiet/ui/bottom_panel.slint index 7b11542..2de8812 100644 --- a/krokiet/ui/bottom_panel.slint +++ b/krokiet/ui/bottom_panel.slint @@ -84,21 +84,19 @@ component DirectoriesPanel { } } } -// TODO this should be a normal read only Text editor + component TextErrorsPanel inherits TextEdit { height: 20px; read-only: true; - text: "Something\nShould be\nASFASF\nasgasg\nASfgasga\nasfgAGAWGW\nAfgAWFGAWG\nfawfafgweg\nAFGWGTwgwg\nGawgAWFWAF\nawfawgaw\nasfa \nasfawgw\nawfawg\nRRRRRR"; + text <=> Settings.info_text; } export component BottomPanel { in-out property bottom_panel_visibility: BottomPanelVisibility.Directories; - in-out property console_text; callback folder-choose-requested(bool); callback show_manual_add_dialog(bool); - callback set_console_text(string); min-height: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 150px; min-width: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 400px; @@ -111,13 +109,7 @@ export component BottomPanel { } if bottom-panel-visibility == BottomPanelVisibility.TextErrors : TextErrorsPanel { - text: console_text; - width: parent.width; height: parent.height; } - - set_console_text(text) => { - console_text = text; - } } diff --git a/krokiet/ui/color_palette.slint b/krokiet/ui/color_palette.slint index 8150309..c448c20 100644 --- a/krokiet/ui/color_palette.slint +++ b/krokiet/ui/color_palette.slint @@ -6,9 +6,9 @@ export global ColorPalette { in-out property tab_hovered_color: StyleMetrics.dark-color-scheme ? #49494926 : #80808014; // ListView - in-out property list_view_normal_color: StyleMetrics.dark-color-scheme ? #474747 : #dddddd; - in-out property list_view_normal_header_color: StyleMetrics.dark-color-scheme ? #292929 : #888888; - in-out property list_view_normal_selected_header: StyleMetrics.dark-color-scheme ? #575757 : #cccccc; + in-out property list_view_normal_color: StyleMetrics.dark-color-scheme ? #222222 : #dddddd; + in-out property list_view_normal_header_color: StyleMetrics.dark-color-scheme ? #111111 : #888888; + in-out property list_view_normal_selected_header: StyleMetrics.dark-color-scheme ? #444444 : #cccccc; // Popup in-out property popup_background: StyleMetrics.dark-color-scheme ? #353535 : #5e5e5e; diff --git a/krokiet/ui/main_lists.slint b/krokiet/ui/main_lists.slint index f9a6562..34e50b5 100644 --- a/krokiet/ui/main_lists.slint +++ b/krokiet/ui/main_lists.slint @@ -28,9 +28,9 @@ export component MainList { if root.active-tab == CurrentTab.EmptyFiles: SelectableTableView { min-width: 200px; - columns: ["Selection", "Folder Name", "Path"]; + columns: ["Selection", "File Name", "Path"]; last-column: "Modification Date"; - column-sizes: [30px, 100px, 100px, 100px]; + column-sizes: [35px, 100px, 350px, 100px]; values <=> empty-files-model; parentPathIdx: 2; fileNameIdx: 1; @@ -40,9 +40,9 @@ export component MainList { if root.active-tab == CurrentTab.SimilarImages: SelectableTableView { min-width: 200px; - columns: ["Selection", "Folder Name", "Path"]; + columns: ["Selection", "File Name", "Path"]; last-column: "Modification Date"; - column-sizes: [30px, 100px, 100px, 100px]; + column-sizes: [35px, 100px, 350px, 100px]; values <=> similar-images-model; parentPathIdx: 2; fileNameIdx: 1; diff --git a/krokiet/ui/main_window.slint b/krokiet/ui/main_window.slint index 8250609..1465c31 100644 --- a/krokiet/ui/main_window.slint +++ b/krokiet/ui/main_window.slint @@ -19,9 +19,8 @@ export component MainWindow inherits Window { callback scan_starting(CurrentTab); callback item_opened(string); callback folder-choose-requested(bool); - callback set_console_text(string); - callback scan_ended(); + callback scan_ended(string); min-width: 300px; preferred-width: 800px; @@ -41,29 +40,6 @@ export component MainWindow inherits Window { {checked: false, selected_row: false, header_row: true, val: ["kropkarz", "/Xd1", "24.10.2023"]} , {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , - {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , {checked: true, selected_row: false, header_row: false, val: ["lokkaler", "/Xd1/Vide2", "01.23.1911"]} ]; in-out property <[MainListModel]> empty_files_model: []; @@ -146,10 +122,8 @@ export component MainWindow inherits Window { width: popup_item.width - 20px; height: popup_item.height - 20px; border-radius: 20px; - background: ColorPalette.popup_background; // TODO Dark theme + background: ColorPalette.popup_background; VerticalLayout { - // width: parent.width - 20px; - // height: parent.height - 20px; Text { text: "Please add directories one per line"; horizontal-alignment: TextHorizontalAlignment.center; @@ -182,12 +156,8 @@ export component MainWindow inherits Window { } - set_console_text(text) => { - bottom-panel.set_console_text(text); - } - - scan_ended() => { - text-summary.text = ""; // TODO this should be filled with results + scan_ended(scan_text) => { + text-summary.text = scan_text; root.scanning = false; root.stop_requested = false; } diff --git a/krokiet/ui/settings.slint b/krokiet/ui/settings.slint index f9d0efc..f95a6b7 100644 --- a/krokiet/ui/settings.slint +++ b/krokiet/ui/settings.slint @@ -1,6 +1,6 @@ export global Settings { - in-out property checkbox_checked: false; - in-out property <[StandardListViewItem]> included_directories: [{text: "ABCD"}, {text: "BCDA"}]; in-out property <[StandardListViewItem]> excluded_directories: [{text: "ABCD"}, {text: "BCDA"}, {text: "CDFFF"}]; + + in-out property info_text: "Nothing to report"; } \ No newline at end of file