diff --git a/lib/folder_views/common.dart b/lib/folder_views/common.dart index 4df5a3f8..31c0353a 100644 --- a/lib/folder_views/common.dart +++ b/lib/folder_views/common.dart @@ -5,6 +5,7 @@ import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/folder_views/card_view.dart'; import 'package:gitjournal/folder_views/journal_view.dart'; import 'package:gitjournal/screens/note_editor.dart'; +import 'package:gitjournal/settings.dart'; import 'package:gitjournal/utils.dart'; import 'standard_view.dart'; @@ -25,7 +26,10 @@ Widget buildFolderView( ) { var noteSelectionFn = (Note note) async { var route = MaterialPageRoute( - builder: (context) => NoteEditor.fromNote(note), + builder: (context) => NoteEditor.fromNote( + note, + Settings.instance.defaultEditor.toEditorType(), + ), ); var showUndoSnackBar = await Navigator.of(context).push(route); if (showUndoSnackBar != null) { diff --git a/lib/screens/folder_view.dart b/lib/screens/folder_view.dart index e4d76410..5e025e89 100644 --- a/lib/screens/folder_view.dart +++ b/lib/screens/folder_view.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; + import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/core/sorted_notes_folder.dart'; import 'package:gitjournal/core/sorting_mode.dart'; @@ -80,7 +82,8 @@ class _FolderViewState extends State { var createButton = FloatingActionButton( key: const ValueKey("FAB"), - onPressed: () => _newPost(context), + onPressed: () => + _newPost(context, Settings.instance.defaultEditor.toEditorType()), child: Icon(Icons.add), ); @@ -152,7 +155,6 @@ class _FolderViewState extends State { extraAction, ], ), - floatingActionButton: createButton, body: Center( child: Builder( builder: (context) => RefreshIndicator( @@ -162,6 +164,39 @@ class _FolderViewState extends State { ), ), drawer: AppDrawer(), + floatingActionButton: createButton, + floatingActionButtonLocation: FloatingActionButtonLocation.endDocked, + bottomNavigationBar: BottomAppBar( + color: Theme.of(context).bottomAppBarColor, + shape: const CircularNotchedRectangle(), + child: Row( + children: [ + Padding( + padding: const EdgeInsets.all(4.0), + child: IconButton( + icon: const FaIcon(FontAwesomeIcons.tasks), + onPressed: () => _newPost(context, EditorType.Checklist), + ), + ), + Padding( + padding: const EdgeInsets.all(4.0), + child: IconButton( + icon: const FaIcon(FontAwesomeIcons.markdown), + onPressed: () => _newPost(context, EditorType.Markdown), + ), + ), + Padding( + padding: const EdgeInsets.all(4.0), + child: IconButton( + icon: const FaIcon(FontAwesomeIcons.book), + onPressed: () => _newPost(context, EditorType.Journal), + ), + ), + ], + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + ), + ), ); } @@ -174,9 +209,10 @@ class _FolderViewState extends State { } } - void _newPost(BuildContext context) { + void _newPost(BuildContext context, EditorType editorType) { var route = MaterialPageRoute( - builder: (context) => NoteEditor.newNote(widget.notesFolder.fsFolder)); + builder: (context) => + NoteEditor.newNote(widget.notesFolder.fsFolder, editorType)); Navigator.of(context).push(route); } diff --git a/lib/screens/note_editor.dart b/lib/screens/note_editor.dart index 5c28b1a5..347ee3c9 100644 --- a/lib/screens/note_editor.dart +++ b/lib/screens/note_editor.dart @@ -7,7 +7,6 @@ import 'package:gitjournal/editors/journal_editor.dart'; import 'package:gitjournal/editors/markdown_editor.dart'; import 'package:gitjournal/editors/raw_editor.dart'; import 'package:gitjournal/editors/checklist_editor.dart'; -import 'package:gitjournal/settings.dart'; import 'package:gitjournal/state_container.dart'; import 'package:gitjournal/widgets/folder_selection_dialog.dart'; import 'package:gitjournal/widgets/rename_dialog.dart'; @@ -18,9 +17,10 @@ class ShowUndoSnackbar {} class NoteEditor extends StatefulWidget { final Note note; final NotesFolder notesFolder; + final EditorType defaultEditorType; - NoteEditor.fromNote(this.note) : notesFolder = null; - NoteEditor.newNote(this.notesFolder) : note = null; + NoteEditor.fromNote(this.note, this.defaultEditorType) : notesFolder = null; + NoteEditor.newNote(this.notesFolder, this.defaultEditorType) : note = null; @override NoteEditorState createState() { @@ -59,18 +59,7 @@ class NoteEditorState extends State { @override void initState() { super.initState(); - - switch (Settings.instance.defaultEditor) { - case SettingsEditorType.Markdown: - editorType = EditorType.Markdown; - break; - case SettingsEditorType.Raw: - editorType = EditorType.Raw; - break; - case SettingsEditorType.Journal: - editorType = EditorType.Journal; - break; - } + editorType = widget.defaultEditorType; } @override diff --git a/lib/settings.dart b/lib/settings.dart index f6e81ef5..dca4c595 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -1,3 +1,4 @@ +import 'package:gitjournal/screens/note_editor.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:gitjournal/core/sorting_mode.dart'; @@ -225,6 +226,7 @@ class SettingsEditorType { static const Markdown = SettingsEditorType("Markdown", "Markdown"); static const Raw = SettingsEditorType("Raw", "Raw"); static const Journal = SettingsEditorType("Journal", "Journal"); + static const Checklist = SettingsEditorType("Checklist", "Checklist"); static const Default = Markdown; final String _str; @@ -239,10 +241,26 @@ class SettingsEditorType { return _publicString; } + EditorType toEditorType() { + switch (this) { + case Markdown: + return EditorType.Markdown; + case Raw: + return EditorType.Raw; + case Journal: + return EditorType.Journal; + case Checklist: + return EditorType.Checklist; + default: + return EditorType.Markdown; + } + } + static const options = [ Markdown, Raw, Journal, + Checklist, ]; static SettingsEditorType fromInternalString(String str) { diff --git a/pubspec.lock b/pubspec.lock index 77dd1842..f0a7a1a4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -238,6 +238,13 @@ packages: description: flutter source: sdk version: "0.0.0" + font_awesome_flutter: + dependency: "direct main" + description: + name: font_awesome_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "8.7.0" freezed_annotation: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 6d06e23e..2b143779 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,6 +38,7 @@ dependencies: git_url_parse2: ^0.0.1 synchronized: ^2.2.0 steel_crypt: ^1.7.1+1 + font_awesome_flutter: ^8.7.0 dev_dependencies: flutter_launcher_icons: "^0.7.2"