import {CurrentTab} from "common.slint";
import {SelectModel, SelectMode, BottomPanelVisibility} from "common.slint";

// State Gui state that shows the current state of the GUI
// It extends Settings global state with settings that are not saved to the settings file
export global GuiState {
    in-out property <length> app_width;
    in-out property <length> app_height;

    in-out property <string> info_text: "Nothing to report";
    in-out property <bool> preview_visible;
    in-out property <image> preview_image;
    in-out property <string> preview_image_path;

    in-out property <float> maximum_threads: 40;

    in-out property <bool> choosing_include_directories;
    in-out property <bool> visible_tool_settings;

    in-out property <bool> available_subsettings: active_tab == CurrentTab.SimilarImages || active_tab == CurrentTab.DuplicateFiles || active_tab == CurrentTab.SimilarVideos || active_tab == CurrentTab.SimilarMusic || active_tab == CurrentTab.BigFiles || active_tab == CurrentTab.BrokenFiles;
    in-out property <CurrentTab> active_tab: CurrentTab.DuplicateFiles;
    in-out property <bool> is_tool_tab_active: active_tab != CurrentTab.Settings && active_tab != CurrentTab.About;
    in-out property <[SelectModel]> select_results_list: [{data: SelectMode.SelectAll, name: "Select All"}, {data: SelectMode.UnselectAll, name: "Deselect All"}, {data: SelectMode.SelectTheSmallestResolution, name: "Select the smallest resolution"}];

    in-out property <BottomPanelVisibility> bottom_panel_visibility: BottomPanelVisibility.Directories;
}
