diff --git a/lib/core/sorting_mode.dart b/lib/core/sorting_mode.dart index 687d5228..03a13fbc 100644 --- a/lib/core/sorting_mode.dart +++ b/lib/core/sorting_mode.dart @@ -5,6 +5,8 @@ typedef NoteSortingFunction = int Function(Note a, Note b); class SortingMode { static const Modified = SortingMode("Last Modified", "Modified"); static const Created = SortingMode("Created", "Created"); + static const FileName = SortingMode("File Name", "FileName"); + static const Title = SortingMode("Title", "Title"); static const Default = Modified; final String _str; @@ -22,6 +24,8 @@ class SortingMode { static const options = [ Modified, Created, + FileName, + Title, ]; static SortingMode fromInternalString(String str) { @@ -67,6 +71,28 @@ class SortingMode { return bDt.compareTo(aDt); }; + case "Title": + return (Note a, Note b) { + var aTitleExists = a.title != null && a.title.isNotEmpty; + var bTitleExists = b.title != null && b.title.isNotEmpty; + + if (!aTitleExists && bTitleExists) { + return 1; + } + if (aTitleExists && !bTitleExists) { + return -1; + } + if (!aTitleExists && !bTitleExists) { + return a.fileName.compareTo(b.fileName); + } + return a.title.compareTo(b.title); + }; + + case "FileName": + return (Note a, Note b) { + return a.fileName.compareTo(b.fileName); + }; + case "Modified": default: return (Note a, Note b) { diff --git a/lib/folder_views/journal_view.dart b/lib/folder_views/journal_view.dart index 9f753ec9..f09902c0 100644 --- a/lib/folder_views/journal_view.dart +++ b/lib/folder_views/journal_view.dart @@ -38,10 +38,10 @@ class JournalView extends StatelessWidget { DateTime date; var sortingMode = folder.config.sortingMode; - if (sortingMode == SortingMode.Modified) { - date = note.modified; - } else if (sortingMode == SortingMode.Created) { + if (sortingMode == SortingMode.Created) { date = note.created; + } else { + date = note.modified; } if (date != null) { diff --git a/lib/screens/folder_view.dart b/lib/screens/folder_view.dart index 4e1f7275..e3bab1db 100644 --- a/lib/screens/folder_view.dart +++ b/lib/screens/folder_view.dart @@ -227,23 +227,24 @@ class _FolderViewState extends State { Navigator.of(context).push(route); } + RadioListTile _buildSortingTile(SortingMode sm) { + return RadioListTile( + title: Text(sm.toPublicString()), + value: sm, + groupValue: sortedNotesFolder.sortingMode, + onChanged: (SortingMode sm) => Navigator.of(context).pop(sm), + ); + } + void _sortButtonPressed() async { var newSortingMode = await showDialog( context: context, builder: (BuildContext context) { var children = [ - RadioListTile( - title: const Text("Last Modified"), - value: SortingMode.Modified, - groupValue: sortedNotesFolder.sortingMode, - onChanged: (SortingMode sm) => Navigator.of(context).pop(sm), - ), - RadioListTile( - title: const Text("Created"), - value: SortingMode.Created, - groupValue: sortedNotesFolder.sortingMode, - onChanged: (SortingMode sm) => Navigator.of(context).pop(sm), - ), + _buildSortingTile(SortingMode.Modified), + _buildSortingTile(SortingMode.Created), + _buildSortingTile(SortingMode.Title), + _buildSortingTile(SortingMode.FileName), ]; return AlertDialog(