diff --git a/krokiet/src/settings.rs b/krokiet/src/settings.rs index 0570d68..a6d3612 100644 --- a/krokiet/src/settings.rs +++ b/krokiet/src/settings.rs @@ -22,6 +22,7 @@ pub struct SettingsCustom { #[serde(default = "default_excluded_directories")] pub excluded_directories: Vec, } + impl Default for SettingsCustom { fn default() -> Self { Self { diff --git a/krokiet/ui/selectable_tree_view.slint b/krokiet/ui/selectable_tree_view.slint index 642d393..d35e239 100644 --- a/krokiet/ui/selectable_tree_view.slint +++ b/krokiet/ui/selectable_tree_view.slint @@ -24,14 +24,16 @@ export component SelectableTableView inherits Rectangle { } } - ScrollView { - VerticalBox { - padding: 5px; - forward-focus: focus-item; + VerticalBox { + padding: 0px; + forward-focus: focus-item; + ScrollView { + height: 30px; + viewport-x <=> list_view.viewport-x; + vertical-stretch: 0; + HorizontalLayout { - padding: 5px; spacing: 5px; - vertical-stretch: 0; for title [idx] in root.columns: HorizontalLayout { width: root.column-sizes[idx]; Text { @@ -66,70 +68,73 @@ export component SelectableTableView inherits Rectangle { } } } + } - list_view := ListView { - min-width: 100px; + list_view := ListView { + padding: 0px; + min-width: 100px; + forward-focus: focus-item; + for r [idx] in root.values: Rectangle { + width: column_sizes[0] + column_sizes[1] + column_sizes[2] + column_sizes[3] + column_sizes[4] + column_sizes[5] + column_sizes[6] + column_sizes[7] + column_sizes[8] + column_sizes[9] + column_sizes[10] + column_sizes[11]; + + border-radius: 5px; forward-focus: focus-item; - for r [idx] in root.values: Rectangle { - border-radius: 5px; + height: 20px; + background: r.header-row ? ColorPalette.list_view_normal_header_color : (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 { forward-focus: focus-item; - height: 20px; - background: r.header-row ? ColorPalette.list_view_normal_header_color : (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 { - forward-focus: focus-item; - clicked => { - if (!r.header_row) { - r.selected_row = !r.selected_row; - if (root.selected-item == -1) { + clicked => { + if (!r.header_row) { + r.selected_row = !r.selected_row; + if (root.selected-item == -1) { + root.selected-item = idx; + } else { + if (r.selected_row == true) { + root.values[root.selected-item].selected_row = false; root.selected-item = idx; } else { - if (r.selected_row == true) { - root.values[root.selected-item].selected_row = false; - root.selected-item = idx; - } else { - root.selected-item = -1; - } + root.selected-item = -1; } + } - if (root.selected_item != -1) { - Callabler.load_image_preview(r.val[root.parentPathIdx - 1] + "/" + r.val[root.fileNameIdx - 1]); - } else { - GuiState.preview-visible = false; - } + if (root.selected_item != -1) { + Callabler.load_image_preview(r.val[root.parentPathIdx - 1] + "/" + r.val[root.fileNameIdx - 1]); + } else { + GuiState.preview-visible = false; } } - pointer-event(event) => { - // TODO this should be clicked by double-click - if (event.button == PointerEventButton.right && event.kind == PointerEventKind.up) { - Callabler.item_opened(r.val[root.parentPathIdx - 1]) - } else if (event.button == PointerEventButton.middle && event.kind == PointerEventKind.up) { - Callabler.item_opened(r.val[root.parentPathIdx - 1] + "/" + r.val[root.fileNameIdx - 1]) - } + } + pointer-event(event) => { + // TODO this should be clicked by double-click + if (event.button == PointerEventButton.right && event.kind == PointerEventKind.up) { + Callabler.item_opened(r.val[root.parentPathIdx - 1]) + } else if (event.button == PointerEventButton.middle && event.kind == PointerEventKind.up) { + Callabler.item_opened(r.val[root.parentPathIdx - 1] + "/" + r.val[root.fileNameIdx - 1]) + } + } + } + + HorizontalLayout { + forward-focus: focus-item; + CheckBox { + visible: !r.header-row; + checked: r.checked && !r.header-row; + width: root.column-sizes[0]; + forward-focus: focus-item; + toggled => { + r.checked = self.checked; } } HorizontalLayout { - forward-focus: focus-item; - CheckBox { - visible: !r.header-row; - checked: r.checked && !r.header-row; - width: root.column-sizes[0]; + spacing: 5px; + for f [idx] in r.val: Text { + width: root.column-sizes[idx + 1]; + text: f; + font-size: 12px; forward-focus: focus-item; - toggled => { - r.checked = self.checked; - } - } - - HorizontalLayout { - spacing: 5px; - for f [idx] in r.val: Text { - width: root.column-sizes[idx + 1]; - text: f; - font-size: 12px; - forward-focus: focus-item; - vertical-alignment: center; - overflow: elide; - } + vertical-alignment: center; + overflow: elide; } } }