NoteEditor: Pass it the parentFolder

A note has a parent which is the physical folder it is inside, and a
parent folder which it is being displayed inside. It's useful to have
the latter as that can be used to display the next note - in the case of
the Journal Editor, and open the graph view as well.
This commit is contained in:
Vishesh Handa
2020-08-20 10:42:39 +02:00
parent d90a87aa4f
commit 6ba0f3974a
8 changed files with 44 additions and 14 deletions

View File

@ -390,8 +390,10 @@ class _JournalAppState extends State<JournalApp> {
}); });
} }
var folder = getFolderForEditor(settings, rootFolder, et);
return NoteEditor.newNote( return NoteEditor.newNote(
getFolderForEditor(settings, rootFolder, et), folder,
folder,
et, et,
existingText: sharedText, existingText: sharedText,
existingImages: sharedImages, existingImages: sharedImages,

View File

@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/editors/common.dart'; import 'package:gitjournal/editors/common.dart';
import 'package:gitjournal/editors/disposable_change_notifier.dart'; import 'package:gitjournal/editors/disposable_change_notifier.dart';
import 'package:gitjournal/editors/heuristics.dart'; import 'package:gitjournal/editors/heuristics.dart';
@ -19,6 +20,7 @@ import 'package:gitjournal/widgets/note_viewer.dart';
class MarkdownEditor extends StatefulWidget implements Editor { class MarkdownEditor extends StatefulWidget implements Editor {
final Note note; final Note note;
final NotesFolder parentFolder;
final bool noteModified; final bool noteModified;
@override @override
@ -41,6 +43,7 @@ class MarkdownEditor extends StatefulWidget implements Editor {
MarkdownEditor({ MarkdownEditor({
Key key, Key key,
@required this.note, @required this.note,
@required this.parentFolder,
@required this.noteModified, @required this.noteModified,
@required this.noteDeletionSelected, @required this.noteDeletionSelected,
@required this.noteEditorChooserSelected, @required this.noteEditorChooserSelected,
@ -130,7 +133,12 @@ class MarkdownEditorState extends State<MarkdownEditor>
), ),
); );
Widget body = editingMode ? editor : NoteViewer(note: note); Widget body = editingMode
? editor
: NoteViewer(
note: note,
parentFolder: widget.parentFolder,
);
var settings = Provider.of<Settings>(context); var settings = Provider.of<Settings>(context);
if (settings.experimentalMarkdownToolbar && editingMode) { if (settings.experimentalMarkdownToolbar && editingMode) {

View File

@ -68,9 +68,13 @@ Widget buildFolderView({
return Container(); return Container();
} }
void openNoteEditor(BuildContext context, Note note) async { void openNoteEditor(
BuildContext context,
Note note,
NotesFolder parentFolder,
) async {
var route = MaterialPageRoute( var route = MaterialPageRoute(
builder: (context) => NoteEditor.fromNote(note), builder: (context) => NoteEditor.fromNote(note, parentFolder),
settings: const RouteSettings(name: '/note/'), settings: const RouteSettings(name: '/note/'),
); );
var showUndoSnackBar = await Navigator.of(context).push(route); var showUndoSnackBar = await Navigator.of(context).push(route);

View File

@ -90,7 +90,7 @@ class _FolderViewState extends State<FolderView> {
showSummary: _showSummary, showSummary: _showSummary,
noteTapped: (Note note) { noteTapped: (Note note) {
if (!inSelectionMode) { if (!inSelectionMode) {
openNoteEditor(context, note); openNoteEditor(context, note, widget.notesFolder);
} else { } else {
setState(() { setState(() {
inSelectionMode = false; inSelectionMode = false;
@ -189,6 +189,7 @@ class _FolderViewState extends State<FolderView> {
var route = MaterialPageRoute( var route = MaterialPageRoute(
builder: (context) => NoteEditor.newNote( builder: (context) => NoteEditor.newNote(
fsFolder, fsFolder,
widget.notesFolder,
editorType, editorType,
newNoteExtraProps: extraProps, newNoteExtraProps: extraProps,
), ),

View File

@ -9,6 +9,7 @@ import 'package:provider/provider.dart';
import 'package:gitjournal/core/md_yaml_doc.dart'; import 'package:gitjournal/core/md_yaml_doc.dart';
import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/core/notes_folder_fs.dart';
import 'package:gitjournal/editors/checklist_editor.dart'; import 'package:gitjournal/editors/checklist_editor.dart';
import 'package:gitjournal/editors/journal_editor.dart'; import 'package:gitjournal/editors/journal_editor.dart';
@ -28,6 +29,7 @@ class ShowUndoSnackbar {}
class NoteEditor extends StatefulWidget { class NoteEditor extends StatefulWidget {
final Note note; final Note note;
final NotesFolderFS notesFolder; final NotesFolderFS notesFolder;
final NotesFolder parentFolderView;
final EditorType defaultEditorType; final EditorType defaultEditorType;
final String existingText; final String existingText;
@ -35,7 +37,7 @@ class NoteEditor extends StatefulWidget {
final Map<String, dynamic> newNoteExtraProps; final Map<String, dynamic> newNoteExtraProps;
NoteEditor.fromNote(this.note) NoteEditor.fromNote(this.note, this.parentFolderView)
: notesFolder = note.parent, : notesFolder = note.parent,
defaultEditorType = null, defaultEditorType = null,
existingText = null, existingText = null,
@ -44,6 +46,7 @@ class NoteEditor extends StatefulWidget {
NoteEditor.newNote( NoteEditor.newNote(
this.notesFolder, this.notesFolder,
this.parentFolderView,
this.defaultEditorType, { this.defaultEditorType, {
this.existingText, this.existingText,
this.existingImages, this.existingImages,
@ -151,6 +154,7 @@ class NoteEditorState extends State<NoteEditor> {
return MarkdownEditor( return MarkdownEditor(
key: _markdownEditorKey, key: _markdownEditorKey,
note: note, note: note,
parentFolder: widget.parentFolderView,
noteModified: _noteModified(note), noteModified: _noteModified(note),
noteDeletionSelected: _noteDeletionSelected, noteDeletionSelected: _noteDeletionSelected,
noteEditorChooserSelected: _noteEditorChooserSelected, noteEditorChooserSelected: _noteEditorChooserSelected,

View File

@ -83,7 +83,7 @@ class NoteSearchDelegate extends SearchDelegate<Note> {
emptyText: emptyText, emptyText: emptyText,
header: StandardViewHeader.TitleOrFileName, header: StandardViewHeader.TitleOrFileName,
showSummary: true, showSummary: true,
noteTapped: (Note note) => openNoteEditor(context, note), noteTapped: (Note note) => openNoteEditor(context, note, folder),
noteLongPressed: (Note note) {}, noteLongPressed: (Note note) {},
); );
} }

View File

@ -12,6 +12,7 @@ import 'package:url_launcher/url_launcher.dart';
import 'package:gitjournal/core/link.dart'; import 'package:gitjournal/core/link.dart';
import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/core/notes_folder_fs.dart';
import 'package:gitjournal/folder_views/common.dart'; import 'package:gitjournal/folder_views/common.dart';
import 'package:gitjournal/settings.dart'; import 'package:gitjournal/settings.dart';
@ -23,7 +24,12 @@ import 'package:gitjournal/widgets/notes_backlinks.dart';
class NoteViewer extends StatelessWidget { class NoteViewer extends StatelessWidget {
final Note note; final Note note;
const NoteViewer({Key key, @required this.note}) : super(key: key); final NotesFolder parentFolder;
const NoteViewer({
Key key,
@required this.note,
@required this.parentFolder,
}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -72,7 +78,7 @@ class NoteViewer extends StatelessWidget {
var linkedNote = linkResolver.resolve(link); var linkedNote = linkResolver.resolve(link);
if (linkedNote != null) { if (linkedNote != null) {
openNoteEditor(context, linkedNote); openNoteEditor(context, linkedNote, parentFolder);
return; return;
} }
@ -91,7 +97,11 @@ class NoteViewer extends StatelessWidget {
), ),
const SizedBox(height: 16.0), const SizedBox(height: 16.0),
if (settings.experimentalBacklinks) if (settings.experimentalBacklinks)
NoteBacklinkRenderer(note: note, rootFolder: rootFolder), NoteBacklinkRenderer(
note: note,
rootFolder: rootFolder,
parentFolder: parentFolder,
),
// _buildFooter(context), // _buildFooter(context),
], ],
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,

View File

@ -5,6 +5,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:gitjournal/core/link.dart'; import 'package:gitjournal/core/link.dart';
import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/core/notes_folder_fs.dart';
import 'package:gitjournal/features.dart'; import 'package:gitjournal/features.dart';
import 'package:gitjournal/folder_views/common.dart'; import 'package:gitjournal/folder_views/common.dart';
@ -14,10 +15,12 @@ import 'package:gitjournal/widgets/pro_overlay.dart';
class NoteBacklinkRenderer extends StatefulWidget { class NoteBacklinkRenderer extends StatefulWidget {
final Note note; final Note note;
final NotesFolderFS rootFolder; final NotesFolderFS rootFolder;
final NotesFolder parentFolder;
NoteBacklinkRenderer({ NoteBacklinkRenderer({
@required this.note, @required this.note,
@required this.rootFolder, @required this.rootFolder,
@required this.parentFolder,
}); });
@override @override
@ -88,7 +91,7 @@ class _NoteBacklinkRendererState extends State<NoteBacklinkRenderer> {
note: note, note: note,
parentNote: widget.note, parentNote: widget.note,
onTap: () { onTap: () {
openNoteEditor(context, note); openNoteEditor(context, note, widget.parentFolder);
}, },
), ),
], ],
@ -137,9 +140,7 @@ class NoteSnippet extends StatelessWidget {
return Padding( return Padding(
padding: const EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 8.0), padding: const EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 8.0),
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: onTap,
openNoteEditor(context, note);
},
child: Container( child: Container(
color: theme.scaffoldBackgroundColor, color: theme.scaffoldBackgroundColor,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,