diff --git a/assets/translation.json b/assets/translation.json index 1c1896d..4fbd451 100644 --- a/assets/translation.json +++ b/assets/translation.json @@ -234,6 +234,7 @@ "Please add some sources": "请添加一些源", "Please check your settings": "请检查您的设置", "No Category Pages": "没有分类页面", + "Group @group": "第 @group 组", "Chapter @ep": "第 @ep 章", "Page @page": "第 @page 页", "Remove local favorite and history": "删除本地收藏和历史记录", @@ -389,6 +390,7 @@ "Suggestions": "建议", "Do not report any issues related to sources to App repo.": "请不要向App仓库报告任何与源相关的问题", "Show single image on first page": "在首页显示单张图片", + "Show system status bar": "显示系统状态栏", "Click to select an image": "点击选择一张图片", "Repo URL": "仓库地址", "The URL should point to a 'index.json' file": "该URL应指向一个'index.json'文件", @@ -396,7 +398,8 @@ "Clear Unfavorited": "清除未收藏", "Reverse": "反转", "Delete Chapters": "删除章节", - "Path copied to clipboard": "路径已复制到剪贴板" + "Path copied to clipboard": "路径已复制到剪贴板", + "Reverse default chapter order": "反转默认章节顺序" }, "zh_TW": { "Home": "首頁", @@ -633,6 +636,7 @@ "Please add some sources": "請添加一些源", "Please check your settings": "請檢查您的設定", "No Category Pages": "沒有分類頁面", + "Group @group": "第 @group 組", "Chapter @ep": "第 @ep 章", "Page @page": "第 @page 頁", "Remove local favorite and history": "刪除本機收藏和歷史記錄", @@ -788,6 +792,7 @@ "Suggestions": "建議", "Do not report any issues related to sources to App repo.": "請不要向App倉庫報告任何與源相關的問題", "Show single image on first page": "在首頁顯示單張圖片", + "Show system status bar": "顯示系統狀態欄", "Click to select an image": "點擊選擇一張圖片", "Repo URL": "倉庫地址", "The URL should point to a 'index.json' file": "該URL應指向一個'index.json'文件", @@ -795,6 +800,7 @@ "Clear Unfavorited": "清除未收藏", "Reverse": "反轉", "Delete Chapters": "刪除章節", - "Path copied to clipboard": "路徑已複製到剪貼簿" + "Path copied to clipboard": "路徑已複製到剪貼簿", + "Reverse default chapter order": "反轉預設章節順序" } } \ No newline at end of file diff --git a/lib/foundation/appdata.dart b/lib/foundation/appdata.dart index fb9052a..f6ba39d 100644 --- a/lib/foundation/appdata.dart +++ b/lib/foundation/appdata.dart @@ -197,6 +197,8 @@ class Settings with ChangeNotifier { 'showPageNumberInReader': true, 'showSingleImageOnFirstPage': false, 'enableDoubleTapToZoom': true, + 'reverseChapterOrder': false, + 'showSystemStatusBar': false, }; operator [](String key) { diff --git a/lib/foundation/history.dart b/lib/foundation/history.dart index 4ea0892..06920b7 100644 --- a/lib/foundation/history.dart +++ b/lib/foundation/history.dart @@ -133,6 +133,11 @@ class History implements Comic { @override String get description { var res = ""; + if (group != null){ + res += "${"Group @group".tlParams({ + "group": group!, + })} - "; + } if (ep >= 1) { res += "Chapter @ep".tlParams({ "ep": ep, diff --git a/lib/pages/comic_details_page/chapters.dart b/lib/pages/comic_details_page/chapters.dart index 7d86757..aa3c2f1 100644 --- a/lib/pages/comic_details_page/chapters.dart +++ b/lib/pages/comic_details_page/chapters.dart @@ -27,7 +27,7 @@ class _NormalComicChapters extends StatefulWidget { class _NormalComicChaptersState extends State<_NormalComicChapters> { late _ComicPageState state; - bool reverse = false; + late bool reverse; bool showAll = false; @@ -38,6 +38,7 @@ class _NormalComicChaptersState extends State<_NormalComicChapters> { @override void initState() { super.initState(); + reverse = appdata.settings["reverseChapterOrder"] ?? false; history = widget.history; } @@ -176,7 +177,7 @@ class _GroupedComicChaptersState extends State<_GroupedComicChapters> with SingleTickerProviderStateMixin { late _ComicPageState state; - bool reverse = false; + late bool reverse; bool showAll = false; @@ -191,6 +192,7 @@ class _GroupedComicChaptersState extends State<_GroupedComicChapters> @override void initState() { super.initState(); + reverse = appdata.settings["reverseChapterOrder"] ?? false; history = widget.history; if (history?.group != null) { index = history!.group! - 1; diff --git a/lib/pages/comic_details_page/comic_page.dart b/lib/pages/comic_details_page/comic_page.dart index aa05355..ce01090 100644 --- a/lib/pages/comic_details_page/comic_page.dart +++ b/lib/pages/comic_details_page/comic_page.dart @@ -410,20 +410,26 @@ class _ComicPageState extends LoadingState String text; if (haveChapter) { var epName = "E$ep"; + String? groupName; try { - epName = group == null - ? comic.chapters!.titles.elementAt( - math.min(ep - 1, comic.chapters!.length - 1), - ) - : comic.chapters! - .getGroupByIndex(group - 1) - .values - .elementAt(ep - 1); + if (group == null){ + epName = comic.chapters!.titles.elementAt( + math.min(ep - 1, comic.chapters!.length - 1), + ); + } else { + groupName = comic.chapters!.groups.elementAt(group - 1); + epName = comic.chapters! + .getGroupByIndex(group - 1) + .values + .elementAt(ep - 1); + } } catch(e) { // ignore } - text = "${"Last Reading".tl}: $epName P$page"; + text = groupName == null + ? "${"Last Reading".tl}: $epName P$page" + : "${"Last Reading".tl}: $groupName $epName P$page"; } else { text = "${"Last Reading".tl}: P$page"; } diff --git a/lib/pages/reader/reader.dart b/lib/pages/reader/reader.dart index 8a30c64..66c23ac 100644 --- a/lib/pages/reader/reader.dart +++ b/lib/pages/reader/reader.dart @@ -164,7 +164,9 @@ class _ReaderState extends State } mode = ReaderMode.fromKey(appdata.settings['readerMode']); history = widget.history; - SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive); + if (!appdata.settings['showSystemStatusBar']) { + SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive); + } if (appdata.settings['enableTurnPageByVolumeKey']) { handleVolumeEvent(); } diff --git a/lib/pages/reader/scaffold.dart b/lib/pages/reader/scaffold.dart index bfc1a86..aa23430 100644 --- a/lib/pages/reader/scaffold.dart +++ b/lib/pages/reader/scaffold.dart @@ -107,7 +107,11 @@ class _ReaderScaffoldState extends State<_ReaderScaffold> { if (!_isOpen) { SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); } else { - SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive); + if (!appdata.settings['showSystemStatusBar']) { + SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive); + } else { + SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); + } } setState(() { _isOpen = !_isOpen; diff --git a/lib/pages/settings/explore_settings.dart b/lib/pages/settings/explore_settings.dart index 61b068c..a0e1279 100644 --- a/lib/pages/settings/explore_settings.dart +++ b/lib/pages/settings/explore_settings.dart @@ -52,6 +52,10 @@ class _ExploreSettingsState extends State { title: "Show history on comic tile".tl, settingKey: "showHistoryStatusOnTile", ).toSliver(), + _SwitchSetting( + title: "Reverse default chapter order".tl, + settingKey: "reverseChapterOrder", + ).toSliver(), _PopupWindowSetting( title: "Keyword blocking".tl, builder: () => const _ManageBlockingWordView(), diff --git a/lib/pages/settings/reader.dart b/lib/pages/settings/reader.dart index 3b5744d..bcdd3db 100644 --- a/lib/pages/settings/reader.dart +++ b/lib/pages/settings/reader.dart @@ -163,6 +163,13 @@ class _ReaderSettingsState extends State { widget.onChanged?.call("enableClockAndBatteryInfoInReader"); }, ).toSliver(), + _SwitchSetting( + title: "Show system status bar".tl, + settingKey: "showSystemStatusBar", + onChanged: () { + widget.onChanged?.call("showSystemStatusBar"); + }, + ).toSliver(), SelectSetting( title: "Quick collect image".tl, settingKey: "quickCollectImage",