diff --git a/lib/core/notes_folder.dart b/lib/core/notes_folder.dart index 40013aa1..f699e46a 100644 --- a/lib/core/notes_folder.dart +++ b/lib/core/notes_folder.dart @@ -6,7 +6,15 @@ import 'package:path/path.dart'; import 'note.dart'; import 'notes_folder_notifier.dart'; -class NotesFolder with NotesFolderNotifier implements Comparable { +abstract class NotesFolderReadOnly implements NotesFolderNotifier { + bool get isEmpty; + bool get hasNotes; + List get notes; +} + +class NotesFolder + with NotesFolderNotifier + implements NotesFolderReadOnly, Comparable { final NotesFolder parent; String _folderPath; @@ -31,6 +39,7 @@ class NotesFolder with NotesFolderNotifier implements Comparable { String get folderPath => _folderPath; + @override bool get isEmpty { return _notes.isEmpty && _folders.isEmpty; } @@ -54,6 +63,7 @@ class NotesFolder with NotesFolderNotifier implements Comparable { return _folders.isNotEmpty; } + @override bool get hasNotes { return _notes.isNotEmpty; } @@ -75,6 +85,7 @@ class NotesFolder with NotesFolderNotifier implements Comparable { return _notes.length; } + @override List get notes { return _notes; } diff --git a/lib/core/sorted_notes_folder.dart b/lib/core/sorted_notes_folder.dart index 4fb8b35a..370d69ff 100644 --- a/lib/core/sorted_notes_folder.dart +++ b/lib/core/sorted_notes_folder.dart @@ -2,7 +2,9 @@ import 'note.dart'; import 'notes_folder.dart'; import 'notes_folder_notifier.dart'; -class SortedNotesFolder with NotesFolderNotifier implements NotesFolder { +class SortedNotesFolder + with NotesFolderNotifier + implements NotesFolderReadOnly { final NotesFolder folder; List _notes = []; @@ -76,71 +78,9 @@ class SortedNotesFolder with NotesFolderNotifier implements NotesFolder { @override List get notes => _notes; - @override - List getFolders() => folder.getFolders(); - - // - // Dumb Interface Implementation - // - @override - NotesFolder get parent => folder.parent; - - @override - String get folderPath => folder.folderPath; - - @override - bool get isEmpty => folder.isEmpty; - - @override - String get name => folder.name; - - @override - String get fullName => folder.fullName; - - @override - bool get hasSubFolders => folder.hasSubFolders; - @override bool get hasNotes => folder.hasNotes; @override - bool get hasNotesRecursive => folder.hasNotesRecursive; - - @override - int get numberOfNotes => folder.numberOfNotes; - - @override - Future loadRecursively() => folder.loadRecursively(); - - @override - Future load() => folder.load(); - - @override - void add(Note note) => folder.add(note); - - @override - void insert(int index, Note note) => folder.insert(index, note); - - @override - void remove(Note note) => folder.remove(note); - - @override - void create() => folder.create(); - - @override - void addFolder(NotesFolder folder) => folder.addFolder(folder); - - @override - void removeFolder(NotesFolder folder) => folder.removeFolder(folder); - - @override - void rename(String newName) => folder.rename(newName); - - @override - String pathSpec() => folder.pathSpec(); - - @override - int compareTo(NotesFolder other) { - return folderPath.compareTo(other.folderPath); - } + bool get isEmpty => folder.isEmpty; } diff --git a/lib/core/virtual_notes_folder.dart b/lib/core/virtual_notes_folder.dart index 0d37d0ef..6459e11a 100644 --- a/lib/core/virtual_notes_folder.dart +++ b/lib/core/virtual_notes_folder.dart @@ -2,7 +2,9 @@ import 'note.dart'; import 'notes_folder.dart'; import 'notes_folder_notifier.dart'; -class VirtualNotesFolder with NotesFolderNotifier implements NotesFolder { +class VirtualNotesFolder + with NotesFolderNotifier + implements NotesFolderReadOnly { final List _notes; VirtualNotesFolder(this._notes); @@ -10,71 +12,9 @@ class VirtualNotesFolder with NotesFolderNotifier implements NotesFolder { @override List get notes => _notes; - @override - List getFolders() => []; - - // - // Dumb Interface Implementation - // - @override - NotesFolder get parent => null; - - @override - String get folderPath => ""; - @override bool get isEmpty => _notes.isEmpty; - @override - String get name => ""; - - @override - String get fullName => ""; - - @override - bool get hasSubFolders => false; - @override bool get hasNotes => _notes.isNotEmpty; - - @override - bool get hasNotesRecursive => hasNotes; - - @override - int get numberOfNotes => _notes.length; - - @override - Future loadRecursively() async {} - - @override - Future load() async {} - - @override - void add(Note note) {} - - @override - void insert(int index, Note note) {} - - @override - void remove(Note note) {} - - @override - void create() {} - - @override - void addFolder(NotesFolder folder) {} - - @override - void removeFolder(NotesFolder folder) {} - - @override - void rename(String newName) {} - - @override - String pathSpec() => ""; - - @override - int compareTo(NotesFolder other) { - return folderPath.compareTo(other.folderPath); - } } diff --git a/lib/screens/journal_listing.dart b/lib/screens/journal_listing.dart index 9c383f01..e4613162 100644 --- a/lib/screens/journal_listing.dart +++ b/lib/screens/journal_listing.dart @@ -91,11 +91,11 @@ class _JournalListingScreenState extends State { Navigator.of(context).push(route); } - Widget buildJournalList(NotesFolder folder) { + Widget buildJournalList(NotesFolderReadOnly folder) { return Builder( builder: (context) { return JournalList( - folder: SortedNotesFolder(folder), + folder: folder, noteSelectedFunction: (Note note) async { var route = MaterialPageRoute( builder: (context) => NoteEditor.fromNote(note), diff --git a/lib/widgets/journal_list.dart b/lib/widgets/journal_list.dart index 84747352..1a4039a8 100644 --- a/lib/widgets/journal_list.dart +++ b/lib/widgets/journal_list.dart @@ -12,7 +12,7 @@ typedef void NoteSelectedFunction(Note note); class JournalList extends StatefulWidget { final NoteSelectedFunction noteSelectedFunction; - final NotesFolder folder; + final NotesFolderReadOnly folder; final String emptyText; JournalList({