import { Date, Time } from "std-widgets.slint"; import { CalendarDay } from "components/Calendar.slint"; export struct NewTaskData { sourceId: int, eventId: int, title: string, scheduled: bool, date: Date } export struct SaveTaskData { sourceId: int, id: int, title: string, scheduled: bool, date: Date, } 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 struct AddSourceParam { name: string, type: string, path: string } export struct ModifySourceParam { id: int, name: string, path: string } export struct Source { id: int, name: string, selected: bool, path: string } export struct TaskData { sourceId: int, eventId: int, id: int, title: string, date: Date, checked: bool, } export struct Event { sourceId: int, id: int, title: string, startsAt: Time, endsAt: Time, tasks: [TaskData], } export struct Day { sourceId: int, id: int, date: Date, events: [Event], tasks: [TaskData], isLate: bool, isToday: bool, relativeDaysDiff: int } struct OpenNewTaskFormParams { eventSourceId: int, eventId: int, } export global Backend { in-out property<[Source]> sources-selected; in-out property default-source-index; in-out property<[string]> sources; in-out property no-source-selected; in-out property<[string]> tags; in-out property<[Day]> days; in-out property<[CalendarDay]> calendar; in-out property<[TaskData]> unscheduled-tasks; callback task-clicked(int, int); callback source-clicked(int); callback tag-clicked(int); callback settings-clicked(); callback add-source-clicked(); callback edit-source-clicked(int); callback open-new-task-form(OpenNewTaskFormParams); callback open-edit-task-form(int, int); callback open-new-event-form(); callback open-edit-event-form(int, int); callback toggle-show-completed-tasks(); callback delete-task-clicked(int, int); callback delete-event-clicked(int, int); callback create-task(NewTaskData); callback save-task(SaveTaskData); callback create-event(NewEventParams); callback save-event(SaveEventParams); callback add-source(AddSourceParam); callback modify-source(ModifySourceParam); callback delete-source(int); // Utils pure callback format-date(Date) -> string; pure callback format-date-relative(Date) -> string; pure callback capitalize-string(string) -> string; }