diff --git a/lib/editors/checklist_editor.dart b/lib/editors/checklist_editor.dart index 9f03fb05..3d61270f 100644 --- a/lib/editors/checklist_editor.dart +++ b/lib/editors/checklist_editor.dart @@ -174,6 +174,7 @@ class ChecklistEditorState extends State editor: widget, editorState: this, noteModified: _noteModified, + isNewNote: widget.isNewNote, parentFolder: widget.note.parent, body: Column( children: [ diff --git a/lib/editors/common.dart b/lib/editors/common.dart index 49fde6a1..4ae8fd72 100644 --- a/lib/editors/common.dart +++ b/lib/editors/common.dart @@ -41,12 +41,16 @@ class EditorAppBar extends StatelessWidget implements PreferredSizeWidget { final EditorState editorState; final bool noteModified; final IconButton extraButton; + final bool allowEdits; + final Func0 onEditingModeChange; EditorAppBar({ Key key, @required this.editor, @required this.editorState, @required this.noteModified, + @required this.allowEdits, + @required this.onEditingModeChange, this.extraButton, }) : preferredSize = const Size.fromHeight(kToolbarHeight), super(key: key); @@ -66,6 +70,12 @@ class EditorAppBar extends StatelessWidget implements PreferredSizeWidget { ), actions: [ if (extraButton != null) extraButton, + IconButton( + icon: allowEdits + ? const Icon(Icons.remove_red_eye) + : const Icon(Icons.edit), + onPressed: onEditingModeChange, + ), IconButton( key: const ValueKey("EditorSelector"), icon: const Icon(Icons.library_books), diff --git a/lib/editors/journal_editor.dart b/lib/editors/journal_editor.dart index ce4b1845..77c80bd1 100644 --- a/lib/editors/journal_editor.dart +++ b/lib/editors/journal_editor.dart @@ -103,6 +103,7 @@ class JournalEditorState extends State editor: widget, editorState: this, noteModified: _noteModified, + isNewNote: widget.isNewNote, parentFolder: note.parent, body: editor, ); diff --git a/lib/editors/markdown_editor.dart b/lib/editors/markdown_editor.dart index dcd6545e..b4e1b437 100644 --- a/lib/editors/markdown_editor.dart +++ b/lib/editors/markdown_editor.dart @@ -2,8 +2,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; - import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/editors/common.dart'; @@ -12,11 +10,8 @@ import 'package:gitjournal/editors/heuristics.dart'; import 'package:gitjournal/editors/note_body_editor.dart'; import 'package:gitjournal/editors/note_title_editor.dart'; import 'package:gitjournal/error_reporting.dart'; -import 'package:gitjournal/settings.dart'; import 'package:gitjournal/utils/logger.dart'; import 'package:gitjournal/widgets/editor_scroll_view.dart'; -import 'package:gitjournal/widgets/markdown_toolbar.dart'; -import 'package:gitjournal/widgets/note_viewer.dart'; class MarkdownEditor extends StatefulWidget implements Editor { final Note note; @@ -70,31 +65,18 @@ class MarkdownEditorState extends State String _oldText; - bool editingMode = true; bool _noteModified; MarkdownEditorState(this.note) { _textController = TextEditingController(text: note.body); _titleTextController = TextEditingController(text: note.title); _oldText = note.body; - - var settings = Settings.instance; - if (settings.markdownDefaultView == SettingsMarkdownDefaultView.LastUsed) { - editingMode = - settings.markdownLastUsedView == SettingsMarkdownDefaultView.Edit; - } else { - editingMode = - settings.markdownDefaultView == SettingsMarkdownDefaultView.Edit; - } } @override void initState() { super.initState(); _noteModified = widget.noteModified; - if (widget.isNewNote) { - editingMode = true; - } } @override @@ -133,12 +115,7 @@ class MarkdownEditorState extends State ), ); - Widget body = editingMode - ? editor - : NoteViewer( - note: note, - parentFolder: widget.parentFolder, - ); + /* var settings = Provider.of(context); if (settings.experimentalMarkdownToolbar && editingMode) { @@ -154,43 +131,18 @@ class MarkdownEditorState extends State ), ); } - - var extraButton = IconButton( - icon: editingMode - ? const Icon(Icons.remove_red_eye) - : const Icon(Icons.edit), - onPressed: _switchMode, - ); + */ return EditorScaffold( editor: widget, editorState: this, - extraButton: extraButton, noteModified: _noteModified, + isNewNote: widget.isNewNote, parentFolder: note.parent, - allowEdits: editingMode, - body: body, + body: editor, ); } - void _switchMode() { - var settings = Provider.of(context); - - setState(() { - editingMode = !editingMode; - switch (editingMode) { - case true: - settings.markdownLastUsedView = SettingsMarkdownDefaultView.Edit; - break; - case false: - settings.markdownLastUsedView = SettingsMarkdownDefaultView.View; - break; - } - settings.save(); - _updateNote(); - }); - } - void _updateNote() { note.title = _titleTextController.text.trim(); note.body = _textController.text.trim(); diff --git a/lib/editors/raw_editor.dart b/lib/editors/raw_editor.dart index faa788a4..05e42d52 100644 --- a/lib/editors/raw_editor.dart +++ b/lib/editors/raw_editor.dart @@ -101,6 +101,7 @@ class RawEditorState extends State editor: widget, editorState: this, noteModified: _noteModified, + isNewNote: widget.isNewNote, parentFolder: note.parent, body: editor, ); diff --git a/lib/editors/scaffold.dart b/lib/editors/scaffold.dart index db4fdfd4..fedb823d 100644 --- a/lib/editors/scaffold.dart +++ b/lib/editors/scaffold.dart @@ -2,27 +2,29 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/editors/common.dart'; import 'package:gitjournal/settings.dart'; +import 'package:gitjournal/widgets/note_viewer.dart'; class EditorScaffold extends StatefulWidget { final Editor editor; final EditorState editorState; final bool noteModified; + final bool isNewNote; final IconButton extraButton; final Widget body; final NotesFolderFS parentFolder; - final bool allowEdits; EditorScaffold({ @required this.editor, @required this.editorState, @required this.noteModified, + @required this.isNewNote, @required this.body, @required this.parentFolder, this.extraButton, - this.allowEdits = true, }); @override @@ -31,13 +33,33 @@ class EditorScaffold extends StatefulWidget { class _EditorScaffoldState extends State { var hideUIElements = false; + var editingMode = true; + Note note; @override void initState() { super.initState(); - hideUIElements = Settings.instance.zenMode; + var settings = Settings.instance; + + hideUIElements = settings.zenMode; widget.editorState.addListener(_editorChanged); + + if (settings.markdownDefaultView == SettingsMarkdownDefaultView.LastUsed) { + editingMode = + settings.markdownLastUsedView == SettingsMarkdownDefaultView.Edit; + } else { + editingMode = + settings.markdownDefaultView == SettingsMarkdownDefaultView.Edit; + } + + if (widget.isNewNote) { + editingMode = true; + } + + if (editingMode == false) { + note = widget.editorState.getNote(); + } } @override @@ -57,9 +79,33 @@ class _EditorScaffoldState extends State { } } + void _switchMode() { + var settings = Provider.of(context); + + setState(() { + editingMode = !editingMode; + switch (editingMode) { + case true: + settings.markdownLastUsedView = SettingsMarkdownDefaultView.Edit; + break; + case false: + settings.markdownLastUsedView = SettingsMarkdownDefaultView.View; + break; + } + settings.save(); + note = widget.editorState.getNote(); + }); + } + @override Widget build(BuildContext context) { var settings = Provider.of(context); + Widget body = editingMode + ? widget.body + : NoteViewer( + note: note, + parentFolder: widget.parentFolder, + ); return Scaffold( body: GestureDetector( @@ -80,16 +126,18 @@ class _EditorScaffoldState extends State { editorState: widget.editorState, noteModified: widget.noteModified, extraButton: widget.extraButton, + allowEdits: editingMode, + onEditingModeChange: _switchMode, ), ), - Expanded(child: widget.body), + Expanded(child: body), _AnimatedOpacityIgnorePointer( visible: !hideUIElements, child: EditorBottomBar( editor: widget.editor, editorState: widget.editorState, parentFolder: widget.parentFolder, - allowEdits: widget.allowEdits, + allowEdits: editingMode, zenMode: settings.zenMode, onZenModeChanged: () { setState(() {