mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-03 23:00:04 +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(
|
return NoteEditor.newNote(
|
||||||
getFolderForEditor(settings, rootFolder, et),
|
folder,
|
||||||
|
folder,
|
||||||
et,
|
et,
|
||||||
existingText: sharedText,
|
existingText: sharedText,
|
||||||
existingImages: sharedImages,
|
existingImages: sharedImages,
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
@ -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,
|
||||||
),
|
),
|
||||||
|
@ -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,
|
||||||
|
@ -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) {},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
Reference in New Issue
Block a user