use crate::client::RustyClient;
use crate::config::{AppTheme, Config, LogLevel};
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,
>;
pub type LocalLoadedResult = Result<(Vec<CalendarListEntry>, Vec<(String, Vec<TodoTask>)>), String>;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum NumericField {
SortDays,
UrgentDays,
UrgentPrio,
DefaultPriority,
StartGrace,
TrashRetention,
DefaultDurationGoal,
MaxDoneRoots,
MaxDoneSubtasks,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum StringField {
SnoozeShort,
SnoozeLong,
AutoRefresh,
QuickFilterTerm,
QuickFilterIcon,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum BoolField {
HideCompleted,
HideFullyCompletedTags,
HideAliasesInSidebar,
SortStandardByPriority,
SortTiebreakRecent,
AutoReminders,
CreateEventsForTasks,
DeleteEventsOnCompletion,
SessionsCountAsCompletions,
ShowPriorityNumbers,
ShowInlineDescriptions,
SyncSettings,
BlurWhenUnfocused,
ShowQuickFilter,
ShowCalendarsTab,
ShowTagsTab,
ShowLocationsTab,
ShowGoalsTab,
ShowJournalTab,
ShowTaskGoalsInSidebar,
SortCollectionsBySize,
StrikethroughCompleted,
ObInsecure,
}
#[derive(Debug, Clone)]
pub enum Message {
ObUrlChanged(String),
ObUserChanged(String),
ObPassChanged(String),
ToggleObPasswordVisibility,
SetTlsClientCertPath(String),
SetTlsClientKeyPath(String),
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,
SetSearchTerm(String),
SubmitTask,
SaveTaskKeepEditing,
SaveAndSwitchEditor,
ToggleTask(usize, bool),
ToggleTaskShift(String),
ShiftSpaceSelected,
CompleteTree(String),
DeleteTask(usize),
EditTaskStart(usize),
EditTaskTree(String),
CancelEdit,
ChangePriority(usize, i8),
SetTaskStatus(usize, crate::model::TaskStatus),
StartTask(String),
PauseTask(String),
StopTask(String),
SelectNext,
SelectPrev,
SelectNextPage,
SelectPrevPage,
ArrowRight,
ArrowLeft,
SidebarInteractSpace,
SidebarInteractEnter,
SelectJournalDate(chrono::NaiveDate),
SelectJournalCollection(String),
JournalContentChanged(text_editor::Action),
SaveJournal(usize),
DeleteSelected,
ToggleSelected,
EditSelected,
EditSelectedDescription,
PromoteSelected,
DemoteSelected,
YankSelected,
ClearYank,
EscapePressed,
EscCaptured,
KeyboardLinkChild,
KeyboardCreateChild,
KeyboardEditTree,
StartAddSession(String),
StartEditSession(String, usize),
SessionInputChanged(iced::widget::text_editor::Action),
SubmitSession,
CancelAddSession,
DeleteSession(String, usize),
ToggleShowAllSessions(String),
KeyboardAddSession,
KeyboardToggleSessions,
ClearAllFilters,
KeyboardAddDependency,
KeyboardAddRelation,
KeyboardToggleTreeCollapse,
KeyboardDuplicateTask,
KeyboardDeleteTaskTree,
KeyboardOpenLocations,
KeyboardOpenUrl,
KeyboardOpenContextMenu,
KeyboardToggleDetails,
Undo,
Redo,
ApplySuggestion(std::ops::Range<usize>, String),
TabPressed(bool),
EnterPressed,
DuplicateTask(String),
DeleteTaskTree(String),
ToggleActiveSelected,
StopSelected,
CancelSelected,
ChangePrioritySelected(i8),
ToggleHideCompletedToggle,
CategoryMatchModeToggle,
ToggleSortStandardByPriorityToggle,
FocusInput,
FocusSearch,
Refresh,
ZoomIn,
ZoomOut,
ZoomReset,
ToggleQuickFilter,
ToggleSidebar,
ToggleEditorMaximize,
OpenWikiLink(String, Option<String>),
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),
ToggleHideAliasesInSidebar(bool),
ToggleSortStandardByPriority(bool),
SetPausedSortBehavior(crate::config::PausedSortBehavior),
ToggleSortTiebreakRecent(bool),
SetSortPreset(crate::config::SortPreset),
CycleFocus(bool),
OpenHelp(crate::help::HelpTab),
CloseHelp,
SwitchHelpTab(bool),
ToggleDoneGroup(String),
ToggleTreeCollapse(String),
SetTreeCollapse(String, bool),
ToggleTagCollapse(String),
ToggleLocationCollapse(String),
ToggleHelpSection(String),
CopyToClipboard(String),
TogglePin(String),
YankTask(String),
StartCreateChild(String),
AddDependency(String),
AddRelatedTo(String),
MakeChild(String),
RemoveParent(String),
RemoveDependency(String, String),
RemoveRelatedTo(String, String),
AliasKeyInput(String),
AliasValueInput(String),
AddAlias,
EditAlias(String, String),
CancelEditAlias,
RemoveAlias(String),
GoalKeyInput(String),
GoalTargetInput(String),
GoalTypeChanged(crate::config::GoalType),
GoalAmountChanged(String),
GoalUnitChanged(crate::config::IntervalUnit),
AddGoal,
EditGoal(String, crate::config::Goal),
CancelEditGoal,
RemoveGoal(String),
StartMoveTask(String),
CancelMoveTask,
MoveTask(String, String),
ToggleMoveTree(bool),
MoveSelected,
MigrateLocalTo(String, String),
JumpToTag(String),
JumpToLocation(String),
JumpToTask(String),
JumpToRandomTask,
FocusSelected,
ClearFocus,
SnapToSelected { focus: bool },
TagHovered(Option<String>),
FocusTag(String),
FocusLocation(String),
OpenUrl(String),
OpenCoordinates(String),
OpenLocations(String),
TaskClick(usize, String),
ConfigLoaded(Result<Box<Config>, String>),
ConfigUpdated(Box<Config>),
ThemeChanged(AppTheme),
Loaded(LoadedResult),
LocalLoaded(LocalLoadedResult),
TasksRefreshed(Result<(String, Vec<TodoTask>), String>),
RefreshedAll(Result<Vec<(String, Vec<TodoTask>)>, String>),
MigrationComplete(Result<usize, String>),
FontLoaded(Result<(), String>),
DismissError,
DismissInfo(usize),
ToggleAllCalendars(bool),
Tick,
InitBackgroundWorker(mpsc::Sender<crate::gui::async_ops::WorkerCommand>),
BackgroundSyncComplete(Vec<TodoTask>),
BackgroundSyncFailed,
JournalSaved,
WindowDragged,
MinimizeWindow,
CloseWindow,
WindowResized(iced::Size),
WindowFocused(bool),
ApplyWindowResize(usize),
ResizeStart(ResizeDirection),
SetLanguage(String),
SetFirstDayOfWeek(crate::config::FirstDayOfWeek),
JournalDateInputChanged(String),
JournalDateInputSubmit,
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),
SetDefaultReminderTime(String),
OpenJournalPage(String),
CreateJournalPage,
CreateJournalSubPage(String),
JournalTitleInputChanged(String),
OpenContextMenu(String, bool),
CloseContextMenu,
TogglePinnedAction(crate::config::TaskAction, bool),
SetLogLevel(LogLevel),
ToggleAdvancedSettings(bool),
SetNumericField(NumericField, String),
SetStringField(StringField, String),
ToggleField(BoolField, 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),
AddRemoteCalendar,
RemoteCalendarNameChanged(String, String),
SubmitRemoteCalendar(String),
MoveCalendar(String, i8),
RemoteCalendarUpdated(String, Result<(), String>),
RemoteCalendarCreated(String, Result<String, String>),
OpenColorPicker(String, iced::Color),
CancelColorPicker,
SubmitColorPicker(iced::Color),
}