mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 10:17:16 +08:00
Editors: Expose the preview markdown button on all editors
It's nice to sometimes use the RawEditor to edit something and then later you want to see what it looks, and having to switch to the Markdown Editor for that is very annoying.
This commit is contained in:
@ -174,6 +174,7 @@ class ChecklistEditorState extends State<ChecklistEditor>
|
||||
editor: widget,
|
||||
editorState: this,
|
||||
noteModified: _noteModified,
|
||||
isNewNote: widget.isNewNote,
|
||||
parentFolder: widget.note.parent,
|
||||
body: Column(
|
||||
children: <Widget>[
|
||||
|
@ -41,12 +41,16 @@ class EditorAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
final EditorState editorState;
|
||||
final bool noteModified;
|
||||
final IconButton extraButton;
|
||||
final bool allowEdits;
|
||||
final Func0<void> 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: <Widget>[
|
||||
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),
|
||||
|
@ -103,6 +103,7 @@ class JournalEditorState extends State<JournalEditor>
|
||||
editor: widget,
|
||||
editorState: this,
|
||||
noteModified: _noteModified,
|
||||
isNewNote: widget.isNewNote,
|
||||
parentFolder: note.parent,
|
||||
body: editor,
|
||||
);
|
||||
|
@ -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<MarkdownEditor>
|
||||
|
||||
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<MarkdownEditor>
|
||||
),
|
||||
);
|
||||
|
||||
Widget body = editingMode
|
||||
? editor
|
||||
: NoteViewer(
|
||||
note: note,
|
||||
parentFolder: widget.parentFolder,
|
||||
);
|
||||
/*
|
||||
|
||||
var settings = Provider.of<Settings>(context);
|
||||
if (settings.experimentalMarkdownToolbar && editingMode) {
|
||||
@ -154,43 +131,18 @@ class MarkdownEditorState extends State<MarkdownEditor>
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
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<Settings>(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();
|
||||
|
@ -101,6 +101,7 @@ class RawEditorState extends State<RawEditor>
|
||||
editor: widget,
|
||||
editorState: this,
|
||||
noteModified: _noteModified,
|
||||
isNewNote: widget.isNewNote,
|
||||
parentFolder: note.parent,
|
||||
body: editor,
|
||||
);
|
||||
|
@ -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<EditorScaffold> {
|
||||
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<EditorScaffold> {
|
||||
}
|
||||
}
|
||||
|
||||
void _switchMode() {
|
||||
var settings = Provider.of<Settings>(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<Settings>(context);
|
||||
Widget body = editingMode
|
||||
? widget.body
|
||||
: NoteViewer(
|
||||
note: note,
|
||||
parentFolder: widget.parentFolder,
|
||||
);
|
||||
|
||||
return Scaffold(
|
||||
body: GestureDetector(
|
||||
@ -80,16 +126,18 @@ class _EditorScaffoldState extends State<EditorScaffold> {
|
||||
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(() {
|
||||
|
Reference in New Issue
Block a user