From 305af6a391d7254a58c7983557682beb8ea3abe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mikrut?= Date: Sat, 10 Feb 2024 20:36:14 +0100 Subject: [PATCH] Added select --- krokiet/src/connect_select.rs | 0 krokiet/src/connect_show_preview.rs | 21 ++++++++++++++++++--- krokiet/src/main.rs | 1 + krokiet/ui/callabler.slint | 4 +++- krokiet/ui/common.slint | 6 ++++++ krokiet/ui/gui_state.slint | 1 + krokiet/ui/included_directories.slint | 1 + krokiet/ui/popup_select_results.slint | 1 + 8 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 krokiet/src/connect_select.rs diff --git a/krokiet/src/connect_select.rs b/krokiet/src/connect_select.rs new file mode 100644 index 0000000..e69de29 diff --git a/krokiet/src/connect_show_preview.rs b/krokiet/src/connect_show_preview.rs index ccdcc1c..b516709 100644 --- a/krokiet/src/connect_show_preview.rs +++ b/krokiet/src/connect_show_preview.rs @@ -22,7 +22,12 @@ pub fn connect_show_preview(app: &MainWindow) { let active_tab = gui_state.get_active_tab(); if active_tab == CurrentTab::SimilarImages && !settings.get_similar_images_show_image_preview() { - gui_state.set_preview_visible(false); + set_preview_visible(&gui_state, None); + return; + } + + // Do not load the same image again + if image_path == gui_state.get_preview_image_path() { return; } @@ -42,13 +47,23 @@ pub fn connect_show_preview(app: &MainWindow) { "Loading image took: {:?}, converting image took: {:?}, setting image took: {:?}", load_time, convert_time, set_time ); - gui_state.set_preview_visible(true); + set_preview_visible(&gui_state, Some(image_path.as_str())); } else { - gui_state.set_preview_visible(false); + set_preview_visible(&gui_state, None); } }); } +fn set_preview_visible(gui_state: &GuiState, preview: Option<&str>) { + if let Some(preview) = preview { + gui_state.set_preview_image_path(preview.into()); + gui_state.set_preview_visible(true); + } else { + gui_state.set_preview_image_path("".into()); + gui_state.set_preview_visible(false); + } +} + fn convert_into_slint_image(img: DynamicImage) -> slint::Image { let image_buffer: ImageBufferRgba = img.to_rgba8(); let buffer = slint::SharedPixelBuffer::::clone_from_slice(image_buffer.as_raw(), image_buffer.width(), image_buffer.height()); diff --git a/krokiet/src/main.rs b/krokiet/src/main.rs index cc460d1..cce150f 100644 --- a/krokiet/src/main.rs +++ b/krokiet/src/main.rs @@ -42,6 +42,7 @@ mod connect_directories_changes; mod connect_open; mod connect_progress_receiver; mod connect_scan; +mod connect_select; mod connect_show_preview; mod connect_stop; mod connect_translation; diff --git a/krokiet/ui/callabler.slint b/krokiet/ui/callabler.slint index a1a82ab..70a58fb 100644 --- a/krokiet/ui/callabler.slint +++ b/krokiet/ui/callabler.slint @@ -1,3 +1,5 @@ +import { SelectMode } from "common.slint"; + export global Callabler { // Bottom panel operations callback remove_item_directories(bool); @@ -7,7 +9,7 @@ export global Callabler { callback item_opened(string); callback delete_selected_items(); - // callback (); + callback select_items(SelectMode); // Preview callback load_image_preview(string); diff --git a/krokiet/ui/common.slint b/krokiet/ui/common.slint index acea767..fac57d5 100644 --- a/krokiet/ui/common.slint +++ b/krokiet/ui/common.slint @@ -38,4 +38,10 @@ export struct IncludedDirectoriesModel { export struct ExcludedDirectoriesModel { path: string, selected_row: bool, +} + +export enum SelectMode { + SelectAll, + UnselectAll, + InvertSelection } \ No newline at end of file diff --git a/krokiet/ui/gui_state.slint b/krokiet/ui/gui_state.slint index 97570ba..697045d 100644 --- a/krokiet/ui/gui_state.slint +++ b/krokiet/ui/gui_state.slint @@ -8,6 +8,7 @@ export global GuiState { in-out property info_text: "Nothing to report"; in-out property preview_visible; in-out property preview_image; + in-out property preview_image_path; in-out property maximum_threads: 40; diff --git a/krokiet/ui/included_directories.slint b/krokiet/ui/included_directories.slint index 23fca80..5ee2881 100644 --- a/krokiet/ui/included_directories.slint +++ b/krokiet/ui/included_directories.slint @@ -79,6 +79,7 @@ export component ExcludedDirectories { VerticalLayout { HorizontalLayout { spacing: 5px; + padding-left: 5px; Text { text: "Path"; } diff --git a/krokiet/ui/popup_select_results.slint b/krokiet/ui/popup_select_results.slint index d1d24bc..8c8e91d 100644 --- a/krokiet/ui/popup_select_results.slint +++ b/krokiet/ui/popup_select_results.slint @@ -29,6 +29,7 @@ export component PopupSelectResults inherits Rectangle { Rectangle { width: parent.width; height: parent.height; + border-radius: 5px; background: ColorPalette.popup_background; VerticalLayout { for i in model: Button {