use crate::client::RustyClient;
use crate::config::{AppTheme, Config};
use crate::gui::state::{ResizeDirection, SidebarMode};
use crate::model::{CalendarListEntry, Task as TodoTask};
use crate::system::{AlarmMessage, SystemEvent};
use iced::widget::text_editor;
use std::sync::Arc;
use tokio::sync::mpsc;
pub type LoadedResult = Result<
(
RustyClient,
Vec<CalendarListEntry>,
Vec<TodoTask>,
Option<String>,
Option<String>,
),
String,
>;
#[derive(Debug, Clone)]
pub enum Message {
ObUrlChanged(String),
ObUserChanged(String),
ObPassChanged(String),
ObInsecureToggled(bool),
ToggleCalendarVisibility(String, bool),
ToggleCalendarDisabled(String, bool),
ObDefaultCalChanged(String),
ObSubmit,
OpenSettings,
CancelSettings,
ObSubmitOffline,
InputChanged(text_editor::Action),
StartCreateWithDescription,
DescriptionChanged(text_editor::Action),
SearchChanged(text_editor::Action),
ApplySearch(usize),
ClearSearch,
SubmitTask,
ToggleTask(usize, bool),
DeleteTask(usize),
EditTaskStart(usize),
CancelEdit,
ChangePriority(usize, i8),
SetTaskStatus(usize, crate::model::TaskStatus),
StartTask(String),
PauseTask(String),
StopTask(String),
SelectNextTask,
SelectPrevTask,
SelectNextPage,
SelectPrevPage,
DeleteSelected,
ToggleSelected,
EditSelected,
EditSelectedDescription,
PromoteSelected,
DemoteSelected,
YankSelected,
ClearYank,
EscapePressed,
EscCaptured,
KeyboardLinkChild,
KeyboardCreateChild,
StartAddSession(String),
SessionInputChanged(iced::widget::text_editor::Action),
SubmitSession,
CancelAddSession,
DeleteSession(String, usize),
ToggleShowAllSessions(String),
KeyboardAddSession,
KeyboardToggleSessions,
ClearAllFilters,
KeyboardAddDependency,
KeyboardAddRelation,
KeyboardToggleTreeCollapse,
KeyboardDuplicateTask,
KeyboardDeleteTaskTree,
KeyboardOpenLocations,
KeyboardOpenUrl,
KeyboardOpenContextMenu,
DuplicateTask(String),
DeleteTaskTree(String),
ToggleActiveSelected,
StopSelected,
CancelSelected,
ChangePrioritySelected(i8),
ToggleHideCompletedToggle,
CategoryMatchModeToggle,
FocusInput,
FocusSearch,
Refresh,
ZoomIn,
ZoomOut,
ZoomReset,
ToggleQuickFilter,
ToggleSidebar,
ToggleChildLock,
ToggleYankLock,
SetMinDuration(Option<u32>),
SetMaxDuration(Option<u32>),
ToggleIncludeUnsetDuration(bool),
ToggleDetails(String),
SidebarModeChanged(SidebarMode),
SelectCalendar(String),
IsolateCalendar(String),
CategoryToggled(String),
LocationToggled(String),
ClearAllTags,
ClearAllLocations,
CategoryMatchModeChanged(bool),
ToggleHideCompleted(bool),
ToggleHideFullyCompletedTags(bool),
TabPressed(bool),
OpenHelp(crate::help::HelpTab),
CloseHelp,
SwitchHelpTab(bool),
ToggleDoneGroup(String),
ToggleTreeCollapse(String),
ToggleHelpSection(String),
YankTask(String),
StartCreateChild(String),
AddDependency(String),
AddRelatedTo(String),
MakeChild(String),
RemoveParent(String),
RemoveDependency(String, String),
RemoveRelatedTo(String, String),
AliasKeyInput(String),
AliasValueInput(String),
AddAlias,
RemoveAlias(String),
StartMoveTask(String),
CancelMoveTask,
MoveTask(String, String),
MoveSelected,
MigrateLocalTo(String, String),
JumpToTag(String),
JumpToLocation(String),
JumpToTask(String),
JumpToRandomTask,
SnapToSelected { focus: bool },
TagHovered(Option<String>),
FocusTag(String),
FocusLocation(String),
OpenUrl(String),
OpenCoordinates(String),
OpenLocations(String),
TaskClick(usize, String),
ConfigLoaded(Result<Box<Config>, String>),
ObSortMonthsChanged(String),
ThemeChanged(AppTheme),
Loaded(LoadedResult),
TasksRefreshed(Result<(String, Vec<TodoTask>), String>),
RefreshedAll(Result<Vec<(String, Vec<TodoTask>)>, String>),
MigrationComplete(Result<usize, String>),
FontLoaded(Result<(), String>),
DismissError,
ToggleAllCalendars(bool),
Tick,
InitBackgroundWorker(mpsc::Sender<crate::gui::async_ops::WorkerCommand>),
BackgroundSyncComplete(Vec<TodoTask>),
BackgroundSyncFailed,
JournalSaved,
WindowDragged,
MinimizeWindow,
CloseWindow,
WindowResized(iced::Size),
ResizeStart(ResizeDirection),
CursorMoved(iced::Point),
ObUrgentDaysChanged(String),
ObUrgentPrioChanged(String),
ObDefaultPriorityChanged(String),
ObStartGraceChanged(String),
SetTrashRetention(String),
SetLanguage(String),
InitAlarmActor(mpsc::Sender<SystemEvent>),
AlarmSignalReceived(Arc<AlarmMessage>),
CompleteTaskFromAlarm(String, String),
CancelTaskFromAlarm(String, String),
SnoozeAlarm(String, String, u32),
DismissAlarm(String, String),
SnoozeCustomInput(String),
SnoozeCustomSubmit(String, String),
SetAutoReminders(bool),
SetDefaultReminderTime(String),
SetSnoozeShort(String),
SetSnoozeLong(String),
SetAutoRefreshInterval(String),
SetShowQuickFilter(bool),
SetQuickFilterTerm(String),
SetQuickFilterIcon(String),
OpenContextMenu(String, bool),
CloseContextMenu,
TogglePinnedAction(crate::config::TaskAction, bool),
ToggleAdvancedSettings(bool),
SetMaxDoneRoots(String),
SetMaxDoneSubtasks(String),
SetShowPriorityNumbers(bool),
SetCreateEventsForTasks(bool),
SetDeleteEventsOnCompletion(bool),
SetStrikethroughCompleted(bool),
DeleteAllCalendarEvents,
BackfillEventsComplete(Result<usize, String>),
ExportLocalIcs(String),
ExportSaved(Result<std::path::PathBuf, String>),
ImportLocalIcs(String),
ImportCompleted(Result<String, String>),
IcsFileLoaded(Result<(String, String), String>),
IcsImportDialogCalendarSelected(String),
IcsImportDialogCancel,
IcsImportDialogConfirm,
AddLocalCalendar,
DeleteLocalCalendar(String),
LocalCalendarNameChanged(String, String),
OpenColorPicker(String, iced::Color),
CancelColorPicker,
SubmitColorPicker(iced::Color),
}