mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-04 14:49:44 +08:00
Allow the default editor to be configured
This doesn't solve #41, but it does provide a good workaround.
This commit is contained in:
@ -6,6 +6,7 @@ import 'package:gitjournal/core/notes_folder.dart';
|
||||
import 'package:gitjournal/editors/markdown_editor.dart';
|
||||
import 'package:gitjournal/editors/raw_editor.dart';
|
||||
import 'package:gitjournal/editors/checklist_editor.dart';
|
||||
import 'package:gitjournal/settings.dart';
|
||||
import 'package:gitjournal/state_container.dart';
|
||||
import 'package:gitjournal/widgets/folder_selection_dialog.dart';
|
||||
import 'package:gitjournal/widgets/rename_dialog.dart';
|
||||
@ -53,6 +54,20 @@ class NoteEditorState extends State<NoteEditor> {
|
||||
originalNoteData = MdYamlDoc.from(note.data);
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
switch (Settings.instance.defaultEditor) {
|
||||
case SettingsEditorType.Markdown:
|
||||
editorType = EditorType.Markdown;
|
||||
break;
|
||||
case SettingsEditorType.Raw:
|
||||
editorType = EditorType.Raw;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return WillPopScope(
|
||||
|
@ -168,6 +168,19 @@ class SettingsListState extends State<SettingsList> {
|
||||
enabled: remoteGitConfigured,
|
||||
),
|
||||
const SizedBox(height: 16.0),
|
||||
SettingsHeader("Editor Settings"),
|
||||
ListPreference(
|
||||
title: "Default Editor",
|
||||
currentOption: settings.defaultEditor.toPublicString(),
|
||||
options:
|
||||
SettingsEditorType.options.map((f) => f.toPublicString()).toList(),
|
||||
onChange: (String publicStr) {
|
||||
var val = SettingsEditorType.fromPublicString(publicStr);
|
||||
Settings.instance.defaultEditor = val;
|
||||
Settings.instance.save();
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
SettingsHeader("Storage"),
|
||||
ListPreference(
|
||||
title: "File Name",
|
||||
|
@ -22,6 +22,7 @@ class Settings {
|
||||
|
||||
RemoteSyncFrequency remoteSyncFrequency = RemoteSyncFrequency.Default;
|
||||
SortingMode sortingMode = SortingMode.Default;
|
||||
SettingsEditorType defaultEditor = SettingsEditorType.Default;
|
||||
int version = 0;
|
||||
|
||||
void load(SharedPreferences pref) {
|
||||
@ -44,6 +45,8 @@ class Settings {
|
||||
pref.getString("remoteSyncFrequency"));
|
||||
|
||||
sortingMode = SortingMode.fromInternalString(pref.getString("sortingMode"));
|
||||
defaultEditor =
|
||||
SettingsEditorType.fromInternalString(pref.getString("defaultEditor"));
|
||||
|
||||
version = pref.getInt("settingsVersion") ?? version;
|
||||
}
|
||||
@ -60,6 +63,7 @@ class Settings {
|
||||
pref.setString(
|
||||
"remoteSyncFrequency", remoteSyncFrequency.toInternalString());
|
||||
pref.setString("sortingMode", sortingMode.toInternalString());
|
||||
pref.setString("defaultEditor", defaultEditor.toInternalString());
|
||||
pref.setInt("settingsVersion", version);
|
||||
|
||||
// Shouldn't we check if something has actually changed?
|
||||
@ -77,6 +81,7 @@ class Settings {
|
||||
"collectCrashReports": collectCrashReports,
|
||||
"yamlModifiedKey": yamlModifiedKey,
|
||||
"defaultNewNoteFolder": defaultNewNoteFolder,
|
||||
"defaultEditor": defaultEditor.toInternalString(),
|
||||
"version": version,
|
||||
};
|
||||
}
|
||||
@ -237,3 +242,50 @@ class SortingMode {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
class SettingsEditorType {
|
||||
static const Markdown = SettingsEditorType("Markdown", "Markdown");
|
||||
static const Raw = SettingsEditorType("Raw", "Raw");
|
||||
static const Default = Markdown;
|
||||
|
||||
final String _str;
|
||||
final String _publicString;
|
||||
const SettingsEditorType(this._publicString, this._str);
|
||||
|
||||
String toInternalString() {
|
||||
return _str;
|
||||
}
|
||||
|
||||
String toPublicString() {
|
||||
return _publicString;
|
||||
}
|
||||
|
||||
static const options = <SettingsEditorType>[
|
||||
Markdown,
|
||||
Raw,
|
||||
];
|
||||
|
||||
static SettingsEditorType fromInternalString(String str) {
|
||||
for (var opt in options) {
|
||||
if (opt.toInternalString() == str) {
|
||||
return opt;
|
||||
}
|
||||
}
|
||||
return Default;
|
||||
}
|
||||
|
||||
static SettingsEditorType fromPublicString(String str) {
|
||||
for (var opt in options) {
|
||||
if (opt.toPublicString() == str) {
|
||||
return opt;
|
||||
}
|
||||
}
|
||||
return Default;
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
assert(false, "EditorType toString should never be called");
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user