JournalEditor: Allow a default folder to be specified

This way all Journal Entries can go to that folder by default. It makes
adding a new journal entry easier.

Related to #118
This commit is contained in:
Vishesh Handa
2020-05-01 11:37:57 +02:00
parent 64bfefa266
commit a12026a121
3 changed files with 42 additions and 2 deletions

View File

@ -209,7 +209,16 @@ class _FolderViewState extends State<FolderView> {
NotesFolderFS fsFolder = widget.notesFolder.fsFolder;
if (widget.notesFolder.name != fsFolder.name) {
var spec = Settings.instance.defaultNewNoteFolderSpec;
fsFolder = fsFolder.getFolderWithSpec(spec);
var journalSpec = Settings.instance.journalEditordefaultNewNoteFolderSpec;
switch (editorType) {
case EditorType.Journal:
fsFolder = fsFolder.getFolderWithSpec(journalSpec);
break;
default:
fsFolder = fsFolder.getFolderWithSpec(spec);
break;
}
}
var route = MaterialPageRoute(

View File

@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
import 'package:gitjournal/screens/settings_screen.dart';
import 'package:gitjournal/settings.dart';
import 'package:gitjournal/screens/settings_widgets.dart';
import 'package:gitjournal/core/notes_folder_fs.dart';
import 'package:gitjournal/widgets/folder_selection_dialog.dart';
class SettingsEditorsScreen extends StatefulWidget {
@override
@ -12,6 +14,11 @@ class SettingsEditorsScreenState extends State<SettingsEditorsScreen> {
@override
Widget build(BuildContext context) {
var settings = Settings.instance;
var defaultNewFolder =
Settings.instance.journalEditordefaultNewNoteFolderSpec;
if (defaultNewFolder.isEmpty) {
defaultNewFolder = "Root Folder";
}
var body = ListView(children: <Widget>[
ListPreference(
@ -26,7 +33,7 @@ class SettingsEditorsScreenState extends State<SettingsEditorsScreen> {
setState(() {});
},
),
SettingsHeader("Markdown Editor Settings"),
SettingsHeader("Markdown Editor"),
ListPreference(
title: "Default State",
currentOption: settings.markdownDefaultView.toPublicString(),
@ -40,6 +47,22 @@ class SettingsEditorsScreenState extends State<SettingsEditorsScreen> {
setState(() {});
},
),
SettingsHeader("Journal Editor"),
ListTile(
title: const Text("Default Folder"),
subtitle: Text(defaultNewFolder),
onTap: () async {
var destFolder = await showDialog<NotesFolderFS>(
context: context,
builder: (context) => FolderSelectionDialog(),
);
Settings.instance.journalEditordefaultNewNoteFolderSpec =
destFolder != null ? destFolder.pathSpec() : "";
Settings.instance.save();
setState(() {});
},
),
]);
return Scaffold(

View File

@ -25,6 +25,7 @@ class Settings {
String yamlModifiedKey = "modified";
bool yamlHeaderEnabled = true;
String defaultNewNoteFolderSpec = "";
String journalEditordefaultNewNoteFolderSpec = "";
RemoteSyncFrequency remoteSyncFrequency = RemoteSyncFrequency.Default;
SortingMode sortingMode = SortingMode.Default;
@ -59,6 +60,9 @@ class Settings {
yamlHeaderEnabled = pref.getBool("yamlHeaderEnabled") ?? yamlHeaderEnabled;
defaultNewNoteFolderSpec =
pref.getString("defaultNewNoteFolderSpec") ?? defaultNewNoteFolderSpec;
journalEditordefaultNewNoteFolderSpec =
pref.getString("journalEditordefaultNewNoteFolderSpec") ??
journalEditordefaultNewNoteFolderSpec;
remoteSyncFrequency = RemoteSyncFrequency.fromInternalString(
pref.getString("remoteSyncFrequency"));
@ -97,6 +101,8 @@ class Settings {
pref.setString("yamlModifiedKey", yamlModifiedKey);
pref.setBool("yamlHeaderEnabled", yamlHeaderEnabled);
pref.setString("defaultNewNoteFolderSpec", defaultNewNoteFolderSpec);
pref.setString("journalEditordefaultNewNoteFolderSpec",
journalEditordefaultNewNoteFolderSpec);
pref.setString(
"remoteSyncFrequency", remoteSyncFrequency.toInternalString());
pref.setString("sortingMode", sortingMode.toInternalString());
@ -126,6 +132,8 @@ class Settings {
"yamlModifiedKey": yamlModifiedKey,
"yamlHeaderEnabled": yamlHeaderEnabled,
"defaultNewNoteFolderSpec": defaultNewNoteFolderSpec,
"journalEditordefaultNewNoteFolderSpec":
journalEditordefaultNewNoteFolderSpec,
"defaultEditor": defaultEditor.toInternalString(),
"defaultView": defaultView.toInternalString(),
"sortingMode": sortingMode.toInternalString(),