mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-26 16:46:51 +08:00
Save the selected sorting mode
This commit is contained in:
@ -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 {
|
||||
|
@ -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<JournalListingScreen> {
|
||||
super.initState();
|
||||
sortedNotesFolder = SortedNotesFolder(
|
||||
folder: widget.notesFolder,
|
||||
sortingMode: SortingMode.Modified,
|
||||
sortingMode: Settings.instance.sortingMode,
|
||||
);
|
||||
}
|
||||
|
||||
@ -150,8 +151,12 @@ class _JournalListingScreenState extends State<JournalListingScreen> {
|
||||
},
|
||||
);
|
||||
|
||||
if (newSortingMode != null) {
|
||||
setState(() {
|
||||
sortedNotesFolder.changeSortingMode(newSortingMode);
|
||||
Settings.instance.sortingMode = newSortingMode;
|
||||
Settings.instance.save();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ class SettingsListState extends State<SettingsList> {
|
||||
dynamicTheme.setBrightness(b);
|
||||
},
|
||||
),
|
||||
SettingsHeader('Note Settings'),
|
||||
if (defaultFolderConfigurable) SettingsHeader('Note Settings'),
|
||||
if (defaultFolderConfigurable)
|
||||
ListTile(
|
||||
title: const Text("Default Folder for new notes"),
|
||||
|
@ -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 = <SortingMode>[
|
||||
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 "";
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user