From 1d0cf3ab6d554c7aa6359a4b75bc08ce374b4ea2 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Sun, 9 Feb 2020 22:41:16 +0100 Subject: [PATCH] Save the selected sorting mode --- lib/core/sorted_notes_folder.dart | 3 +- lib/screens/journal_listing.dart | 13 ++++--- lib/screens/settings_screen.dart | 2 +- lib/settings.dart | 57 +++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 7 deletions(-) diff --git a/lib/core/sorted_notes_folder.dart b/lib/core/sorted_notes_folder.dart index 1dbf68fd..98e9f640 100644 --- a/lib/core/sorted_notes_folder.dart +++ b/lib/core/sorted_notes_folder.dart @@ -1,11 +1,10 @@ import 'package:flutter/material.dart'; +import 'package:gitjournal/settings.dart'; import 'note.dart'; import 'notes_folder.dart'; import 'notes_folder_notifier.dart'; -enum SortingMode { Modified, Created } - class SortedNotesFolder with NotesFolderNotifier implements NotesFolderReadOnly { diff --git a/lib/screens/journal_listing.dart b/lib/screens/journal_listing.dart index 19ed1e1d..c524b129 100644 --- a/lib/screens/journal_listing.dart +++ b/lib/screens/journal_listing.dart @@ -5,6 +5,7 @@ import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/core/sorted_notes_folder.dart'; import 'package:gitjournal/screens/note_editor.dart'; +import 'package:gitjournal/settings.dart'; import 'package:gitjournal/state_container.dart'; import 'package:gitjournal/utils.dart'; import 'package:gitjournal/widgets/app_drawer.dart'; @@ -30,7 +31,7 @@ class _JournalListingScreenState extends State { super.initState(); sortedNotesFolder = SortedNotesFolder( folder: widget.notesFolder, - sortingMode: SortingMode.Modified, + sortingMode: Settings.instance.sortingMode, ); } @@ -150,8 +151,12 @@ class _JournalListingScreenState extends State { }, ); - setState(() { - sortedNotesFolder.changeSortingMode(newSortingMode); - }); + if (newSortingMode != null) { + setState(() { + sortedNotesFolder.changeSortingMode(newSortingMode); + Settings.instance.sortingMode = newSortingMode; + Settings.instance.save(); + }); + } } } diff --git a/lib/screens/settings_screen.dart b/lib/screens/settings_screen.dart index 3d68afdc..4565e82a 100644 --- a/lib/screens/settings_screen.dart +++ b/lib/screens/settings_screen.dart @@ -133,7 +133,7 @@ class SettingsListState extends State { dynamicTheme.setBrightness(b); }, ), - SettingsHeader('Note Settings'), + if (defaultFolderConfigurable) SettingsHeader('Note Settings'), if (defaultFolderConfigurable) ListTile( title: const Text("Default Folder for new notes"), diff --git a/lib/settings.dart b/lib/settings.dart index c4314c8d..c728b602 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -21,6 +21,7 @@ class Settings { String defaultNewNoteFolder = "journal"; RemoteSyncFrequency remoteSyncFrequency = RemoteSyncFrequency.Default; + SortingMode sortingMode = SortingMode.Default; int version = 0; void load(SharedPreferences pref) { @@ -42,6 +43,8 @@ class Settings { remoteSyncFrequency = RemoteSyncFrequency.fromInternalString( pref.getString("remoteSyncFrequency")); + sortingMode = SortingMode.fromInternalString(pref.getString("sortingMode")); + version = pref.getInt("settingsVersion") ?? version; } @@ -56,6 +59,7 @@ class Settings { pref.setString("defaultNewNoteFolder", defaultNewNoteFolder); pref.setString( "remoteSyncFrequency", remoteSyncFrequency.toInternalString()); + pref.setString("sortingMode", sortingMode.toInternalString()); pref.setInt("settingsVersion", version); // Shouldn't we check if something has actually changed? @@ -179,4 +183,57 @@ class RemoteSyncFrequency { } return Default; } + + @override + String toString() { + assert(false, "RemoteSyncFrequency toString should never be called"); + return ""; + } +} + +class SortingMode { + static const Modified = SortingMode("Last Modified", "Modified"); + static const Created = SortingMode("Created", "Created"); + static const Default = Modified; + + final String _str; + final String _publicString; + const SortingMode(this._publicString, this._str); + + String toInternalString() { + return _str; + } + + String toPublicString() { + return _publicString; + } + + static const options = [ + Modified, + Created, + ]; + + static SortingMode fromInternalString(String str) { + for (var opt in options) { + if (opt.toInternalString() == str) { + return opt; + } + } + return Default; + } + + static SortingMode fromPublicString(String str) { + for (var opt in options) { + if (opt.toPublicString() == str) { + return opt; + } + } + return Default; + } + + @override + String toString() { + assert(false, "SortingMode toString should never be called"); + return ""; + } }