diff --git a/assets/translation.json b/assets/translation.json index e24350b..8d4f849 100644 --- a/assets/translation.json +++ b/assets/translation.json @@ -106,7 +106,8 @@ "Continuous (Right to Left)": "连续(从右到左)", "Continuous (Top to Bottom)": "连续(从上到下)", "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": "主题模式", "System": "系统", "Light": "浅色", @@ -468,7 +469,8 @@ "Continuous (Right to Left)": "連續(從右到左)", "Continuous (Top to Bottom)": "連續(從上到下)", "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": "主題模式", "System": "系統", "Light": "浅色", diff --git a/lib/foundation/appdata.dart b/lib/foundation/appdata.dart index 4b93e29..567cdda 100644 --- a/lib/foundation/appdata.dart +++ b/lib/foundation/appdata.dart @@ -133,7 +133,8 @@ class Settings with ChangeNotifier { 'defaultSearchTarget': null, 'autoPageTurningInterval': 5, // in seconds 'readerMode': 'galleryLeftToRight', // values of [ReaderMode] - 'readerScreenPicNumber': 1, // 1 - 5 + 'readerScreenPicNumberForLandscape': 1, // 1 - 5 + 'readerScreenPicNumberForPortrait': 1, // 1 - 5 'enableTapToTurnPages': true, 'reverseTapToTurnPages': false, 'enablePageAnimation': true, diff --git a/lib/pages/reader/reader.dart b/lib/pages/reader/reader.dart index 8e1412f..9cf2bc5 100644 --- a/lib/pages/reader/reader.dart +++ b/lib/pages/reader/reader.dart @@ -113,9 +113,18 @@ class _ReaderState extends State with _ReaderLocation, _ReaderWindow { 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 void didChangeDependencies() { @@ -168,6 +177,9 @@ class _ReaderState extends State with _ReaderLocation, _ReaderWindow { } mode = ReaderMode.fromKey(appdata.settings['readerMode']); history = widget.history; + _lastImagesPerPage = isPortrait + ? appdata.settings['readerScreenPicNumberForPortrait'] ?? 1 + : appdata.settings['readerScreenPicNumberForLandscape'] ?? 1; Future.microtask(() { updateHistory(); }); diff --git a/lib/pages/settings/reader.dart b/lib/pages/settings/reader.dart index 7efb632..97e19fd 100644 --- a/lib/pages/settings/reader.dart +++ b/lib/pages/settings/reader.dart @@ -50,8 +50,10 @@ class _ReaderSettingsState extends State { onChanged: () { var readerMode = appdata.settings['readerMode']; if (readerMode?.toLowerCase().startsWith('continuous') ?? false) { - appdata.settings['readerScreenPicNumber'] = 1; - widget.onChanged?.call('readerScreenPicNumber'); + appdata.settings['readerScreenPicNumberForLandscape'] = 1; + widget.onChanged?.call('readerScreenPicNumberForLandscape'); + appdata.settings['readerScreenPicNumberForPortrait'] = 1; + widget.onChanged?.call('readerScreenPicNumberForPortrait'); } widget.onChanged?.call("readerMode"); }, @@ -81,13 +83,40 @@ class _ReaderSettingsState extends State { : 1.0, duration: Duration(milliseconds: 300), child: _SliderSetting( - title: "The number of pic in screen (Only Gallery Mode)".tl, - settingsIndex: "readerScreenPicNumber", + title: "The number of pic in screen for landscape (Only Gallery Mode)".tl, + settingsIndex: "readerScreenPicNumberForLandscape", interval: 1, min: 1, max: 5, 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"); }, ), ),