diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 50bd5d0b..a21b9db9 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -7162,6 +7162,7 @@ "appearance": "Appearance", "cardSize": "Home Row Card Display Size", "externalPlayerApp": "External player app", + "externalPlayerAppDescription": "Set external player to enable long-press play option", "externalPlayerAskEachTimeSubtitle": "Show app chooser when playback starts.", "loadingInstalledPlayers": "Loading installed players...", "connection": "Connection", @@ -7180,7 +7181,7 @@ "playerRouting": "Player Routing", "preferSoftwareDecoders": "Prefer software decoders", "preferSoftwareDecodersSubtitle": "Use FFmpeg (audio) and libgav1 (AV1) before hardware decoders. Disable if HDMI audio passthrough breaks.", - "useExternalPlayer": "Use external player", + "useExternalPlayer": "Always use external player", "useExternalPlayerSubtitle": "Open video playback in your selected external app on Android TV.", "automaticQueuing": "Automatic Queuing", "preferSdhSubtitles": "Prefer SDH subtitles", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index fcbe0b45..72a32937 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -13463,6 +13463,12 @@ abstract class AppLocalizations { /// **'External player app'** String get externalPlayerApp; + /// No description provided for @externalPlayerAppDescription. + /// + /// In en, this message translates to: + /// **'Set external player to enable long-press play option'** + String get externalPlayerAppDescription; + /// No description provided for @externalPlayerAskEachTimeSubtitle. /// /// In en, this message translates to: @@ -13574,7 +13580,7 @@ abstract class AppLocalizations { /// No description provided for @useExternalPlayer. /// /// In en, this message translates to: - /// **'Use external player'** + /// **'Always use external player'** String get useExternalPlayer; /// No description provided for @useExternalPlayerSubtitle. diff --git a/lib/l10n/app_localizations_af.dart b/lib/l10n/app_localizations_af.dart index 6bd4ea14..bb964e45 100644 --- a/lib/l10n/app_localizations_af.dart +++ b/lib/l10n/app_localizations_af.dart @@ -7572,6 +7572,10 @@ class AppLocalizationsAf extends AppLocalizations { @override String get externalPlayerApp => 'Eksterne speler-app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Wys programkieser wanneer afspeel begin.'; diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index ca44e0f4..86098368 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -7522,6 +7522,10 @@ class AppLocalizationsAr extends AppLocalizations { @override String get externalPlayerApp => 'تطبيق مشغل خارجي'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'إظهار منتقي التطبيقات عند بدء التشغيل.'; diff --git a/lib/l10n/app_localizations_be.dart b/lib/l10n/app_localizations_be.dart index cda4dc5a..50df3d04 100644 --- a/lib/l10n/app_localizations_be.dart +++ b/lib/l10n/app_localizations_be.dart @@ -7595,6 +7595,10 @@ class AppLocalizationsBe extends AppLocalizations { @override String get externalPlayerApp => 'Прыкладанне для вонкавага прайгравальніка'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Паказваць сродак выбару праграм, калі пачынаецца прайграванне.'; diff --git a/lib/l10n/app_localizations_bg.dart b/lib/l10n/app_localizations_bg.dart index 549c31d9..6b9a6408 100644 --- a/lib/l10n/app_localizations_bg.dart +++ b/lib/l10n/app_localizations_bg.dart @@ -7638,6 +7638,10 @@ class AppLocalizationsBg extends AppLocalizations { @override String get externalPlayerApp => 'Приложение за външен плейър'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Показване на инструмента за избор на приложение, когато възпроизвеждането започне.'; diff --git a/lib/l10n/app_localizations_bn.dart b/lib/l10n/app_localizations_bn.dart index ee305f0b..cfd4fe2d 100644 --- a/lib/l10n/app_localizations_bn.dart +++ b/lib/l10n/app_localizations_bn.dart @@ -7559,6 +7559,10 @@ class AppLocalizationsBn extends AppLocalizations { @override String get externalPlayerApp => 'এক্সটার্নাল প্লেয়ার অ্যাপ'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'প্লেব্যাক শুরু হলে অ্যাপ চয়নকারী দেখান।'; diff --git a/lib/l10n/app_localizations_ca.dart b/lib/l10n/app_localizations_ca.dart index 771f538a..ba8e5020 100644 --- a/lib/l10n/app_localizations_ca.dart +++ b/lib/l10n/app_localizations_ca.dart @@ -7677,6 +7677,10 @@ class AppLocalizationsCa extends AppLocalizations { @override String get externalPlayerApp => 'Aplicació de reproductor extern'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Mostra el selector d\'aplicacions quan s\'iniciï la reproducció.'; diff --git a/lib/l10n/app_localizations_cs.dart b/lib/l10n/app_localizations_cs.dart index 6dfd95e4..c20b4658 100644 --- a/lib/l10n/app_localizations_cs.dart +++ b/lib/l10n/app_localizations_cs.dart @@ -7576,6 +7576,10 @@ class AppLocalizationsCs extends AppLocalizations { @override String get externalPlayerApp => 'Aplikace pro externí přehrávač'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Při spuštění přehrávání zobrazit výběr aplikací.'; diff --git a/lib/l10n/app_localizations_cy.dart b/lib/l10n/app_localizations_cy.dart index 7f61f35e..58e56f3a 100644 --- a/lib/l10n/app_localizations_cy.dart +++ b/lib/l10n/app_localizations_cy.dart @@ -7590,6 +7590,10 @@ class AppLocalizationsCy extends AppLocalizations { @override String get externalPlayerApp => 'Ap chwaraewr allanol'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Dangos dewisydd ap pan fydd chwarae yn dechrau.'; diff --git a/lib/l10n/app_localizations_da.dart b/lib/l10n/app_localizations_da.dart index ec21b708..474ff1f7 100644 --- a/lib/l10n/app_localizations_da.dart +++ b/lib/l10n/app_localizations_da.dart @@ -7564,6 +7564,10 @@ class AppLocalizationsDa extends AppLocalizations { @override String get externalPlayerApp => 'Ekstern afspiller app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Vis appvælgeren, når afspilningen starter.'; diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index a90ca0ef..f71c3bcc 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -7632,6 +7632,10 @@ class AppLocalizationsDe extends AppLocalizations { @override String get externalPlayerApp => 'Externe Player-App'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'App-Auswahl anzeigen, wenn die Wiedergabe beginnt.'; diff --git a/lib/l10n/app_localizations_el.dart b/lib/l10n/app_localizations_el.dart index 7fce188f..54196313 100644 --- a/lib/l10n/app_localizations_el.dart +++ b/lib/l10n/app_localizations_el.dart @@ -7681,6 +7681,10 @@ class AppLocalizationsEl extends AppLocalizations { @override String get externalPlayerApp => 'Εξωτερική εφαρμογή αναπαραγωγής'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Εμφάνιση του επιλογέα εφαρμογής κατά την έναρξη της αναπαραγωγής.'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 82e6c02e..e61136c0 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -7509,6 +7509,10 @@ class AppLocalizationsEn extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; @@ -7570,7 +7574,7 @@ class AppLocalizationsEn extends AppLocalizations { 'Use FFmpeg (audio) and libgav1 (AV1) before hardware decoders. Disable if HDMI audio passthrough breaks.'; @override - String get useExternalPlayer => 'Use external player'; + String get useExternalPlayer => 'Always use external player'; @override String get useExternalPlayerSubtitle => diff --git a/lib/l10n/app_localizations_eo.dart b/lib/l10n/app_localizations_eo.dart index 5e0a7704..96832577 100644 --- a/lib/l10n/app_localizations_eo.dart +++ b/lib/l10n/app_localizations_eo.dart @@ -7555,6 +7555,10 @@ class AppLocalizationsEo extends AppLocalizations { @override String get externalPlayerApp => 'Ekstera ludanta aplikaĵo'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Montru aplikan elektilon kiam reproduktado komenciĝas.'; diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index 48015d9f..e186c5a2 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -7641,6 +7641,10 @@ class AppLocalizationsEs extends AppLocalizations { @override String get externalPlayerApp => 'Aplicación de reproductor externo'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Mostrar el selector de aplicaciones cuando comience la reproducción.'; diff --git a/lib/l10n/app_localizations_et.dart b/lib/l10n/app_localizations_et.dart index e4ea689f..c4dc43ea 100644 --- a/lib/l10n/app_localizations_et.dart +++ b/lib/l10n/app_localizations_et.dart @@ -7579,6 +7579,10 @@ class AppLocalizationsEt extends AppLocalizations { @override String get externalPlayerApp => 'Väline mängija rakendus'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Kuva rakenduse valija, kui taasesitus algab.'; diff --git a/lib/l10n/app_localizations_fa.dart b/lib/l10n/app_localizations_fa.dart index 8583983d..3b296696 100644 --- a/lib/l10n/app_localizations_fa.dart +++ b/lib/l10n/app_localizations_fa.dart @@ -7527,6 +7527,10 @@ class AppLocalizationsFa extends AppLocalizations { @override String get externalPlayerApp => 'برنامه پخش خارجی'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'نمایش انتخابگر برنامه هنگام شروع پخش.'; diff --git a/lib/l10n/app_localizations_fi.dart b/lib/l10n/app_localizations_fi.dart index c9178436..c5d61e82 100644 --- a/lib/l10n/app_localizations_fi.dart +++ b/lib/l10n/app_localizations_fi.dart @@ -7591,6 +7591,10 @@ class AppLocalizationsFi extends AppLocalizations { @override String get externalPlayerApp => 'Ulkoinen soitinsovellus'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Näytä sovelluksen valitsin, kun toisto alkaa.'; diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index cbc81677..48c447cd 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -7650,6 +7650,10 @@ class AppLocalizationsFr extends AppLocalizations { @override String get externalPlayerApp => 'Application de lecteur externe'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Afficher le sélecteur d\'application lorsque la lecture démarre.'; diff --git a/lib/l10n/app_localizations_gl.dart b/lib/l10n/app_localizations_gl.dart index 40354970..3107e3d8 100644 --- a/lib/l10n/app_localizations_gl.dart +++ b/lib/l10n/app_localizations_gl.dart @@ -7664,6 +7664,10 @@ class AppLocalizationsGl extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_he.dart b/lib/l10n/app_localizations_he.dart index ae166ebf..9df82f6b 100644 --- a/lib/l10n/app_localizations_he.dart +++ b/lib/l10n/app_localizations_he.dart @@ -7463,6 +7463,10 @@ class AppLocalizationsHe extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_hi.dart b/lib/l10n/app_localizations_hi.dart index 760c40be..1a9af715 100644 --- a/lib/l10n/app_localizations_hi.dart +++ b/lib/l10n/app_localizations_hi.dart @@ -7545,6 +7545,10 @@ class AppLocalizationsHi extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_hr.dart b/lib/l10n/app_localizations_hr.dart index e28fd7cd..e521ffb2 100644 --- a/lib/l10n/app_localizations_hr.dart +++ b/lib/l10n/app_localizations_hr.dart @@ -7589,6 +7589,10 @@ class AppLocalizationsHr extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_hu.dart b/lib/l10n/app_localizations_hu.dart index 6269d33a..1901da03 100644 --- a/lib/l10n/app_localizations_hu.dart +++ b/lib/l10n/app_localizations_hu.dart @@ -7632,6 +7632,10 @@ class AppLocalizationsHu extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index d50c9d6a..85600ae4 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -7577,6 +7577,10 @@ class AppLocalizationsId extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_it.dart b/lib/l10n/app_localizations_it.dart index 1fa9b740..80ea8fcb 100644 --- a/lib/l10n/app_localizations_it.dart +++ b/lib/l10n/app_localizations_it.dart @@ -7608,6 +7608,10 @@ class AppLocalizationsIt extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 6edcad39..8b7d83e6 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -7371,6 +7371,10 @@ class AppLocalizationsJa extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_kk.dart b/lib/l10n/app_localizations_kk.dart index a64c1d77..809042ee 100644 --- a/lib/l10n/app_localizations_kk.dart +++ b/lib/l10n/app_localizations_kk.dart @@ -7600,6 +7600,10 @@ class AppLocalizationsKk extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_kn.dart b/lib/l10n/app_localizations_kn.dart index b10dd854..fdfd2393 100644 --- a/lib/l10n/app_localizations_kn.dart +++ b/lib/l10n/app_localizations_kn.dart @@ -7616,6 +7616,10 @@ class AppLocalizationsKn extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index 20364259..a0d05959 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -7366,6 +7366,10 @@ class AppLocalizationsKo extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_lt.dart b/lib/l10n/app_localizations_lt.dart index 0eba97de..a670156b 100644 --- a/lib/l10n/app_localizations_lt.dart +++ b/lib/l10n/app_localizations_lt.dart @@ -7595,6 +7595,10 @@ class AppLocalizationsLt extends AppLocalizations { @override String get externalPlayerApp => 'Išorinio grotuvo programa'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Rodyti programos parinkiklį, kai prasideda atkūrimas.'; diff --git a/lib/l10n/app_localizations_lv.dart b/lib/l10n/app_localizations_lv.dart index 849cdee9..7b90712f 100644 --- a/lib/l10n/app_localizations_lv.dart +++ b/lib/l10n/app_localizations_lv.dart @@ -7603,6 +7603,10 @@ class AppLocalizationsLv extends AppLocalizations { @override String get externalPlayerApp => 'Ārējā atskaņotāja lietotne'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Rādīt lietotņu atlasītāju, kad sākas atskaņošana.'; diff --git a/lib/l10n/app_localizations_mk.dart b/lib/l10n/app_localizations_mk.dart index 69e4ce9a..79c37c02 100644 --- a/lib/l10n/app_localizations_mk.dart +++ b/lib/l10n/app_localizations_mk.dart @@ -7618,6 +7618,10 @@ class AppLocalizationsMk extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_ml.dart b/lib/l10n/app_localizations_ml.dart index 3e75ad3d..824912fd 100644 --- a/lib/l10n/app_localizations_ml.dart +++ b/lib/l10n/app_localizations_ml.dart @@ -7661,6 +7661,10 @@ class AppLocalizationsMl extends AppLocalizations { @override String get externalPlayerApp => 'ബാഹ്യ പ്ലെയർ ആപ്പ്'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'പ്ലേബാക്ക് ആരംഭിക്കുമ്പോൾ ആപ്പ് ചൂസർ കാണിക്കുക.'; diff --git a/lib/l10n/app_localizations_mn.dart b/lib/l10n/app_localizations_mn.dart index 7fdf1bbe..5c0dc80f 100644 --- a/lib/l10n/app_localizations_mn.dart +++ b/lib/l10n/app_localizations_mn.dart @@ -7595,6 +7595,10 @@ class AppLocalizationsMn extends AppLocalizations { @override String get externalPlayerApp => 'Гадаад тоглуулагчийн програм'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Дахин тоглуулах үед програм сонгогчийг харуул.'; diff --git a/lib/l10n/app_localizations_nb.dart b/lib/l10n/app_localizations_nb.dart index 9199cb8b..bc7ab419 100644 --- a/lib/l10n/app_localizations_nb.dart +++ b/lib/l10n/app_localizations_nb.dart @@ -7568,6 +7568,10 @@ class AppLocalizationsNb extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_nl.dart b/lib/l10n/app_localizations_nl.dart index 2aa9fe0a..d7453cee 100644 --- a/lib/l10n/app_localizations_nl.dart +++ b/lib/l10n/app_localizations_nl.dart @@ -7599,6 +7599,10 @@ class AppLocalizationsNl extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_pa.dart b/lib/l10n/app_localizations_pa.dart index 117d0dfb..71c957a3 100644 --- a/lib/l10n/app_localizations_pa.dart +++ b/lib/l10n/app_localizations_pa.dart @@ -7548,6 +7548,10 @@ class AppLocalizationsPa extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_pl.dart b/lib/l10n/app_localizations_pl.dart index a08cc79d..3f429135 100644 --- a/lib/l10n/app_localizations_pl.dart +++ b/lib/l10n/app_localizations_pl.dart @@ -7610,6 +7610,10 @@ class AppLocalizationsPl extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index 7bf4e297..3a5fc88d 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -7622,6 +7622,10 @@ class AppLocalizationsPt extends AppLocalizations { @override String get externalPlayerApp => 'Aplicativo de player externo'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Mostrar seletor de aplicativos quando a reprodução começar.'; diff --git a/lib/l10n/app_localizations_ro.dart b/lib/l10n/app_localizations_ro.dart index 0be561a9..89356d75 100644 --- a/lib/l10n/app_localizations_ro.dart +++ b/lib/l10n/app_localizations_ro.dart @@ -7613,6 +7613,10 @@ class AppLocalizationsRo extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index e80ce049..6e97db9e 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -7619,6 +7619,10 @@ class AppLocalizationsRu extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_si.dart b/lib/l10n/app_localizations_si.dart index e0732938..588f97c4 100644 --- a/lib/l10n/app_localizations_si.dart +++ b/lib/l10n/app_localizations_si.dart @@ -7556,6 +7556,10 @@ class AppLocalizationsSi extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_sk.dart b/lib/l10n/app_localizations_sk.dart index f76a5db9..ff26cf31 100644 --- a/lib/l10n/app_localizations_sk.dart +++ b/lib/l10n/app_localizations_sk.dart @@ -7600,6 +7600,10 @@ class AppLocalizationsSk extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_sl.dart b/lib/l10n/app_localizations_sl.dart index deab6068..6db29d3a 100644 --- a/lib/l10n/app_localizations_sl.dart +++ b/lib/l10n/app_localizations_sl.dart @@ -7597,6 +7597,10 @@ class AppLocalizationsSl extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_sq.dart b/lib/l10n/app_localizations_sq.dart index d226440c..1f6cfb18 100644 --- a/lib/l10n/app_localizations_sq.dart +++ b/lib/l10n/app_localizations_sq.dart @@ -7628,6 +7628,10 @@ class AppLocalizationsSq extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_sr.dart b/lib/l10n/app_localizations_sr.dart index 931b19f3..045df63f 100644 --- a/lib/l10n/app_localizations_sr.dart +++ b/lib/l10n/app_localizations_sr.dart @@ -7593,6 +7593,10 @@ class AppLocalizationsSr extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_sv.dart b/lib/l10n/app_localizations_sv.dart index 23313eb4..b3753285 100644 --- a/lib/l10n/app_localizations_sv.dart +++ b/lib/l10n/app_localizations_sv.dart @@ -7579,6 +7579,10 @@ class AppLocalizationsSv extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_sw.dart b/lib/l10n/app_localizations_sw.dart index 0696b245..829d138f 100644 --- a/lib/l10n/app_localizations_sw.dart +++ b/lib/l10n/app_localizations_sw.dart @@ -7620,6 +7620,10 @@ class AppLocalizationsSw extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_ta.dart b/lib/l10n/app_localizations_ta.dart index 2e250025..9889d5bd 100644 --- a/lib/l10n/app_localizations_ta.dart +++ b/lib/l10n/app_localizations_ta.dart @@ -7623,6 +7623,10 @@ class AppLocalizationsTa extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_te.dart b/lib/l10n/app_localizations_te.dart index f7009d21..315dd0ec 100644 --- a/lib/l10n/app_localizations_te.dart +++ b/lib/l10n/app_localizations_te.dart @@ -7616,6 +7616,10 @@ class AppLocalizationsTe extends AppLocalizations { @override String get externalPlayerApp => 'బాహ్య ప్లేయర్ యాప్'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'ప్లేబ్యాక్ ప్రారంభమైనప్పుడు యాప్ ఎంపికను చూపండి.'; diff --git a/lib/l10n/app_localizations_th.dart b/lib/l10n/app_localizations_th.dart index 31fbff61..5dc59679 100644 --- a/lib/l10n/app_localizations_th.dart +++ b/lib/l10n/app_localizations_th.dart @@ -7514,6 +7514,10 @@ class AppLocalizationsTh extends AppLocalizations { @override String get externalPlayerApp => 'แอพเครื่องเล่นภายนอก'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'แสดงตัวเลือกแอปเมื่อเริ่มเล่น'; diff --git a/lib/l10n/app_localizations_tl.dart b/lib/l10n/app_localizations_tl.dart index 30270438..c2c5082c 100644 --- a/lib/l10n/app_localizations_tl.dart +++ b/lib/l10n/app_localizations_tl.dart @@ -7648,6 +7648,10 @@ class AppLocalizationsTl extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_tr.dart b/lib/l10n/app_localizations_tr.dart index ab6cf76f..25c9997e 100644 --- a/lib/l10n/app_localizations_tr.dart +++ b/lib/l10n/app_localizations_tr.dart @@ -7568,6 +7568,10 @@ class AppLocalizationsTr extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_ug.dart b/lib/l10n/app_localizations_ug.dart index b5ed64ba..2c92ec63 100644 --- a/lib/l10n/app_localizations_ug.dart +++ b/lib/l10n/app_localizations_ug.dart @@ -7575,6 +7575,10 @@ class AppLocalizationsUg extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart index 88df6b9a..2f5f5016 100644 --- a/lib/l10n/app_localizations_uk.dart +++ b/lib/l10n/app_localizations_uk.dart @@ -7613,6 +7613,10 @@ class AppLocalizationsUk extends AppLocalizations { @override String get externalPlayerApp => 'Додаток зовнішнього плеєра'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Показувати засіб вибору програм, коли починається відтворення.'; diff --git a/lib/l10n/app_localizations_vi.dart b/lib/l10n/app_localizations_vi.dart index ad254c85..4086fa83 100644 --- a/lib/l10n/app_localizations_vi.dart +++ b/lib/l10n/app_localizations_vi.dart @@ -7575,6 +7575,10 @@ class AppLocalizationsVi extends AppLocalizations { @override String get externalPlayerApp => 'Ứng dụng trình phát bên ngoài'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Hiển thị trình chọn ứng dụng khi bắt đầu phát lại.'; diff --git a/lib/l10n/app_localizations_yue.dart b/lib/l10n/app_localizations_yue.dart index b3d849af..b0e99abe 100644 --- a/lib/l10n/app_localizations_yue.dart +++ b/lib/l10n/app_localizations_yue.dart @@ -7323,6 +7323,10 @@ class AppLocalizationsYue extends AppLocalizations { @override String get externalPlayerApp => 'External player app'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => 'Show app chooser when playback starts.'; diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index d0fd3964..0c3b1b02 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -7304,6 +7304,10 @@ class AppLocalizationsZh extends AppLocalizations { @override String get externalPlayerApp => '外部播放器应用程序'; + @override + String get externalPlayerAppDescription => + 'Set external player to enable long-press play option'; + @override String get externalPlayerAskEachTimeSubtitle => '播放开始时显示应用程序选择器。'; diff --git a/lib/playback/external_player_service.dart b/lib/playback/external_player_service.dart index c287dcdc..cf6958e0 100644 --- a/lib/playback/external_player_service.dart +++ b/lib/playback/external_player_service.dart @@ -149,7 +149,20 @@ class ExternalPlayerService { return raw .whereType() .map((entry) => ExternalPlayerApp.fromMap(entry.cast())) - .where((entry) => entry.component.isNotEmpty) + .where((entry) { + final pkg = entry.packageName.toLowerCase(); + return entry.component.isNotEmpty && + pkg != 'com.nvidia.lightbox' && + pkg != 'com.nvidia.lightbox.beta' && + pkg != 'com.nvidia.gallery3d' && + pkg != 'com.android.gallery3d' && + pkg != 'com.android.videoplayer' && + pkg != 'com.google.android.videos' && + pkg != 'com.google.android.youtube' && + pkg != 'com.google.android.youtube.tv' && + pkg != 'com.google.android.tv.frameworkpackagestubs' && + !pkg.startsWith('org.moonfin.androidtv'); + }) .toList(growable: false); } diff --git a/lib/ui/screens/detail/item_detail_screen.dart b/lib/ui/screens/detail/item_detail_screen.dart index 088c2ac3..a4397d4c 100644 --- a/lib/ui/screens/detail/item_detail_screen.dart +++ b/lib/ui/screens/detail/item_detail_screen.dart @@ -5371,7 +5371,11 @@ class _ActionButtonsState extends State<_ActionButtons> { }) async { final resume = !forceStartOver && (item.playbackPosition?.inMilliseconds ?? 0) > 0; final options = [ - if (PlatformDetection.isAndroid) + if (PlatformDetection.isAndroid && + GetIt.instance() + .get(UserPreferences.externalPlayerComponentName) + .trim() + .isNotEmpty) _AdvancedPlaybackOption( label: 'Open in External Player', icon: Icons.open_in_new, @@ -5477,13 +5481,17 @@ class _ActionButtonsState extends State<_ActionButtons> { manager.setBitrateOverride(forceMaxBitrateMbps); if (openInExternalPlayer) { manager.forceExternalPlayerOnce(); - manager.forceExternalChooserOnce(); } await _playInternal( context, item, resume: resume, forceTranscode: forceTranscode, + useExternalPlayer: openInExternalPlayer || + (PlatformDetection.isAndroid && + PlatformDetection.isTV && + GetIt.instance() + .get(UserPreferences.useExternalPlayer)), ); } finally { _playLaunchInFlight = false; @@ -5747,6 +5755,7 @@ class _ActionButtonsState extends State<_ActionButtons> { AggregatedItem item, { bool resume = false, bool forceTranscode = false, + bool useExternalPlayer = false, }) async { final manager = GetIt.instance(); final mediaStreams = _mediaStreamsForCurrentSelection(item); @@ -6054,7 +6063,9 @@ class _ActionButtonsState extends State<_ActionButtons> { final startPosition = resume ? (item.playbackPosition ?? Duration.zero) : Duration.zero; - final prerolls = await _moviePrerollsForStart(item, startPosition); + final prerolls = useExternalPlayer + ? const [] + : await _moviePrerollsForStart(item, startPosition); if (!context.mounted) return; final applyMainItemStreamOverrides = prerolls.isEmpty; final selectedMediaSourceId = widget.selectedMediaSourceId; diff --git a/lib/ui/screens/settings/settings_side_panel.dart b/lib/ui/screens/settings/settings_side_panel.dart index 01d91da1..80ffb8bf 100644 --- a/lib/ui/screens/settings/settings_side_panel.dart +++ b/lib/ui/screens/settings/settings_side_panel.dart @@ -2169,20 +2169,17 @@ class _ExternalPlayerAppPickerTile extends StatefulWidget { class _ExternalPlayerAppPickerTileState extends State<_ExternalPlayerAppPickerTile> { final _service = GetIt.instance(); - late final PreferenceBinding _enabledBinding; late final PreferenceBinding _componentBinding; List _players = const []; bool _loading = false; bool _pickerOpen = false; + late final FocusNode _focusNode; @override void initState() { super.initState(); + _focusNode = FocusNode(); final store = GetIt.instance(); - _enabledBinding = PreferenceBinding( - store, - UserPreferences.useExternalPlayer, - ); _componentBinding = PreferenceBinding( store, UserPreferences.externalPlayerComponentName, @@ -2192,7 +2189,7 @@ class _ExternalPlayerAppPickerTileState @override void dispose() { - _enabledBinding.dispose(); + _focusNode.dispose(); _componentBinding.dispose(); super.dispose(); } @@ -2269,7 +2266,6 @@ class _ExternalPlayerAppPickerTileState }, ), ), - if (_players.isNotEmpty) const Divider(height: 1), ..._players.asMap().entries.map((entry) { final index = entry.key; final player = entry.value; @@ -2305,22 +2301,59 @@ class _ExternalPlayerAppPickerTileState @override Widget build(BuildContext context) { - return ValueListenableBuilder( - valueListenable: _enabledBinding, - builder: (context, enabled, _) { - return ValueListenableBuilder( - valueListenable: _componentBinding, - builder: (context, component, _) { - final subtitle = _loading - ? AppLocalizations.of(context).loadingInstalledPlayers - : _selectedLabel(component); - return _TvSettingsListTile( - leading: const Icon(Icons.apps), - title: Text(AppLocalizations.of(context).externalPlayerApp), - subtitle: Text(subtitle), - onTap: enabled ? () => _showPicker(component) : null, - ); + return ValueListenableBuilder( + valueListenable: _componentBinding, + builder: (context, component, _) { + final label = _loading + ? AppLocalizations.of(context).loadingInstalledPlayers + : _selectedLabel(component); + return Focus( + canRequestFocus: false, + skipTraversal: true, + onKeyEvent: (_, event) { + if (!event.logicalKey.isSelectKey) return KeyEventResult.ignored; + if (event is KeyDownEvent) { + _showPicker(component); + } + return KeyEventResult.handled; }, + child: TvFocusHighlight( + builder: (context, focused) => ListTile( + focusNode: _focusNode, + focusColor: Colors.transparent, + hoverColor: Colors.transparent, + leading: buildSettingsLeadingIconShell( + context, + icon: const Icon(Icons.apps), + focused: focused, + iconColor: focused + ? AppColors.black.withValues(alpha: 0.54) + : AppColorScheme.onSurface.withValues(alpha: 0.78), + ), + title: DefaultTextStyle.merge( + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: focused + ? AppColors.black.withValues(alpha: 0.87) + : AppColorScheme.onSurface, + ), + child: Text(AppLocalizations.of(context).externalPlayerApp), + ), + subtitle: DefaultTextStyle.merge( + style: TextStyle( + fontSize: 12, + color: focused + ? AppColors.black.withValues(alpha: 0.54) + : AppColorScheme.onSurface.withValues(alpha: 0.7), + ), + child: Text(AppLocalizations.of(context).externalPlayerAppDescription), + ), + isThreeLine: true, + trailing: buildSettingsSelectionBubble(context, label, focused), + onTap: () => _showPicker(component), + ), + ), ); }, ); diff --git a/lib/ui/widgets/settings/preference_tiles.dart b/lib/ui/widgets/settings/preference_tiles.dart index dc554c9d..ec2d4506 100644 --- a/lib/ui/widgets/settings/preference_tiles.dart +++ b/lib/ui/widgets/settings/preference_tiles.dart @@ -134,7 +134,7 @@ BoxDecoration _settingsTileDecoration( ); } -Widget _buildSelectionBubble(BuildContext context, String label, bool focused) { +Widget buildSettingsSelectionBubble(BuildContext context, String label, bool focused) { final theme = Theme.of(context); final colorScheme = theme.colorScheme; return Container( @@ -372,7 +372,7 @@ class _EnumPreferenceTileState ) : null, title: Text(widget.title, style: _kSettingsTitleTextStyle), - trailing: _buildSelectionBubble(context, label, focused), + trailing: buildSettingsSelectionBubble(context, label, focused), subtitle: widget.description != null ? Text(widget.description!, style: _kSettingsDescriptionTextStyle) : null, @@ -659,7 +659,7 @@ class _StringPickerPreferenceTileState ) : null, title: Text(widget.title, style: _kSettingsTitleTextStyle), - trailing: _buildSelectionBubble(context, label, focused), + trailing: buildSettingsSelectionBubble(context, label, focused), subtitle: widget.description != null ? Text(widget.description!, style: _kSettingsDescriptionTextStyle) : null, @@ -775,7 +775,7 @@ class _IntPickerPreferenceTileState extends State { ) : null, title: Text(widget.title, style: _kSettingsTitleTextStyle), - trailing: _buildSelectionBubble(context, label, focused), + trailing: buildSettingsSelectionBubble(context, label, focused), subtitle: widget.description != null ? Text(widget.description!, style: _kSettingsDescriptionTextStyle) : null,