From 20c943e5fc21e158bdffd6bdcdba1226ea345c37 Mon Sep 17 00:00:00 2001 From: Schnitzel5 Date: Thu, 7 Aug 2025 21:37:46 +0200 Subject: [PATCH] testing iOS Picture-in-Picture implementation from [PR #206](https://github.com/media-kit/media-kit/pull/206) --- ios/Runner/Info.plist | 1 + lib/l10n/app_en.arb | 5 +- lib/l10n/generated/app_localizations.dart | 18 + lib/l10n/generated/app_localizations_ar.dart | 10 + lib/l10n/generated/app_localizations_as.dart | 10 + lib/l10n/generated/app_localizations_de.dart | 10 + lib/l10n/generated/app_localizations_en.dart | 10 + lib/l10n/generated/app_localizations_es.dart | 10 + lib/l10n/generated/app_localizations_fr.dart | 10 + lib/l10n/generated/app_localizations_hi.dart | 10 + lib/l10n/generated/app_localizations_id.dart | 10 + lib/l10n/generated/app_localizations_it.dart | 10 + lib/l10n/generated/app_localizations_pt.dart | 10 + lib/l10n/generated/app_localizations_ru.dart | 10 + lib/l10n/generated/app_localizations_th.dart | 10 + lib/l10n/generated/app_localizations_tr.dart | 10 + lib/l10n/generated/app_localizations_zh.dart | 10 + lib/models/settings.dart | 10 + lib/models/settings.g.dart | 748 +++++++++++------- lib/modules/anime/anime_player_view.dart | 63 +- .../data_and_storage/providers/restore.g.dart | 2 +- .../more/settings/player/player_screen.dart | 20 + .../providers/player_state_provider.dart | 40 + .../providers/player_state_provider.g.dart | 33 + lib/utils/date.dart | 2 +- pubspec.lock | 16 +- 26 files changed, 738 insertions(+), 360 deletions(-) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index ed2cfaee..421b7dd5 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -36,6 +36,7 @@ UIBackgroundModes fetch + audio UILaunchStoryboardName LaunchScreen diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index b3bf6d59..e7ad49df 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -145,6 +145,7 @@ "today": "Today", "yesterday": "Yesterday", "a_week_ago": "A week ago", + "next_week": "Next week", "add_to_library": "Add to library", "completed": "Completed", "ongoing": "Ongoing", @@ -518,5 +519,7 @@ "in_n_days": "in {days} days", "clear_library": "Clear library", "clear_library_desc": "Choose to clear all manga, anime and/or novel entries", - "clear_library_input": "Type 'manga', 'anime' and/or 'novel' (separated by a comma) to remove all related entries" + "clear_library_input": "Type 'manga', 'anime' and/or 'novel' (separated by a comma) to remove all related entries", + "enable_pip": "Enable Picture-in-Picture (PiP)", + "enable_auto_pip": "Enter PiP automatically when moving out of app" } diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index 4d222cd4..4065800b 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -945,6 +945,12 @@ abstract class AppLocalizations { /// **'A week ago'** String get a_week_ago; + /// No description provided for @next_week. + /// + /// In en, this message translates to: + /// **'Next week'** + String get next_week; + /// No description provided for @add_to_library. /// /// In en, this message translates to: @@ -3188,6 +3194,18 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'** String get clear_library_input; + + /// No description provided for @enable_pip. + /// + /// In en, this message translates to: + /// **'Enable Picture-in-Picture (PiP)'** + String get enable_pip; + + /// No description provided for @enable_auto_pip. + /// + /// In en, this message translates to: + /// **'Enter PiP automatically when moving out of app'** + String get enable_auto_pip; } class _AppLocalizationsDelegate diff --git a/lib/l10n/generated/app_localizations_ar.dart b/lib/l10n/generated/app_localizations_ar.dart index b2994863..163fd4e9 100644 --- a/lib/l10n/generated/app_localizations_ar.dart +++ b/lib/l10n/generated/app_localizations_ar.dart @@ -441,6 +441,9 @@ class AppLocalizationsAr extends AppLocalizations { @override String get a_week_ago => 'منذ أسبوع'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'إضافة إلى المكتبة'; @@ -1648,4 +1651,11 @@ class AppLocalizationsAr extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_as.dart b/lib/l10n/generated/app_localizations_as.dart index 54b4321a..4b0fc6f9 100644 --- a/lib/l10n/generated/app_localizations_as.dart +++ b/lib/l10n/generated/app_localizations_as.dart @@ -443,6 +443,9 @@ class AppLocalizationsAs extends AppLocalizations { @override String get a_week_ago => 'এসপ্তাহৰ আগতে'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'পুথিভঁৰালত যোগ কৰক'; @@ -1650,4 +1653,11 @@ class AppLocalizationsAs extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index 5a817e81..7fdc7448 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -445,6 +445,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get a_week_ago => 'Vor einer Woche'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Zur Bibliothek hinzufügen'; @@ -1661,4 +1664,11 @@ class AppLocalizationsDe extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index 356fdef5..7a476172 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -443,6 +443,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get a_week_ago => 'A week ago'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Add to library'; @@ -1649,4 +1652,11 @@ class AppLocalizationsEn extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_es.dart b/lib/l10n/generated/app_localizations_es.dart index f9b65529..204d039e 100644 --- a/lib/l10n/generated/app_localizations_es.dart +++ b/lib/l10n/generated/app_localizations_es.dart @@ -447,6 +447,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get a_week_ago => 'Hace una semana'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Agregar a la biblioteca'; @@ -1666,6 +1669,13 @@ class AppLocalizationsEs extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } /// The translations for Spanish Castilian, as used in Latin America and the Caribbean (`es_419`). diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart index 494ad387..86f56d88 100644 --- a/lib/l10n/generated/app_localizations_fr.dart +++ b/lib/l10n/generated/app_localizations_fr.dart @@ -449,6 +449,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get a_week_ago => 'Il y a une semaine'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Ajouter à la bibliothèque'; @@ -1667,4 +1670,11 @@ class AppLocalizationsFr extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_hi.dart b/lib/l10n/generated/app_localizations_hi.dart index 30f66686..d48af4d1 100644 --- a/lib/l10n/generated/app_localizations_hi.dart +++ b/lib/l10n/generated/app_localizations_hi.dart @@ -443,6 +443,9 @@ class AppLocalizationsHi extends AppLocalizations { @override String get a_week_ago => 'एक सप्ताह पहले'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'पुस्तकालय में जोड़ें'; @@ -1651,4 +1654,11 @@ class AppLocalizationsHi extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_id.dart b/lib/l10n/generated/app_localizations_id.dart index 33978f7b..7ec8870c 100644 --- a/lib/l10n/generated/app_localizations_id.dart +++ b/lib/l10n/generated/app_localizations_id.dart @@ -447,6 +447,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get a_week_ago => 'Seminggu yang Lalu'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Tambahkan ke Perpustakaan'; @@ -1655,4 +1658,11 @@ class AppLocalizationsId extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_it.dart b/lib/l10n/generated/app_localizations_it.dart index be2242c5..f41631db 100644 --- a/lib/l10n/generated/app_localizations_it.dart +++ b/lib/l10n/generated/app_localizations_it.dart @@ -447,6 +447,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get a_week_ago => 'Una settimana fa'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Aggiungi alla biblioteca'; @@ -1664,4 +1667,11 @@ class AppLocalizationsIt extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart index 039987f3..f8b54f8c 100644 --- a/lib/l10n/generated/app_localizations_pt.dart +++ b/lib/l10n/generated/app_localizations_pt.dart @@ -447,6 +447,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get a_week_ago => 'Uma semana atrás'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Adicionar à biblioteca'; @@ -1663,6 +1666,13 @@ class AppLocalizationsPt extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } /// The translations for Portuguese, as used in Brazil (`pt_BR`). diff --git a/lib/l10n/generated/app_localizations_ru.dart b/lib/l10n/generated/app_localizations_ru.dart index 3119b131..1d9923b6 100644 --- a/lib/l10n/generated/app_localizations_ru.dart +++ b/lib/l10n/generated/app_localizations_ru.dart @@ -448,6 +448,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get a_week_ago => 'Неделю назад'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Добавить в библиотеку'; @@ -1665,4 +1668,11 @@ class AppLocalizationsRu extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_th.dart b/lib/l10n/generated/app_localizations_th.dart index 8133d6d7..e0a4a3cf 100644 --- a/lib/l10n/generated/app_localizations_th.dart +++ b/lib/l10n/generated/app_localizations_th.dart @@ -443,6 +443,9 @@ class AppLocalizationsTh extends AppLocalizations { @override String get a_week_ago => 'สัปดาห์ที่แล้ว'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'เพิ่มไปที่ชั้นหนังสือ'; @@ -1649,4 +1652,11 @@ class AppLocalizationsTh extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_tr.dart b/lib/l10n/generated/app_localizations_tr.dart index 08e9c049..a9de4799 100644 --- a/lib/l10n/generated/app_localizations_tr.dart +++ b/lib/l10n/generated/app_localizations_tr.dart @@ -443,6 +443,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get a_week_ago => 'Bir Hafta Önce'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Kütüphaneye Ekle'; @@ -1655,4 +1658,11 @@ class AppLocalizationsTr extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/l10n/generated/app_localizations_zh.dart b/lib/l10n/generated/app_localizations_zh.dart index d866c717..07c234e5 100644 --- a/lib/l10n/generated/app_localizations_zh.dart +++ b/lib/l10n/generated/app_localizations_zh.dart @@ -435,6 +435,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get a_week_ago => '一周前'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => '添加到图书馆'; @@ -1620,4 +1623,11 @@ class AppLocalizationsZh extends AppLocalizations { @override String get clear_library_input => 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get enable_pip => 'Enable Picture-in-Picture (PiP)'; + + @override + String get enable_auto_pip => + 'Enter PiP automatically when moving out of app'; } diff --git a/lib/models/settings.dart b/lib/models/settings.dart index 425f9134..540229f0 100644 --- a/lib/models/settings.dart +++ b/lib/models/settings.dart @@ -276,6 +276,10 @@ class Settings { int? volumeBoostCap; + bool? enablePiP; + + bool? enableAutoPiP; + Settings({ this.id = 227, this.updatedAt = 0, @@ -399,6 +403,8 @@ class Settings { this.enableAudioPitchCorrection, this.audioChannels = AudioChannel.autoSafe, this.volumeBoostCap, + this.enablePiP = true, + this.enableAutoPiP = true, }); Settings.fromJson(Map json) { @@ -630,6 +636,8 @@ class Settings { audioChannels = AudioChannel .values[json['audioChannels'] ?? AudioChannel.autoSafe.index]; volumeBoostCap = json['volumeBoostCap']; + enablePiP = json['enablePiP']; + enableAutoPiP = json['enableAutoPiP']; } Map toJson() => { @@ -776,6 +784,8 @@ class Settings { 'enableAudioPitchCorrection': enableAudioPitchCorrection, 'audioChannels': audioChannels.index, 'volumeBoostCap': volumeBoostCap, + 'enablePiP': enablePiP, + 'enableAutoPiP': enableAutoPiP, }; } diff --git a/lib/models/settings.g.dart b/lib/models/settings.g.dart index 975f0946..fbd751cd 100644 --- a/lib/models/settings.g.dart +++ b/lib/models/settings.g.dart @@ -280,408 +280,418 @@ const SettingsSchema = CollectionSchema( name: r'enableAudioPitchCorrection', type: IsarType.bool, ), - r'enableAutoSkip': PropertySchema( + r'enableAutoPiP': PropertySchema( id: 49, + name: r'enableAutoPiP', + type: IsarType.bool, + ), + r'enableAutoSkip': PropertySchema( + id: 50, name: r'enableAutoSkip', type: IsarType.bool, ), r'enableCustomColorFilter': PropertySchema( - id: 50, + id: 51, name: r'enableCustomColorFilter', type: IsarType.bool, ), r'enableDiscordRpc': PropertySchema( - id: 51, + id: 52, name: r'enableDiscordRpc', type: IsarType.bool, ), r'enableGpuNext': PropertySchema( - id: 52, + id: 53, name: r'enableGpuNext', type: IsarType.bool, ), + r'enablePiP': PropertySchema( + id: 54, + name: r'enablePiP', + type: IsarType.bool, + ), r'filterScanlatorList': PropertySchema( - id: 53, + id: 55, name: r'filterScanlatorList', type: IsarType.objectList, target: r'FilterScanlator', ), r'flexColorSchemeBlendLevel': PropertySchema( - id: 54, + id: 56, name: r'flexColorSchemeBlendLevel', type: IsarType.double, ), r'flexSchemeColorIndex': PropertySchema( - id: 55, + id: 57, name: r'flexSchemeColorIndex', type: IsarType.long, ), r'followSystemTheme': PropertySchema( - id: 56, + id: 58, name: r'followSystemTheme', type: IsarType.bool, ), r'fullScreenPlayer': PropertySchema( - id: 57, + id: 59, name: r'fullScreenPlayer', type: IsarType.bool, ), r'fullScreenReader': PropertySchema( - id: 58, + id: 60, name: r'fullScreenReader', type: IsarType.bool, ), r'hideDiscordRpcInIncognito': PropertySchema( - id: 59, + id: 61, name: r'hideDiscordRpcInIncognito', type: IsarType.bool, ), r'hideItems': PropertySchema( - id: 60, + id: 62, name: r'hideItems', type: IsarType.stringList, ), r'hwdecMode': PropertySchema( - id: 61, + id: 63, name: r'hwdecMode', type: IsarType.string, ), r'incognitoMode': PropertySchema( - id: 62, + id: 64, name: r'incognitoMode', type: IsarType.bool, ), r'lastTrackerLibraryLocation': PropertySchema( - id: 63, + id: 65, name: r'lastTrackerLibraryLocation', type: IsarType.string, ), r'libraryDownloadedChapters': PropertySchema( - id: 64, + id: 66, name: r'libraryDownloadedChapters', type: IsarType.bool, ), r'libraryFilterAnimeBookMarkedType': PropertySchema( - id: 65, + id: 67, name: r'libraryFilterAnimeBookMarkedType', type: IsarType.long, ), r'libraryFilterAnimeDownloadType': PropertySchema( - id: 66, + id: 68, name: r'libraryFilterAnimeDownloadType', type: IsarType.long, ), r'libraryFilterAnimeStartedType': PropertySchema( - id: 67, + id: 69, name: r'libraryFilterAnimeStartedType', type: IsarType.long, ), r'libraryFilterAnimeUnreadType': PropertySchema( - id: 68, + id: 70, name: r'libraryFilterAnimeUnreadType', type: IsarType.long, ), r'libraryFilterMangasBookMarkedType': PropertySchema( - id: 69, + id: 71, name: r'libraryFilterMangasBookMarkedType', type: IsarType.long, ), r'libraryFilterMangasDownloadType': PropertySchema( - id: 70, + id: 72, name: r'libraryFilterMangasDownloadType', type: IsarType.long, ), r'libraryFilterMangasStartedType': PropertySchema( - id: 71, + id: 73, name: r'libraryFilterMangasStartedType', type: IsarType.long, ), r'libraryFilterMangasUnreadType': PropertySchema( - id: 72, + id: 74, name: r'libraryFilterMangasUnreadType', type: IsarType.long, ), r'libraryFilterNovelBookMarkedType': PropertySchema( - id: 73, + id: 75, name: r'libraryFilterNovelBookMarkedType', type: IsarType.long, ), r'libraryFilterNovelDownloadType': PropertySchema( - id: 74, + id: 76, name: r'libraryFilterNovelDownloadType', type: IsarType.long, ), r'libraryFilterNovelStartedType': PropertySchema( - id: 75, + id: 77, name: r'libraryFilterNovelStartedType', type: IsarType.long, ), r'libraryFilterNovelUnreadType': PropertySchema( - id: 76, + id: 78, name: r'libraryFilterNovelUnreadType', type: IsarType.long, ), r'libraryLocalSource': PropertySchema( - id: 77, + id: 79, name: r'libraryLocalSource', type: IsarType.bool, ), r'libraryShowCategoryTabs': PropertySchema( - id: 78, + id: 80, name: r'libraryShowCategoryTabs', type: IsarType.bool, ), r'libraryShowContinueReadingButton': PropertySchema( - id: 79, + id: 81, name: r'libraryShowContinueReadingButton', type: IsarType.bool, ), r'libraryShowLanguage': PropertySchema( - id: 80, + id: 82, name: r'libraryShowLanguage', type: IsarType.bool, ), r'libraryShowNumbersOfItems': PropertySchema( - id: 81, + id: 83, name: r'libraryShowNumbersOfItems', type: IsarType.bool, ), r'locale': PropertySchema( - id: 82, + id: 84, name: r'locale', type: IsarType.object, target: r'L10nLocale', ), r'mangaExtensionsRepo': PropertySchema( - id: 83, + id: 85, name: r'mangaExtensionsRepo', type: IsarType.objectList, target: r'Repo', ), r'mangaGridSize': PropertySchema( - id: 84, + id: 86, name: r'mangaGridSize', type: IsarType.long, ), r'mangaHomeDisplayType': PropertySchema( - id: 85, + id: 87, name: r'mangaHomeDisplayType', type: IsarType.byte, enumMap: _SettingsmangaHomeDisplayTypeEnumValueMap, ), r'markEpisodeAsSeenType': PropertySchema( - id: 86, + id: 88, name: r'markEpisodeAsSeenType', type: IsarType.long, ), r'mergeLibraryNavMobile': PropertySchema( - id: 87, + id: 89, name: r'mergeLibraryNavMobile', type: IsarType.bool, ), r'navigationOrder': PropertySchema( - id: 88, + id: 90, name: r'navigationOrder', type: IsarType.stringList, ), r'novelDisplayType': PropertySchema( - id: 89, + id: 91, name: r'novelDisplayType', type: IsarType.byte, enumMap: _SettingsnovelDisplayTypeEnumValueMap, ), r'novelExtensionsRepo': PropertySchema( - id: 90, + id: 92, name: r'novelExtensionsRepo', type: IsarType.objectList, target: r'Repo', ), r'novelFontSize': PropertySchema( - id: 91, + id: 93, name: r'novelFontSize', type: IsarType.long, ), r'novelGridSize': PropertySchema( - id: 92, + id: 94, name: r'novelGridSize', type: IsarType.long, ), r'novelLibraryDownloadedChapters': PropertySchema( - id: 93, + id: 95, name: r'novelLibraryDownloadedChapters', type: IsarType.bool, ), r'novelLibraryLocalSource': PropertySchema( - id: 94, + id: 96, name: r'novelLibraryLocalSource', type: IsarType.bool, ), r'novelLibraryShowCategoryTabs': PropertySchema( - id: 95, + id: 97, name: r'novelLibraryShowCategoryTabs', type: IsarType.bool, ), r'novelLibraryShowContinueReadingButton': PropertySchema( - id: 96, + id: 98, name: r'novelLibraryShowContinueReadingButton', type: IsarType.bool, ), r'novelLibraryShowLanguage': PropertySchema( - id: 97, + id: 99, name: r'novelLibraryShowLanguage', type: IsarType.bool, ), r'novelLibraryShowNumbersOfItems': PropertySchema( - id: 98, + id: 100, name: r'novelLibraryShowNumbersOfItems', type: IsarType.bool, ), r'novelTextAlign': PropertySchema( - id: 99, + id: 101, name: r'novelTextAlign', type: IsarType.byte, enumMap: _SettingsnovelTextAlignEnumValueMap, ), r'onlyIncludePinnedSources': PropertySchema( - id: 100, + id: 102, name: r'onlyIncludePinnedSources', type: IsarType.bool, ), r'pagePreloadAmount': PropertySchema( - id: 101, + id: 103, name: r'pagePreloadAmount', type: IsarType.long, ), r'personalPageModeList': PropertySchema( - id: 102, + id: 104, name: r'personalPageModeList', type: IsarType.objectList, target: r'PersonalPageMode', ), r'personalReaderModeList': PropertySchema( - id: 103, + id: 105, name: r'personalReaderModeList', type: IsarType.objectList, target: r'PersonalReaderMode', ), r'playerSubtitleSettings': PropertySchema( - id: 104, + id: 106, name: r'playerSubtitleSettings', type: IsarType.object, target: r'PlayerSubtitleSettings', ), r'pureBlackDarkMode': PropertySchema( - id: 105, + id: 107, name: r'pureBlackDarkMode', type: IsarType.bool, ), r'relativeTimesTamps': PropertySchema( - id: 106, + id: 108, name: r'relativeTimesTamps', type: IsarType.long, ), r'rpcShowCoverImage': PropertySchema( - id: 107, + id: 109, name: r'rpcShowCoverImage', type: IsarType.bool, ), r'rpcShowReadingWatchingProgress': PropertySchema( - id: 108, + id: 110, name: r'rpcShowReadingWatchingProgress', type: IsarType.bool, ), r'rpcShowTitle': PropertySchema( - id: 109, + id: 111, name: r'rpcShowTitle', type: IsarType.bool, ), r'saveAsCBZArchive': PropertySchema( - id: 110, + id: 112, name: r'saveAsCBZArchive', type: IsarType.bool, ), r'scaleType': PropertySchema( - id: 111, + id: 113, name: r'scaleType', type: IsarType.byte, enumMap: _SettingsscaleTypeEnumValueMap, ), r'showPagesNumber': PropertySchema( - id: 112, + id: 114, name: r'showPagesNumber', type: IsarType.bool, ), r'sortChapterList': PropertySchema( - id: 113, + id: 115, name: r'sortChapterList', type: IsarType.objectList, target: r'SortChapter', ), r'sortLibraryAnime': PropertySchema( - id: 114, + id: 116, name: r'sortLibraryAnime', type: IsarType.object, target: r'SortLibraryManga', ), r'sortLibraryManga': PropertySchema( - id: 115, + id: 117, name: r'sortLibraryManga', type: IsarType.object, target: r'SortLibraryManga', ), r'sortLibraryNovel': PropertySchema( - id: 116, + id: 118, name: r'sortLibraryNovel', type: IsarType.object, target: r'SortLibraryManga', ), r'startDatebackup': PropertySchema( - id: 117, + id: 119, name: r'startDatebackup', type: IsarType.long, ), r'themeIsDark': PropertySchema( - id: 118, + id: 120, name: r'themeIsDark', type: IsarType.bool, ), r'updateProgressAfterReading': PropertySchema( - id: 119, + id: 121, name: r'updateProgressAfterReading', type: IsarType.bool, ), r'updatedAt': PropertySchema( - id: 120, + id: 122, name: r'updatedAt', type: IsarType.long, ), r'useLibass': PropertySchema( - id: 121, + id: 123, name: r'useLibass', type: IsarType.bool, ), r'useMpvConfig': PropertySchema( - id: 122, + id: 124, name: r'useMpvConfig', type: IsarType.bool, ), r'usePageTapZones': PropertySchema( - id: 123, + id: 125, name: r'usePageTapZones', type: IsarType.bool, ), r'useYUV420P': PropertySchema( - id: 124, + id: 126, name: r'useYUV420P', type: IsarType.bool, ), r'userAgent': PropertySchema( - id: 125, + id: 127, name: r'userAgent', type: IsarType.string, ), r'volumeBoostCap': PropertySchema( - id: 126, + id: 128, name: r'volumeBoostCap', type: IsarType.long, ) @@ -1170,139 +1180,141 @@ void _settingsSerialize( writer.writeBool(offsets[46], object.downloadOnlyOnWifi); writer.writeBool(offsets[47], object.enableAniSkip); writer.writeBool(offsets[48], object.enableAudioPitchCorrection); - writer.writeBool(offsets[49], object.enableAutoSkip); - writer.writeBool(offsets[50], object.enableCustomColorFilter); - writer.writeBool(offsets[51], object.enableDiscordRpc); - writer.writeBool(offsets[52], object.enableGpuNext); + writer.writeBool(offsets[49], object.enableAutoPiP); + writer.writeBool(offsets[50], object.enableAutoSkip); + writer.writeBool(offsets[51], object.enableCustomColorFilter); + writer.writeBool(offsets[52], object.enableDiscordRpc); + writer.writeBool(offsets[53], object.enableGpuNext); + writer.writeBool(offsets[54], object.enablePiP); writer.writeObjectList( - offsets[53], + offsets[55], allOffsets, FilterScanlatorSchema.serialize, object.filterScanlatorList, ); - writer.writeDouble(offsets[54], object.flexColorSchemeBlendLevel); - writer.writeLong(offsets[55], object.flexSchemeColorIndex); - writer.writeBool(offsets[56], object.followSystemTheme); - writer.writeBool(offsets[57], object.fullScreenPlayer); - writer.writeBool(offsets[58], object.fullScreenReader); - writer.writeBool(offsets[59], object.hideDiscordRpcInIncognito); - writer.writeStringList(offsets[60], object.hideItems); - writer.writeString(offsets[61], object.hwdecMode); - writer.writeBool(offsets[62], object.incognitoMode); - writer.writeString(offsets[63], object.lastTrackerLibraryLocation); - writer.writeBool(offsets[64], object.libraryDownloadedChapters); - writer.writeLong(offsets[65], object.libraryFilterAnimeBookMarkedType); - writer.writeLong(offsets[66], object.libraryFilterAnimeDownloadType); - writer.writeLong(offsets[67], object.libraryFilterAnimeStartedType); - writer.writeLong(offsets[68], object.libraryFilterAnimeUnreadType); - writer.writeLong(offsets[69], object.libraryFilterMangasBookMarkedType); - writer.writeLong(offsets[70], object.libraryFilterMangasDownloadType); - writer.writeLong(offsets[71], object.libraryFilterMangasStartedType); - writer.writeLong(offsets[72], object.libraryFilterMangasUnreadType); - writer.writeLong(offsets[73], object.libraryFilterNovelBookMarkedType); - writer.writeLong(offsets[74], object.libraryFilterNovelDownloadType); - writer.writeLong(offsets[75], object.libraryFilterNovelStartedType); - writer.writeLong(offsets[76], object.libraryFilterNovelUnreadType); - writer.writeBool(offsets[77], object.libraryLocalSource); - writer.writeBool(offsets[78], object.libraryShowCategoryTabs); - writer.writeBool(offsets[79], object.libraryShowContinueReadingButton); - writer.writeBool(offsets[80], object.libraryShowLanguage); - writer.writeBool(offsets[81], object.libraryShowNumbersOfItems); + writer.writeDouble(offsets[56], object.flexColorSchemeBlendLevel); + writer.writeLong(offsets[57], object.flexSchemeColorIndex); + writer.writeBool(offsets[58], object.followSystemTheme); + writer.writeBool(offsets[59], object.fullScreenPlayer); + writer.writeBool(offsets[60], object.fullScreenReader); + writer.writeBool(offsets[61], object.hideDiscordRpcInIncognito); + writer.writeStringList(offsets[62], object.hideItems); + writer.writeString(offsets[63], object.hwdecMode); + writer.writeBool(offsets[64], object.incognitoMode); + writer.writeString(offsets[65], object.lastTrackerLibraryLocation); + writer.writeBool(offsets[66], object.libraryDownloadedChapters); + writer.writeLong(offsets[67], object.libraryFilterAnimeBookMarkedType); + writer.writeLong(offsets[68], object.libraryFilterAnimeDownloadType); + writer.writeLong(offsets[69], object.libraryFilterAnimeStartedType); + writer.writeLong(offsets[70], object.libraryFilterAnimeUnreadType); + writer.writeLong(offsets[71], object.libraryFilterMangasBookMarkedType); + writer.writeLong(offsets[72], object.libraryFilterMangasDownloadType); + writer.writeLong(offsets[73], object.libraryFilterMangasStartedType); + writer.writeLong(offsets[74], object.libraryFilterMangasUnreadType); + writer.writeLong(offsets[75], object.libraryFilterNovelBookMarkedType); + writer.writeLong(offsets[76], object.libraryFilterNovelDownloadType); + writer.writeLong(offsets[77], object.libraryFilterNovelStartedType); + writer.writeLong(offsets[78], object.libraryFilterNovelUnreadType); + writer.writeBool(offsets[79], object.libraryLocalSource); + writer.writeBool(offsets[80], object.libraryShowCategoryTabs); + writer.writeBool(offsets[81], object.libraryShowContinueReadingButton); + writer.writeBool(offsets[82], object.libraryShowLanguage); + writer.writeBool(offsets[83], object.libraryShowNumbersOfItems); writer.writeObject( - offsets[82], + offsets[84], allOffsets, L10nLocaleSchema.serialize, object.locale, ); writer.writeObjectList( - offsets[83], + offsets[85], allOffsets, RepoSchema.serialize, object.mangaExtensionsRepo, ); - writer.writeLong(offsets[84], object.mangaGridSize); - writer.writeByte(offsets[85], object.mangaHomeDisplayType.index); - writer.writeLong(offsets[86], object.markEpisodeAsSeenType); - writer.writeBool(offsets[87], object.mergeLibraryNavMobile); - writer.writeStringList(offsets[88], object.navigationOrder); - writer.writeByte(offsets[89], object.novelDisplayType.index); + writer.writeLong(offsets[86], object.mangaGridSize); + writer.writeByte(offsets[87], object.mangaHomeDisplayType.index); + writer.writeLong(offsets[88], object.markEpisodeAsSeenType); + writer.writeBool(offsets[89], object.mergeLibraryNavMobile); + writer.writeStringList(offsets[90], object.navigationOrder); + writer.writeByte(offsets[91], object.novelDisplayType.index); writer.writeObjectList( - offsets[90], + offsets[92], allOffsets, RepoSchema.serialize, object.novelExtensionsRepo, ); - writer.writeLong(offsets[91], object.novelFontSize); - writer.writeLong(offsets[92], object.novelGridSize); - writer.writeBool(offsets[93], object.novelLibraryDownloadedChapters); - writer.writeBool(offsets[94], object.novelLibraryLocalSource); - writer.writeBool(offsets[95], object.novelLibraryShowCategoryTabs); - writer.writeBool(offsets[96], object.novelLibraryShowContinueReadingButton); - writer.writeBool(offsets[97], object.novelLibraryShowLanguage); - writer.writeBool(offsets[98], object.novelLibraryShowNumbersOfItems); - writer.writeByte(offsets[99], object.novelTextAlign.index); - writer.writeBool(offsets[100], object.onlyIncludePinnedSources); - writer.writeLong(offsets[101], object.pagePreloadAmount); + writer.writeLong(offsets[93], object.novelFontSize); + writer.writeLong(offsets[94], object.novelGridSize); + writer.writeBool(offsets[95], object.novelLibraryDownloadedChapters); + writer.writeBool(offsets[96], object.novelLibraryLocalSource); + writer.writeBool(offsets[97], object.novelLibraryShowCategoryTabs); + writer.writeBool(offsets[98], object.novelLibraryShowContinueReadingButton); + writer.writeBool(offsets[99], object.novelLibraryShowLanguage); + writer.writeBool(offsets[100], object.novelLibraryShowNumbersOfItems); + writer.writeByte(offsets[101], object.novelTextAlign.index); + writer.writeBool(offsets[102], object.onlyIncludePinnedSources); + writer.writeLong(offsets[103], object.pagePreloadAmount); writer.writeObjectList( - offsets[102], + offsets[104], allOffsets, PersonalPageModeSchema.serialize, object.personalPageModeList, ); writer.writeObjectList( - offsets[103], + offsets[105], allOffsets, PersonalReaderModeSchema.serialize, object.personalReaderModeList, ); writer.writeObject( - offsets[104], + offsets[106], allOffsets, PlayerSubtitleSettingsSchema.serialize, object.playerSubtitleSettings, ); - writer.writeBool(offsets[105], object.pureBlackDarkMode); - writer.writeLong(offsets[106], object.relativeTimesTamps); - writer.writeBool(offsets[107], object.rpcShowCoverImage); - writer.writeBool(offsets[108], object.rpcShowReadingWatchingProgress); - writer.writeBool(offsets[109], object.rpcShowTitle); - writer.writeBool(offsets[110], object.saveAsCBZArchive); - writer.writeByte(offsets[111], object.scaleType.index); - writer.writeBool(offsets[112], object.showPagesNumber); + writer.writeBool(offsets[107], object.pureBlackDarkMode); + writer.writeLong(offsets[108], object.relativeTimesTamps); + writer.writeBool(offsets[109], object.rpcShowCoverImage); + writer.writeBool(offsets[110], object.rpcShowReadingWatchingProgress); + writer.writeBool(offsets[111], object.rpcShowTitle); + writer.writeBool(offsets[112], object.saveAsCBZArchive); + writer.writeByte(offsets[113], object.scaleType.index); + writer.writeBool(offsets[114], object.showPagesNumber); writer.writeObjectList( - offsets[113], + offsets[115], allOffsets, SortChapterSchema.serialize, object.sortChapterList, ); writer.writeObject( - offsets[114], + offsets[116], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryAnime, ); writer.writeObject( - offsets[115], + offsets[117], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryManga, ); writer.writeObject( - offsets[116], + offsets[118], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryNovel, ); - writer.writeLong(offsets[117], object.startDatebackup); - writer.writeBool(offsets[118], object.themeIsDark); - writer.writeBool(offsets[119], object.updateProgressAfterReading); - writer.writeLong(offsets[120], object.updatedAt); - writer.writeBool(offsets[121], object.useLibass); - writer.writeBool(offsets[122], object.useMpvConfig); - writer.writeBool(offsets[123], object.usePageTapZones); - writer.writeBool(offsets[124], object.useYUV420P); - writer.writeString(offsets[125], object.userAgent); - writer.writeLong(offsets[126], object.volumeBoostCap); + writer.writeLong(offsets[119], object.startDatebackup); + writer.writeBool(offsets[120], object.themeIsDark); + writer.writeBool(offsets[121], object.updateProgressAfterReading); + writer.writeLong(offsets[122], object.updatedAt); + writer.writeBool(offsets[123], object.useLibass); + writer.writeBool(offsets[124], object.useMpvConfig); + writer.writeBool(offsets[125], object.usePageTapZones); + writer.writeBool(offsets[126], object.useYUV420P); + writer.writeString(offsets[127], object.userAgent); + writer.writeLong(offsets[128], object.volumeBoostCap); } Settings _settingsDeserialize( @@ -1408,131 +1420,133 @@ Settings _settingsDeserialize( downloadOnlyOnWifi: reader.readBoolOrNull(offsets[46]), enableAniSkip: reader.readBoolOrNull(offsets[47]), enableAudioPitchCorrection: reader.readBoolOrNull(offsets[48]), - enableAutoSkip: reader.readBoolOrNull(offsets[49]), - enableCustomColorFilter: reader.readBoolOrNull(offsets[50]), - enableDiscordRpc: reader.readBoolOrNull(offsets[51]), - enableGpuNext: reader.readBoolOrNull(offsets[52]), - flexColorSchemeBlendLevel: reader.readDoubleOrNull(offsets[54]), - flexSchemeColorIndex: reader.readLongOrNull(offsets[55]), - followSystemTheme: reader.readBoolOrNull(offsets[56]), - fullScreenPlayer: reader.readBoolOrNull(offsets[57]), - fullScreenReader: reader.readBoolOrNull(offsets[58]), - hideDiscordRpcInIncognito: reader.readBoolOrNull(offsets[59]), - hideItems: reader.readStringList(offsets[60]), - hwdecMode: reader.readStringOrNull(offsets[61]), + enableAutoPiP: reader.readBoolOrNull(offsets[49]), + enableAutoSkip: reader.readBoolOrNull(offsets[50]), + enableCustomColorFilter: reader.readBoolOrNull(offsets[51]), + enableDiscordRpc: reader.readBoolOrNull(offsets[52]), + enableGpuNext: reader.readBoolOrNull(offsets[53]), + enablePiP: reader.readBoolOrNull(offsets[54]), + flexColorSchemeBlendLevel: reader.readDoubleOrNull(offsets[56]), + flexSchemeColorIndex: reader.readLongOrNull(offsets[57]), + followSystemTheme: reader.readBoolOrNull(offsets[58]), + fullScreenPlayer: reader.readBoolOrNull(offsets[59]), + fullScreenReader: reader.readBoolOrNull(offsets[60]), + hideDiscordRpcInIncognito: reader.readBoolOrNull(offsets[61]), + hideItems: reader.readStringList(offsets[62]), + hwdecMode: reader.readStringOrNull(offsets[63]), id: id, - incognitoMode: reader.readBoolOrNull(offsets[62]), - lastTrackerLibraryLocation: reader.readStringOrNull(offsets[63]), - libraryDownloadedChapters: reader.readBoolOrNull(offsets[64]), - libraryFilterAnimeBookMarkedType: reader.readLongOrNull(offsets[65]), - libraryFilterAnimeDownloadType: reader.readLongOrNull(offsets[66]), - libraryFilterAnimeStartedType: reader.readLongOrNull(offsets[67]), - libraryFilterAnimeUnreadType: reader.readLongOrNull(offsets[68]), - libraryFilterMangasBookMarkedType: reader.readLongOrNull(offsets[69]), - libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[70]), - libraryFilterMangasStartedType: reader.readLongOrNull(offsets[71]), - libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[72]), - libraryFilterNovelBookMarkedType: reader.readLongOrNull(offsets[73]), - libraryFilterNovelDownloadType: reader.readLongOrNull(offsets[74]), - libraryFilterNovelStartedType: reader.readLongOrNull(offsets[75]), - libraryFilterNovelUnreadType: reader.readLongOrNull(offsets[76]), - libraryLocalSource: reader.readBoolOrNull(offsets[77]), - libraryShowCategoryTabs: reader.readBoolOrNull(offsets[78]), - libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[79]), - libraryShowLanguage: reader.readBoolOrNull(offsets[80]), - libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[81]), + incognitoMode: reader.readBoolOrNull(offsets[64]), + lastTrackerLibraryLocation: reader.readStringOrNull(offsets[65]), + libraryDownloadedChapters: reader.readBoolOrNull(offsets[66]), + libraryFilterAnimeBookMarkedType: reader.readLongOrNull(offsets[67]), + libraryFilterAnimeDownloadType: reader.readLongOrNull(offsets[68]), + libraryFilterAnimeStartedType: reader.readLongOrNull(offsets[69]), + libraryFilterAnimeUnreadType: reader.readLongOrNull(offsets[70]), + libraryFilterMangasBookMarkedType: reader.readLongOrNull(offsets[71]), + libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[72]), + libraryFilterMangasStartedType: reader.readLongOrNull(offsets[73]), + libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[74]), + libraryFilterNovelBookMarkedType: reader.readLongOrNull(offsets[75]), + libraryFilterNovelDownloadType: reader.readLongOrNull(offsets[76]), + libraryFilterNovelStartedType: reader.readLongOrNull(offsets[77]), + libraryFilterNovelUnreadType: reader.readLongOrNull(offsets[78]), + libraryLocalSource: reader.readBoolOrNull(offsets[79]), + libraryShowCategoryTabs: reader.readBoolOrNull(offsets[80]), + libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[81]), + libraryShowLanguage: reader.readBoolOrNull(offsets[82]), + libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[83]), mangaExtensionsRepo: reader.readObjectList( - offsets[83], + offsets[85], RepoSchema.deserialize, allOffsets, Repo(), ), - mangaGridSize: reader.readLongOrNull(offsets[84]), + mangaGridSize: reader.readLongOrNull(offsets[86]), mangaHomeDisplayType: _SettingsmangaHomeDisplayTypeValueEnumMap[ - reader.readByteOrNull(offsets[85])] ?? + reader.readByteOrNull(offsets[87])] ?? DisplayType.comfortableGrid, - markEpisodeAsSeenType: reader.readLongOrNull(offsets[86]), - mergeLibraryNavMobile: reader.readBoolOrNull(offsets[87]), - navigationOrder: reader.readStringList(offsets[88]), + markEpisodeAsSeenType: reader.readLongOrNull(offsets[88]), + mergeLibraryNavMobile: reader.readBoolOrNull(offsets[89]), + navigationOrder: reader.readStringList(offsets[90]), novelDisplayType: _SettingsnovelDisplayTypeValueEnumMap[ - reader.readByteOrNull(offsets[89])] ?? + reader.readByteOrNull(offsets[91])] ?? DisplayType.comfortableGrid, novelExtensionsRepo: reader.readObjectList( - offsets[90], + offsets[92], RepoSchema.deserialize, allOffsets, Repo(), ), - novelFontSize: reader.readLongOrNull(offsets[91]), - novelLibraryDownloadedChapters: reader.readBoolOrNull(offsets[93]), - novelLibraryLocalSource: reader.readBoolOrNull(offsets[94]), - novelLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[95]), - novelLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[96]), - novelLibraryShowLanguage: reader.readBoolOrNull(offsets[97]), - novelLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[98]), + novelFontSize: reader.readLongOrNull(offsets[93]), + novelLibraryDownloadedChapters: reader.readBoolOrNull(offsets[95]), + novelLibraryLocalSource: reader.readBoolOrNull(offsets[96]), + novelLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[97]), + novelLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[98]), + novelLibraryShowLanguage: reader.readBoolOrNull(offsets[99]), + novelLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[100]), novelTextAlign: _SettingsnovelTextAlignValueEnumMap[ - reader.readByteOrNull(offsets[99])] ?? + reader.readByteOrNull(offsets[101])] ?? NovelTextAlign.left, - onlyIncludePinnedSources: reader.readBoolOrNull(offsets[100]), - pagePreloadAmount: reader.readLongOrNull(offsets[101]), + onlyIncludePinnedSources: reader.readBoolOrNull(offsets[102]), + pagePreloadAmount: reader.readLongOrNull(offsets[103]), personalPageModeList: reader.readObjectList( - offsets[102], + offsets[104], PersonalPageModeSchema.deserialize, allOffsets, PersonalPageMode(), ), personalReaderModeList: reader.readObjectList( - offsets[103], + offsets[105], PersonalReaderModeSchema.deserialize, allOffsets, PersonalReaderMode(), ), playerSubtitleSettings: reader.readObjectOrNull( - offsets[104], + offsets[106], PlayerSubtitleSettingsSchema.deserialize, allOffsets, ), - pureBlackDarkMode: reader.readBoolOrNull(offsets[105]), - relativeTimesTamps: reader.readLongOrNull(offsets[106]), - rpcShowCoverImage: reader.readBoolOrNull(offsets[107]), - rpcShowReadingWatchingProgress: reader.readBoolOrNull(offsets[108]), - rpcShowTitle: reader.readBoolOrNull(offsets[109]), - saveAsCBZArchive: reader.readBoolOrNull(offsets[110]), + pureBlackDarkMode: reader.readBoolOrNull(offsets[107]), + relativeTimesTamps: reader.readLongOrNull(offsets[108]), + rpcShowCoverImage: reader.readBoolOrNull(offsets[109]), + rpcShowReadingWatchingProgress: reader.readBoolOrNull(offsets[110]), + rpcShowTitle: reader.readBoolOrNull(offsets[111]), + saveAsCBZArchive: reader.readBoolOrNull(offsets[112]), scaleType: - _SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[111])] ?? + _SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[113])] ?? ScaleType.fitScreen, - showPagesNumber: reader.readBoolOrNull(offsets[112]), + showPagesNumber: reader.readBoolOrNull(offsets[114]), sortChapterList: reader.readObjectList( - offsets[113], + offsets[115], SortChapterSchema.deserialize, allOffsets, SortChapter(), ), sortLibraryAnime: reader.readObjectOrNull( - offsets[114], - SortLibraryMangaSchema.deserialize, - allOffsets, - ), - sortLibraryManga: reader.readObjectOrNull( - offsets[115], - SortLibraryMangaSchema.deserialize, - allOffsets, - ), - sortLibraryNovel: reader.readObjectOrNull( offsets[116], SortLibraryMangaSchema.deserialize, allOffsets, ), - startDatebackup: reader.readLongOrNull(offsets[117]), - themeIsDark: reader.readBoolOrNull(offsets[118]), - updateProgressAfterReading: reader.readBoolOrNull(offsets[119]), - updatedAt: reader.readLongOrNull(offsets[120]), - useLibass: reader.readBoolOrNull(offsets[121]), - useMpvConfig: reader.readBoolOrNull(offsets[122]), - usePageTapZones: reader.readBoolOrNull(offsets[123]), - useYUV420P: reader.readBoolOrNull(offsets[124]), - userAgent: reader.readStringOrNull(offsets[125]), - volumeBoostCap: reader.readLongOrNull(offsets[126]), + sortLibraryManga: reader.readObjectOrNull( + offsets[117], + SortLibraryMangaSchema.deserialize, + allOffsets, + ), + sortLibraryNovel: reader.readObjectOrNull( + offsets[118], + SortLibraryMangaSchema.deserialize, + allOffsets, + ), + startDatebackup: reader.readLongOrNull(offsets[119]), + themeIsDark: reader.readBoolOrNull(offsets[120]), + updateProgressAfterReading: reader.readBoolOrNull(offsets[121]), + updatedAt: reader.readLongOrNull(offsets[122]), + useLibass: reader.readBoolOrNull(offsets[123]), + useMpvConfig: reader.readBoolOrNull(offsets[124]), + usePageTapZones: reader.readBoolOrNull(offsets[125]), + useYUV420P: reader.readBoolOrNull(offsets[126]), + userAgent: reader.readStringOrNull(offsets[127]), + volumeBoostCap: reader.readLongOrNull(offsets[128]), ); object.chapterFilterBookmarkedList = reader.readObjectList( @@ -1553,17 +1567,17 @@ Settings _settingsDeserialize( allOffsets, ); object.filterScanlatorList = reader.readObjectList( - offsets[53], + offsets[55], FilterScanlatorSchema.deserialize, allOffsets, FilterScanlator(), ); object.locale = reader.readObjectOrNull( - offsets[82], + offsets[84], L10nLocaleSchema.deserialize, allOffsets, ); - object.novelGridSize = reader.readLongOrNull(offsets[92]); + object.novelGridSize = reader.readLongOrNull(offsets[94]); return object; } @@ -1744,38 +1758,38 @@ P _settingsDeserializeProp

( case 52: return (reader.readBoolOrNull(offset)) as P; case 53: + return (reader.readBoolOrNull(offset)) as P; + case 54: + return (reader.readBoolOrNull(offset)) as P; + case 55: return (reader.readObjectList( offset, FilterScanlatorSchema.deserialize, allOffsets, FilterScanlator(), )) as P; - case 54: - return (reader.readDoubleOrNull(offset)) as P; - case 55: - return (reader.readLongOrNull(offset)) as P; case 56: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readDoubleOrNull(offset)) as P; case 57: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 58: return (reader.readBoolOrNull(offset)) as P; case 59: return (reader.readBoolOrNull(offset)) as P; case 60: - return (reader.readStringList(offset)) as P; - case 61: - return (reader.readStringOrNull(offset)) as P; - case 62: return (reader.readBoolOrNull(offset)) as P; + case 61: + return (reader.readBoolOrNull(offset)) as P; + case 62: + return (reader.readStringList(offset)) as P; case 63: return (reader.readStringOrNull(offset)) as P; case 64: return (reader.readBoolOrNull(offset)) as P; case 65: - return (reader.readLongOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 66: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 67: return (reader.readLongOrNull(offset)) as P; case 68: @@ -1797,9 +1811,9 @@ P _settingsDeserializeProp

( case 76: return (reader.readLongOrNull(offset)) as P; case 77: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 78: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 79: return (reader.readBoolOrNull(offset)) as P; case 80: @@ -1807,49 +1821,49 @@ P _settingsDeserializeProp

( case 81: return (reader.readBoolOrNull(offset)) as P; case 82: + return (reader.readBoolOrNull(offset)) as P; + case 83: + return (reader.readBoolOrNull(offset)) as P; + case 84: return (reader.readObjectOrNull( offset, L10nLocaleSchema.deserialize, allOffsets, )) as P; - case 83: + case 85: return (reader.readObjectList( offset, RepoSchema.deserialize, allOffsets, Repo(), )) as P; - case 84: - return (reader.readLongOrNull(offset)) as P; - case 85: - return (_SettingsmangaHomeDisplayTypeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - DisplayType.comfortableGrid) as P; case 86: return (reader.readLongOrNull(offset)) as P; case 87: - return (reader.readBoolOrNull(offset)) as P; + return (_SettingsmangaHomeDisplayTypeValueEnumMap[ + reader.readByteOrNull(offset)] ?? + DisplayType.comfortableGrid) as P; case 88: - return (reader.readStringList(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 89: + return (reader.readBoolOrNull(offset)) as P; + case 90: + return (reader.readStringList(offset)) as P; + case 91: return (_SettingsnovelDisplayTypeValueEnumMap[ reader.readByteOrNull(offset)] ?? DisplayType.comfortableGrid) as P; - case 90: + case 92: return (reader.readObjectList( offset, RepoSchema.deserialize, allOffsets, Repo(), )) as P; - case 91: - return (reader.readLongOrNull(offset)) as P; - case 92: - return (reader.readLongOrNull(offset)) as P; case 93: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 94: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 95: return (reader.readBoolOrNull(offset)) as P; case 96: @@ -1859,69 +1873,61 @@ P _settingsDeserializeProp

( case 98: return (reader.readBoolOrNull(offset)) as P; case 99: - return (_SettingsnovelTextAlignValueEnumMap[ - reader.readByteOrNull(offset)] ?? - NovelTextAlign.left) as P; + return (reader.readBoolOrNull(offset)) as P; case 100: return (reader.readBoolOrNull(offset)) as P; case 101: - return (reader.readLongOrNull(offset)) as P; + return (_SettingsnovelTextAlignValueEnumMap[ + reader.readByteOrNull(offset)] ?? + NovelTextAlign.left) as P; case 102: + return (reader.readBoolOrNull(offset)) as P; + case 103: + return (reader.readLongOrNull(offset)) as P; + case 104: return (reader.readObjectList( offset, PersonalPageModeSchema.deserialize, allOffsets, PersonalPageMode(), )) as P; - case 103: + case 105: return (reader.readObjectList( offset, PersonalReaderModeSchema.deserialize, allOffsets, PersonalReaderMode(), )) as P; - case 104: + case 106: return (reader.readObjectOrNull( offset, PlayerSubtitleSettingsSchema.deserialize, allOffsets, )) as P; - case 105: - return (reader.readBoolOrNull(offset)) as P; - case 106: - return (reader.readLongOrNull(offset)) as P; case 107: return (reader.readBoolOrNull(offset)) as P; case 108: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 109: return (reader.readBoolOrNull(offset)) as P; case 110: return (reader.readBoolOrNull(offset)) as P; case 111: - return (_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offset)] ?? - ScaleType.fitScreen) as P; + return (reader.readBoolOrNull(offset)) as P; case 112: return (reader.readBoolOrNull(offset)) as P; case 113: + return (_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offset)] ?? + ScaleType.fitScreen) as P; + case 114: + return (reader.readBoolOrNull(offset)) as P; + case 115: return (reader.readObjectList( offset, SortChapterSchema.deserialize, allOffsets, SortChapter(), )) as P; - case 114: - return (reader.readObjectOrNull( - offset, - SortLibraryMangaSchema.deserialize, - allOffsets, - )) as P; - case 115: - return (reader.readObjectOrNull( - offset, - SortLibraryMangaSchema.deserialize, - allOffsets, - )) as P; case 116: return (reader.readObjectOrNull( offset, @@ -1929,24 +1935,36 @@ P _settingsDeserializeProp

( allOffsets, )) as P; case 117: - return (reader.readLongOrNull(offset)) as P; + return (reader.readObjectOrNull( + offset, + SortLibraryMangaSchema.deserialize, + allOffsets, + )) as P; case 118: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readObjectOrNull( + offset, + SortLibraryMangaSchema.deserialize, + allOffsets, + )) as P; case 119: - return (reader.readBoolOrNull(offset)) as P; - case 120: return (reader.readLongOrNull(offset)) as P; + case 120: + return (reader.readBoolOrNull(offset)) as P; case 121: return (reader.readBoolOrNull(offset)) as P; case 122: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 123: return (reader.readBoolOrNull(offset)) as P; case 124: return (reader.readBoolOrNull(offset)) as P; case 125: - return (reader.readStringOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 126: + return (reader.readBoolOrNull(offset)) as P; + case 127: + return (reader.readStringOrNull(offset)) as P; + case 128: return (reader.readLongOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); @@ -5715,6 +5733,34 @@ extension SettingsQueryFilter }); } + QueryBuilder + enableAutoPiPIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'enableAutoPiP', + )); + }); + } + + QueryBuilder + enableAutoPiPIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'enableAutoPiP', + )); + }); + } + + QueryBuilder enableAutoPiPEqualTo( + bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'enableAutoPiP', + value: value, + )); + }); + } + QueryBuilder enableAutoSkipIsNull() { return QueryBuilder.apply(this, (query) { @@ -5827,6 +5873,32 @@ extension SettingsQueryFilter }); } + QueryBuilder enablePiPIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'enablePiP', + )); + }); + } + + QueryBuilder enablePiPIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'enablePiP', + )); + }); + } + + QueryBuilder enablePiPEqualTo( + bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'enablePiP', + value: value, + )); + }); + } + QueryBuilder filterScanlatorListIsNull() { return QueryBuilder.apply(this, (query) { @@ -11051,6 +11123,18 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByEnableAutoPiP() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableAutoPiP', Sort.asc); + }); + } + + QueryBuilder sortByEnableAutoPiPDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableAutoPiP', Sort.desc); + }); + } + QueryBuilder sortByEnableAutoSkip() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableAutoSkip', Sort.asc); @@ -11101,6 +11185,18 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByEnablePiP() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enablePiP', Sort.asc); + }); + } + + QueryBuilder sortByEnablePiPDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enablePiP', Sort.desc); + }); + } + QueryBuilder sortByFlexColorSchemeBlendLevel() { return QueryBuilder.apply(this, (query) { @@ -12396,6 +12492,18 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByEnableAutoPiP() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableAutoPiP', Sort.asc); + }); + } + + QueryBuilder thenByEnableAutoPiPDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableAutoPiP', Sort.desc); + }); + } + QueryBuilder thenByEnableAutoSkip() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableAutoSkip', Sort.asc); @@ -12446,6 +12554,18 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByEnablePiP() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enablePiP', Sort.asc); + }); + } + + QueryBuilder thenByEnablePiPDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enablePiP', Sort.desc); + }); + } + QueryBuilder thenByFlexColorSchemeBlendLevel() { return QueryBuilder.apply(this, (query) { @@ -13517,6 +13637,12 @@ extension SettingsQueryWhereDistinct }); } + QueryBuilder distinctByEnableAutoPiP() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'enableAutoPiP'); + }); + } + QueryBuilder distinctByEnableAutoSkip() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'enableAutoSkip'); @@ -13542,6 +13668,12 @@ extension SettingsQueryWhereDistinct }); } + QueryBuilder distinctByEnablePiP() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'enablePiP'); + }); + } + QueryBuilder distinctByFlexColorSchemeBlendLevel() { return QueryBuilder.apply(this, (query) { @@ -14292,6 +14424,12 @@ extension SettingsQueryProperty }); } + QueryBuilder enableAutoPiPProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'enableAutoPiP'); + }); + } + QueryBuilder enableAutoSkipProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'enableAutoSkip'); @@ -14317,6 +14455,12 @@ extension SettingsQueryProperty }); } + QueryBuilder enablePiPProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'enablePiP'); + }); + } + QueryBuilder?, QQueryOperations> filterScanlatorListProperty() { return QueryBuilder.apply(this, (query) { diff --git a/lib/modules/anime/anime_player_view.dart b/lib/modules/anime/anime_player_view.dart index 86d26e15..9d45df3c 100644 --- a/lib/modules/anime/anime_player_view.dart +++ b/lib/modules/anime/anime_player_view.dart @@ -852,6 +852,16 @@ mp.register_script_message('call_button_${button.id}_long', button${button.id}lo // Else (if user already watches an episode and just changes it), // stay in the same mode, the user left it in. try { + final enablePiP = ref.read(enablePiPStateProvider); + final enableAutoPiP = ref.read(enableAutoPiPStateProvider); + + /// only available for iOS 15+ + if (enablePiP && _controller.isPictureInPictureAvailable()) { + _controller.enablePictureInPicture(); + if (enableAutoPiP) { + _controller.enableAutoPictureInPicture(); + } + } final defaultSkipIntroLength = ref.read( defaultSkipIntroLengthStateProvider, ); @@ -1944,53 +1954,12 @@ mp.register_script_message('call_button_${button.id}_long', button${button.id}lo } }, ), - // IconButton( - // onPressed: () { - // showDialog( - // context: context, - // builder: (context) { - // return AlertDialog( - // scrollable: true, - // title: Text("Player Settings"), - // content: SizedBox( - // width: context.width(0.8), - // child: Column( - // crossAxisAlignment: - // CrossAxisAlignment.start, - // children: [ - // SwitchListTile( - // value: false, - // title: Text( - // "Enable Volume and Brightness Gestures", - // style: TextStyle( - // color: Theme.of(context) - // .textTheme - // .bodyLarge! - // .color! - // .withValues(alpha: 0.9), - // fontSize: 14), - // ), - // onChanged: (value) {}), - // SwitchListTile( - // value: false, - // title: Text( - // "Enable Horizonal Seek Gestures", - // style: TextStyle( - // color: Theme.of(context) - // .textTheme - // .bodyLarge! - // .color! - // .withValues(alpha: 0.9), - // fontSize: 14), - // ), - // onChanged: (value) {}), - // ], - // ), - // ), - // ); - // }); - // }, - // icon: Icon(Icons.adaptive.more)) + if (_controller.isPictureInPictureAvailable()) + IconButton( + onPressed: () async => + await _controller.enterPictureInPicture(), + icon: const Icon(Icons.featured_video_outlined), + ), ], ), ], diff --git a/lib/modules/more/data_and_storage/providers/restore.g.dart b/lib/modules/more/data_and_storage/providers/restore.g.dart index aed202b8..4d55b176 100644 --- a/lib/modules/more/data_and_storage/providers/restore.g.dart +++ b/lib/modules/more/data_and_storage/providers/restore.g.dart @@ -173,7 +173,7 @@ class _DoRestoreProviderElement extends AutoDisposeProviderElement BuildContext get context => (origin as DoRestoreProvider).context; } -String _$restoreBackupHash() => r'0dc4d911f0b84fd7fa30acf690799b196db4de6e'; +String _$restoreBackupHash() => r'adc705e1e65dedcc919a525d7bd14f6451620c43'; /// See also [restoreBackup]. @ProviderFor(restoreBackup) diff --git a/lib/modules/more/settings/player/player_screen.dart b/lib/modules/more/settings/player/player_screen.dart index bf1c64e4..192fcae2 100644 --- a/lib/modules/more/settings/player/player_screen.dart +++ b/lib/modules/more/settings/player/player_screen.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:mangayomi/modules/more/settings/player/providers/player_state_provider.dart'; @@ -18,6 +20,8 @@ class PlayerScreen extends ConsumerStatefulWidget { class _PlayerScreenState extends ConsumerState { @override Widget build(BuildContext context) { + final enablePiP = ref.watch(enablePiPStateProvider); + final enableAutoPiP = ref.watch(enableAutoPiPStateProvider); final defaultSubtitleLang = ref.watch(defaultSubtitleLangStateProvider); final markEpisodeAsSeenType = ref.watch(markEpisodeAsSeenTypeStateProvider); final defaultSkipIntroLength = ref.watch( @@ -38,6 +42,22 @@ class _PlayerScreenState extends ConsumerState { body: SingleChildScrollView( child: Column( children: [ + if (Platform.isIOS) + SwitchListTile( + value: enablePiP, + title: Text(context.l10n.enable_pip), + onChanged: (value) { + ref.read(enablePiPStateProvider.notifier).set(value); + }, + ), + if (Platform.isIOS) + SwitchListTile( + value: enableAutoPiP, + title: Text(context.l10n.enable_auto_pip), + onChanged: (value) { + ref.read(enableAutoPiPStateProvider.notifier).set(value); + }, + ), ListTile( onTap: () { showDialog( diff --git a/lib/modules/more/settings/player/providers/player_state_provider.dart b/lib/modules/more/settings/player/providers/player_state_provider.dart index 5996fb87..7ae4782d 100644 --- a/lib/modules/more/settings/player/providers/player_state_provider.dart +++ b/lib/modules/more/settings/player/providers/player_state_provider.dart @@ -5,6 +5,46 @@ import 'package:mangayomi/models/settings.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'player_state_provider.g.dart'; +@riverpod +class EnablePiPState extends _$EnablePiPState { + @override + bool build() { + return isar.settings.getSync(227)!.enablePiP ?? true; + } + + void set(bool value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..enablePiP = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + +@riverpod +class EnableAutoPiPState extends _$EnableAutoPiPState { + @override + bool build() { + return isar.settings.getSync(227)!.enableAutoPiP ?? true; + } + + void set(bool value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..enableAutoPiP = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + @riverpod class DefaultSubtitleLangState extends _$DefaultSubtitleLangState { @override diff --git a/lib/modules/more/settings/player/providers/player_state_provider.g.dart b/lib/modules/more/settings/player/providers/player_state_provider.g.dart index 58df635c..7fb1d029 100644 --- a/lib/modules/more/settings/player/providers/player_state_provider.g.dart +++ b/lib/modules/more/settings/player/providers/player_state_provider.g.dart @@ -6,6 +6,39 @@ part of 'player_state_provider.dart'; // RiverpodGenerator // ************************************************************************** +String _$enablePiPStateHash() => r'e99c6a5dc9d6fe55c6b33b03d2d74e55ae5f4199'; + +/// See also [EnablePiPState]. +@ProviderFor(EnablePiPState) +final enablePiPStateProvider = + AutoDisposeNotifierProvider.internal( + EnablePiPState.new, + name: r'enablePiPStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$enablePiPStateHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef _$EnablePiPState = AutoDisposeNotifier; +String _$enableAutoPiPStateHash() => + r'5d0e53cccb9be4cedb8567ce1cd7b5fe3ff2e52f'; + +/// See also [EnableAutoPiPState]. +@ProviderFor(EnableAutoPiPState) +final enableAutoPiPStateProvider = + AutoDisposeNotifierProvider.internal( + EnableAutoPiPState.new, + name: r'enableAutoPiPStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$enableAutoPiPStateHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef _$EnableAutoPiPState = AutoDisposeNotifier; String _$defaultSubtitleLangStateHash() => r'ae7b275e168dd15117512d9ed1c474736458753b'; diff --git a/lib/utils/date.dart b/lib/utils/date.dart index 99fa3aaa..509c4eec 100644 --- a/lib/utils/date.dart +++ b/lib/utils/date.dart @@ -79,7 +79,7 @@ String dateFormat( showInDaysFuture ? l10n.in_n_days(difference) : l10n.n_days_ago(difference), - _ => l10n.a_week_ago, + _ => showInDaysFuture ? l10n.next_week : l10n.a_week_ago, }; } } diff --git a/pubspec.lock b/pubspec.lock index d7a06737..5dea9a50 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1164,7 +1164,7 @@ packages: description: path: media_kit ref: HEAD - resolved-ref: "085be0ec40a95f351b2f3c11c0ff017d4e0a1498" + resolved-ref: f26da7cc3725e109c63e1300639df00cd65992a3 url: "https://github.com/Schnitzel5/media-kit.git" source: git version: "1.2.0" @@ -1173,7 +1173,7 @@ packages: description: path: "libs/android/media_kit_libs_android_video" ref: HEAD - resolved-ref: "085be0ec40a95f351b2f3c11c0ff017d4e0a1498" + resolved-ref: f26da7cc3725e109c63e1300639df00cd65992a3 url: "https://github.com/Schnitzel5/media-kit.git" source: git version: "1.3.7" @@ -1182,7 +1182,7 @@ packages: description: path: "libs/ios/media_kit_libs_ios_video" ref: HEAD - resolved-ref: "085be0ec40a95f351b2f3c11c0ff017d4e0a1498" + resolved-ref: f26da7cc3725e109c63e1300639df00cd65992a3 url: "https://github.com/Schnitzel5/media-kit.git" source: git version: "1.1.4" @@ -1191,7 +1191,7 @@ packages: description: path: "libs/linux/media_kit_libs_linux" ref: HEAD - resolved-ref: "085be0ec40a95f351b2f3c11c0ff017d4e0a1498" + resolved-ref: f26da7cc3725e109c63e1300639df00cd65992a3 url: "https://github.com/Schnitzel5/media-kit.git" source: git version: "1.2.1" @@ -1200,7 +1200,7 @@ packages: description: path: "libs/macos/media_kit_libs_macos_video" ref: HEAD - resolved-ref: "085be0ec40a95f351b2f3c11c0ff017d4e0a1498" + resolved-ref: f26da7cc3725e109c63e1300639df00cd65992a3 url: "https://github.com/Schnitzel5/media-kit.git" source: git version: "1.1.4" @@ -1209,7 +1209,7 @@ packages: description: path: "libs/universal/media_kit_libs_video" ref: HEAD - resolved-ref: "085be0ec40a95f351b2f3c11c0ff017d4e0a1498" + resolved-ref: f26da7cc3725e109c63e1300639df00cd65992a3 url: "https://github.com/Schnitzel5/media-kit.git" source: git version: "1.0.6" @@ -1218,7 +1218,7 @@ packages: description: path: "libs/windows/media_kit_libs_windows_video" ref: HEAD - resolved-ref: "085be0ec40a95f351b2f3c11c0ff017d4e0a1498" + resolved-ref: f26da7cc3725e109c63e1300639df00cd65992a3 url: "https://github.com/Schnitzel5/media-kit.git" source: git version: "1.0.11" @@ -1227,7 +1227,7 @@ packages: description: path: media_kit_video ref: HEAD - resolved-ref: "085be0ec40a95f351b2f3c11c0ff017d4e0a1498" + resolved-ref: f26da7cc3725e109c63e1300639df00cd65992a3 url: "https://github.com/Schnitzel5/media-kit.git" source: git version: "1.3.0"