feat(todo): Today, Upcoming, Inbox, projects, quick add and the task sheet (ADR 0033, D8, D9)
The tabs hold the person's tasks: Today what is overdue (Reschedule moving it all to a day, times kept) and what is due today; Upcoming the overdue ones and the next four weeks day by day; Inbox and each project's screen from Browse the tasks above and in their sections, done ones on asking; Browse the projects with their open counts and the labels. A task's row shows its check in its priority's colour, its date in the colour of how near it is, its deadline, its sub-tasks done and its labels; quick add takes its title, date, priority, project, labels and description and stays for the next; its sheet edits all of it, adds sub-tasks and deletes it with them after asking. Colours are the palette's, cerise for overdue and P1 against the strawberry wash. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
bd3710ae58
commit
030c62ddde
1 changed files with 3647 additions and 121 deletions
|
|
@ -160,36 +160,6 @@ abstract class AppLocalizations {
|
|||
/// **'Browse'**
|
||||
String get shellTabBrowse;
|
||||
|
||||
/// No description provided for @todayLaterTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Today\'s tasks come here'**
|
||||
String get todayLaterTitle;
|
||||
|
||||
/// No description provided for @upcomingLaterTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The days ahead come here'**
|
||||
String get upcomingLaterTitle;
|
||||
|
||||
/// No description provided for @inboxLaterTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tasks without a project come here'**
|
||||
String get inboxLaterTitle;
|
||||
|
||||
/// No description provided for @browseLaterTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your projects and labels come here'**
|
||||
String get browseLaterTitle;
|
||||
|
||||
/// No description provided for @tasksLaterHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tasks come with a later version of Halkyon Todo.'**
|
||||
String get tasksLaterHint;
|
||||
|
||||
/// No description provided for @settingsTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
@ -201,6 +171,468 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Version {version} (build {build})'**
|
||||
String settingsVersion(String version, String build);
|
||||
|
||||
/// No description provided for @clear.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Clear'**
|
||||
String get clear;
|
||||
|
||||
/// No description provided for @colorLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Colour'**
|
||||
String get colorLabel;
|
||||
|
||||
/// No description provided for @completedShow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Show done tasks'**
|
||||
String get completedShow;
|
||||
|
||||
/// No description provided for @completedHide.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hide done tasks'**
|
||||
String get completedHide;
|
||||
|
||||
/// No description provided for @dateTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Date'**
|
||||
String get dateTitle;
|
||||
|
||||
/// No description provided for @dateNextWeek.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Next week'**
|
||||
String get dateNextWeek;
|
||||
|
||||
/// No description provided for @dateWeekend.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This weekend'**
|
||||
String get dateWeekend;
|
||||
|
||||
/// No description provided for @datePick.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Pick a day'**
|
||||
String get datePick;
|
||||
|
||||
/// No description provided for @dateTime.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Time'**
|
||||
String get dateTime;
|
||||
|
||||
/// No description provided for @dateNone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No date'**
|
||||
String get dateNone;
|
||||
|
||||
/// No description provided for @dateNoneYet.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No date'**
|
||||
String get dateNoneYet;
|
||||
|
||||
/// No description provided for @dayToday.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Today'**
|
||||
String get dayToday;
|
||||
|
||||
/// No description provided for @dayTomorrow.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tomorrow'**
|
||||
String get dayTomorrow;
|
||||
|
||||
/// No description provided for @dayYesterday.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Yesterday'**
|
||||
String get dayYesterday;
|
||||
|
||||
/// No description provided for @dayHeadingNamed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{date} · {name}'**
|
||||
String dayHeadingNamed(String date, String name);
|
||||
|
||||
/// No description provided for @deadlineOn.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Deadline {day}'**
|
||||
String deadlineOn(String day);
|
||||
|
||||
/// No description provided for @deadlineNone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No deadline'**
|
||||
String get deadlineNone;
|
||||
|
||||
/// No description provided for @keysMissing.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This device can\'t save: it doesn\'t hold your account\'s keys. Sign in with your password or recovery phrase to add them.'**
|
||||
String get keysMissing;
|
||||
|
||||
/// No description provided for @labelsTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Labels'**
|
||||
String get labelsTitle;
|
||||
|
||||
/// No description provided for @labelsNone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No labels yet.'**
|
||||
String get labelsNone;
|
||||
|
||||
/// No description provided for @labelsNoneSet.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No labels'**
|
||||
String get labelsNoneSet;
|
||||
|
||||
/// No description provided for @labelsCount.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 label} other{{count} labels}}'**
|
||||
String labelsCount(int count);
|
||||
|
||||
/// No description provided for @labelAdd.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'New label'**
|
||||
String get labelAdd;
|
||||
|
||||
/// No description provided for @labelEdit.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Edit label'**
|
||||
String get labelEdit;
|
||||
|
||||
/// No description provided for @labelDelete.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete label'**
|
||||
String get labelDelete;
|
||||
|
||||
/// No description provided for @labelDeleteTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete the label?'**
|
||||
String get labelDeleteTitle;
|
||||
|
||||
/// No description provided for @labelDeleteMessage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'\"{name}\" is taken off every task that has it.'**
|
||||
String labelDeleteMessage(String name);
|
||||
|
||||
/// No description provided for @nameLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Name'**
|
||||
String get nameLabel;
|
||||
|
||||
/// No description provided for @save.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Save'**
|
||||
String get save;
|
||||
|
||||
/// No description provided for @overdue.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Overdue'**
|
||||
String get overdue;
|
||||
|
||||
/// No description provided for @reschedule.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reschedule'**
|
||||
String get reschedule;
|
||||
|
||||
/// No description provided for @priorityTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Priority'**
|
||||
String get priorityTitle;
|
||||
|
||||
/// No description provided for @priority1.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Priority 1'**
|
||||
String get priority1;
|
||||
|
||||
/// No description provided for @priority2.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Priority 2'**
|
||||
String get priority2;
|
||||
|
||||
/// No description provided for @priority3.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Priority 3'**
|
||||
String get priority3;
|
||||
|
||||
/// No description provided for @priority4.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No priority'**
|
||||
String get priority4;
|
||||
|
||||
/// No description provided for @projectsTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Projects'**
|
||||
String get projectsTitle;
|
||||
|
||||
/// No description provided for @projectsNone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No projects of your own yet.'**
|
||||
String get projectsNone;
|
||||
|
||||
/// No description provided for @projectAdd.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'New project'**
|
||||
String get projectAdd;
|
||||
|
||||
/// No description provided for @projectEdit.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Edit project'**
|
||||
String get projectEdit;
|
||||
|
||||
/// No description provided for @projectDelete.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete project'**
|
||||
String get projectDelete;
|
||||
|
||||
/// No description provided for @projectDeleteTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete the project?'**
|
||||
String get projectDeleteTitle;
|
||||
|
||||
/// No description provided for @projectDeleteMessage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'\"{name}\" is deleted with its sections and tasks, on all your devices.'**
|
||||
String projectDeleteMessage(String name);
|
||||
|
||||
/// No description provided for @projectEmptyTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nothing to do here'**
|
||||
String get projectEmptyTitle;
|
||||
|
||||
/// No description provided for @projectEmptyHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add a task with the + button.'**
|
||||
String get projectEmptyHint;
|
||||
|
||||
/// No description provided for @projectGone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This project was deleted.'**
|
||||
String get projectGone;
|
||||
|
||||
/// No description provided for @projectMenu.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'More'**
|
||||
String get projectMenu;
|
||||
|
||||
/// No description provided for @projectPickTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Project'**
|
||||
String get projectPickTitle;
|
||||
|
||||
/// No description provided for @sectionAdd.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'New section'**
|
||||
String get sectionAdd;
|
||||
|
||||
/// No description provided for @sectionEdit.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Rename section'**
|
||||
String get sectionEdit;
|
||||
|
||||
/// No description provided for @sectionDelete.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete section'**
|
||||
String get sectionDelete;
|
||||
|
||||
/// No description provided for @sectionDeleteTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete the section?'**
|
||||
String get sectionDeleteTitle;
|
||||
|
||||
/// No description provided for @sectionDeleteMessage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'\"{name}\" is deleted with its tasks.'**
|
||||
String sectionDeleteMessage(String name);
|
||||
|
||||
/// No description provided for @sectionMenu.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Section'**
|
||||
String get sectionMenu;
|
||||
|
||||
/// No description provided for @subTasks.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sub-tasks'**
|
||||
String get subTasks;
|
||||
|
||||
/// No description provided for @subTasksDone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Sub-tasks {done}/{count}'**
|
||||
String subTasksDone(int done, int count);
|
||||
|
||||
/// No description provided for @subTaskAdd.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add sub-task'**
|
||||
String get subTaskAdd;
|
||||
|
||||
/// No description provided for @taskTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Task'**
|
||||
String get taskTitle;
|
||||
|
||||
/// No description provided for @taskAddTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add task'**
|
||||
String get taskAddTitle;
|
||||
|
||||
/// No description provided for @taskAdd.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add'**
|
||||
String get taskAdd;
|
||||
|
||||
/// No description provided for @taskAddOn.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add a task on {day}'**
|
||||
String taskAddOn(String day);
|
||||
|
||||
/// No description provided for @taskTitleHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'What\'s to be done?'**
|
||||
String get taskTitleHint;
|
||||
|
||||
/// No description provided for @taskDescription.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Description'**
|
||||
String get taskDescription;
|
||||
|
||||
/// No description provided for @taskDescriptionHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Description'**
|
||||
String get taskDescriptionHint;
|
||||
|
||||
/// No description provided for @taskComplete.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Mark as done'**
|
||||
String get taskComplete;
|
||||
|
||||
/// No description provided for @taskReopen.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Mark as not done'**
|
||||
String get taskReopen;
|
||||
|
||||
/// No description provided for @taskCompleted.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Task done'**
|
||||
String get taskCompleted;
|
||||
|
||||
/// No description provided for @taskDelete.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete task'**
|
||||
String get taskDelete;
|
||||
|
||||
/// No description provided for @taskDeleteTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete the task?'**
|
||||
String get taskDeleteTitle;
|
||||
|
||||
/// No description provided for @taskDeleteMessage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'\"{title}\" is deleted on all your devices.'**
|
||||
String taskDeleteMessage(String title);
|
||||
|
||||
/// No description provided for @taskDeleteWithSubTasks.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'\"{title}\" is deleted with its {count, plural, =1{sub-task} other{{count} sub-tasks}}, on all your devices.'**
|
||||
String taskDeleteWithSubTasks(String title, int count);
|
||||
|
||||
/// No description provided for @taskGone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This task was deleted.'**
|
||||
String get taskGone;
|
||||
|
||||
/// No description provided for @todayEmptyTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nothing due today'**
|
||||
String get todayEmptyTitle;
|
||||
|
||||
/// No description provided for @todayEmptyHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tasks dated today, and those overdue, show here.'**
|
||||
String get todayEmptyHint;
|
||||
|
||||
/// No description provided for @lockedRows.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 item doesn\'t open on this device.} other{{count} items don\'t open on this device.}}'**
|
||||
String lockedRows(int count);
|
||||
|
||||
/// No description provided for @inboxMissingTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No Inbox yet'**
|
||||
String get inboxMissingTitle;
|
||||
|
||||
/// No description provided for @inboxMissingHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Your Inbox comes with the next sync, or once this device holds your account\'s keys.'**
|
||||
String get inboxMissingHint;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
Loading…
Reference in a new issue