mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-09-14 23:44:26 +08:00

This allows you to long press on a note and select it, thereby allowing you to perform actions on it, without opening the note. This is disabled for note, as it isn't completely implemented. I'm not sure how to pass down the informatin on which Note is selected.
87 lines
2.5 KiB
Dart
87 lines
2.5 KiB
Dart
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/folder_views/card_view.dart';
|
|
import 'package:gitjournal/folder_views/grid_view.dart';
|
|
import 'package:gitjournal/folder_views/journal_view.dart';
|
|
import 'package:gitjournal/screens/note_editor.dart';
|
|
import 'package:gitjournal/state_container.dart';
|
|
import 'package:gitjournal/utils.dart';
|
|
import 'package:gitjournal/utils/logger.dart';
|
|
import 'standard_view.dart';
|
|
|
|
enum FolderViewType {
|
|
Standard,
|
|
Journal,
|
|
Card,
|
|
Grid,
|
|
}
|
|
|
|
typedef void NoteSelectedFunction(Note note);
|
|
|
|
Widget buildFolderView({
|
|
@required FolderViewType viewType,
|
|
@required NotesFolder folder,
|
|
@required String emptyText,
|
|
@required StandardViewHeader header,
|
|
@required bool showSummary,
|
|
@required NoteSelectedFunction noteTapped,
|
|
@required NoteSelectedFunction noteLongPressed,
|
|
}) {
|
|
switch (viewType) {
|
|
case FolderViewType.Standard:
|
|
return StandardView(
|
|
folder: folder,
|
|
noteTapped: noteTapped,
|
|
noteLongPressed: noteLongPressed,
|
|
emptyText: emptyText,
|
|
headerType: header,
|
|
showSummary: showSummary,
|
|
);
|
|
case FolderViewType.Journal:
|
|
return JournalView(
|
|
folder: folder,
|
|
noteTapped: noteTapped,
|
|
noteLongPressed: noteLongPressed,
|
|
emptyText: emptyText,
|
|
);
|
|
case FolderViewType.Card:
|
|
return CardView(
|
|
folder: folder,
|
|
noteTapped: noteTapped,
|
|
noteLongPressed: noteLongPressed,
|
|
emptyText: emptyText,
|
|
);
|
|
case FolderViewType.Grid:
|
|
return GridFolderView(
|
|
folder: folder,
|
|
noteTapped: noteTapped,
|
|
noteLongPressed: noteLongPressed,
|
|
emptyText: emptyText,
|
|
);
|
|
}
|
|
|
|
assert(false, "Code path should never be executed");
|
|
return Container();
|
|
}
|
|
|
|
void openNoteEditor(BuildContext context, Note note) async {
|
|
var route = MaterialPageRoute(
|
|
builder: (context) => NoteEditor.fromNote(note),
|
|
settings: const RouteSettings(name: '/note/'),
|
|
);
|
|
var showUndoSnackBar = await Navigator.of(context).push(route);
|
|
if (showUndoSnackBar != null) {
|
|
Log.d("Showing an undo snackbar");
|
|
|
|
var stateContainer = Provider.of<StateContainer>(context, listen: false);
|
|
var snackBar = buildUndoDeleteSnackbar(stateContainer, note);
|
|
Scaffold.of(context)
|
|
..removeCurrentSnackBar()
|
|
..showSnackBar(snackBar);
|
|
}
|
|
}
|