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(
getFolderForEditor(settings, rootFolder, et),
folder,
folder,
et,
existingText: sharedText,
existingImages: sharedImages,

View File

@ -5,6 +5,7 @@ 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';
import 'package:gitjournal/editors/disposable_change_notifier.dart';
import 'package:gitjournal/editors/heuristics.dart';
@ -19,6 +20,7 @@ import 'package:gitjournal/widgets/note_viewer.dart';
class MarkdownEditor extends StatefulWidget implements Editor {
final Note note;
final NotesFolder parentFolder;
final bool noteModified;
@override
@ -41,6 +43,7 @@ class MarkdownEditor extends StatefulWidget implements Editor {
MarkdownEditor({
Key key,
@required this.note,
@required this.parentFolder,
@required this.noteModified,
@required this.noteDeletionSelected,
@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);
if (settings.experimentalMarkdownToolbar && editingMode) {

View File

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

View File

@ -90,7 +90,7 @@ class _FolderViewState extends State<FolderView> {
showSummary: _showSummary,
noteTapped: (Note note) {
if (!inSelectionMode) {
openNoteEditor(context, note);
openNoteEditor(context, note, widget.notesFolder);
} else {
setState(() {
inSelectionMode = false;
@ -189,6 +189,7 @@ class _FolderViewState extends State<FolderView> {
var route = MaterialPageRoute(
builder: (context) => NoteEditor.newNote(
fsFolder,
widget.notesFolder,
editorType,
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/note.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/core/notes_folder_fs.dart';
import 'package:gitjournal/editors/checklist_editor.dart';
import 'package:gitjournal/editors/journal_editor.dart';
@ -28,6 +29,7 @@ class ShowUndoSnackbar {}
class NoteEditor extends StatefulWidget {
final Note note;
final NotesFolderFS notesFolder;
final NotesFolder parentFolderView;
final EditorType defaultEditorType;
final String existingText;
@ -35,7 +37,7 @@ class NoteEditor extends StatefulWidget {
final Map<String, dynamic> newNoteExtraProps;
NoteEditor.fromNote(this.note)
NoteEditor.fromNote(this.note, this.parentFolderView)
: notesFolder = note.parent,
defaultEditorType = null,
existingText = null,
@ -44,6 +46,7 @@ class NoteEditor extends StatefulWidget {
NoteEditor.newNote(
this.notesFolder,
this.parentFolderView,
this.defaultEditorType, {
this.existingText,
this.existingImages,
@ -151,6 +154,7 @@ class NoteEditorState extends State<NoteEditor> {
return MarkdownEditor(
key: _markdownEditorKey,
note: note,
parentFolder: widget.parentFolderView,
noteModified: _noteModified(note),
noteDeletionSelected: _noteDeletionSelected,
noteEditorChooserSelected: _noteEditorChooserSelected,

View File

@ -83,7 +83,7 @@ class NoteSearchDelegate extends SearchDelegate<Note> {
emptyText: emptyText,
header: StandardViewHeader.TitleOrFileName,
showSummary: true,
noteTapped: (Note note) => openNoteEditor(context, note),
noteTapped: (Note note) => openNoteEditor(context, note, folder),
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/note.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/core/notes_folder_fs.dart';
import 'package:gitjournal/folder_views/common.dart';
import 'package:gitjournal/settings.dart';
@ -23,7 +24,12 @@ import 'package:gitjournal/widgets/notes_backlinks.dart';
class NoteViewer extends StatelessWidget {
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
Widget build(BuildContext context) {
@ -72,7 +78,7 @@ class NoteViewer extends StatelessWidget {
var linkedNote = linkResolver.resolve(link);
if (linkedNote != null) {
openNoteEditor(context, linkedNote);
openNoteEditor(context, linkedNote, parentFolder);
return;
}
@ -91,7 +97,11 @@ class NoteViewer extends StatelessWidget {
),
const SizedBox(height: 16.0),
if (settings.experimentalBacklinks)
NoteBacklinkRenderer(note: note, rootFolder: rootFolder),
NoteBacklinkRenderer(
note: note,
rootFolder: rootFolder,
parentFolder: parentFolder,
),
// _buildFooter(context),
],
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/note.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/core/notes_folder_fs.dart';
import 'package:gitjournal/features.dart';
import 'package:gitjournal/folder_views/common.dart';
@ -14,10 +15,12 @@ import 'package:gitjournal/widgets/pro_overlay.dart';
class NoteBacklinkRenderer extends StatefulWidget {
final Note note;
final NotesFolderFS rootFolder;
final NotesFolder parentFolder;
NoteBacklinkRenderer({
@required this.note,
@required this.rootFolder,
@required this.parentFolder,
});
@override
@ -88,7 +91,7 @@ class _NoteBacklinkRendererState extends State<NoteBacklinkRenderer> {
note: note,
parentNote: widget.note,
onTap: () {
openNoteEditor(context, note);
openNoteEditor(context, note, widget.parentFolder);
},
),
],
@ -137,9 +140,7 @@ class NoteSnippet extends StatelessWidget {
return Padding(
padding: const EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 8.0),
child: GestureDetector(
onTap: () {
openNoteEditor(context, note);
},
onTap: onTap,
child: Container(
color: theme.scaffoldBackgroundColor,
width: MediaQuery.of(context).size.width,