mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 10:17:16 +08:00
@ -44,6 +44,7 @@ settings:
|
|||||||
enableHeader: Enable YAML Header
|
enableHeader: Enable YAML Header
|
||||||
modified: Modified Field
|
modified: Modified Field
|
||||||
created: Created Field
|
created: Created Field
|
||||||
|
tags: Tags Field
|
||||||
example:
|
example:
|
||||||
title: Example Title
|
title: Example Title
|
||||||
titleMetaData:
|
titleMetaData:
|
||||||
@ -52,6 +53,8 @@ settings:
|
|||||||
fromYaml: From YAML 'title'
|
fromYaml: From YAML 'title'
|
||||||
exampleTitle: Pigeons
|
exampleTitle: Pigeons
|
||||||
exampleBody: I think they might be evil. Even more evil than penguins.
|
exampleBody: I think they might be evil. Even more evil than penguins.
|
||||||
|
exampleTag1: Birds
|
||||||
|
exampleTag2: Evil
|
||||||
privacy: Privacy Policy
|
privacy: Privacy Policy
|
||||||
terms: Terms and Conditions
|
terms: Terms and Conditions
|
||||||
experimental:
|
experimental:
|
||||||
|
@ -21,7 +21,7 @@ class NoteSerializationSettings {
|
|||||||
String createdKey = Settings.instance.yamlCreatedKey;
|
String createdKey = Settings.instance.yamlCreatedKey;
|
||||||
String titleKey = "title";
|
String titleKey = "title";
|
||||||
String typeKey = "type";
|
String typeKey = "type";
|
||||||
String tagsKey = "tags";
|
String tagsKey = Settings.instance.yamlTagsKey;
|
||||||
|
|
||||||
bool saveTitleAsH1 = Settings.instance.saveTitleInH1;
|
bool saveTitleAsH1 = Settings.instance.saveTitleInH1;
|
||||||
}
|
}
|
||||||
@ -155,14 +155,23 @@ class NoteSerializer implements NoteSerializerInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var tags = data.props[settings.tagsKey];
|
var tagKeyOptions = [
|
||||||
if (tags != null) {
|
"tags",
|
||||||
if (tags is YamlList) {
|
"categories",
|
||||||
note.tags = tags.map((t) => t.toString()).toSet();
|
];
|
||||||
} else if (tags is List) {
|
for (var possibleKey in tagKeyOptions) {
|
||||||
note.tags = tags.map((t) => t.toString()).toSet();
|
var tags = data.props[possibleKey];
|
||||||
} else {
|
if (tags != null) {
|
||||||
Log.e("Note Tags Decoding Failed: $tags");
|
if (tags is YamlList) {
|
||||||
|
note.tags = tags.map((t) => t.toString()).toSet();
|
||||||
|
} else if (tags is List) {
|
||||||
|
note.tags = tags.map((t) => t.toString()).toSet();
|
||||||
|
} else {
|
||||||
|
Log.e("Note Tags Decoding Failed: $tags");
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.tagsKey = possibleKey;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -29,6 +29,10 @@ class _NoteMetadataSettingsScreenState
|
|||||||
note.body = tr("settings.noteMetaData.exampleBody");
|
note.body = tr("settings.noteMetaData.exampleBody");
|
||||||
note.created = DateTime.now().add(const Duration(days: -1));
|
note.created = DateTime.now().add(const Duration(days: -1));
|
||||||
note.modified = DateTime.now();
|
note.modified = DateTime.now();
|
||||||
|
note.tags = {
|
||||||
|
tr("settings.noteMetaData.exampleTag1"),
|
||||||
|
tr("settings.noteMetaData.exampleTag2"),
|
||||||
|
};
|
||||||
|
|
||||||
var body = Column(
|
var body = Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
@ -94,6 +98,23 @@ class _NoteMetadataSettingsScreenState
|
|||||||
enabled: Settings.instance.yamlHeaderEnabled,
|
enabled: Settings.instance.yamlHeaderEnabled,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
ProOverlay(
|
||||||
|
child: ListPreference(
|
||||||
|
title: tr("settings.noteMetaData.tags"),
|
||||||
|
options: [
|
||||||
|
"tags",
|
||||||
|
"categories",
|
||||||
|
],
|
||||||
|
currentOption: Settings.instance.yamlTagsKey,
|
||||||
|
onChange: (String newVal) {
|
||||||
|
setState(() {
|
||||||
|
Settings.instance.yamlTagsKey = newVal;
|
||||||
|
Settings.instance.save();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
enabled: Settings.instance.yamlHeaderEnabled,
|
||||||
|
),
|
||||||
|
),
|
||||||
ProOverlay(
|
ProOverlay(
|
||||||
child: ListPreference(
|
child: ListPreference(
|
||||||
title: tr("settings.noteMetaData.titleMetaData.title"),
|
title: tr("settings.noteMetaData.titleMetaData.title"),
|
||||||
@ -192,7 +213,10 @@ class NoteInputExample extends StatelessWidget {
|
|||||||
autofocus: false,
|
autofocus: false,
|
||||||
onChanged: () {},
|
onChanged: () {},
|
||||||
),
|
),
|
||||||
|
Container(height: 8.0),
|
||||||
|
TagsWidget(note.tags),
|
||||||
],
|
],
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
_HeaderText(note.fileName, Alignment.topRight),
|
_HeaderText(note.fileName, Alignment.topRight),
|
||||||
@ -225,3 +249,44 @@ class _HeaderText extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class _Tag extends StatelessWidget {
|
||||||
|
final String text;
|
||||||
|
|
||||||
|
_Tag(this.text);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
var theme = Theme.of(context);
|
||||||
|
|
||||||
|
return Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(50),
|
||||||
|
color: theme.scaffoldBackgroundColor,
|
||||||
|
boxShadow: [
|
||||||
|
const BoxShadow(color: Colors.grey, spreadRadius: 1),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Text(text, style: theme.textTheme.button),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TagsWidget extends StatelessWidget {
|
||||||
|
final Set<String> tags;
|
||||||
|
|
||||||
|
TagsWidget(this.tags);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Wrap(
|
||||||
|
children: [
|
||||||
|
for (var tagText in tags) _Tag(tagText),
|
||||||
|
],
|
||||||
|
alignment: WrapAlignment.start,
|
||||||
|
spacing: 8.0,
|
||||||
|
runSpacing: 8.0,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -22,6 +22,7 @@ class Settings {
|
|||||||
|
|
||||||
String yamlModifiedKey = "modified";
|
String yamlModifiedKey = "modified";
|
||||||
String yamlCreatedKey = "created";
|
String yamlCreatedKey = "created";
|
||||||
|
String yamlTagsKey = "tags";
|
||||||
|
|
||||||
bool yamlHeaderEnabled = true;
|
bool yamlHeaderEnabled = true;
|
||||||
String defaultNewNoteFolderSpec = "";
|
String defaultNewNoteFolderSpec = "";
|
||||||
@ -71,6 +72,7 @@ class Settings {
|
|||||||
|
|
||||||
yamlModifiedKey = pref.getString("yamlModifiedKey") ?? yamlModifiedKey;
|
yamlModifiedKey = pref.getString("yamlModifiedKey") ?? yamlModifiedKey;
|
||||||
yamlCreatedKey = pref.getString("yamlCreatedKey") ?? yamlCreatedKey;
|
yamlCreatedKey = pref.getString("yamlCreatedKey") ?? yamlCreatedKey;
|
||||||
|
yamlTagsKey = pref.getString("yamlTagsKey") ?? yamlTagsKey;
|
||||||
|
|
||||||
yamlHeaderEnabled = pref.getBool("yamlHeaderEnabled") ?? yamlHeaderEnabled;
|
yamlHeaderEnabled = pref.getBool("yamlHeaderEnabled") ?? yamlHeaderEnabled;
|
||||||
defaultNewNoteFolderSpec =
|
defaultNewNoteFolderSpec =
|
||||||
@ -146,6 +148,7 @@ class Settings {
|
|||||||
pref, "yamlModifiedKey", yamlModifiedKey, defaultSet.yamlModifiedKey);
|
pref, "yamlModifiedKey", yamlModifiedKey, defaultSet.yamlModifiedKey);
|
||||||
_setString(
|
_setString(
|
||||||
pref, "yamlCreatedKey", yamlCreatedKey, defaultSet.yamlCreatedKey);
|
pref, "yamlCreatedKey", yamlCreatedKey, defaultSet.yamlCreatedKey);
|
||||||
|
_setString(pref, "yamlTagsKey", yamlTagsKey, defaultSet.yamlTagsKey);
|
||||||
_setBool(pref, "yamlHeaderEnabled", yamlHeaderEnabled,
|
_setBool(pref, "yamlHeaderEnabled", yamlHeaderEnabled,
|
||||||
defaultSet.yamlHeaderEnabled);
|
defaultSet.yamlHeaderEnabled);
|
||||||
_setString(pref, "defaultNewNoteFolderSpec", defaultNewNoteFolderSpec,
|
_setString(pref, "defaultNewNoteFolderSpec", defaultNewNoteFolderSpec,
|
||||||
@ -232,6 +235,7 @@ class Settings {
|
|||||||
"collectCrashReports": collectCrashReports.toString(),
|
"collectCrashReports": collectCrashReports.toString(),
|
||||||
"yamlModifiedKey": yamlModifiedKey,
|
"yamlModifiedKey": yamlModifiedKey,
|
||||||
"yamlCreatedKey": yamlCreatedKey,
|
"yamlCreatedKey": yamlCreatedKey,
|
||||||
|
"yamlTagsKey": yamlTagsKey,
|
||||||
"yamlHeaderEnabled": yamlHeaderEnabled.toString(),
|
"yamlHeaderEnabled": yamlHeaderEnabled.toString(),
|
||||||
"defaultNewNoteFolderSpec": defaultNewNoteFolderSpec,
|
"defaultNewNoteFolderSpec": defaultNewNoteFolderSpec,
|
||||||
"journalEditordefaultNewNoteFolderSpec":
|
"journalEditordefaultNewNoteFolderSpec":
|
||||||
|
Reference in New Issue
Block a user