mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-20 21:25:48 +08:00
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:
lib
@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user