mirror of
https://codeberg.org/vyn/mirai.git
synced 2025-07-01 17:03:19 +00:00
101 lines
2 KiB
Text
101 lines
2 KiB
Text
import { Date, Time, ComboBox } from "std-widgets.slint";
|
|
import { VTimePicker, VDatePicker, VButton, VTextInput, VText, Palette } from "@vynui";
|
|
import { Backend } from "../Backend.slint";
|
|
|
|
export struct NewEventParams {
|
|
sourceId: int,
|
|
title: string,
|
|
date: Date,
|
|
startsAt: Time,
|
|
endsAt: Time
|
|
}
|
|
|
|
export struct SaveEventParams {
|
|
sourceId: int,
|
|
id: int,
|
|
title: string,
|
|
date: Date,
|
|
startsAt: Time,
|
|
endsAt: Time
|
|
}
|
|
|
|
export component EventWindow inherits Window {
|
|
title: "Mirai - " + (eventId == -1 ? "New event" : "Edit event");
|
|
min-width: 100px;
|
|
max-width: 1920px;
|
|
preferred-width: 512px;
|
|
min-height: 100px;
|
|
max-height: 4000px;
|
|
default-font-size: 16px;
|
|
background: Palette.background;
|
|
|
|
in-out property<int> sourceId <=> sourceInput.current-index;
|
|
in-out property<int> eventId: -1;
|
|
in-out property<Date> taskDate <=> taskDateInput.date;
|
|
in-out property<string> taskTitle <=> taskTitleInput.text;
|
|
in-out property<Time> startsAt <=> eventStartTimeInput.time;
|
|
in-out property<Time> endsAt <=> eventEndTimeInput.time;
|
|
|
|
callback create(NewEventParams);
|
|
callback save(SaveEventParams);
|
|
|
|
VerticalLayout {
|
|
padding: 16px;
|
|
spacing: 8px;
|
|
VText {
|
|
text: eventId == -1 ? "New event" : "Edit event";
|
|
}
|
|
|
|
sourceInput := ComboBox {
|
|
model: Backend.sources;
|
|
enabled: eventId == -1;
|
|
}
|
|
|
|
taskTitleInput := VTextInput {
|
|
label: "Title";
|
|
wrap: word-wrap;
|
|
}
|
|
|
|
taskDateInput := VDatePicker {
|
|
label: "Date";
|
|
}
|
|
|
|
HorizontalLayout {
|
|
spacing: 4px;
|
|
eventStartTimeInput := VTimePicker {
|
|
label: "Starts at";
|
|
}
|
|
|
|
eventEndTimeInput := VTimePicker {
|
|
label: "Ends at";
|
|
}
|
|
}
|
|
|
|
|
|
VButton {
|
|
text: eventId == -1 ? "Create" : "Save";
|
|
clicked => {
|
|
if (eventId == -1) {
|
|
create({
|
|
sourceId: sourceId,
|
|
title: taskTitle,
|
|
date: taskDate,
|
|
startsAt: startsAt,
|
|
endsAt: endsAt,
|
|
});
|
|
} else {
|
|
save({
|
|
sourceId: sourceId,
|
|
id: eventId,
|
|
title: taskTitle,
|
|
date: taskDate,
|
|
startsAt: startsAt,
|
|
endsAt: endsAt,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export { Backend }
|