From a12026a121a7ecbb1931aef4a574d3f0c7aece9a Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Fri, 1 May 2020 11:37:57 +0200 Subject: [PATCH] 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 --- lib/screens/folder_view.dart | 11 ++++++++++- lib/screens/settings_editors.dart | 25 ++++++++++++++++++++++++- lib/settings.dart | 8 ++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/lib/screens/folder_view.dart b/lib/screens/folder_view.dart index 9c3fe3d8..4e1f7275 100644 --- a/lib/screens/folder_view.dart +++ b/lib/screens/folder_view.dart @@ -209,7 +209,16 @@ class _FolderViewState extends State { 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( diff --git a/lib/screens/settings_editors.dart b/lib/screens/settings_editors.dart index f13d507d..18b60e8d 100644 --- a/lib/screens/settings_editors.dart +++ b/lib/screens/settings_editors.dart @@ -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 { @override Widget build(BuildContext context) { var settings = Settings.instance; + var defaultNewFolder = + Settings.instance.journalEditordefaultNewNoteFolderSpec; + if (defaultNewFolder.isEmpty) { + defaultNewFolder = "Root Folder"; + } var body = ListView(children: [ ListPreference( @@ -26,7 +33,7 @@ class SettingsEditorsScreenState extends State { setState(() {}); }, ), - SettingsHeader("Markdown Editor Settings"), + SettingsHeader("Markdown Editor"), ListPreference( title: "Default State", currentOption: settings.markdownDefaultView.toPublicString(), @@ -40,6 +47,22 @@ class SettingsEditorsScreenState extends State { setState(() {}); }, ), + SettingsHeader("Journal Editor"), + ListTile( + title: const Text("Default Folder"), + subtitle: Text(defaultNewFolder), + onTap: () async { + var destFolder = await showDialog( + context: context, + builder: (context) => FolderSelectionDialog(), + ); + + Settings.instance.journalEditordefaultNewNoteFolderSpec = + destFolder != null ? destFolder.pathSpec() : ""; + Settings.instance.save(); + setState(() {}); + }, + ), ]); return Scaffold( diff --git a/lib/settings.dart b/lib/settings.dart index 69718fa9..3954b48c 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -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(),