1
0
Fork 0
mirror of synced 2024-06-27 02:21:05 +12:00
czkawka/czkawka_slint_gui/ui/main_window.slint

84 lines
4 KiB
Plaintext
Raw Normal View History

2023-10-18 08:31:08 +13:00
import { Button, VerticalBox , HorizontalBox, TabWidget, ListView, StandardListView, StandardTableView, CheckBox} from "std-widgets.slint";
import {SelectableTableView} from "selectable_tree_view.slint";
2023-10-21 19:36:56 +13:00
import {LeftSidePanel} from "left_side_panel.slint";
import {CurrentTab} from "common.slint";
2023-10-18 08:31:08 +13:00
2023-10-21 19:36:56 +13:00
export component MainWindow inherits Window {
2023-10-22 10:33:29 +13:00
callback deleted;
2023-10-21 19:36:56 +13:00
callback scanned(CurrentTab);
2023-10-22 10:33:29 +13:00
min-width: 300px;
2023-10-21 19:36:56 +13:00
in-out property <bool> scanning: false;
in-out property <CurrentTab> active-tab: CurrentTab.EmptyFolders;
2023-10-22 10:33:29 +13:00
in-out property <[{checked: bool, header_row: bool, selected_row: bool, val:[string]}]> empty_folder_model: [
2023-10-21 19:36:56 +13:00
{checked: false, selected_row: false, header_row: true, val: ["kropkarz", "/Xd1", "24.10.2023"]} ,
2023-10-22 10:33:29 +13:00
{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"]} ,
2023-10-21 19:36:56 +13:00
{checked: true, selected_row: false, header_row: false, val: ["lokkaler", "/Xd1/Vide2", "01.23.1911"]}
];
2023-10-22 10:33:29 +13:00
in-out property <[{checked: bool, header_row: bool, selected_row: bool, val:[string]}]> empty_files_model: [];
in-out property <[{checked: bool, header_row: bool, selected_row: bool, val:[string]}]> similar_images_model: [];
2023-10-21 19:36:56 +13:00
title: root.active-tab == CurrentTab.EmptyFiles ? "EmptyFiles" : (root.active-tab == CurrentTab.EmptyFolders ? "EmptyFolders" : "Similar Images");
2023-10-19 20:32:37 +13:00
2023-10-18 08:31:08 +13:00
VerticalBox {
HorizontalBox {
2023-10-19 20:32:37 +13:00
// min-width: 600px;
2023-10-18 08:31:08 +13:00
preferred-height: 300px;
2023-10-21 19:36:56 +13:00
LeftSidePanel {
2023-10-22 10:33:29 +13:00
max-width: 10px; // Just forces the smallest possible
2023-10-21 19:36:56 +13:00
scanning: root.scanning;
active-tab <=> root.active-tab;
2023-10-18 08:31:08 +13:00
}
2023-10-21 19:36:56 +13:00
// TODO - using root.active-tab in visible property will not clear model
2023-10-18 08:31:08 +13:00
if root.active-tab == CurrentTab.EmptyFolders: SelectableTableView {
2023-10-19 20:32:37 +13:00
min-width: 200px;
2023-10-22 10:33:29 +13:00
columns: ["Selection", "Folder Name", "Path"];
last-column: "Modification Date";
column-sizes: [30px, 100px, 100px, 100px];
values <=> empty-folder-model;
2023-10-18 08:31:08 +13:00
}
2023-10-21 19:36:56 +13:00
if root.active-tab == CurrentTab.EmptyFiles: SelectableTableView {
min-width: 200px;
columns: ["Selection", "Folder Name", "Path", "Modification Date"];
2023-10-22 10:33:29 +13:00
values <=> empty-files-model;
2023-10-21 19:36:56 +13:00
}
if root.active-tab == CurrentTab.SimilarImages: SelectableTableView {
min-width: 200px;
columns: ["Selection", "Folder Name", "Path", "Modification Date"];
2023-10-22 10:33:29 +13:00
values <=> similar-images-model;
2023-10-21 19:36:56 +13:00
}
2023-10-18 08:31:08 +13:00
}
HorizontalBox {
2023-10-21 19:36:56 +13:00
height: 50px;
2023-10-18 08:31:08 +13:00
scan_button:= Button {
2023-10-21 19:36:56 +13:00
enabled: !scanning;
2023-10-18 08:31:08 +13:00
text: "Scan";
2023-10-21 19:36:56 +13:00
clicked => {
root.scanned(active-tab);
}
2023-10-18 08:31:08 +13:00
}
delete_button:= Button {
2023-10-21 19:36:56 +13:00
enabled: !scanning;
2023-10-18 08:31:08 +13:00
text: "Delete";
2023-10-20 08:39:48 +13:00
clicked => {
root.deleted();
}
2023-10-18 08:31:08 +13:00
}
}
}
}