Add support to cache thumbnail images to disk

This commit is contained in:
2024-05-26 18:23:14 +08:00
parent e1943ee56a
commit 3a609256e0
13 changed files with 324 additions and 9 deletions

View File

@@ -25,6 +25,7 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
bool _oriShowTranslatedTag = false;
bool _oriUseTitleJpn = false;
bool _oriDlUseAvgSpeed = false;
bool _oriEnableImageCache = false;
bool _displayAd = false;
Lang _lang = Lang.system;
bool _preventScreenCapture = false;
@@ -32,6 +33,7 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
bool _showTranslatedTag = false;
bool _useTitleJpn = false;
bool _dlUseAvgSpeed = false;
bool _enableImageCache = false;
@override
void initState() {
super.initState();
@@ -92,6 +94,14 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
_oriDlUseAvgSpeed = false;
_dlUseAvgSpeed = false;
}
try {
_oriEnableImageCache = prefs.getBool("enableImageCache") ?? true;
_enableImageCache = _oriEnableImageCache;
} catch (e) {
_log.warning("Failed to get enableImageCache:", e);
_oriEnableImageCache = true;
_enableImageCache = true;
}
}
void fallback(BuildContext context) {
@@ -110,6 +120,7 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
_showTranslatedTag = _oriLang.toLocale().languageCode == "zh";
_preventScreenCapture = false;
_dlUseAvgSpeed = false;
_enableImageCache = true;
});
}
@@ -178,6 +189,14 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
_oriDlUseAvgSpeed = _dlUseAvgSpeed;
}
}
if (_enableImageCache != _oriEnableImageCache) {
if (!await prefs.setBool("enableImageCache", _enableImageCache)) {
re = false;
_log.warning("Failed to save enableImageCache.");
} else {
_oriEnableImageCache = _enableImageCache;
}
}
return re;
}
@@ -331,6 +350,21 @@ class _SettingsPage extends State<SettingsPage> with ThemeModeWidget {
.dlUseAvgSpeed),
),
),
Container(
padding: const EdgeInsets.symmetric(vertical: 8),
child: CheckboxMenuButton(
value: _enableImageCache,
onChanged: (bool? value) {
if (value != null) {
setState(() {
_enableImageCache = value;
});
}
},
child: Text(AppLocalizations.of(context)!
.enableImageCache),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [