mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-27 17:29:50 +08:00
Rename NoteFolder -> NotesFolder
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:fimber/fimber.dart';
|
import 'package:fimber/fimber.dart';
|
||||||
import 'package:gitjournal/core/note.dart';
|
import 'package:gitjournal/core/note.dart';
|
||||||
import 'package:gitjournal/core/note_folder.dart';
|
import 'package:gitjournal/core/notes_folder.dart';
|
||||||
|
|
||||||
class AppState {
|
class AppState {
|
||||||
//
|
//
|
||||||
@ -28,7 +28,7 @@ class AppState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<Note> notes = [];
|
List<Note> notes = [];
|
||||||
NoteFolder noteFolder;
|
NotesFolder noteFolder;
|
||||||
|
|
||||||
AppState(SharedPreferences pref) {
|
AppState(SharedPreferences pref) {
|
||||||
localGitRepoConfigured = pref.getBool("localGitRepoConfigured") ?? false;
|
localGitRepoConfigured = pref.getBool("localGitRepoConfigured") ?? false;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import 'note.dart';
|
import 'note.dart';
|
||||||
import 'note_folder.dart';
|
import 'notes_folder.dart';
|
||||||
|
|
||||||
// FIXME: Maybe the parent should be a part of the Note, and the NoteFolder
|
// FIXME: Maybe the parent should be a part of the Note, and the NoteFolder
|
||||||
// or maybe also a part of the NoteFolder
|
// or maybe also a part of the NoteFolder
|
||||||
class NoteFSEntity {
|
class NoteFSEntity {
|
||||||
NoteFolder parent;
|
NotesFolder parent;
|
||||||
NoteFolder folder;
|
NotesFolder folder;
|
||||||
Note note;
|
Note note;
|
||||||
|
|
||||||
NoteFSEntity(this.parent, {this.folder, this.note}) {
|
NoteFSEntity(this.parent, {this.folder, this.note}) {
|
||||||
|
@ -5,11 +5,12 @@ import 'package:path/path.dart';
|
|||||||
import 'note.dart';
|
import 'note.dart';
|
||||||
import 'note_fs_entity.dart';
|
import 'note_fs_entity.dart';
|
||||||
|
|
||||||
class NoteFolder {
|
class NotesFolder {
|
||||||
|
NotesFolder parent;
|
||||||
List<NoteFSEntity> entities = [];
|
List<NoteFSEntity> entities = [];
|
||||||
String folderPath;
|
String folderPath;
|
||||||
|
|
||||||
NoteFolder(this.folderPath);
|
NotesFolder(this.parent, this.folderPath);
|
||||||
|
|
||||||
bool get isEmpty {
|
bool get isEmpty {
|
||||||
return entities.isEmpty;
|
return entities.isEmpty;
|
||||||
@ -55,24 +56,55 @@ class NoteFolder {
|
|||||||
var lister = dir.list(recursive: false, followLinks: false);
|
var lister = dir.list(recursive: false, followLinks: false);
|
||||||
await for (var fsEntity in lister) {
|
await for (var fsEntity in lister) {
|
||||||
if (fsEntity is Directory) {
|
if (fsEntity is Directory) {
|
||||||
var subFolder = NoteFolder(fsEntity.path);
|
var subFolder = NotesFolder(this, fsEntity.path);
|
||||||
if (subFolder.name.startsWith('.')) {
|
if (subFolder.name.startsWith('.')) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
await subFolder.loadRecursively();
|
await subFolder.loadRecursively();
|
||||||
|
|
||||||
var noteFSEntity = NoteFSEntity(this, folder: subFolder);
|
var noteFSEntity = NoteFSEntity(folder: subFolder);
|
||||||
entities.add(noteFSEntity);
|
entities.add(noteFSEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
var note = Note(fsEntity.path);
|
var note = Note(this, fsEntity.path);
|
||||||
if (!note.filePath.toLowerCase().endsWith('.md')) {
|
if (!note.filePath.toLowerCase().endsWith('.md')) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
await note.load();
|
await note.load();
|
||||||
|
|
||||||
var noteFSEntity = NoteFSEntity(this, note: note);
|
var noteFSEntity = NoteFSEntity(note: note);
|
||||||
entities.add(noteFSEntity);
|
entities.add(noteFSEntity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void add(Note note) {
|
||||||
|
assert(note.parent == this);
|
||||||
|
entities.add(NoteFSEntity(note: note));
|
||||||
|
}
|
||||||
|
|
||||||
|
void insert(int index, Note note) {
|
||||||
|
assert(note.parent == this);
|
||||||
|
|
||||||
|
for (var i = 0; i < entities.length; i++) {
|
||||||
|
var e = entities[i];
|
||||||
|
if (e is NotesFolder) continue;
|
||||||
|
|
||||||
|
if (index == 0) {
|
||||||
|
entities.insert(i, NoteFSEntity(note: note));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
index--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void remove(Note note) {
|
||||||
|
assert(note.parent == this);
|
||||||
|
var i = entities.indexWhere((e) {
|
||||||
|
if (e.isFolder) return false;
|
||||||
|
return e.note.filePath == note.filePath;
|
||||||
|
});
|
||||||
|
assert(i != -1);
|
||||||
|
|
||||||
|
entities.removeAt(i);
|
||||||
|
}
|
||||||
}
|
}
|
@ -4,7 +4,7 @@ import 'package:gitjournal/widgets/app_bar_menu_button.dart';
|
|||||||
import 'package:gitjournal/widgets/app_drawer.dart';
|
import 'package:gitjournal/widgets/app_drawer.dart';
|
||||||
import 'package:gitjournal/widgets/folder_tree_view.dart';
|
import 'package:gitjournal/widgets/folder_tree_view.dart';
|
||||||
import 'package:gitjournal/state_container.dart';
|
import 'package:gitjournal/state_container.dart';
|
||||||
import 'package:gitjournal/core/note_folder.dart';
|
import 'package:gitjournal/core/notes_folder.dart';
|
||||||
|
|
||||||
import 'journal_listing.dart';
|
import 'journal_listing.dart';
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ class FolderListingScreen extends StatelessWidget {
|
|||||||
|
|
||||||
var treeView = FolderTreeView(
|
var treeView = FolderTreeView(
|
||||||
rootFolder: appState.noteFolder,
|
rootFolder: appState.noteFolder,
|
||||||
onFolderSelected: (NoteFolder folder) {
|
onFolderSelected: (NotesFolder folder) {
|
||||||
var route = MaterialPageRoute(
|
var route = MaterialPageRoute(
|
||||||
builder: (context) => JournalListingScreen(
|
builder: (context) => JournalListingScreen(
|
||||||
noteFolder: folder,
|
noteFolder: folder,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gitjournal/core/note.dart';
|
import 'package:gitjournal/core/note.dart';
|
||||||
import 'package:gitjournal/core/note_folder.dart';
|
import 'package:gitjournal/core/notes_folder.dart';
|
||||||
import 'package:gitjournal/utils.dart';
|
import 'package:gitjournal/utils.dart';
|
||||||
import 'package:gitjournal/apis/git.dart';
|
import 'package:gitjournal/apis/git.dart';
|
||||||
import 'package:gitjournal/screens/journal_editor.dart';
|
import 'package:gitjournal/screens/journal_editor.dart';
|
||||||
@ -12,7 +12,7 @@ import 'package:gitjournal/widgets/journal_list.dart';
|
|||||||
import 'package:gitjournal/themes.dart';
|
import 'package:gitjournal/themes.dart';
|
||||||
|
|
||||||
class JournalListingScreen extends StatelessWidget {
|
class JournalListingScreen extends StatelessWidget {
|
||||||
final NoteFolder noteFolder;
|
final NotesFolder noteFolder;
|
||||||
final bool recursive;
|
final bool recursive;
|
||||||
|
|
||||||
JournalListingScreen({@required this.noteFolder, this.recursive = false});
|
JournalListingScreen({@required this.noteFolder, this.recursive = false});
|
||||||
|
@ -8,7 +8,7 @@ import 'package:gitjournal/analytics.dart';
|
|||||||
import 'package:gitjournal/apis/git_migration.dart';
|
import 'package:gitjournal/apis/git_migration.dart';
|
||||||
import 'package:gitjournal/appstate.dart';
|
import 'package:gitjournal/appstate.dart';
|
||||||
import 'package:gitjournal/core/note.dart';
|
import 'package:gitjournal/core/note.dart';
|
||||||
import 'package:gitjournal/core/note_folder.dart';
|
import 'package:gitjournal/core/notes_folder.dart';
|
||||||
import 'package:gitjournal/core/note_fileName.dart';
|
import 'package:gitjournal/core/note_fileName.dart';
|
||||||
import 'package:gitjournal/storage/git_storage.dart';
|
import 'package:gitjournal/storage/git_storage.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
@ -57,7 +57,7 @@ class StateContainerState extends State<StateContainer> {
|
|||||||
dirName: appState.localGitRepoPath,
|
dirName: appState.localGitRepoPath,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
appState.noteFolder = NoteFolder(noteRepo.notesBasePath);
|
appState.noteFolder = NotesFolder(noteRepo.notesBasePath);
|
||||||
|
|
||||||
// Just a fail safe
|
// Just a fail safe
|
||||||
if (!appState.remoteGitRepoConfigured) {
|
if (!appState.remoteGitRepoConfigured) {
|
||||||
@ -225,7 +225,7 @@ class StateContainerState extends State<StateContainer> {
|
|||||||
baseDirectory: appState.gitBaseDirectory,
|
baseDirectory: appState.gitBaseDirectory,
|
||||||
dirName: appState.remoteGitRepoFolderName,
|
dirName: appState.remoteGitRepoFolderName,
|
||||||
);
|
);
|
||||||
appState.noteFolder = NoteFolder(noteRepo.notesBasePath);
|
appState.noteFolder = NotesFolder(noteRepo.notesBasePath);
|
||||||
|
|
||||||
await _persistConfig();
|
await _persistConfig();
|
||||||
_loadNotesFromDisk();
|
_loadNotesFromDisk();
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:gitjournal/core/note_folder.dart';
|
import 'package:gitjournal/core/notes_folder.dart';
|
||||||
|
|
||||||
typedef void FolderSelectedCallback(NoteFolder folder);
|
typedef void FolderSelectedCallback(NotesFolder folder);
|
||||||
|
|
||||||
class FolderTreeView extends StatelessWidget {
|
class FolderTreeView extends StatelessWidget {
|
||||||
final NoteFolder rootFolder;
|
final NotesFolder rootFolder;
|
||||||
final FolderSelectedCallback onFolderSelected;
|
final FolderSelectedCallback onFolderSelected;
|
||||||
|
|
||||||
FolderTreeView({
|
FolderTreeView({
|
||||||
@ -29,7 +29,7 @@ class FolderTreeView extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class FolderTile extends StatefulWidget {
|
class FolderTile extends StatefulWidget {
|
||||||
final NoteFolder folder;
|
final NotesFolder folder;
|
||||||
final FolderSelectedCallback onFolderSelected;
|
final FolderSelectedCallback onFolderSelected;
|
||||||
|
|
||||||
FolderTile(this.folder, this.onFolderSelected);
|
FolderTile(this.folder, this.onFolderSelected);
|
||||||
|
Reference in New Issue
Block a user