mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-07-08 01:30:28 +08:00
Update settings
This commit is contained in:
@@ -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),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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)"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,5 +30,6 @@
|
|||||||
"copyImage": "复制图片到剪贴板",
|
"copyImage": "复制图片到剪贴板",
|
||||||
"copyImgUrl": "复制图片链接到剪贴板",
|
"copyImgUrl": "复制图片链接到剪贴板",
|
||||||
"retry": "重试",
|
"retry": "重试",
|
||||||
"displayAd": "显示广告页面"
|
"displayAd": "显示广告页面",
|
||||||
|
"showTranslatedTag": "显示标签翻译(仅限中文)"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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: [
|
||||||
|
|||||||
Reference in New Issue
Block a user