From b6610edfa4266b7aebf5d38a3885a07f814274e1 Mon Sep 17 00:00:00 2001 From: appdevelpo <56633229+appdevelpo@users.noreply.github.com> Date: Sat, 2 Dec 2023 22:14:18 +0800 Subject: [PATCH] default reading mode add default reading mode ,prbuild --- .github/workflows/prbuild.yml | 2 +- assets/i18n/en.json | 1 + lib/controllers/watch/comic_controller.dart | 23 ++++++++++++------ lib/data/services/database_service.dart | 5 ++-- lib/utils/miru_storage.dart | 6 +++-- lib/views/pages/settings_page.dart | 27 ++++++++++++++++++++- 6 files changed, 51 insertions(+), 13 deletions(-) diff --git a/.github/workflows/prbuild.yml b/.github/workflows/prbuild.yml index c79f02ba..b2c5ad7f 100644 --- a/.github/workflows/prbuild.yml +++ b/.github/workflows/prbuild.yml @@ -77,5 +77,5 @@ jobs: - name: Upload Artifact uses: actions/upload-artifact@v3 with: - path: "build/windows/runner/Miru-App" + path: "build/windows/x64/runner/Miru-App" name: Miru-pr-${{ github.event.pull_request.number }}-windows.zip diff --git a/assets/i18n/en.json b/assets/i18n/en.json index f8613b45..bb4a6177 100644 --- a/assets/i18n/en.json +++ b/assets/i18n/en.json @@ -102,6 +102,7 @@ "extension-log-subtitle": "Used for debugging extensions", "skip-interval": "Skip Interval", "skip-interval-subtitle": "Skipping interval for builtin video player", + "default-reader-mode": "Default reader mode", "about": "About", "official-site": "Official Website", "official-site-training": "Visit", diff --git a/lib/controllers/watch/comic_controller.dart b/lib/controllers/watch/comic_controller.dart index bff80c8f..4da058f9 100644 --- a/lib/controllers/watch/comic_controller.dart +++ b/lib/controllers/watch/comic_controller.dart @@ -6,6 +6,7 @@ import 'package:miru_app/data/services/database_service.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import 'dart:async'; import 'package:extended_image/extended_image.dart'; +import 'package:miru_app/utils/miru_storage.dart'; class ComicController extends ReaderController { ComicController({ @@ -17,8 +18,15 @@ class ComicController extends ReaderController { required super.runtime, required super.cover, }); - + Map readmode = { + 'standard': MangaReadMode.standard, + 'rightToLeft': MangaReadMode.rightToLeft, + 'webTonn': MangaReadMode.webTonn, + }; + final String setting = MiruStorage.getSetting(SettingKey.readingMode); final readType = MangaReadMode.standard.obs; + + // MangaReadMode // 当前页码 final currentPage = 0.obs; bool timerCancel = false; @@ -100,13 +108,15 @@ class ComicController extends ReaderController { } _initSetting() async { - readType.value = await DatabaseService.getMnagaReaderType(super.detailUrl); + readType.value = readmode[setting] ?? MangaReadMode.standard; + readType.value = await DatabaseService.getMnagaReaderType( + super.detailUrl, readType.value); } - double mapValue(double value) { - double mappedValue = ((value - 0) * (1 - (-1))) / (2.5 - 0) + (-1); - return mappedValue; - } + // double mapValue(double value) { + // double mappedValue = ((value - 0) * (1 - (-1))) / (2.5 - 0) + (-1); + // return mappedValue; + // } _jumpPage(int page) { if (readType.value == MangaReadMode.webTonn) { @@ -186,7 +196,6 @@ class ComicController extends ReaderController { ); } pageController.value.dispose(); - timerCancel = true; super.onClose(); } diff --git a/lib/data/services/database_service.dart b/lib/data/services/database_service.dart index f08b9ab2..c783babe 100644 --- a/lib/data/services/database_service.dart +++ b/lib/data/services/database_service.dart @@ -221,9 +221,10 @@ class DatabaseService { } // 获取漫画阅读模式 - static Future getMnagaReaderType(String url) { + static Future getMnagaReaderType( + String url, MangaReadMode defaultMode) { return db.mangaSettings.filter().urlEqualTo(url).findFirst().then( - (value) => value?.readMode ?? MangaReadMode.standard, + (value) => value?.readMode ?? defaultMode, ); } diff --git a/lib/utils/miru_storage.dart b/lib/utils/miru_storage.dart index 5a1a2ee1..8b393f8d 100644 --- a/lib/utils/miru_storage.dart +++ b/lib/utils/miru_storage.dart @@ -118,6 +118,7 @@ class MiruStorage { await _initSetting(SettingKey.keyJ, -10.0); await _initSetting(SettingKey.arrowLeft, -2.0); await _initSetting(SettingKey.arrowRight, 2.0); + await _initSetting(SettingKey.readingMode, "standard"); } static _initSetting(String key, dynamic value) async { @@ -149,6 +150,7 @@ class SettingKey { static String skipInterval = 'SkipInterval'; static String keyI = 'KeyI'; static String keyJ = 'KeyJ'; - static String arrowLeft = 'arrowleft'; - static String arrowRight = 'arrowright'; + static String arrowLeft = 'Arrowleft'; + static String arrowRight = 'Arrowright'; + static String readingMode = 'ReadingMode'; } diff --git a/lib/views/pages/settings_page.dart b/lib/views/pages/settings_page.dart index 9b81aca6..58423ea3 100644 --- a/lib/views/pages/settings_page.dart +++ b/lib/views/pages/settings_page.dart @@ -246,6 +246,31 @@ class _SettingsPageState extends State { }, ), const SizedBox(height: 8), + SettingsRadiosTile( + icon: const PlatformWidget( + androidWidget: Icon(Icons.chrome_reader_mode), + desktopWidget: + Icon(fluent.FluentIcons.reading_mode_solid, size: 24), + ), + title: 'settings.default-reader-mode'.i18n, + itemNameValue: () { + final map = { + 'comic-settings.standard'.i18n: 'standard', + 'comic-settings.right-to-left'.i18n: 'rightToLeft', + 'comic-settings.web-tonn'.i18n: 'webTonn', + }; + return map; + }(), + buildSubtitle: () => + '${MiruStorage.getSetting(SettingKey.readingMode)}'.i18n, + applyValue: (value) { + MiruStorage.setSetting(SettingKey.readingMode, value); + }, + buildGroupValue: () { + return MiruStorage.getSetting(SettingKey.readingMode); + }, + ), + const SizedBox(height: 8), SettingsRadiosTile( icon: const PlatformWidget( androidWidget: Icon(Icons.play_arrow), @@ -301,7 +326,7 @@ class _SettingsPageState extends State { fluent.Expander( header: Row( children: [ - Icon(fluent.FluentIcons.keyboard_classic, size: 24), + const Icon(fluent.FluentIcons.keyboard_classic, size: 24), const SizedBox(width: 16), Column( crossAxisAlignment: CrossAxisAlignment.start,