diff --git a/lib/screens/folder_view.dart b/lib/screens/folder_view.dart index 366ea442..f65ee6e9 100644 --- a/lib/screens/folder_view.dart +++ b/lib/screens/folder_view.dart @@ -26,7 +26,7 @@ class FolderView extends StatefulWidget { class _FolderViewState extends State { SortedNotesFolder sortedNotesFolder; - FolderViewType _viewType; + FolderViewType _viewType = FolderViewType.Standard; @override void initState() { @@ -35,7 +35,18 @@ class _FolderViewState extends State { folder: widget.notesFolder, sortingMode: Settings.instance.sortingMode, ); - _viewType = FolderViewType.Standard; + + switch (Settings.instance.defaultView) { + case SettingsFolderViewType.Standard: + _viewType = FolderViewType.Standard; + break; + case SettingsFolderViewType.Compact: + _viewType = FolderViewType.Compact; + break; + case SettingsFolderViewType.Journal: + _viewType = FolderViewType.Journal; + break; + } } @override @@ -199,6 +210,19 @@ class _FolderViewState extends State { if (newViewType != null) { setState(() { _viewType = newViewType; + + switch (_viewType) { + case FolderViewType.Standard: + Settings.instance.defaultView = SettingsFolderViewType.Standard; + break; + case FolderViewType.Journal: + Settings.instance.defaultView = SettingsFolderViewType.Journal; + break; + case FolderViewType.Compact: + Settings.instance.defaultView = SettingsFolderViewType.Compact; + break; + } + Settings.instance.save(); }); } } diff --git a/lib/settings.dart b/lib/settings.dart index eeb26f6f..f60b02e8 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -25,6 +25,7 @@ class Settings { RemoteSyncFrequency remoteSyncFrequency = RemoteSyncFrequency.Default; SortingMode sortingMode = SortingMode.Default; SettingsEditorType defaultEditor = SettingsEditorType.Default; + SettingsFolderViewType defaultView = SettingsFolderViewType.Default; int version = 0; void load(SharedPreferences pref) { @@ -50,6 +51,8 @@ class Settings { sortingMode = SortingMode.fromInternalString(pref.getString("sortingMode")); defaultEditor = SettingsEditorType.fromInternalString(pref.getString("defaultEditor")); + defaultView = SettingsFolderViewType.fromInternalString( + pref.getString("defaultView")); version = pref.getInt("settingsVersion") ?? version; } @@ -68,6 +71,7 @@ class Settings { "remoteSyncFrequency", remoteSyncFrequency.toInternalString()); pref.setString("sortingMode", sortingMode.toInternalString()); pref.setString("defaultEditor", defaultEditor.toInternalString()); + pref.setString("defaultView", defaultView.toInternalString()); pref.setInt("settingsVersion", version); // Shouldn't we check if something has actually changed? @@ -87,6 +91,9 @@ class Settings { "yamlHeaderEnabled": yamlHeaderEnabled, "defaultNewNoteFolder": defaultNewNoteFolder, "defaultEditor": defaultEditor.toInternalString(), + "defaultView": defaultView.toInternalString(), + "sortingMode": sortingMode.toInternalString(), + "remoteSyncFrequency": remoteSyncFrequency.toInternalString(), "version": version, }; } @@ -250,3 +257,52 @@ class SettingsEditorType { return ""; } } + +class SettingsFolderViewType { + static const Standard = SettingsFolderViewType("Standard", "Standard"); + static const Journal = SettingsFolderViewType("Journal", "Journal"); + static const Compact = SettingsFolderViewType("Compact", "Compact"); + static const Default = Standard; + + final String _str; + final String _publicString; + const SettingsFolderViewType(this._publicString, this._str); + + String toInternalString() { + return _str; + } + + String toPublicString() { + return _publicString; + } + + static const options = [ + Standard, + Journal, + Compact, + ]; + + static SettingsFolderViewType fromInternalString(String str) { + for (var opt in options) { + if (opt.toInternalString() == str) { + return opt; + } + } + return Default; + } + + static SettingsFolderViewType fromPublicString(String str) { + for (var opt in options) { + if (opt.toPublicString() == str) { + return opt; + } + } + return Default; + } + + @override + String toString() { + assert(false, "FolderViewType toString should never be called"); + return ""; + } +}