Save default folder view on change

This commit is contained in:
Vishesh Handa
2020-03-08 20:51:15 +01:00
parent c2c617753d
commit 1e21f487b8
2 changed files with 82 additions and 2 deletions

View File

@ -26,7 +26,7 @@ class FolderView extends StatefulWidget {
class _FolderViewState extends State<FolderView> {
SortedNotesFolder sortedNotesFolder;
FolderViewType _viewType;
FolderViewType _viewType = FolderViewType.Standard;
@override
void initState() {
@ -35,7 +35,18 @@ class _FolderViewState extends State<FolderView> {
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<FolderView> {
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();
});
}
}

View File

@ -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 = <SettingsFolderViewType>[
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 "";
}
}