Add option to differentiate images per page for landscape and portrait orientations (#214)

This commit is contained in:
角砂糖
2025-02-21 09:12:01 +08:00
committed by GitHub
parent 26adfc6c4f
commit 24b7319bb5
4 changed files with 54 additions and 10 deletions

View File

@@ -106,7 +106,8 @@
"Continuous (Right to Left)": "连续(从右到左)", "Continuous (Right to Left)": "连续(从右到左)",
"Continuous (Top to Bottom)": "连续(从上到下)", "Continuous (Top to Bottom)": "连续(从上到下)",
"Auto page turning interval": "自动翻页间隔", "Auto page turning interval": "自动翻页间隔",
"The number of pic in screen (Only Gallery Mode)": "同屏幕图片数量(仅画廊模式)", "The number of pic in screen for landscape (Only Gallery Mode)": "横屏同屏幕图片数量(仅画廊模式)",
"The number of pic in screen for portrait (Only Gallery Mode)": "竖屏同屏幕图片数量(仅画廊模式)",
"Theme Mode": "主题模式", "Theme Mode": "主题模式",
"System": "系统", "System": "系统",
"Light": "浅色", "Light": "浅色",
@@ -468,7 +469,8 @@
"Continuous (Right to Left)": "連續(從右到左)", "Continuous (Right to Left)": "連續(從右到左)",
"Continuous (Top to Bottom)": "連續(從上到下)", "Continuous (Top to Bottom)": "連續(從上到下)",
"Auto page turning interval": "自動翻頁間隔", "Auto page turning interval": "自動翻頁間隔",
"The number of pic in screen (Only Gallery Mode)": "同螢幕圖片數量(僅畫廊模式)", "The number of pic in screen for landscape (Only Gallery Mode)": "橫向同螢幕圖片數量(僅畫廊模式)",
"The number of pic in screen for portrait (Only Gallery Mode)": "直向同螢幕圖片數量(僅畫廊模式)",
"Theme Mode": "主題模式", "Theme Mode": "主題模式",
"System": "系統", "System": "系統",
"Light": "浅色", "Light": "浅色",

View File

@@ -133,7 +133,8 @@ class Settings with ChangeNotifier {
'defaultSearchTarget': null, 'defaultSearchTarget': null,
'autoPageTurningInterval': 5, // in seconds 'autoPageTurningInterval': 5, // in seconds
'readerMode': 'galleryLeftToRight', // values of [ReaderMode] 'readerMode': 'galleryLeftToRight', // values of [ReaderMode]
'readerScreenPicNumber': 1, // 1 - 5 'readerScreenPicNumberForLandscape': 1, // 1 - 5
'readerScreenPicNumberForPortrait': 1, // 1 - 5
'enableTapToTurnPages': true, 'enableTapToTurnPages': true,
'reverseTapToTurnPages': false, 'reverseTapToTurnPages': false,
'enablePageAnimation': true, 'enablePageAnimation': true,

View File

@@ -113,9 +113,18 @@ class _ReaderState extends State<Reader> with _ReaderLocation, _ReaderWindow {
late ReaderMode mode; late ReaderMode mode;
int get imagesPerPage => appdata.settings['readerScreenPicNumber'] ?? 1; int get imagesPerPage {
if (isPortrait) {
return appdata.settings['readerScreenPicNumberForPortrait'] ?? 1;
} else {
return appdata.settings['readerScreenPicNumberForLandscape'] ?? 1;
}
}
int _lastImagesPerPage = appdata.settings['readerScreenPicNumber'] ?? 1; late int _lastImagesPerPage;
bool get isPortrait =>
MediaQuery.of(context).orientation == Orientation.portrait;
@override @override
void didChangeDependencies() { void didChangeDependencies() {
@@ -168,6 +177,9 @@ class _ReaderState extends State<Reader> with _ReaderLocation, _ReaderWindow {
} }
mode = ReaderMode.fromKey(appdata.settings['readerMode']); mode = ReaderMode.fromKey(appdata.settings['readerMode']);
history = widget.history; history = widget.history;
_lastImagesPerPage = isPortrait
? appdata.settings['readerScreenPicNumberForPortrait'] ?? 1
: appdata.settings['readerScreenPicNumberForLandscape'] ?? 1;
Future.microtask(() { Future.microtask(() {
updateHistory(); updateHistory();
}); });

View File

@@ -50,8 +50,10 @@ class _ReaderSettingsState extends State<ReaderSettings> {
onChanged: () { onChanged: () {
var readerMode = appdata.settings['readerMode']; var readerMode = appdata.settings['readerMode'];
if (readerMode?.toLowerCase().startsWith('continuous') ?? false) { if (readerMode?.toLowerCase().startsWith('continuous') ?? false) {
appdata.settings['readerScreenPicNumber'] = 1; appdata.settings['readerScreenPicNumberForLandscape'] = 1;
widget.onChanged?.call('readerScreenPicNumber'); widget.onChanged?.call('readerScreenPicNumberForLandscape');
appdata.settings['readerScreenPicNumberForPortrait'] = 1;
widget.onChanged?.call('readerScreenPicNumberForPortrait');
} }
widget.onChanged?.call("readerMode"); widget.onChanged?.call("readerMode");
}, },
@@ -81,13 +83,40 @@ class _ReaderSettingsState extends State<ReaderSettings> {
: 1.0, : 1.0,
duration: Duration(milliseconds: 300), duration: Duration(milliseconds: 300),
child: _SliderSetting( child: _SliderSetting(
title: "The number of pic in screen (Only Gallery Mode)".tl, title: "The number of pic in screen for landscape (Only Gallery Mode)".tl,
settingsIndex: "readerScreenPicNumber", settingsIndex: "readerScreenPicNumberForLandscape",
interval: 1, interval: 1,
min: 1, min: 1,
max: 5, max: 5,
onChanged: () { onChanged: () {
widget.onChanged?.call("readerScreenPicNumber"); widget.onChanged?.call("readerScreenPicNumberForLandscape");
},
),
),
),
),
SliverToBoxAdapter(
child: AbsorbPointer(
absorbing: (appdata.settings['readerMode']
?.toLowerCase()
.startsWith('continuous') ??
false),
child: AnimatedOpacity(
opacity: (appdata.settings['readerMode']
?.toLowerCase()
.startsWith('continuous') ??
false)
? 0.5
: 1.0,
duration: Duration(milliseconds: 300),
child: _SliderSetting(
title: "The number of pic in screen for portrait (Only Gallery Mode)".tl,
settingsIndex: "readerScreenPicNumberForPortrait",
interval: 1,
min: 1,
max: 5,
onChanged: () {
widget.onChanged?.call("readerScreenPicNumberForPortrait");
}, },
), ),
), ),