Update settings

This commit is contained in:
2023-09-08 16:29:04 +08:00
parent 64ce9ddf5d
commit 0826ba8fc6
5 changed files with 80 additions and 5 deletions

View File

@@ -68,7 +68,7 @@ class _GalleryInfo extends State<GalleryInfo> with ThemeModeWidget {
]), ]),
), ),
ThumbnailGridView(widget.gData.pages, ThumbnailGridView(widget.gData.pages,
const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 5), SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: useMobile ? 2 : 5),
files: widget.files), files: widget.files),
], ],
); );

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import '../api/gallery.dart'; import '../api/gallery.dart';
import '../globals.dart'; import '../globals.dart';
import '../main.dart';
import 'scroll_parent.dart'; import 'scroll_parent.dart';
class TagsPanel extends StatefulWidget { class TagsPanel extends StatefulWidget {
@@ -53,6 +54,8 @@ class _TagsPanel extends State<TagsPanel> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final cs = Theme.of(context).colorScheme; final cs = Theme.of(context).colorScheme;
final stt = prefs.getBool("showTranslatedTag") ??
MainApp.of(context).lang.toLocale().languageCode == "zh";
final re = ListView.builder( final re = ListView.builder(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
itemCount: data!.length, itemCount: data!.length,
@@ -60,7 +63,7 @@ class _TagsPanel extends State<TagsPanel> {
final t = data![index].$1; final t = data![index].$1;
final ta = data![index].$2; final ta = data![index].$2;
final namespace = final namespace =
"${tags.getTagTranslate(t) ?? t}${AppLocalizations.of(context)!.colon}"; "${stt ? (tags.getTagTranslate(t) ?? t) : t}${AppLocalizations.of(context)!.colon}";
return Wrap( return Wrap(
children: List.generate(ta.length + 1, (index) { children: List.generate(ta.length + 1, (index) {
if (index == 0) { if (index == 0) {
@@ -74,7 +77,8 @@ class _TagsPanel extends State<TagsPanel> {
borderRadius: const BorderRadius.all(Radius.circular(4.0)), borderRadius: const BorderRadius.all(Radius.circular(4.0)),
border: Border.all(width: 1, color: cs.primary), border: Border.all(width: 1, color: cs.primary),
), ),
child: SelectableText(_getTag(ta[index - 1]!))); child: SelectableText(
stt ? _getTag(ta[index - 1]!) : ta[index - 1]!.tag));
} }
})); }));
}); });

View File

@@ -30,5 +30,6 @@
"copyImage": "Copy image to clipboard", "copyImage": "Copy image to clipboard",
"copyImgUrl": "Copy image URL to clipboard", "copyImgUrl": "Copy image URL to clipboard",
"retry": "Retry", "retry": "Retry",
"displayAd": "Display Ad pages" "displayAd": "Display Ad pages",
"showTranslatedTag": "Show translated tag (Chinese only)"
} }

View File

@@ -30,5 +30,6 @@
"copyImage": "复制图片到剪贴板", "copyImage": "复制图片到剪贴板",
"copyImgUrl": "复制图片链接到剪贴板", "copyImgUrl": "复制图片链接到剪贴板",
"retry": "重试", "retry": "重试",
"displayAd": "显示广告页面" "displayAd": "显示广告页面",
"showTranslatedTag": "显示标签翻译(仅限中文)"
} }

View File

@@ -17,11 +17,15 @@ class SettingsPage extends StatefulWidget {
} }
class _SettingsPage extends State<SettingsPage> with ThemeModeWidget { class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
bool _oriDisplayAd = false;
Lang _oriLang = Lang.system; Lang _oriLang = Lang.system;
bool _oriShowNsfw = false; bool _oriShowNsfw = false;
bool _oriShowTranslatedTag = false;
bool _oriUseTitleJpn = false; bool _oriUseTitleJpn = false;
bool _displayAd = false;
Lang _lang = Lang.system; Lang _lang = Lang.system;
bool _showNsfw = false; bool _showNsfw = false;
bool _showTranslatedTag = false;
bool _useTitleJpn = false; bool _useTitleJpn = false;
@override @override
void initState() { void initState() {
@@ -50,6 +54,23 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
_oriShowNsfw = false; _oriShowNsfw = false;
_showNsfw = false; _showNsfw = false;
} }
try {
_oriDisplayAd = prefs.getBool("displayAd") ?? false;
_displayAd = _oriDisplayAd;
} catch (e) {
_log.warning("Failed to get displayAd:", e);
_oriDisplayAd = false;
_displayAd = false;
}
try {
_oriShowTranslatedTag = prefs.getBool("showTranslatedTag") ??
_oriLang.toLocale().languageCode == "zh";
_showTranslatedTag = _oriShowTranslatedTag;
} catch (e) {
_log.warning("Failed to get showTranslatedTag:", e);
_oriShowTranslatedTag = false;
_showTranslatedTag = false;
}
} }
void fallback(BuildContext context) { void fallback(BuildContext context) {
@@ -64,6 +85,8 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
_lang = Lang.system; _lang = Lang.system;
_useTitleJpn = false; _useTitleJpn = false;
_showNsfw = false; _showNsfw = false;
_displayAd = false;
_showTranslatedTag = _oriLang.toLocale().languageCode == "zh";
}); });
} }
@@ -91,6 +114,22 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
_oriShowNsfw = _showNsfw; _oriShowNsfw = _showNsfw;
} }
} }
if (_oriDisplayAd != _displayAd) {
if (!await prefs.setBool("displayAd", _displayAd)) {
re = false;
_log.warning("Failed to save displayAd.");
} else {
_oriDisplayAd = _displayAd;
}
}
if (_oriShowTranslatedTag != _showTranslatedTag) {
if (!await prefs.setBool("showTranslatedTag", _showTranslatedTag)) {
re = false;
_log.warning("Failed to save showTranslatedTag.");
} else {
_oriShowTranslatedTag = _showTranslatedTag;
}
}
return re; return re;
} }
@@ -179,6 +218,36 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
AppLocalizations.of(context)!.showNsfw), AppLocalizations.of(context)!.showNsfw),
), ),
), ),
Container(
padding: const EdgeInsets.symmetric(vertical: 8),
child: CheckboxMenuButton(
value: _displayAd,
onChanged: (bool? value) {
if (value != null) {
setState(() {
_displayAd = value;
});
}
},
child: Text(
AppLocalizations.of(context)!.displayAd),
),
),
Container(
padding: const EdgeInsets.symmetric(vertical: 8),
child: CheckboxMenuButton(
value: _showTranslatedTag,
onChanged: (bool? value) {
if (value != null) {
setState(() {
_showTranslatedTag = value;
});
}
},
child: Text(AppLocalizations.of(context)!
.showTranslatedTag),
),
),
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [