mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-26 08:36:50 +08:00
Add as NotesFolderReadOnly interface
This simplifies the implementation of VirtualNotesFolder and NotesFolder.
This commit is contained in:
@ -6,7 +6,15 @@ import 'package:path/path.dart';
|
||||
import 'note.dart';
|
||||
import 'notes_folder_notifier.dart';
|
||||
|
||||
class NotesFolder with NotesFolderNotifier implements Comparable<NotesFolder> {
|
||||
abstract class NotesFolderReadOnly implements NotesFolderNotifier {
|
||||
bool get isEmpty;
|
||||
bool get hasNotes;
|
||||
List<Note> get notes;
|
||||
}
|
||||
|
||||
class NotesFolder
|
||||
with NotesFolderNotifier
|
||||
implements NotesFolderReadOnly, Comparable<NotesFolder> {
|
||||
final NotesFolder parent;
|
||||
String _folderPath;
|
||||
|
||||
@ -31,6 +39,7 @@ class NotesFolder with NotesFolderNotifier implements Comparable<NotesFolder> {
|
||||
|
||||
String get folderPath => _folderPath;
|
||||
|
||||
@override
|
||||
bool get isEmpty {
|
||||
return _notes.isEmpty && _folders.isEmpty;
|
||||
}
|
||||
@ -54,6 +63,7 @@ class NotesFolder with NotesFolderNotifier implements Comparable<NotesFolder> {
|
||||
return _folders.isNotEmpty;
|
||||
}
|
||||
|
||||
@override
|
||||
bool get hasNotes {
|
||||
return _notes.isNotEmpty;
|
||||
}
|
||||
@ -75,6 +85,7 @@ class NotesFolder with NotesFolderNotifier implements Comparable<NotesFolder> {
|
||||
return _notes.length;
|
||||
}
|
||||
|
||||
@override
|
||||
List<Note> get notes {
|
||||
return _notes;
|
||||
}
|
||||
|
@ -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<Note> _notes = [];
|
||||
@ -76,71 +78,9 @@ class SortedNotesFolder with NotesFolderNotifier implements NotesFolder {
|
||||
@override
|
||||
List<Note> get notes => _notes;
|
||||
|
||||
@override
|
||||
List<NotesFolder> 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<void> loadRecursively() => folder.loadRecursively();
|
||||
|
||||
@override
|
||||
Future<void> 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;
|
||||
}
|
||||
|
@ -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<Note> _notes;
|
||||
|
||||
VirtualNotesFolder(this._notes);
|
||||
@ -10,71 +12,9 @@ class VirtualNotesFolder with NotesFolderNotifier implements NotesFolder {
|
||||
@override
|
||||
List<Note> get notes => _notes;
|
||||
|
||||
@override
|
||||
List<NotesFolder> 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<void> loadRecursively() async {}
|
||||
|
||||
@override
|
||||
Future<void> 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);
|
||||
}
|
||||
}
|
||||
|
@ -91,11 +91,11 @@ class _JournalListingScreenState extends State<JournalListingScreen> {
|
||||
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),
|
||||
|
@ -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({
|
||||
|
Reference in New Issue
Block a user