From a5716989be8fab8dcc09e91b52f83ecad5657414 Mon Sep 17 00:00:00 2001 From: mattsigal Date: Tue, 9 Jun 2026 08:02:23 -0700 Subject: [PATCH] feat(navigation): add show live tv toggle and restructure navigation settings - Restructured navigation settings screen and side panel under "Navbar Display" and "Navbar Contents" headers. - Added descriptive guide text under "Navbar Contents" and removed individual toggle subtitles. - Added "Show Live TV" preference and conditional navigation button (Icons.live_tv) in left sidebar, top toolbar, and mobile bottom nav. - Hides the "Show Live TV" preference tile and hides the icon entirely if Live TV is not configured on the server. - Automatically resets the "Show Live TV" preference to false if no Live TV channels are configured on the server. - Removed redundant "Show in navigation" toggle for Live TV libraries under Library Visibility settings. --- lib/l10n/app_en.arb | 4 + lib/l10n/app_localizations.dart | 24 ++ lib/l10n/app_localizations_af.dart | 13 + lib/l10n/app_localizations_ar.dart | 13 + lib/l10n/app_localizations_be.dart | 13 + lib/l10n/app_localizations_bg.dart | 13 + lib/l10n/app_localizations_bn.dart | 13 + lib/l10n/app_localizations_ca.dart | 13 + lib/l10n/app_localizations_cs.dart | 13 + lib/l10n/app_localizations_cy.dart | 13 + lib/l10n/app_localizations_da.dart | 13 + lib/l10n/app_localizations_de.dart | 13 + lib/l10n/app_localizations_el.dart | 13 + lib/l10n/app_localizations_en.dart | 13 + lib/l10n/app_localizations_eo.dart | 13 + lib/l10n/app_localizations_es.dart | 13 + lib/l10n/app_localizations_et.dart | 13 + lib/l10n/app_localizations_fa.dart | 13 + lib/l10n/app_localizations_fi.dart | 13 + lib/l10n/app_localizations_fr.dart | 13 + lib/l10n/app_localizations_gl.dart | 13 + lib/l10n/app_localizations_he.dart | 13 + lib/l10n/app_localizations_hi.dart | 13 + lib/l10n/app_localizations_hr.dart | 13 + lib/l10n/app_localizations_hu.dart | 13 + lib/l10n/app_localizations_id.dart | 13 + lib/l10n/app_localizations_it.dart | 13 + lib/l10n/app_localizations_ja.dart | 13 + lib/l10n/app_localizations_kk.dart | 13 + lib/l10n/app_localizations_kn.dart | 13 + lib/l10n/app_localizations_ko.dart | 13 + lib/l10n/app_localizations_lt.dart | 13 + lib/l10n/app_localizations_lv.dart | 13 + lib/l10n/app_localizations_mk.dart | 13 + lib/l10n/app_localizations_ml.dart | 13 + lib/l10n/app_localizations_mn.dart | 13 + lib/l10n/app_localizations_nb.dart | 13 + lib/l10n/app_localizations_nl.dart | 13 + lib/l10n/app_localizations_pa.dart | 13 + lib/l10n/app_localizations_pl.dart | 13 + lib/l10n/app_localizations_pt.dart | 13 + lib/l10n/app_localizations_ro.dart | 13 + lib/l10n/app_localizations_ru.dart | 13 + lib/l10n/app_localizations_si.dart | 13 + lib/l10n/app_localizations_sk.dart | 13 + lib/l10n/app_localizations_sl.dart | 13 + lib/l10n/app_localizations_sq.dart | 13 + lib/l10n/app_localizations_sr.dart | 13 + lib/l10n/app_localizations_sv.dart | 13 + lib/l10n/app_localizations_sw.dart | 13 + lib/l10n/app_localizations_ta.dart | 13 + lib/l10n/app_localizations_te.dart | 13 + lib/l10n/app_localizations_th.dart | 13 + lib/l10n/app_localizations_tl.dart | 13 + lib/l10n/app_localizations_tr.dart | 13 + lib/l10n/app_localizations_ug.dart | 13 + lib/l10n/app_localizations_uk.dart | 13 + lib/l10n/app_localizations_vi.dart | 13 + lib/l10n/app_localizations_yue.dart | 13 + lib/l10n/app_localizations_zh.dart | 13 + lib/preference/user_preferences.dart | 5 + .../settings/navigation_settings_screen.dart | 234 +++++++++++++----- .../screens/settings/settings_side_panel.dart | 45 +++- lib/ui/widgets/left_sidebar.dart | 18 ++ lib/ui/widgets/mobile_bottom_nav_bar.dart | 15 ++ lib/ui/widgets/top_toolbar.dart | 18 ++ 66 files changed, 1047 insertions(+), 70 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 16f8f4085..a61748200 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -6768,6 +6768,10 @@ "settingsShowFavoritesButtonInNavigation": "Show the favorites button in the navigation bar", "settingsShowLibrariesButtonInNavigation": "Show the libraries button in the navigation bar", "settingsShowSeerrButtonInNavigation": "Show the Seerr button in the navigation bar", + "settingsNavbarDisplayHeader": "Navbar Display", + "settingsNavbarContentsHeader": "Navbar Contents", + "settingsNavbarContentsDescription": "Enable the following toggles to display these elements in the navigation bar.", + "showLiveTvButton": "Show Live TV Button", "settingsLibraryVisibilitySubtitle": "Toggle home page visibility per library. Restart Moonfin for changes to take effect.", "settingsMediaBarAndLocalPreviews": "Media Bar & Local Previews", "settingsVisualOverlays": "Visual Overlays", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index a1e5e1411..afe398f21 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -12287,6 +12287,30 @@ abstract class AppLocalizations { /// **'Show the Seerr button in the navigation bar'** String get settingsShowSeerrButtonInNavigation; + /// No description provided for @settingsNavbarDisplayHeader. + /// + /// In en, this message translates to: + /// **'Navbar Display'** + String get settingsNavbarDisplayHeader; + + /// No description provided for @settingsNavbarContentsHeader. + /// + /// In en, this message translates to: + /// **'Navbar Contents'** + String get settingsNavbarContentsHeader; + + /// No description provided for @settingsNavbarContentsDescription. + /// + /// In en, this message translates to: + /// **'Enable the following toggles to display these elements in the navigation bar.'** + String get settingsNavbarContentsDescription; + + /// No description provided for @showLiveTvButton. + /// + /// In en, this message translates to: + /// **'Show Live TV Button'** + String get showLiveTvButton; + /// No description provided for @settingsLibraryVisibilitySubtitle. /// /// In en, this message translates to: diff --git a/lib/l10n/app_localizations_af.dart b/lib/l10n/app_localizations_af.dart index e3c1d69b8..171ad9c52 100644 --- a/lib/l10n/app_localizations_af.dart +++ b/lib/l10n/app_localizations_af.dart @@ -6896,6 +6896,19 @@ class AppLocalizationsAf extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Wissel tuisbladsigbaarheid per biblioteek. Herbegin Moonfin vir veranderinge om in werking te tree.'; diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index b06496a03..9d4ae2d7e 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -6851,6 +6851,19 @@ class AppLocalizationsAr extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'تبديل رؤية الصفحة الرئيسية لكل مكتبة. أعد تشغيل Moonfin لتصبح التغييرات سارية المفعول.'; diff --git a/lib/l10n/app_localizations_be.dart b/lib/l10n/app_localizations_be.dart index 8499e3ba0..2e35ad8e0 100644 --- a/lib/l10n/app_localizations_be.dart +++ b/lib/l10n/app_localizations_be.dart @@ -6904,6 +6904,19 @@ class AppLocalizationsBe extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Пераключыць бачнасць хатняй старонкі для кожнай бібліятэкі. Перазапусціце Moonfin, каб змены ўступілі ў сілу.'; diff --git a/lib/l10n/app_localizations_bg.dart b/lib/l10n/app_localizations_bg.dart index 1438c9e9e..abe7bcf34 100644 --- a/lib/l10n/app_localizations_bg.dart +++ b/lib/l10n/app_localizations_bg.dart @@ -6948,6 +6948,19 @@ class AppLocalizationsBg extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Превключване на видимостта на началната страница за библиотека. Рестартирайте Moonfin, за да влязат в сила промените.'; diff --git a/lib/l10n/app_localizations_bn.dart b/lib/l10n/app_localizations_bn.dart index dcc9c86aa..bd7552bc0 100644 --- a/lib/l10n/app_localizations_bn.dart +++ b/lib/l10n/app_localizations_bn.dart @@ -6881,6 +6881,19 @@ class AppLocalizationsBn extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'লাইব্রেরি প্রতি হোম পেজ দৃশ্যমানতা টগল করুন। পরিবর্তনগুলি কার্যকর করার জন্য Moonfin পুনরায় চালু করুন৷'; diff --git a/lib/l10n/app_localizations_ca.dart b/lib/l10n/app_localizations_ca.dart index 523c58ebb..0b66cf5d9 100644 --- a/lib/l10n/app_localizations_ca.dart +++ b/lib/l10n/app_localizations_ca.dart @@ -6991,6 +6991,19 @@ class AppLocalizationsCa extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Commuta la visibilitat de la pàgina d\'inici per biblioteca. Reinicieu Moonfin perquè els canvis tinguin efecte.'; diff --git a/lib/l10n/app_localizations_cs.dart b/lib/l10n/app_localizations_cs.dart index b62bb3f4b..f17000ec2 100644 --- a/lib/l10n/app_localizations_cs.dart +++ b/lib/l10n/app_localizations_cs.dart @@ -6896,6 +6896,19 @@ class AppLocalizationsCs extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Přepnout viditelnost domovské stránky podle knihovny. Restartujte Moonfin, aby se změny projevily.'; diff --git a/lib/l10n/app_localizations_cy.dart b/lib/l10n/app_localizations_cy.dart index 7f5aa6266..afd80daae 100644 --- a/lib/l10n/app_localizations_cy.dart +++ b/lib/l10n/app_localizations_cy.dart @@ -6908,6 +6908,19 @@ class AppLocalizationsCy extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Toglo gwelededd tudalen gartref fesul llyfrgell. Ailgychwyn Moonfin i newidiadau ddod i rym.'; diff --git a/lib/l10n/app_localizations_da.dart b/lib/l10n/app_localizations_da.dart index b69f014ab..4abc680e9 100644 --- a/lib/l10n/app_localizations_da.dart +++ b/lib/l10n/app_localizations_da.dart @@ -6886,6 +6886,19 @@ class AppLocalizationsDa extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Skift startsidesynlighed pr. bibliotek. Genstart Moonfin for at ændringerne træder i kraft.'; diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index 8eb3dd4a1..d3cf51c0c 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -6945,6 +6945,19 @@ class AppLocalizationsDe extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Schalten Sie die Sichtbarkeit der Startseite pro Bibliothek um. Starten Sie Moonfin neu, damit die Änderungen wirksam werden.'; diff --git a/lib/l10n/app_localizations_el.dart b/lib/l10n/app_localizations_el.dart index 43048ad50..54d04219c 100644 --- a/lib/l10n/app_localizations_el.dart +++ b/lib/l10n/app_localizations_el.dart @@ -6989,6 +6989,19 @@ class AppLocalizationsEl extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Εναλλαγή ορατότητας αρχικής σελίδας ανά βιβλιοθήκη. Επανεκκινήστε το Moonfin για να τεθούν σε ισχύ οι αλλαγές.'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 97496e7f8..725bc322e 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -6839,6 +6839,19 @@ class AppLocalizationsEn extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Toggle home page visibility per library. Restart Moonfin for changes to take effect.'; diff --git a/lib/l10n/app_localizations_eo.dart b/lib/l10n/app_localizations_eo.dart index 06ee3e53d..490589a8f 100644 --- a/lib/l10n/app_localizations_eo.dart +++ b/lib/l10n/app_localizations_eo.dart @@ -6875,6 +6875,19 @@ class AppLocalizationsEo extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Ŝaltu hejmpaĝan videblecon per biblioteko. Rekomencu Moonfin por ke ŝanĝoj efektiviĝu.'; diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index 1b5a5960e..9312fe49f 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -6956,6 +6956,19 @@ class AppLocalizationsEs extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Alternar la visibilidad de la página de inicio por biblioteca. Reinicie Moonfin para que los cambios surtan efecto.'; diff --git a/lib/l10n/app_localizations_et.dart b/lib/l10n/app_localizations_et.dart index e6342f5de..0328e4df5 100644 --- a/lib/l10n/app_localizations_et.dart +++ b/lib/l10n/app_localizations_et.dart @@ -6897,6 +6897,19 @@ class AppLocalizationsEt extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Avalehe nähtavuse sisse- ja väljalülitamine teegi kaupa. Muudatuste jõustumiseks taaskäivitage Moonfin.'; diff --git a/lib/l10n/app_localizations_fa.dart b/lib/l10n/app_localizations_fa.dart index ec56651d4..204324c03 100644 --- a/lib/l10n/app_localizations_fa.dart +++ b/lib/l10n/app_localizations_fa.dart @@ -6851,6 +6851,19 @@ class AppLocalizationsFa extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'قابلیت مشاهده صفحه اصلی در هر کتابخانه را تغییر دهید. برای اعمال تغییرات Moonfin را مجددا راه اندازی کنید.'; diff --git a/lib/l10n/app_localizations_fi.dart b/lib/l10n/app_localizations_fi.dart index 344bf0dd5..fcb3c7d6f 100644 --- a/lib/l10n/app_localizations_fi.dart +++ b/lib/l10n/app_localizations_fi.dart @@ -6914,6 +6914,19 @@ class AppLocalizationsFi extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Vaihda etusivun näkyvyys kirjastoittain. Käynnistä Moonfin uudelleen, jotta muutokset tulevat voimaan.'; diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index aecb8ab52..eadf851d0 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -6966,6 +6966,19 @@ class AppLocalizationsFr extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Basculez la visibilité de la page d\'accueil par bibliothèque. Redémarrez Moonfin pour que les modifications prennent effet.'; diff --git a/lib/l10n/app_localizations_gl.dart b/lib/l10n/app_localizations_gl.dart index f750be966..8ad26f149 100644 --- a/lib/l10n/app_localizations_gl.dart +++ b/lib/l10n/app_localizations_gl.dart @@ -6981,6 +6981,19 @@ class AppLocalizationsGl extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Alterna a visibilidade da páxina de inicio por biblioteca. Reinicia Moonfin para que os cambios teñan efecto.'; diff --git a/lib/l10n/app_localizations_he.dart b/lib/l10n/app_localizations_he.dart index abd66eac3..5e38f4fb2 100644 --- a/lib/l10n/app_localizations_he.dart +++ b/lib/l10n/app_localizations_he.dart @@ -6796,6 +6796,19 @@ class AppLocalizationsHe extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'החלף את נראות דף הבית לכל ספריה. הפעל מחדש את Moonfin כדי שהשינויים ייכנסו לתוקף.'; diff --git a/lib/l10n/app_localizations_hi.dart b/lib/l10n/app_localizations_hi.dart index cf01f9560..2d33bfe92 100644 --- a/lib/l10n/app_localizations_hi.dart +++ b/lib/l10n/app_localizations_hi.dart @@ -6870,6 +6870,19 @@ class AppLocalizationsHi extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'प्रति लाइब्रेरी होम पेज दृश्यता टॉगल करें। परिवर्तनों को प्रभावी करने के लिए Moonfin को पुनः आरंभ करें।'; diff --git a/lib/l10n/app_localizations_hr.dart b/lib/l10n/app_localizations_hr.dart index 872b46fc8..46410e8b2 100644 --- a/lib/l10n/app_localizations_hr.dart +++ b/lib/l10n/app_localizations_hr.dart @@ -6908,6 +6908,19 @@ class AppLocalizationsHr extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Promjena vidljivosti početne stranice po knjižnici. Ponovno pokrenite Moonfin kako bi promjene stupile na snagu.'; diff --git a/lib/l10n/app_localizations_hu.dart b/lib/l10n/app_localizations_hu.dart index 9d77d7d5f..ecb085d6b 100644 --- a/lib/l10n/app_localizations_hu.dart +++ b/lib/l10n/app_localizations_hu.dart @@ -6951,6 +6951,19 @@ class AppLocalizationsHu extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'A kezdőlap láthatóságának váltása könyvtáronként. Indítsa újra a Moonfin alkalmazást, hogy a változtatások életbe lépjenek.'; diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index 4f55f4272..f161b6683 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -6904,6 +6904,19 @@ class AppLocalizationsId extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Alihkan visibilitas halaman beranda per perpustakaan. Mulai ulang Moonfin agar perubahan diterapkan.'; diff --git a/lib/l10n/app_localizations_it.dart b/lib/l10n/app_localizations_it.dart index 7e0b3c714..7864b16d0 100644 --- a/lib/l10n/app_localizations_it.dart +++ b/lib/l10n/app_localizations_it.dart @@ -6926,6 +6926,19 @@ class AppLocalizationsIt extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Attiva/disattiva la visibilità della home page per libreria. Riavvia Moonfin affinché le modifiche abbiano effetto.'; diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index fb80f8436..32702cf6a 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -6719,6 +6719,19 @@ class AppLocalizationsJa extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'ライブラリごとにホームページの表示を切り替えます。変更を有効にするには、Moonfin を再起動します。'; diff --git a/lib/l10n/app_localizations_kk.dart b/lib/l10n/app_localizations_kk.dart index 77467d833..c4ad55a9f 100644 --- a/lib/l10n/app_localizations_kk.dart +++ b/lib/l10n/app_localizations_kk.dart @@ -6919,6 +6919,19 @@ class AppLocalizationsKk extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Әрбір кітапхананың басты бетінің көріну мүмкіндігін ауыстырып-қосқыш. Өзгерістердің күшіне енуі үшін Moonfin қолданбасын қайта іске қосыңыз.'; diff --git a/lib/l10n/app_localizations_kn.dart b/lib/l10n/app_localizations_kn.dart index 6af48406d..126deb69a 100644 --- a/lib/l10n/app_localizations_kn.dart +++ b/lib/l10n/app_localizations_kn.dart @@ -6936,6 +6936,19 @@ class AppLocalizationsKn extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'ಪ್ರತಿ ಲೈಬ್ರರಿಗೆ ಮುಖಪುಟದ ಗೋಚರತೆಯನ್ನು ಟಾಗಲ್ ಮಾಡಿ. ಬದಲಾವಣೆಗಳು ಕಾರ್ಯರೂಪಕ್ಕೆ ಬರಲು Moonfin ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ.'; diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index 5634cbbe7..9e55828e7 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -6710,6 +6710,19 @@ class AppLocalizationsKo extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => '라이브러리별로 홈 페이지 가시성을 전환합니다. 변경 사항을 적용하려면 Moonfin을 다시 시작하세요.'; diff --git a/lib/l10n/app_localizations_lt.dart b/lib/l10n/app_localizations_lt.dart index 9a1f89c14..e0325ec6f 100644 --- a/lib/l10n/app_localizations_lt.dart +++ b/lib/l10n/app_localizations_lt.dart @@ -6909,6 +6909,19 @@ class AppLocalizationsLt extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Perjungti pagrindinio puslapio matomumą pagal biblioteką. Iš naujo paleiskite „Moonfin“, kad pakeitimai įsigaliotų.'; diff --git a/lib/l10n/app_localizations_lv.dart b/lib/l10n/app_localizations_lv.dart index bcb75abf0..f6c4a0afa 100644 --- a/lib/l10n/app_localizations_lv.dart +++ b/lib/l10n/app_localizations_lv.dart @@ -6921,6 +6921,19 @@ class AppLocalizationsLv extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Pārslēgt mājas lapas redzamību katrai bibliotēkai. Restartējiet Moonfin, lai izmaiņas stātos spēkā.'; diff --git a/lib/l10n/app_localizations_mk.dart b/lib/l10n/app_localizations_mk.dart index cf027bd53..8237b5b78 100644 --- a/lib/l10n/app_localizations_mk.dart +++ b/lib/l10n/app_localizations_mk.dart @@ -6935,6 +6935,19 @@ class AppLocalizationsMk extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Вклучете ја видливоста на почетната страница по библиотека. Рестартирајте го Moonfin за да стапат на сила промените.'; diff --git a/lib/l10n/app_localizations_ml.dart b/lib/l10n/app_localizations_ml.dart index f4bf3f40e..791cd68e2 100644 --- a/lib/l10n/app_localizations_ml.dart +++ b/lib/l10n/app_localizations_ml.dart @@ -6972,6 +6972,19 @@ class AppLocalizationsMl extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'ഓരോ ലൈബ്രറിയിലും ഹോം പേജ് ദൃശ്യപരത ടോഗിൾ ചെയ്യുക. മാറ്റങ്ങൾ പ്രാബല്യത്തിൽ വരുന്നതിന് Moonfin പുനരാരംഭിക്കുക.'; diff --git a/lib/l10n/app_localizations_mn.dart b/lib/l10n/app_localizations_mn.dart index dbd2e17ff..0d08c9ee2 100644 --- a/lib/l10n/app_localizations_mn.dart +++ b/lib/l10n/app_localizations_mn.dart @@ -6911,6 +6911,19 @@ class AppLocalizationsMn extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Номын сан бүрийн нүүр хуудасны харагдах байдлыг асаах/унтраах. Өөрчлөлтүүд хүчин төгөлдөр болохын тулд Moonfin-г дахин эхлүүлнэ үү.'; diff --git a/lib/l10n/app_localizations_nb.dart b/lib/l10n/app_localizations_nb.dart index 533e0f67c..1b8700357 100644 --- a/lib/l10n/app_localizations_nb.dart +++ b/lib/l10n/app_localizations_nb.dart @@ -6888,6 +6888,19 @@ class AppLocalizationsNb extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Slå av og på hjemmesidens synlighet per bibliotek. Start Moonfin på nytt for at endringer skal tre i kraft.'; diff --git a/lib/l10n/app_localizations_nl.dart b/lib/l10n/app_localizations_nl.dart index 6775632ae..26d4ac3a1 100644 --- a/lib/l10n/app_localizations_nl.dart +++ b/lib/l10n/app_localizations_nl.dart @@ -6918,6 +6918,19 @@ class AppLocalizationsNl extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Schakel de zichtbaarheid van de startpagina per bibliotheek in. Start Moonfin opnieuw op zodat de wijzigingen van kracht worden.'; diff --git a/lib/l10n/app_localizations_pa.dart b/lib/l10n/app_localizations_pa.dart index b70dbef83..6421ed7fc 100644 --- a/lib/l10n/app_localizations_pa.dart +++ b/lib/l10n/app_localizations_pa.dart @@ -6877,6 +6877,19 @@ class AppLocalizationsPa extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'ਪ੍ਰਤੀ ਲਾਇਬ੍ਰੇਰੀ ਹੋਮ ਪੇਜ ਦੀ ਦਿੱਖ ਨੂੰ ਟੌਗਲ ਕਰੋ। ਤਬਦੀਲੀਆਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ Moonfin ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰੋ।'; diff --git a/lib/l10n/app_localizations_pl.dart b/lib/l10n/app_localizations_pl.dart index 8e3b02ab2..2358857c2 100644 --- a/lib/l10n/app_localizations_pl.dart +++ b/lib/l10n/app_localizations_pl.dart @@ -6927,6 +6927,19 @@ class AppLocalizationsPl extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Przełącz widoczność strony głównej dla każdej biblioteki. Uruchom ponownie Moonfin, aby zmiany odniosły skutek.'; diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index 91b6d0a35..bc11b635f 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -6936,6 +6936,19 @@ class AppLocalizationsPt extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Alternar a visibilidade da página inicial por biblioteca. Reinicie Moonfin para que as alterações tenham efeito.'; diff --git a/lib/l10n/app_localizations_ro.dart b/lib/l10n/app_localizations_ro.dart index 30937a621..831626037 100644 --- a/lib/l10n/app_localizations_ro.dart +++ b/lib/l10n/app_localizations_ro.dart @@ -6931,6 +6931,19 @@ class AppLocalizationsRo extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Comutați vizibilitatea paginii de pornire pentru fiecare bibliotecă. Reporniți Moonfin pentru ca modificările să intre în vigoare.'; diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index ee8aa4ac8..490190385 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -6935,6 +6935,19 @@ class AppLocalizationsRu extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Переключить видимость домашней страницы для каждой библиотеки. Перезапустите Moonfin, чтобы изменения вступили в силу.'; diff --git a/lib/l10n/app_localizations_si.dart b/lib/l10n/app_localizations_si.dart index 4d0d67394..beee0fce6 100644 --- a/lib/l10n/app_localizations_si.dart +++ b/lib/l10n/app_localizations_si.dart @@ -6879,6 +6879,19 @@ class AppLocalizationsSi extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'පුස්තකාලයකට මුල් පිටුව දෘශ්‍යතාව ටොගල් කරන්න. වෙනස්කම් බලාත්මක වීමට Moonfin නැවත ආරම්භ කරන්න.'; diff --git a/lib/l10n/app_localizations_sk.dart b/lib/l10n/app_localizations_sk.dart index 2fda7e60d..882d73eb9 100644 --- a/lib/l10n/app_localizations_sk.dart +++ b/lib/l10n/app_localizations_sk.dart @@ -6919,6 +6919,19 @@ class AppLocalizationsSk extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Prepnúť viditeľnosť domovskej stránky podľa knižnice. Reštartujte Moonfin, aby sa zmeny prejavili.'; diff --git a/lib/l10n/app_localizations_sl.dart b/lib/l10n/app_localizations_sl.dart index f3df29199..574fe227d 100644 --- a/lib/l10n/app_localizations_sl.dart +++ b/lib/l10n/app_localizations_sl.dart @@ -6915,6 +6915,19 @@ class AppLocalizationsSl extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Preklopi vidnost domače strani na knjižnico. Znova zaženite Moonfin, da spremembe začnejo veljati.'; diff --git a/lib/l10n/app_localizations_sq.dart b/lib/l10n/app_localizations_sq.dart index f2e3b8942..923956337 100644 --- a/lib/l10n/app_localizations_sq.dart +++ b/lib/l10n/app_localizations_sq.dart @@ -6946,6 +6946,19 @@ class AppLocalizationsSq extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Ndrysho dukshmërinë e faqes kryesore për bibliotekë. Rinisni Moonfin që ndryshimet të hyjnë në fuqi.'; diff --git a/lib/l10n/app_localizations_sr.dart b/lib/l10n/app_localizations_sr.dart index 745643a5f..6aa876af0 100644 --- a/lib/l10n/app_localizations_sr.dart +++ b/lib/l10n/app_localizations_sr.dart @@ -6911,6 +6911,19 @@ class AppLocalizationsSr extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Укључите/искључите видљивост почетне странице по библиотеци. Поново покрените __АРБ_ТЕРМ_0__ да би промене ступиле на снагу.'; diff --git a/lib/l10n/app_localizations_sv.dart b/lib/l10n/app_localizations_sv.dart index 010a0196f..1558aa7c5 100644 --- a/lib/l10n/app_localizations_sv.dart +++ b/lib/l10n/app_localizations_sv.dart @@ -6898,6 +6898,19 @@ class AppLocalizationsSv extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Växla hemsidans synlighet per bibliotek. Starta om Moonfin för att ändringarna ska träda i kraft.'; diff --git a/lib/l10n/app_localizations_sw.dart b/lib/l10n/app_localizations_sw.dart index 57d4ffa4d..5cdcc1554 100644 --- a/lib/l10n/app_localizations_sw.dart +++ b/lib/l10n/app_localizations_sw.dart @@ -6936,6 +6936,19 @@ class AppLocalizationsSw extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Geuza mwonekano wa ukurasa wa nyumbani kwa kila maktaba. Anzisha tena Moonfin ili mabadiliko yaanze kutumika.'; diff --git a/lib/l10n/app_localizations_ta.dart b/lib/l10n/app_localizations_ta.dart index 4dc609c4e..baed2e8e1 100644 --- a/lib/l10n/app_localizations_ta.dart +++ b/lib/l10n/app_localizations_ta.dart @@ -6942,6 +6942,19 @@ class AppLocalizationsTa extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'ஒரு நூலகத்திற்கு முகப்புப் பக்கத் தெரிவுநிலையை நிலைமாற்று. மாற்றங்கள் நடைமுறைக்கு வர Moonfin ஐ மீண்டும் தொடங்கவும்.'; diff --git a/lib/l10n/app_localizations_te.dart b/lib/l10n/app_localizations_te.dart index 3f2a1997d..2cede3cf6 100644 --- a/lib/l10n/app_localizations_te.dart +++ b/lib/l10n/app_localizations_te.dart @@ -6928,6 +6928,19 @@ class AppLocalizationsTe extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'లైబ్రరీకి హోమ్ పేజీ విజిబిలిటీని టోగుల్ చేయండి. మార్పులు అమలులోకి రావడానికి Moonfinని పునఃప్రారంభించండి.'; diff --git a/lib/l10n/app_localizations_th.dart b/lib/l10n/app_localizations_th.dart index ab6806507..43cb4e24c 100644 --- a/lib/l10n/app_localizations_th.dart +++ b/lib/l10n/app_localizations_th.dart @@ -6846,6 +6846,19 @@ class AppLocalizationsTh extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'สลับการเปิดเผยหน้าแรกต่อห้องสมุด รีสตาร์ท Moonfin เพื่อให้การเปลี่ยนแปลงมีผล'; diff --git a/lib/l10n/app_localizations_tl.dart b/lib/l10n/app_localizations_tl.dart index bbfe119ec..bafe6aa9d 100644 --- a/lib/l10n/app_localizations_tl.dart +++ b/lib/l10n/app_localizations_tl.dart @@ -6965,6 +6965,19 @@ class AppLocalizationsTl extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'I-toggle ang visibility ng home page sa bawat library. I-restart ang Moonfin para magkabisa ang mga pagbabago.'; diff --git a/lib/l10n/app_localizations_tr.dart b/lib/l10n/app_localizations_tr.dart index f28cfecab..f24f4a593 100644 --- a/lib/l10n/app_localizations_tr.dart +++ b/lib/l10n/app_localizations_tr.dart @@ -6890,6 +6890,19 @@ class AppLocalizationsTr extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Kitaplık başına ana sayfa görünürlüğünü değiştirin. Değişikliklerin etkili olması için Moonfin yeniden başlatın.'; diff --git a/lib/l10n/app_localizations_ug.dart b/lib/l10n/app_localizations_ug.dart index 9da6aa5ca..855f7ad00 100644 --- a/lib/l10n/app_localizations_ug.dart +++ b/lib/l10n/app_localizations_ug.dart @@ -6897,6 +6897,19 @@ class AppLocalizationsUg extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'ھەر بىر كۈتۈپخانىنىڭ باش بېتىنىڭ كۆرۈنۈشىنى توغرىلاڭ. ئۆزگەرتىشنىڭ كۈچكە ئىگە بولۇشى ئۈچۈن Moonfin نى قايتا قوزغىتىڭ.'; diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart index fbc9ca2b6..9da1bcba1 100644 --- a/lib/l10n/app_localizations_uk.dart +++ b/lib/l10n/app_localizations_uk.dart @@ -6924,6 +6924,19 @@ class AppLocalizationsUk extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Перемикання видимості домашньої сторінки для кожної бібліотеки. Перезапустіть Moonfin, щоб зміни набули чинності.'; diff --git a/lib/l10n/app_localizations_vi.dart b/lib/l10n/app_localizations_vi.dart index 436a4acc1..d41899256 100644 --- a/lib/l10n/app_localizations_vi.dart +++ b/lib/l10n/app_localizations_vi.dart @@ -6896,6 +6896,19 @@ class AppLocalizationsVi extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => 'Chuyển đổi khả năng hiển thị trang chủ cho mỗi thư viện. Khởi động lại Moonfin để các thay đổi có hiệu lực.'; diff --git a/lib/l10n/app_localizations_yue.dart b/lib/l10n/app_localizations_yue.dart index 827b3ca08..ab2aa07d4 100644 --- a/lib/l10n/app_localizations_yue.dart +++ b/lib/l10n/app_localizations_yue.dart @@ -6676,6 +6676,19 @@ class AppLocalizationsYue extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => '切換每個庫的主頁可見性。重新啟動 Moonfin 以使變更生效。'; diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index d5d92900f..2f0b12089 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -6671,6 +6671,19 @@ class AppLocalizationsZh extends AppLocalizations { String get settingsShowSeerrButtonInNavigation => 'Show the Seerr button in the navigation bar'; + @override + String get settingsNavbarDisplayHeader => 'Navbar Display'; + + @override + String get settingsNavbarContentsHeader => 'Navbar Contents'; + + @override + String get settingsNavbarContentsDescription => + 'Enable the following toggles to display these elements in the navigation bar.'; + + @override + String get showLiveTvButton => 'Show Live TV Button'; + @override String get settingsLibraryVisibilitySubtitle => '切换每个库的主页可见性。重新启动 Moonfin 以使更改生效。'; diff --git a/lib/preference/user_preferences.dart b/lib/preference/user_preferences.dart index 5da77b52a..76e77db65 100644 --- a/lib/preference/user_preferences.dart +++ b/lib/preference/user_preferences.dart @@ -414,6 +414,11 @@ class UserPreferences extends ChangeNotifier { defaultValue: true, ); + static final showLiveTvButton = Preference( + key: 'pref_show_livetv_button', + defaultValue: true, + ); + static final adminDrawerOrder = Preference( key: 'pref_admin_drawer_order', defaultValue: '', diff --git a/lib/ui/screens/settings/navigation_settings_screen.dart b/lib/ui/screens/settings/navigation_settings_screen.dart index 4d046c96d..998e7d0aa 100644 --- a/lib/ui/screens/settings/navigation_settings_screen.dart +++ b/lib/ui/screens/settings/navigation_settings_screen.dart @@ -2,13 +2,17 @@ import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; import 'package:server_core/server_core.dart'; +import 'package:jellyfin_preference/jellyfin_preference.dart'; +import '../../../data/services/row_data_source.dart'; import '../../../data/services/plugin_sync_service.dart'; import '../../../preference/preference_constants.dart'; import '../../../preference/user_preferences.dart'; +import '../../../preference/seerr_preferences.dart'; import '../../../util/overlay_color_palette.dart'; import '../../widgets/navigation_layout.dart'; import '../../widgets/settings/clean_settings_typography.dart'; import '../../widgets/settings/preference_tiles.dart'; +import '../../widgets/settings/preference_binding.dart'; import '../../../l10n/app_localizations.dart'; import 'settings_app_bar.dart'; import '../../widgets/focus/request_initial_focus.dart'; @@ -24,6 +28,41 @@ class NavigationSettingsScreen extends StatefulWidget { class _NavigationSettingsScreenState extends State { final _prefs = GetIt.instance(); bool _navbarNormalizeQueued = false; + late final PreferenceBinding _showShuffleButtonBinding; + bool _hasLiveTvChannels = false; + + @override + void initState() { + super.initState(); + _showShuffleButtonBinding = PreferenceBinding( + GetIt.instance(), + UserPreferences.showShuffleButton, + ); + _checkLiveTv(); + } + + Future _checkLiveTv() async { + try { + final hasChannels = await GetIt.instance().hasLiveTvChannels(); + if (mounted) { + setState(() { + _hasLiveTvChannels = hasChannels; + }); + } + if (!hasChannels) { + if (_prefs.get(UserPreferences.showLiveTvButton)) { + _prefs.set(UserPreferences.showLiveTvButton, false); + _pushSync(); + } + } + } catch (_) {} + } + + @override + void dispose() { + _showShuffleButtonBinding.dispose(); + super.dispose(); + } void _pushSync() { final syncService = GetIt.instance(); @@ -61,77 +100,142 @@ class _NavigationSettingsScreenState extends State { }); } final l10n = AppLocalizations.of(context); + final seerrEnabledOnAccount = GetIt.instance().enabled; return withCleanSettingsTypography( context, Scaffold( appBar: buildSettingsAppBar(context, Text(l10n.navigation)), - body: ListView( - children: [ - ListTile( - leading: const Icon(Icons.view_sidebar), - title: Text(l10n.navigationStyle), - subtitle: Text(_navbarPositionLabel(navbarPosition, l10n)), - onTap: () { - var index = positions.indexOf(navbarPosition); - if (index < 0) index = 0; - final newPos = positions[(index + 1) % positions.length]; - _prefs.set(UserPreferences.navbarPosition, newPos); - _pushSync(); - NavigationLayout.positionNotifier.value = newPos; - setState(() {}); - }, - ), - const Divider(), - SwitchPreferenceTile( - preference: UserPreferences.showShuffleButton, - title: l10n.showShuffleButton, - icon: Icons.shuffle, - onChanged: _pushSync, - ), - SwitchPreferenceTile( - preference: UserPreferences.showGenresButton, - title: l10n.showGenresButton, - icon: Icons.category, - onChanged: _pushSync, - ), - SwitchPreferenceTile( - preference: UserPreferences.showFavoritesButton, - title: l10n.showFavoritesButton, - icon: Icons.favorite, - onChanged: _pushSync, - ), - SwitchPreferenceTile( - preference: UserPreferences.showLibrariesInToolbar, - title: l10n.showLibrariesInToolbar, - iconBuilder: (size, color) => Image.asset( - 'assets/icons/clapperboard.png', - width: size, - height: size, - color: color, - fit: BoxFit.contain, + body: ValueListenableBuilder( + valueListenable: _showShuffleButtonBinding, + builder: (context, showShuffleButton, _) => ListView( + children: [ + _SectionHeader(l10n.settingsNavbarDisplayHeader), + ListTile( + leading: const Icon(Icons.view_sidebar), + title: Text(l10n.navigationStyle), + subtitle: Text(_navbarPositionLabel(navbarPosition, l10n)), + onTap: () { + var index = positions.indexOf(navbarPosition); + if (index < 0) index = 0; + final newPos = positions[(index + 1) % positions.length]; + _prefs.set(UserPreferences.navbarPosition, newPos); + _pushSync(); + NavigationLayout.positionNotifier.value = newPos; + setState(() {}); + }, + ), + StringPickerPreferenceTile( + preference: UserPreferences.navbarColor, + title: l10n.navbarColor, + icon: Icons.color_lens, + options: OverlayColorPalette.localizedOptions(l10n), + onChanged: _pushSync, + ), + SliderPreferenceTile( + preference: UserPreferences.navbarOpacity, + title: l10n.navbarOpacity, + icon: Icons.opacity, + min: 0, + max: 100, + divisions: 20, + labelOf: (v) => l10n.percentValue(v), + onChangeEnd: _pushSync, + ), + _SectionHeader(l10n.settingsNavbarContentsHeader), + Padding( + padding: const EdgeInsets.fromLTRB(16, 4, 16, 12), + child: Text( + l10n.settingsNavbarContentsDescription, + style: TextStyle( + fontSize: 13, + color: Theme.of(context).colorScheme.onSurfaceVariant, + ), + ), ), - onChanged: _pushSync, - ), - const Divider(), - SliderPreferenceTile( - preference: UserPreferences.navbarOpacity, - title: l10n.navbarOpacity, - icon: Icons.opacity, - min: 0, - max: 100, - divisions: 20, - labelOf: (v) => l10n.percentValue(v), - onChangeEnd: _pushSync, - ), - StringPickerPreferenceTile( - preference: UserPreferences.navbarColor, - title: l10n.navbarColor, - icon: Icons.color_lens, - options: OverlayColorPalette.localizedOptions(l10n), - onChanged: _pushSync, - ), - ], + SwitchPreferenceTile( + preference: UserPreferences.showShuffleButton, + title: l10n.showShuffleButton, + icon: Icons.shuffle, + onChanged: _pushSync, + ), + if (showShuffleButton) + StringPickerPreferenceTile( + preference: UserPreferences.shuffleContentType, + title: l10n.settingsShuffleContentTypeFilter, + icon: Icons.shuffle, + options: { + 'movies': l10n.movies, + 'tvshows': l10n.tvShows, + 'both': l10n.settingsBoth, + }, + onChanged: _pushSync, + ), + SwitchPreferenceTile( + preference: UserPreferences.showGenresButton, + title: l10n.showGenresButton, + icon: Icons.category, + onChanged: _pushSync, + ), + SwitchPreferenceTile( + preference: UserPreferences.showFavoritesButton, + title: l10n.showFavoritesButton, + icon: Icons.favorite, + onChanged: _pushSync, + ), + SwitchPreferenceTile( + preference: UserPreferences.showLibrariesInToolbar, + title: l10n.showLibrariesInToolbar, + iconBuilder: (size, color) => Image.asset( + 'assets/icons/clapperboard.png', + width: size, + height: size, + color: color, + fit: BoxFit.contain, + ), + onChanged: _pushSync, + ), + if (_hasLiveTvChannels) + SwitchPreferenceTile( + preference: UserPreferences.showLiveTvButton, + title: l10n.showLiveTvButton, + icon: Icons.live_tv, + onChanged: _pushSync, + ), + if (seerrEnabledOnAccount) + SwitchPreferenceTile( + preference: UserPreferences.showSeerrButton, + title: l10n.showSeerrButton, + iconBuilder: (size, color) => Image.asset( + 'assets/icons/seerr.png', + width: size, + height: size, + ), + onChanged: _pushSync, + ), + ], + ), + ), + ), + ); + } +} + +class _SectionHeader extends StatelessWidget { + final String text; + const _SectionHeader(this.text); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.fromLTRB(16, 20, 16, 6), + child: Text( + text, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Theme.of(context).colorScheme.primary, + letterSpacing: 1.2, ), ), ); diff --git a/lib/ui/screens/settings/settings_side_panel.dart b/lib/ui/screens/settings/settings_side_panel.dart index 13c8e4532..35c7cda8e 100644 --- a/lib/ui/screens/settings/settings_side_panel.dart +++ b/lib/ui/screens/settings/settings_side_panel.dart @@ -13,6 +13,7 @@ import 'package:server_core/server_core.dart' hide ImageType; import 'package:url_launcher/url_launcher.dart'; import '../../../data/services/plugin_sync_service.dart'; +import '../../../data/services/row_data_source.dart'; import '../../../di/providers.dart'; import '../../../platform/web_runtime_config.dart'; import '../../../util/focus/dpad_keys.dart'; @@ -773,6 +774,7 @@ class _NavigationCategoryScreenState extends State<_NavigationCategoryScreen> { late final PreferenceBinding _showShuffleButtonBinding; late final PluginSyncService _syncService; bool _navbarNormalizeQueued = false; + bool _hasLiveTvChannels = false; @override void initState() { @@ -783,6 +785,25 @@ class _NavigationCategoryScreenState extends State<_NavigationCategoryScreen> { GetIt.instance(), UserPreferences.showShuffleButton, ); + _checkLiveTv(); + } + + Future _checkLiveTv() async { + try { + final hasChannels = await GetIt.instance().hasLiveTvChannels(); + if (mounted) { + setState(() { + _hasLiveTvChannels = hasChannels; + }); + } + if (!hasChannels) { + final prefs = GetIt.instance(); + if (prefs.get(UserPreferences.showLiveTvButton)) { + prefs.set(UserPreferences.showLiveTvButton, false); + _pushPersonalizationSync(); + } + } + } catch (_) {} } @override @@ -821,6 +842,7 @@ class _NavigationCategoryScreenState extends State<_NavigationCategoryScreen> { appBar: buildSettingsAppBar(context, Text(l10n.navigation)), body: ListView( children: [ + _SectionHeader(l10n.settingsNavbarDisplayHeader), EnumPreferenceTile( preference: UserPreferences.navbarPosition, title: l10n.navigationStyle, @@ -849,10 +871,20 @@ class _NavigationCategoryScreenState extends State<_NavigationCategoryScreen> { divisions: 20, labelOf: (v) => '$v%', ), + _SectionHeader(l10n.settingsNavbarContentsHeader), + Padding( + padding: const EdgeInsets.fromLTRB(16, 4, 16, 12), + child: Text( + l10n.settingsNavbarContentsDescription, + style: TextStyle( + fontSize: 13, + color: Theme.of(context).colorScheme.onSurfaceVariant, + ), + ), + ), SwitchPreferenceTile( preference: UserPreferences.showShuffleButton, title: l10n.showShuffleButton, - subtitle: l10n.settingsShowShuffleButtonInNavigation, icon: Icons.shuffle, onChanged: _pushPersonalizationSync, ), @@ -863,29 +895,32 @@ class _NavigationCategoryScreenState extends State<_NavigationCategoryScreen> { SwitchPreferenceTile( preference: UserPreferences.showGenresButton, title: l10n.showGenresButton, - subtitle: l10n.settingsShowGenresButtonInNavigation, icon: Icons.theater_comedy, onChanged: _pushPersonalizationSync, ), SwitchPreferenceTile( preference: UserPreferences.showFavoritesButton, title: l10n.showFavoritesButton, - subtitle: l10n.settingsShowFavoritesButtonInNavigation, icon: Icons.favorite, onChanged: _pushPersonalizationSync, ), SwitchPreferenceTile( preference: UserPreferences.showLibrariesInToolbar, title: l10n.showLibrariesInToolbar, - subtitle: l10n.settingsShowLibrariesButtonInNavigation, icon: Icons.video_library, onChanged: _pushPersonalizationSync, ), + if (_hasLiveTvChannels) + SwitchPreferenceTile( + preference: UserPreferences.showLiveTvButton, + title: l10n.showLiveTvButton, + icon: Icons.live_tv, + onChanged: _pushPersonalizationSync, + ), if (seerrEnabledOnAccount && _syncService.seerrAvailable) SwitchPreferenceTile( preference: UserPreferences.showSeerrButton, title: l10n.showSeerrButton, - subtitle: l10n.settingsShowSeerrButtonInNavigation, iconBuilder: (size, color) => Image.asset( 'assets/icons/seerr.png', width: size, diff --git a/lib/ui/widgets/left_sidebar.dart b/lib/ui/widgets/left_sidebar.dart index 56123d084..233a2c455 100644 --- a/lib/ui/widgets/left_sidebar.dart +++ b/lib/ui/widgets/left_sidebar.dart @@ -682,6 +682,8 @@ class _LeftSidebarState extends State { final showSyncPlay = _prefs.get(UserPreferences.syncPlayEnabled) && _prefs.get(UserPreferences.showSyncPlayButton); + final showLiveTv = _prefs.get(UserPreferences.showLiveTvButton) && + _libraries.any((lib) => lib.collectionType == 'livetv'); final seerrPrefs = GetIt.instance(); final seerrDisplayName = seerrPrefs.moonfinDisplayName.trim(); final seerrNavLabel = seerrDisplayName.isNotEmpty @@ -822,6 +824,22 @@ class _LeftSidebarState extends State { ); }, ), + if (showLiveTv) + _SidebarItem( + icon: Icons.live_tv, + label: l10n.liveTv, + baseColor: nextSidebarColor(), + showLabel: _showLabels, + onPressed: () { + _onNavigate(); + if (_isActive(Destinations.liveTvGuide)) { + _exitSidebarToContent(); + return; + } + _markNavigationAwayFromSidebar(); + context.navigateTopLevel(Destinations.liveTvGuide); + }, + ), if (_prefs.get(UserPreferences.showSeerrButton) && GetIt.instance().seerrAvailable) _SidebarItem( diff --git a/lib/ui/widgets/mobile_bottom_nav_bar.dart b/lib/ui/widgets/mobile_bottom_nav_bar.dart index 06cc24ccc..7c9ca2ef2 100644 --- a/lib/ui/widgets/mobile_bottom_nav_bar.dart +++ b/lib/ui/widgets/mobile_bottom_nav_bar.dart @@ -235,6 +235,21 @@ class _MobileBottomNavBarState extends State { ); } + if (_prefs.get(UserPreferences.showLiveTvButton) && + _libraries.any((lib) => lib.collectionType == 'livetv')) { + actions.add( + _BottomNavAction( + icon: Icons.live_tv, + label: l10n.liveTv, + isActive: _isActive(Destinations.liveTvGuide), + onTap: () { + if (_isActive(Destinations.liveTvGuide)) return; + context.navigateTopLevel(Destinations.liveTvGuide); + }, + ), + ); + } + if (_seerrEnabled()) { final seerrPrefs = GetIt.instance(); final displayName = seerrPrefs.moonfinDisplayName.trim(); diff --git a/lib/ui/widgets/top_toolbar.dart b/lib/ui/widgets/top_toolbar.dart index 127a6b068..89293092b 100644 --- a/lib/ui/widgets/top_toolbar.dart +++ b/lib/ui/widgets/top_toolbar.dart @@ -613,6 +613,8 @@ class _TopToolbarState extends State { final showSyncPlay = _prefs.get(UserPreferences.syncPlayEnabled) && _prefs.get(UserPreferences.showSyncPlayButton); + final showLiveTv = _prefs.get(UserPreferences.showLiveTvButton) && + _libraries.any((lib) => lib.collectionType == 'livetv'); final seerrPrefs = GetIt.instance(); final showSeerr = _prefs.get(UserPreferences.showSeerrButton) && GetIt.instance().seerrAvailable; @@ -788,6 +790,22 @@ class _TopToolbarState extends State { ), ), ], + if (showLiveTv) ...[ + _gap(), + _orderButton( + order: (order++).toDouble(), + child: ExpandableIconButton( + key: const ValueKey('toolbar_livetv'), + icon: Icons.live_tv, + label: l10n.liveTv, + baseColor: nextNavColor(), + onPressed: () { + if (_isActive(Destinations.liveTvGuide)) return; + context.navigateTopLevel(Destinations.liveTvGuide); + }, + ), + ), + ], if (showSeerr) ...[ _gap(), _orderButton(