import {Button, StandardListView, VerticalBox, ListView, ScrollView, TextEdit, CheckBox} from "std-widgets.slint"; import {Callabler} from "callabler.slint"; import {IncludedDirectoriesModel, ExcludedDirectoriesModel} from "common.slint"; import {ColorPalette} from "color_palette.slint"; import {Settings} from "settings.slint"; export component IncludedDirectories { in-out property <[IncludedDirectoriesModel]> model <=> Settings.included_directories_model; in-out property current_index <=> Settings.included_directories_model_selected_idx; in-out property size_referenced_folder: 33px; min-width: 50px; VerticalLayout { HorizontalLayout { spacing: 5px; Text { text: "Ref"; width: size_referenced_folder; horizontal-alignment: center; } Text{ horizontal-stretch: 1.0; text: "Path"; } } ListView { for r[idx] in model : Rectangle { height: 30px; border_radius: 5px; width: parent.width; background: touch-area.has-hover ? (r.selected_row ? ColorPalette.list-view-normal-selected-header : ColorPalette.list_view_normal_color) : (r.selected_row ? ColorPalette.list-view-normal-selected-header : ColorPalette.list_view_normal_color); touch_area := TouchArea { clicked => { if (current_index == -1) { r.selected_row = true; } else { if (current_index != idx) { model[current_index].selected_row = false; } r.selected_row = true; } current_index = idx; } double-clicked => { Callabler.item_opened(r.path); } } HorizontalLayout { spacing: 5px; width: parent.width; CheckBox { checked: r.referenced_folder; toggled => { model[idx].referenced_folder = self.checked; } width: size_referenced_folder; } Text { horizontal-stretch: 1.0; text: r.path; vertical-alignment: center; } } } } } } export component ExcludedDirectories { in-out property <[ExcludedDirectoriesModel]> model <=> Settings.excluded_directories_model; in-out property current_index <=> Settings.excluded_directories_model_selected_idx; min-width: 50px; VerticalLayout { HorizontalLayout { spacing: 5px; padding-left: 5px; Text { text: "Path"; } } ListView { for r[idx] in model : Rectangle { height: 30px; border_radius: 5px; width: parent.width; background: touch-area.has-hover ? (r.selected_row ? ColorPalette.list-view-normal-selected-header : ColorPalette.list_view_normal_color) : (r.selected_row ? ColorPalette.list-view-normal-selected-header : ColorPalette.list_view_normal_color); touch_area := TouchArea { clicked => { if (current_index == -1) { r.selected_row = true; } else { if (current_index != idx) { model[current_index].selected_row = false; } r.selected_row = true; } current_index = idx; } double-clicked => { Callabler.item_opened(r.path); } } Text { x: 5px; width: parent.width; height: parent.height; text: r.path; vertical-alignment: center; } } } } }