mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-04 14:49:44 +08:00
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:
@ -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,
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
),
|
||||
|
@ -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,
|
||||
|
@ -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) {},
|
||||
);
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user