1
0
Fork 0
mirror of synced 2024-09-29 16:51:57 +13:00
czkawka/krokiet/ui/settings_list.slint
2023-11-26 11:10:15 +01:00

169 lines
No EOL
4.7 KiB
Text

import { Button, VerticalBox , HorizontalBox, TabWidget, ListView, StandardListView, StandardTableView, CheckBox, ScrollView, LineEdit, SpinBox, ComboBox, TextEdit} from "std-widgets.slint";
import { Settings } from "settings.slint";
import { Callabler } from "callabler.slint";
// TODO use Spinbox instead LineEdit {} to be able to set only numbers
global SettingsSize {
out property <length> item_height: 30px;
}
component TextComponent inherits HorizontalLayout {
in-out property <string> model;
in property <string> name;
spacing: 5px;
Text {
horizontal-stretch: 0.0;
vertical-alignment: TextVerticalAlignment.center;
text: name;
}
LineEdit {
horizontal-stretch: 1.0;
height: SettingsSize.item_height;
text <=> model;
}
}
component MinMaxSizeComponent inherits HorizontalLayout {
spacing: 20px;
Text {
horizontal-stretch: 0.0;
text:"Items Size(Bytes)";
vertical-alignment: TextVerticalAlignment.center;
}
HorizontalLayout {
spacing: 5px;
horizontal-stretch: 1.0;
Text {
text:"Min:";
vertical-alignment: TextVerticalAlignment.center;
}
LineEdit {
height: SettingsSize.item_height;
text <=> Settings.minimum_file_size;
}
Text {
text:"Max:";
vertical-alignment: TextVerticalAlignment.center;
}
LineEdit {
height: SettingsSize.item_height;
text <=> Settings.maximum_file_size;
}
}
}
component Presets inherits Rectangle {
property <bool> edit_name;
property <string> current_index;
if !edit_name: HorizontalLayout {
spacing: 5px;
Text {
text : "Current Preset:";
vertical-alignment: TextVerticalAlignment.center;
}
combo_box := ComboBox {
current-index <=> Settings.settings_preset_idx;
model: Settings.settings_presets;
selected(item) => {
Settings.settings_preset_idx = self.current_index;
Callabler.changed_settings_preset();
}
}
Button {
text: "Edit name";
clicked => {
root.edit_name = !root.edit_name;
}
}
}
if edit_name : HorizontalLayout{
spacing: 5px;
Text {
text: "Choose name for prefix " + (Settings.settings_preset_idx + 1);
vertical-alignment: TextVerticalAlignment.center;
}
current_name := LineEdit {
text: Settings.settings_presets[Settings.settings_preset_idx];
}
Button {
text: "Save";
clicked => {
Settings.settings_presets[Settings.settings_preset_idx] = current_name.text;
edit_name = false;
}
}
}
}
component Language inherits HorizontalLayout {
spacing: 5px;
Text {
text: Callabler.translate("settings_language", []);
vertical-alignment: TextVerticalAlignment.center;
}
ComboBox {
model: ["English"];
}
}
export component SettingsList inherits VerticalLayout {
preferred-height: 300px;
preferred-width: 400px;
Text {
text: "Settings";
height: SettingsSize.item_height;
horizontal-alignment: TextHorizontalAlignment.center;
font-size: 20px;
}
ScrollView {
VerticalLayout {
spacing: 5px;
Presets{
height: SettingsSize.item_height;
}
Language {
height: SettingsSize.item_height;
}
Text {
text: "General settings";
height: SettingsSize.item_height;
horizontal-alignment: TextHorizontalAlignment.center;
vertical-alignment: TextVerticalAlignment.center;
}
TextComponent {
name: "Excluded item:";
model <=> Settings.excluded_items;
}
TextComponent {
name: "Allowed extensions:";
model <=> Settings.allowed_extensions;
}
MinMaxSizeComponent {
}
}
}
HorizontalLayout {
spacing: 5px;
Button {
text: "Save";
clicked => {
Callabler.save_current_preset();
}
}
Button {
text: "Load";
clicked => {
Callabler.load_current_preset();
}
}
Button {
text: "Reset";
clicked => {
Callabler.reset_current_preset();
}
}
}
}