Allow the new folder for notes to be configurable

This is currently disabled as it requires a substantial change in the
JournalList.
This commit is contained in:
Vishesh Handa
2020-01-31 16:16:12 +01:00
parent 51e42780d6
commit 95dce61479
3 changed files with 39 additions and 0 deletions

@ -40,6 +40,17 @@ class NotesFolder with ChangeNotifier implements Comparable<NotesFolder> {
return basename(folderPath);
}
String get fullName {
String n = name;
var par = parent;
while (par != null) {
n = p.join(par.name, n);
par = par.parent;
}
return n;
}
bool get hasSubFolders {
return _entities.firstWhere((e) => e.isFolder, orElse: () => null) != null;
}

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/settings.dart';
import 'package:gitjournal/state_container.dart';
import 'package:gitjournal/utils.dart';
@ -7,6 +8,9 @@ import 'package:gitjournal/screens/settings_git_remote.dart';
import 'package:gitjournal/screens/settings_note_metadata.dart';
import 'package:dynamic_theme/dynamic_theme.dart';
import 'package:gitjournal/widgets/folder_selection_dialog.dart';
var defaultFolderConfigurable = false;
class SettingsScreen extends StatelessWidget {
@override
@ -129,6 +133,24 @@ class SettingsListState extends State<SettingsList> {
dynamicTheme.setBrightness(b);
},
),
SettingsHeader('Note Settings'),
if (defaultFolderConfigurable)
ListTile(
title: const Text("Default Folder for new notes"),
subtitle: Text(Settings.instance.defaultNewNoteFolder
.replaceFirst('journal', 'Notes')),
onTap: () async {
var destFolder = await showDialog<NotesFolder>(
context: context,
builder: (context) => FolderSelectionDialog(),
);
if (destFolder != null) {
Settings.instance.defaultNewNoteFolder = destFolder.fullName;
Settings.instance.save();
setState(() {});
}
},
),
SettingsHeader("Git Author Settings"),
ListTile(title: gitAuthorForm),
ListTile(title: gitAuthorEmailForm),

@ -18,6 +18,7 @@ class Settings {
bool collectCrashReports = true;
String yamlModifiedKey = "modified";
String defaultNewNoteFolder = "journal";
int version = 0;
void load(SharedPreferences pref) {
@ -33,6 +34,8 @@ class Settings {
pref.getBool("collectCrashReports") ?? collectCrashReports;
yamlModifiedKey = pref.getString("yamlModifiedKey") ?? yamlModifiedKey;
defaultNewNoteFolder =
pref.getString("defaultNewNoteFolder") ?? defaultNewNoteFolder;
version = pref.getInt("settingsVersion") ?? version;
}
@ -44,6 +47,7 @@ class Settings {
pref.setBool("collectUsageStatistics", collectUsageStatistics);
pref.setBool("collectCrashReports", collectCrashReports);
pref.setString("yamlModifiedKey", yamlModifiedKey);
pref.setString("defaultNewNoteFolder", defaultNewNoteFolder);
pref.setInt("settingsVersion", version);
// Shouldn't we check if something has actually changed?
@ -60,6 +64,7 @@ class Settings {
"collectUsageStatistics": collectUsageStatistics,
"collectCrashReports": collectCrashReports,
"yamlModifiedKey": yamlModifiedKey,
"defaultNewNoteFolder": defaultNewNoteFolder,
"version": version,
};
}
@ -68,6 +73,7 @@ class Settings {
var m = toMap();
m.remove("gitAuthor");
m.remove("gitAuthorEmail");
m.remove("defaultNewNoteFolder");
return m;
}
}