From e8dc8002cdba1edc0b1a5bdb6764f29c1bcd8a06 Mon Sep 17 00:00:00 2001 From: Demizo Date: Sat, 7 Mar 2026 17:33:39 -0600 Subject: [PATCH 1/4] feat: add time variable name string --- lib/l10n/generated/app_localizations.dart | 6 ++++++ lib/l10n/generated/app_localizations_ar.dart | 3 +++ lib/l10n/generated/app_localizations_be.dart | 3 +++ lib/l10n/generated/app_localizations_bg.dart | 3 +++ lib/l10n/generated/app_localizations_cs.dart | 3 +++ lib/l10n/generated/app_localizations_da.dart | 3 +++ lib/l10n/generated/app_localizations_de.dart | 3 +++ lib/l10n/generated/app_localizations_en.dart | 3 +++ lib/l10n/generated/app_localizations_es.dart | 3 +++ lib/l10n/generated/app_localizations_fa.dart | 3 +++ lib/l10n/generated/app_localizations_fi.dart | 3 +++ lib/l10n/generated/app_localizations_fr.dart | 3 +++ lib/l10n/generated/app_localizations_he.dart | 3 +++ lib/l10n/generated/app_localizations_hi.dart | 3 +++ lib/l10n/generated/app_localizations_id.dart | 3 +++ lib/l10n/generated/app_localizations_it.dart | 3 +++ lib/l10n/generated/app_localizations_ja.dart | 3 +++ lib/l10n/generated/app_localizations_lt.dart | 3 +++ lib/l10n/generated/app_localizations_nl.dart | 3 +++ lib/l10n/generated/app_localizations_oc.dart | 3 +++ lib/l10n/generated/app_localizations_pl.dart | 3 +++ lib/l10n/generated/app_localizations_pt.dart | 3 +++ lib/l10n/generated/app_localizations_ru.dart | 3 +++ lib/l10n/generated/app_localizations_sv.dart | 3 +++ lib/l10n/generated/app_localizations_ta.dart | 3 +++ lib/l10n/generated/app_localizations_tr.dart | 3 +++ lib/l10n/generated/app_localizations_uk.dart | 3 +++ lib/l10n/generated/app_localizations_vi.dart | 3 +++ lib/l10n/generated/app_localizations_zh.dart | 3 +++ lib/l10n/intl_en.arb | 2 ++ 30 files changed, 92 insertions(+) diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index fe8a8c0f..db555d42 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -620,6 +620,12 @@ abstract class AppLocalizations { /// **'No templates created yet…'** String get noTemplatesDescription; + /// No description provided for @templateVariableTime. + /// + /// In en, this message translates to: + /// **'Time'** + String get templateVariableTime; + /// No description provided for @settingsStorageTitle. /// /// In en, this message translates to: diff --git a/lib/l10n/generated/app_localizations_ar.dart b/lib/l10n/generated/app_localizations_ar.dart index 12b307c5..a71da869 100644 --- a/lib/l10n/generated/app_localizations_ar.dart +++ b/lib/l10n/generated/app_localizations_ar.dart @@ -319,6 +319,9 @@ class AppLocalizationsAr extends AppLocalizations { @override String get noTemplatesDescription => 'لم يتم إنشاء أي قوالب بعد…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'التخزين'; diff --git a/lib/l10n/generated/app_localizations_be.dart b/lib/l10n/generated/app_localizations_be.dart index f3a7b8c5..498504e7 100644 --- a/lib/l10n/generated/app_localizations_be.dart +++ b/lib/l10n/generated/app_localizations_be.dart @@ -314,6 +314,9 @@ class AppLocalizationsBe extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_bg.dart b/lib/l10n/generated/app_localizations_bg.dart index 2b85c342..eef6d919 100644 --- a/lib/l10n/generated/app_localizations_bg.dart +++ b/lib/l10n/generated/app_localizations_bg.dart @@ -314,6 +314,9 @@ class AppLocalizationsBg extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_cs.dart b/lib/l10n/generated/app_localizations_cs.dart index 45d4a83e..e9e587f2 100644 --- a/lib/l10n/generated/app_localizations_cs.dart +++ b/lib/l10n/generated/app_localizations_cs.dart @@ -314,6 +314,9 @@ class AppLocalizationsCs extends AppLocalizations { @override String get noTemplatesDescription => 'Zatím nebyly vytvořeny žádné šablony…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Uložiště'; diff --git a/lib/l10n/generated/app_localizations_da.dart b/lib/l10n/generated/app_localizations_da.dart index 15043d81..3b8a6837 100644 --- a/lib/l10n/generated/app_localizations_da.dart +++ b/lib/l10n/generated/app_localizations_da.dart @@ -313,6 +313,9 @@ class AppLocalizationsDa extends AppLocalizations { @override String get noTemplatesDescription => 'Ingen skabeloner oprettet endnu…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Lager'; diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index 40a84195..bb523032 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -316,6 +316,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get noTemplatesDescription => 'Noch kein Vorlagen erstellt…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Speicher'; diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index 35af6693..f0e11248 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -314,6 +314,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_es.dart b/lib/l10n/generated/app_localizations_es.dart index 8f37e28b..04112884 100644 --- a/lib/l10n/generated/app_localizations_es.dart +++ b/lib/l10n/generated/app_localizations_es.dart @@ -316,6 +316,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get noTemplatesDescription => 'Aún no se han creado plantillas…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Almacenamiento'; diff --git a/lib/l10n/generated/app_localizations_fa.dart b/lib/l10n/generated/app_localizations_fa.dart index a34e27b8..93487750 100644 --- a/lib/l10n/generated/app_localizations_fa.dart +++ b/lib/l10n/generated/app_localizations_fa.dart @@ -313,6 +313,9 @@ class AppLocalizationsFa extends AppLocalizations { @override String get noTemplatesDescription => 'هیچ الگویی هنوز ایجاد نشده است…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'ذخیره سازی'; diff --git a/lib/l10n/generated/app_localizations_fi.dart b/lib/l10n/generated/app_localizations_fi.dart index 76282b4d..e51fb403 100644 --- a/lib/l10n/generated/app_localizations_fi.dart +++ b/lib/l10n/generated/app_localizations_fi.dart @@ -315,6 +315,9 @@ class AppLocalizationsFi extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart index daa236e8..7d77ec1d 100644 --- a/lib/l10n/generated/app_localizations_fr.dart +++ b/lib/l10n/generated/app_localizations_fr.dart @@ -320,6 +320,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get noTemplatesDescription => 'Aucun modèle créé pour l\'instant…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Stockage'; diff --git a/lib/l10n/generated/app_localizations_he.dart b/lib/l10n/generated/app_localizations_he.dart index 947f51bb..74efc422 100644 --- a/lib/l10n/generated/app_localizations_he.dart +++ b/lib/l10n/generated/app_localizations_he.dart @@ -312,6 +312,9 @@ class AppLocalizationsHe extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_hi.dart b/lib/l10n/generated/app_localizations_hi.dart index fedeb394..9595128d 100644 --- a/lib/l10n/generated/app_localizations_hi.dart +++ b/lib/l10n/generated/app_localizations_hi.dart @@ -314,6 +314,9 @@ class AppLocalizationsHi extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_id.dart b/lib/l10n/generated/app_localizations_id.dart index d3032c7b..3961a097 100644 --- a/lib/l10n/generated/app_localizations_id.dart +++ b/lib/l10n/generated/app_localizations_id.dart @@ -314,6 +314,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get noTemplatesDescription => 'Belum ada template yang dibuat…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Penyimpanan'; diff --git a/lib/l10n/generated/app_localizations_it.dart b/lib/l10n/generated/app_localizations_it.dart index d1f4bc05..ac9a4533 100644 --- a/lib/l10n/generated/app_localizations_it.dart +++ b/lib/l10n/generated/app_localizations_it.dart @@ -320,6 +320,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get noTemplatesDescription => 'Nessun modello ancora creato…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Memoria'; diff --git a/lib/l10n/generated/app_localizations_ja.dart b/lib/l10n/generated/app_localizations_ja.dart index 0f26bf56..e71b883f 100644 --- a/lib/l10n/generated/app_localizations_ja.dart +++ b/lib/l10n/generated/app_localizations_ja.dart @@ -310,6 +310,9 @@ class AppLocalizationsJa extends AppLocalizations { @override String get noTemplatesDescription => 'テンプレートはまだ作成されていません…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'ストレージ'; diff --git a/lib/l10n/generated/app_localizations_lt.dart b/lib/l10n/generated/app_localizations_lt.dart index 8fd4ca41..5a656ff0 100644 --- a/lib/l10n/generated/app_localizations_lt.dart +++ b/lib/l10n/generated/app_localizations_lt.dart @@ -314,6 +314,9 @@ class AppLocalizationsLt extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_nl.dart b/lib/l10n/generated/app_localizations_nl.dart index 38817317..4b70ec20 100644 --- a/lib/l10n/generated/app_localizations_nl.dart +++ b/lib/l10n/generated/app_localizations_nl.dart @@ -318,6 +318,9 @@ class AppLocalizationsNl extends AppLocalizations { @override String get noTemplatesDescription => 'Nog geen sjablonen aangemaakt…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Opslag'; diff --git a/lib/l10n/generated/app_localizations_oc.dart b/lib/l10n/generated/app_localizations_oc.dart index 39ee5597..6fc14cae 100644 --- a/lib/l10n/generated/app_localizations_oc.dart +++ b/lib/l10n/generated/app_localizations_oc.dart @@ -315,6 +315,9 @@ class AppLocalizationsOc extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Emmagazinatge'; diff --git a/lib/l10n/generated/app_localizations_pl.dart b/lib/l10n/generated/app_localizations_pl.dart index a1285c70..73ac82d0 100644 --- a/lib/l10n/generated/app_localizations_pl.dart +++ b/lib/l10n/generated/app_localizations_pl.dart @@ -315,6 +315,9 @@ class AppLocalizationsPl extends AppLocalizations { @override String get noTemplatesDescription => 'Brak utworzonych szablonów…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Pamięć'; diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart index 40fd9121..d795b88e 100644 --- a/lib/l10n/generated/app_localizations_pt.dart +++ b/lib/l10n/generated/app_localizations_pt.dart @@ -315,6 +315,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get noTemplatesDescription => 'Nenhum modelo criado ainda…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Armazenamento'; diff --git a/lib/l10n/generated/app_localizations_ru.dart b/lib/l10n/generated/app_localizations_ru.dart index 94c9cc62..b3e1ea23 100644 --- a/lib/l10n/generated/app_localizations_ru.dart +++ b/lib/l10n/generated/app_localizations_ru.dart @@ -322,6 +322,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get noTemplatesDescription => 'Нет созданных шаблонов…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Хранилище'; diff --git a/lib/l10n/generated/app_localizations_sv.dart b/lib/l10n/generated/app_localizations_sv.dart index 5de5311a..07552ddd 100644 --- a/lib/l10n/generated/app_localizations_sv.dart +++ b/lib/l10n/generated/app_localizations_sv.dart @@ -314,6 +314,9 @@ class AppLocalizationsSv extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_ta.dart b/lib/l10n/generated/app_localizations_ta.dart index c05bed09..eff92752 100644 --- a/lib/l10n/generated/app_localizations_ta.dart +++ b/lib/l10n/generated/app_localizations_ta.dart @@ -314,6 +314,9 @@ class AppLocalizationsTa extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_tr.dart b/lib/l10n/generated/app_localizations_tr.dart index b675926e..418f157d 100644 --- a/lib/l10n/generated/app_localizations_tr.dart +++ b/lib/l10n/generated/app_localizations_tr.dart @@ -314,6 +314,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get noTemplatesDescription => 'Henüz şablon oluşturulmadı…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Depolama'; diff --git a/lib/l10n/generated/app_localizations_uk.dart b/lib/l10n/generated/app_localizations_uk.dart index c11cee7c..7f8ea066 100644 --- a/lib/l10n/generated/app_localizations_uk.dart +++ b/lib/l10n/generated/app_localizations_uk.dart @@ -320,6 +320,9 @@ class AppLocalizationsUk extends AppLocalizations { @override String get noTemplatesDescription => 'Жодного шаблону немає…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Сховище'; diff --git a/lib/l10n/generated/app_localizations_vi.dart b/lib/l10n/generated/app_localizations_vi.dart index bf12b960..9fb7a390 100644 --- a/lib/l10n/generated/app_localizations_vi.dart +++ b/lib/l10n/generated/app_localizations_vi.dart @@ -315,6 +315,9 @@ class AppLocalizationsVi extends AppLocalizations { @override String get noTemplatesDescription => 'No templates created yet…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_zh.dart b/lib/l10n/generated/app_localizations_zh.dart index 9879de91..500610f5 100644 --- a/lib/l10n/generated/app_localizations_zh.dart +++ b/lib/l10n/generated/app_localizations_zh.dart @@ -308,6 +308,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get noTemplatesDescription => '尚未创建任何模板…'; + @override + String get templateVariableTime => 'Time'; + @override String get settingsStorageTitle => '存储'; diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 9859b490..7c6956fe 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -155,6 +155,8 @@ "@noTemplateTitle": {}, "noTemplatesDescription": "No templates created yet…", "@noTemplatesDescription": {}, + "templateVariableTime": "Time", + "@templateVariableTime": {}, "settingsStorageTitle": "Storage", "@settingsStorageTitle": {}, "settingsImageQuality": "Image Quality", From 179c6e827699ce8ce97d60575b5b991a42304e0a Mon Sep 17 00:00:00 2001 From: Demizo Date: Sat, 7 Mar 2026 17:34:35 -0600 Subject: [PATCH 2/4] feat: create template variable renderer --- lib/template_renderer.dart | 68 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 lib/template_renderer.dart diff --git a/lib/template_renderer.dart b/lib/template_renderer.dart new file mode 100644 index 00000000..00264f28 --- /dev/null +++ b/lib/template_renderer.dart @@ -0,0 +1,68 @@ +import 'package:flutter/widgets.dart'; +import 'package:intl/intl.dart'; +import 'package:daily_you/l10n/generated/app_localizations.dart'; + +class TemplateVariable { + final String value; + final String label; + TemplateVariable(this.value, this.label); +} + +class TemplateRenderer { + static final RegExp _variablePattern = RegExp(r"\{\{(\w+)(?::([^}]+))?\}\}"); + + /// Populates template variables: {{date}}, {{time}} + /// Variables can have optional formatting like so, {{date:yyyy-MM-dd}} or {{time:HH:mm}} + static String populate(BuildContext context, String template) { + final locale = Localizations.localeOf(context); + final now = DateTime.now(); + + return template.replaceAllMapped(_variablePattern, (match) { + final variable = match.group(1); + final format = match.group(2); + + switch (variable) { + case "date": + return _formatDate(now, locale, format); + + case "time": + return _formatTime(now, locale, format); + + default: + return match.group(0)!; // leave unknown variables unchanged + } + }); + } + + static List getVariableList(BuildContext context) { + return [ + TemplateVariable('{{date}}', AppLocalizations.of(context)!.sortDateTitle), + TemplateVariable( + '{{time}}', AppLocalizations.of(context)!.templateVariableTime), + ]; + } + + static String _formatDate(DateTime dt, Locale locale, String? format) { + try { + if (format != null && format.isNotEmpty) { + return DateFormat(format, locale.toString()).format(dt); + } + } catch (_) { + // Do nothing + } + + return DateFormat.yMd(locale.toString()).format(dt); + } + + static String _formatTime(DateTime dt, Locale locale, String? format) { + try { + if (format != null && format.isNotEmpty) { + return DateFormat(format, locale.toString()).format(dt); + } + } catch (_) { + // Do nothing + } + + return DateFormat.jm(locale.toString()).format(dt); + } +} From 2031887c2d600464755d1a15316ad754411d9983 Mon Sep 17 00:00:00 2001 From: Demizo Date: Sat, 7 Mar 2026 17:35:51 -0600 Subject: [PATCH 3/4] feat: add template variable selector --- lib/pages/edit_entry_page.dart | 4 +- lib/widgets/edit_template.dart | 5 +- lib/widgets/edit_toolbar.dart | 45 ++---------------- lib/widgets/entry_text_edit.dart | 2 - lib/widgets/template_select_button.dart | 57 +++++++++++++++++++++++ lib/widgets/template_variable_button.dart | 53 +++++++++++++++++++++ 6 files changed, 119 insertions(+), 47 deletions(-) create mode 100644 lib/widgets/template_select_button.dart create mode 100644 lib/widgets/template_variable_button.dart diff --git a/lib/pages/edit_entry_page.dart b/lib/pages/edit_entry_page.dart index 44558118..6196a127 100644 --- a/lib/pages/edit_entry_page.dart +++ b/lib/pages/edit_entry_page.dart @@ -9,6 +9,7 @@ import 'package:daily_you/providers/entry_images_provider.dart'; import 'package:daily_you/time_manager.dart'; import 'package:daily_you/widgets/edit_toolbar.dart'; import 'package:daily_you/widgets/entry_image_editable_list.dart'; +import 'package:daily_you/widgets/template_select_button.dart'; import 'package:easy_debounce/easy_debounce.dart'; import 'package:flutter/material.dart'; import 'package:daily_you/l10n/generated/app_localizations.dart'; @@ -230,7 +231,8 @@ class _AddEditEntryPageState extends State controller: _textEditingController, undoController: _undoController, focusNode: _focusNode, - showTemplatesButton: true, + trailer: + TemplateSelectButton(controller: _textEditingController), ), ), ]), diff --git a/lib/widgets/edit_template.dart b/lib/widgets/edit_template.dart index 53276b9c..89070a61 100644 --- a/lib/widgets/edit_template.dart +++ b/lib/widgets/edit_template.dart @@ -2,6 +2,7 @@ import 'package:daily_you/models/template.dart'; import 'package:daily_you/providers/templates_provider.dart'; import 'package:daily_you/widgets/edit_toolbar.dart'; import 'package:daily_you/widgets/entry_text_edit.dart'; +import 'package:daily_you/widgets/template_variable_button.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:daily_you/l10n/generated/app_localizations.dart'; @@ -108,7 +109,6 @@ class _EditTemplateState extends State { focusNode: _focusNode, textEditingController: _textEditingController, undoHistoryController: _undoController, - showTemplatesButton: false, ), ], ), @@ -120,7 +120,8 @@ class _EditTemplateState extends State { controller: _textEditingController, undoController: _undoController, focusNode: _focusNode, - showTemplatesButton: false, + trailer: + TemplateVariableButton(controller: _textEditingController), ), ), ], diff --git a/lib/widgets/edit_toolbar.dart b/lib/widgets/edit_toolbar.dart index b5890091..3e4050a1 100644 --- a/lib/widgets/edit_toolbar.dart +++ b/lib/widgets/edit_toolbar.dart @@ -1,7 +1,5 @@ import 'package:daily_you/config_provider.dart'; -import 'package:daily_you/models/template.dart'; import 'package:daily_you/widgets/markdown_toolbar.dart'; -import 'package:daily_you/widgets/template_select.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -11,40 +9,13 @@ class EditToolbar extends StatelessWidget { required this.controller, required this.undoController, required this.focusNode, - required this.showTemplatesButton, + this.trailer, }); final TextEditingController controller; final UndoHistoryController undoController; final FocusNode focusNode; - final bool showTemplatesButton; - - void _showTemplateSelectPopup(BuildContext context) { - showDialog( - context: context, - builder: (BuildContext context) { - return TemplateSelect( - onTemplatesSelected: (Template template) { - final templateText = template.text ?? ""; - if (controller.text.isNotEmpty) { - if (controller.selection.isValid) { - int cursorPos = controller.selection.base.offset; - final beforeText = controller.text.substring(0, cursorPos); - final afterText = controller.text.substring(cursorPos); - controller.text = beforeText + templateText + afterText; - controller.selection = TextSelection.collapsed( - offset: cursorPos + templateText.length); - } else { - controller.text += "\n${template.text ?? ""}"; - } - } else { - controller.text = template.text ?? ""; - } - }, - ); - }, - ); - } + final Widget? trailer; @override Widget build(BuildContext context) { @@ -120,17 +91,7 @@ class EditToolbar extends StatelessWidget { : Theme.of(context).disabledColor, size: 24, )), - if (showTemplatesButton) - IconButton( - padding: EdgeInsets.zero, - visualDensity: VisualDensity.compact, - onPressed: () => - _showTemplateSelectPopup(context), - icon: Icon( - Icons.note_add_rounded, - color: Theme.of(context).colorScheme.primary, - size: 24, - )), + if (trailer != null) trailer! ], ), ); diff --git a/lib/widgets/entry_text_edit.dart b/lib/widgets/entry_text_edit.dart index 041255f4..86cb4f63 100644 --- a/lib/widgets/entry_text_edit.dart +++ b/lib/widgets/entry_text_edit.dart @@ -8,7 +8,6 @@ import 'package:flutter/services.dart'; class EntryTextEditor extends StatefulWidget { final String text; - final bool showTemplatesButton; final FocusNode focusNode; final TextEditingController textEditingController; final UndoHistoryController undoHistoryController; @@ -19,7 +18,6 @@ class EntryTextEditor extends StatefulWidget { required this.focusNode, required this.textEditingController, required this.undoHistoryController, - this.showTemplatesButton = true, }); @override diff --git a/lib/widgets/template_select_button.dart b/lib/widgets/template_select_button.dart new file mode 100644 index 00000000..9bdc63c3 --- /dev/null +++ b/lib/widgets/template_select_button.dart @@ -0,0 +1,57 @@ +import 'package:daily_you/models/template.dart'; +import 'package:daily_you/template_renderer.dart'; +import 'package:daily_you/widgets/template_select.dart'; +import 'package:flutter/material.dart'; + +class TemplateSelectButton extends StatelessWidget { + const TemplateSelectButton({ + super.key, + required this.controller, + }); + + final TextEditingController controller; + + String _getTemplateText(BuildContext context, Template template) { + return TemplateRenderer.populate(context, template.text ?? ""); + } + + void _showTemplateSelectPopup(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return TemplateSelect( + onTemplatesSelected: (Template template) { + final templateText = _getTemplateText(context, template); + if (controller.text.isNotEmpty) { + if (controller.selection.isValid) { + int cursorPos = controller.selection.base.offset; + final beforeText = controller.text.substring(0, cursorPos); + final afterText = controller.text.substring(cursorPos); + controller.text = beforeText + templateText + afterText; + controller.selection = TextSelection.collapsed( + offset: cursorPos + templateText.length); + } else { + controller.text += "\n$templateText"; + } + } else { + controller.text = templateText; + } + }, + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return IconButton( + padding: EdgeInsets.zero, + visualDensity: VisualDensity.compact, + onPressed: () => _showTemplateSelectPopup(context), + icon: Icon( + Icons.note_add_rounded, + color: Theme.of(context).colorScheme.primary, + size: 24, + )); + } +} diff --git a/lib/widgets/template_variable_button.dart b/lib/widgets/template_variable_button.dart new file mode 100644 index 00000000..198311cd --- /dev/null +++ b/lib/widgets/template_variable_button.dart @@ -0,0 +1,53 @@ +import 'package:daily_you/template_renderer.dart'; +import 'package:flutter/material.dart'; + +class TemplateVariableButton extends StatelessWidget { + const TemplateVariableButton({ + super.key, + required this.controller, + }); + + final TextEditingController controller; + + void _addVariableToText(BuildContext context, String variable) { + if (controller.text.isNotEmpty) { + if (controller.selection.isValid) { + int cursorPos = controller.selection.base.offset; + final beforeText = controller.text.substring(0, cursorPos); + final afterText = controller.text.substring(cursorPos); + controller.text = beforeText + variable + afterText; + controller.selection = + TextSelection.collapsed(offset: cursorPos + variable.length); + } else { + controller.text += variable; + } + } else { + controller.text = variable; + } + } + + @override + Widget build(BuildContext context) { + return PopupMenuButton( + elevation: 1, + child: IconButton( + padding: EdgeInsets.zero, + visualDensity: VisualDensity.compact, + onPressed: null, // Do nothing + icon: Icon( + Icons.add_circle_rounded, + color: Theme.of(context).colorScheme.primary, + size: 24, + )), + onSelected: (String newValue) { + _addVariableToText(context, newValue); + }, + itemBuilder: (BuildContext context) { + final options = TemplateRenderer.getVariableList(context); + return options.map((TemplateVariable option) { + return PopupMenuItem(value: option.value, child: Text(option.label)); + }).toList(); + }, + ); + } +} From 7cdc56a65d3f1537f882c6e7e9f8acbef739e82e Mon Sep 17 00:00:00 2001 From: Demizo Date: Sat, 7 Mar 2026 21:05:11 -0600 Subject: [PATCH 4/4] feat: create default templates --- lib/database/app_database.dart | 5 +++ lib/l10n/generated/app_localizations.dart | 36 ++++++++++++++++++++ lib/l10n/generated/app_localizations_ar.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_be.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_bg.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_cs.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_da.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_de.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_en.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_es.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_fa.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_fi.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_fr.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_he.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_hi.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_id.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_it.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_ja.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_lt.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_nl.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_oc.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_pl.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_pt.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_ru.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_sv.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_ta.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_tr.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_uk.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_vi.dart | 21 ++++++++++++ lib/l10n/generated/app_localizations_zh.dart | 21 ++++++++++++ lib/l10n/intl_en.arb | 12 +++++++ lib/providers/templates_provider.dart | 27 +++++++++++++++ 32 files changed, 668 insertions(+) diff --git a/lib/database/app_database.dart b/lib/database/app_database.dart index c269111b..75af0f6f 100644 --- a/lib/database/app_database.dart +++ b/lib/database/app_database.dart @@ -209,6 +209,9 @@ CREATE TABLE $templatesTable ( ${TemplatesFields.timeModified} DATETIME NOT NULL DEFAULT (DATETIME('now')) ) '''); + + await TemplatesProvider.instance.createDefaultTemplates(); + await db.execute(''' CREATE TABLE $imagesTable ( ${EntryImageFields.id} INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, @@ -234,6 +237,8 @@ CREATE TABLE $templatesTable ( ${TemplatesFields.timeModified} DATETIME NOT NULL DEFAULT (DATETIME('now')) ) '''); + + await TemplatesProvider.instance.createDefaultTemplates(); } if (oldVersion <= 2) { await db.execute(''' diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index db555d42..6a21d875 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -626,6 +626,42 @@ abstract class AppLocalizations { /// **'Time'** String get templateVariableTime; + /// No description provided for @templateDefaultTimestampTitle. + /// + /// In en, this message translates to: + /// **'Timestamp'** + String get templateDefaultTimestampTitle; + + /// No description provided for @templateDefaultTimestampBody. + /// + /// In en, this message translates to: + /// **'{date} - {time}:'** + String templateDefaultTimestampBody(Object date, Object time); + + /// No description provided for @templateDefaultSummaryTitle. + /// + /// In en, this message translates to: + /// **'Day Summary'** + String get templateDefaultSummaryTitle; + + /// No description provided for @templateDefaultSummaryBody. + /// + /// In en, this message translates to: + /// **'### Summary\n- \n\n### Quote\n> '** + String get templateDefaultSummaryBody; + + /// No description provided for @templateDefaultReflectionTitle. + /// + /// In en, this message translates to: + /// **'Reflection'** + String get templateDefaultReflectionTitle; + + /// No description provided for @templateDefaultReflectionBody. + /// + /// In en, this message translates to: + /// **'### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '** + String get templateDefaultReflectionBody; + /// No description provided for @settingsStorageTitle. /// /// In en, this message translates to: diff --git a/lib/l10n/generated/app_localizations_ar.dart b/lib/l10n/generated/app_localizations_ar.dart index a71da869..ff08128b 100644 --- a/lib/l10n/generated/app_localizations_ar.dart +++ b/lib/l10n/generated/app_localizations_ar.dart @@ -322,6 +322,27 @@ class AppLocalizationsAr extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'التخزين'; diff --git a/lib/l10n/generated/app_localizations_be.dart b/lib/l10n/generated/app_localizations_be.dart index 498504e7..2f449760 100644 --- a/lib/l10n/generated/app_localizations_be.dart +++ b/lib/l10n/generated/app_localizations_be.dart @@ -317,6 +317,27 @@ class AppLocalizationsBe extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_bg.dart b/lib/l10n/generated/app_localizations_bg.dart index eef6d919..bb8dd9a7 100644 --- a/lib/l10n/generated/app_localizations_bg.dart +++ b/lib/l10n/generated/app_localizations_bg.dart @@ -317,6 +317,27 @@ class AppLocalizationsBg extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_cs.dart b/lib/l10n/generated/app_localizations_cs.dart index e9e587f2..304ef7d1 100644 --- a/lib/l10n/generated/app_localizations_cs.dart +++ b/lib/l10n/generated/app_localizations_cs.dart @@ -317,6 +317,27 @@ class AppLocalizationsCs extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Uložiště'; diff --git a/lib/l10n/generated/app_localizations_da.dart b/lib/l10n/generated/app_localizations_da.dart index 3b8a6837..edf6c4f4 100644 --- a/lib/l10n/generated/app_localizations_da.dart +++ b/lib/l10n/generated/app_localizations_da.dart @@ -316,6 +316,27 @@ class AppLocalizationsDa extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Lager'; diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index bb523032..528ea238 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -319,6 +319,27 @@ class AppLocalizationsDe extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Speicher'; diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index f0e11248..29eb8367 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -317,6 +317,27 @@ class AppLocalizationsEn extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_es.dart b/lib/l10n/generated/app_localizations_es.dart index 04112884..a2245795 100644 --- a/lib/l10n/generated/app_localizations_es.dart +++ b/lib/l10n/generated/app_localizations_es.dart @@ -319,6 +319,27 @@ class AppLocalizationsEs extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Almacenamiento'; diff --git a/lib/l10n/generated/app_localizations_fa.dart b/lib/l10n/generated/app_localizations_fa.dart index 93487750..44278307 100644 --- a/lib/l10n/generated/app_localizations_fa.dart +++ b/lib/l10n/generated/app_localizations_fa.dart @@ -316,6 +316,27 @@ class AppLocalizationsFa extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'ذخیره سازی'; diff --git a/lib/l10n/generated/app_localizations_fi.dart b/lib/l10n/generated/app_localizations_fi.dart index e51fb403..9e37f0a7 100644 --- a/lib/l10n/generated/app_localizations_fi.dart +++ b/lib/l10n/generated/app_localizations_fi.dart @@ -318,6 +318,27 @@ class AppLocalizationsFi extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart index 7d77ec1d..2e17f709 100644 --- a/lib/l10n/generated/app_localizations_fr.dart +++ b/lib/l10n/generated/app_localizations_fr.dart @@ -323,6 +323,27 @@ class AppLocalizationsFr extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Stockage'; diff --git a/lib/l10n/generated/app_localizations_he.dart b/lib/l10n/generated/app_localizations_he.dart index 74efc422..e6f7f365 100644 --- a/lib/l10n/generated/app_localizations_he.dart +++ b/lib/l10n/generated/app_localizations_he.dart @@ -315,6 +315,27 @@ class AppLocalizationsHe extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_hi.dart b/lib/l10n/generated/app_localizations_hi.dart index 9595128d..6076cf15 100644 --- a/lib/l10n/generated/app_localizations_hi.dart +++ b/lib/l10n/generated/app_localizations_hi.dart @@ -317,6 +317,27 @@ class AppLocalizationsHi extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_id.dart b/lib/l10n/generated/app_localizations_id.dart index 3961a097..c6c796b8 100644 --- a/lib/l10n/generated/app_localizations_id.dart +++ b/lib/l10n/generated/app_localizations_id.dart @@ -317,6 +317,27 @@ class AppLocalizationsId extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Penyimpanan'; diff --git a/lib/l10n/generated/app_localizations_it.dart b/lib/l10n/generated/app_localizations_it.dart index ac9a4533..bcede37e 100644 --- a/lib/l10n/generated/app_localizations_it.dart +++ b/lib/l10n/generated/app_localizations_it.dart @@ -323,6 +323,27 @@ class AppLocalizationsIt extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Memoria'; diff --git a/lib/l10n/generated/app_localizations_ja.dart b/lib/l10n/generated/app_localizations_ja.dart index e71b883f..7127b463 100644 --- a/lib/l10n/generated/app_localizations_ja.dart +++ b/lib/l10n/generated/app_localizations_ja.dart @@ -313,6 +313,27 @@ class AppLocalizationsJa extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'ストレージ'; diff --git a/lib/l10n/generated/app_localizations_lt.dart b/lib/l10n/generated/app_localizations_lt.dart index 5a656ff0..bea3ee69 100644 --- a/lib/l10n/generated/app_localizations_lt.dart +++ b/lib/l10n/generated/app_localizations_lt.dart @@ -317,6 +317,27 @@ class AppLocalizationsLt extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_nl.dart b/lib/l10n/generated/app_localizations_nl.dart index 4b70ec20..66aaf60c 100644 --- a/lib/l10n/generated/app_localizations_nl.dart +++ b/lib/l10n/generated/app_localizations_nl.dart @@ -321,6 +321,27 @@ class AppLocalizationsNl extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Opslag'; diff --git a/lib/l10n/generated/app_localizations_oc.dart b/lib/l10n/generated/app_localizations_oc.dart index 6fc14cae..619f722e 100644 --- a/lib/l10n/generated/app_localizations_oc.dart +++ b/lib/l10n/generated/app_localizations_oc.dart @@ -318,6 +318,27 @@ class AppLocalizationsOc extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Emmagazinatge'; diff --git a/lib/l10n/generated/app_localizations_pl.dart b/lib/l10n/generated/app_localizations_pl.dart index 73ac82d0..c45b3997 100644 --- a/lib/l10n/generated/app_localizations_pl.dart +++ b/lib/l10n/generated/app_localizations_pl.dart @@ -318,6 +318,27 @@ class AppLocalizationsPl extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Pamięć'; diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart index d795b88e..cefd5db9 100644 --- a/lib/l10n/generated/app_localizations_pt.dart +++ b/lib/l10n/generated/app_localizations_pt.dart @@ -318,6 +318,27 @@ class AppLocalizationsPt extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Armazenamento'; diff --git a/lib/l10n/generated/app_localizations_ru.dart b/lib/l10n/generated/app_localizations_ru.dart index b3e1ea23..cb3f56ef 100644 --- a/lib/l10n/generated/app_localizations_ru.dart +++ b/lib/l10n/generated/app_localizations_ru.dart @@ -325,6 +325,27 @@ class AppLocalizationsRu extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Хранилище'; diff --git a/lib/l10n/generated/app_localizations_sv.dart b/lib/l10n/generated/app_localizations_sv.dart index 07552ddd..bbe55b12 100644 --- a/lib/l10n/generated/app_localizations_sv.dart +++ b/lib/l10n/generated/app_localizations_sv.dart @@ -317,6 +317,27 @@ class AppLocalizationsSv extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_ta.dart b/lib/l10n/generated/app_localizations_ta.dart index eff92752..ee7cd926 100644 --- a/lib/l10n/generated/app_localizations_ta.dart +++ b/lib/l10n/generated/app_localizations_ta.dart @@ -317,6 +317,27 @@ class AppLocalizationsTa extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_tr.dart b/lib/l10n/generated/app_localizations_tr.dart index 418f157d..c0fbeaa2 100644 --- a/lib/l10n/generated/app_localizations_tr.dart +++ b/lib/l10n/generated/app_localizations_tr.dart @@ -317,6 +317,27 @@ class AppLocalizationsTr extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Depolama'; diff --git a/lib/l10n/generated/app_localizations_uk.dart b/lib/l10n/generated/app_localizations_uk.dart index 7f8ea066..beac329f 100644 --- a/lib/l10n/generated/app_localizations_uk.dart +++ b/lib/l10n/generated/app_localizations_uk.dart @@ -323,6 +323,27 @@ class AppLocalizationsUk extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Сховище'; diff --git a/lib/l10n/generated/app_localizations_vi.dart b/lib/l10n/generated/app_localizations_vi.dart index 9fb7a390..aa1a4680 100644 --- a/lib/l10n/generated/app_localizations_vi.dart +++ b/lib/l10n/generated/app_localizations_vi.dart @@ -318,6 +318,27 @@ class AppLocalizationsVi extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => 'Storage'; diff --git a/lib/l10n/generated/app_localizations_zh.dart b/lib/l10n/generated/app_localizations_zh.dart index 500610f5..6a7abf52 100644 --- a/lib/l10n/generated/app_localizations_zh.dart +++ b/lib/l10n/generated/app_localizations_zh.dart @@ -311,6 +311,27 @@ class AppLocalizationsZh extends AppLocalizations { @override String get templateVariableTime => 'Time'; + @override + String get templateDefaultTimestampTitle => 'Timestamp'; + + @override + String templateDefaultTimestampBody(Object date, Object time) { + return '$date - $time:'; + } + + @override + String get templateDefaultSummaryTitle => 'Day Summary'; + + @override + String get templateDefaultSummaryBody => '### Summary\n- \n\n### Quote\n> '; + + @override + String get templateDefaultReflectionTitle => 'Reflection'; + + @override + String get templateDefaultReflectionBody => + '### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- '; + @override String get settingsStorageTitle => '存储'; diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 7c6956fe..e40fb414 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -157,6 +157,18 @@ "@noTemplatesDescription": {}, "templateVariableTime": "Time", "@templateVariableTime": {}, + "templateDefaultTimestampTitle": "Timestamp", + "@templateDefaultTimestampTitle": {}, + "templateDefaultTimestampBody": "{date} - {time}:", + "@templateDefaultTimestampBody": {}, + "templateDefaultSummaryTitle": "Day Summary", + "@templateDefaultSummaryTitle": {}, + "templateDefaultSummaryBody": "### Summary\n- \n\n### Quote\n> ", + "@templateDefaultSummaryBody": {}, + "templateDefaultReflectionTitle": "Reflection", + "@templateDefaultReflectionTitle": {}, + "templateDefaultReflectionBody": "### What did you enjoy about today?\n- \n\n### What are you thankful for?\n- \n\n### What are you looking forward to?\n- ", + "@templateDefaultReflectionBody": {}, "settingsStorageTitle": "Storage", "@settingsStorageTitle": {}, "settingsImageQuality": "Image Quality", diff --git a/lib/providers/templates_provider.dart b/lib/providers/templates_provider.dart index 6f78c5de..0cf2aaae 100644 --- a/lib/providers/templates_provider.dart +++ b/lib/providers/templates_provider.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'package:daily_you/config_provider.dart'; +import 'package:daily_you/l10n/generated/app_localizations.dart'; import 'package:daily_you/database/app_database.dart'; import 'package:daily_you/database/template_dao.dart'; import 'package:daily_you/models/template.dart'; @@ -48,4 +49,30 @@ class TemplatesProvider with ChangeNotifier { ConfigProvider.instance.get(ConfigKey.defaultTemplate); return templates.where((t) => t.id == defaultTemplateId).firstOrNull; } + + Future createDefaultTemplates() async { + final locale = WidgetsBinding.instance.platformDispatcher.locale; + final l10n = await AppLocalizations.delegate.load(locale); + final defaultTemplates = [ + Template( + name: l10n.templateDefaultTimestampTitle, + text: l10n.templateDefaultTimestampBody("{{date}}", "{{time}}"), + timeCreate: DateTime.now(), + timeModified: DateTime.now()), + Template( + name: l10n.templateDefaultSummaryTitle, + text: l10n.templateDefaultSummaryBody, + timeCreate: DateTime.now(), + timeModified: DateTime.now()), + Template( + name: l10n.templateDefaultReflectionTitle, + text: l10n.templateDefaultReflectionBody, + timeCreate: DateTime.now(), + timeModified: DateTime.now()), + ]; + + for (final template in defaultTemplates) { + add(template); + } + } }