mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-18 07:51:46 +00:00
Merge pull request #968 from DeadGazeS/changes-to-next-episode-threshold-and-auto-select-timeout
Changes to next episode threshold & auto-select timeout settings
This commit is contained in:
commit
abe43d2d8d
11 changed files with 114 additions and 87 deletions
|
|
@ -649,7 +649,7 @@
|
||||||
<string name="settings_playback_map_dv7_to_hevc_description">Dolby Vision Profil 7 zu HEVC-Fallback für nicht unterstützte Geräte.</string>
|
<string name="settings_playback_map_dv7_to_hevc_description">Dolby Vision Profil 7 zu HEVC-Fallback für nicht unterstützte Geräte.</string>
|
||||||
<string name="settings_playback_minutes_before_end">Minuten vor Ende</string>
|
<string name="settings_playback_minutes_before_end">Minuten vor Ende</string>
|
||||||
<string name="settings_playback_minutes_before_end_description">Karte für nächste Episode so viele Minuten vor dem Ende anzeigen.</string>
|
<string name="settings_playback_minutes_before_end_description">Karte für nächste Episode so viele Minuten vor dem Ende anzeigen.</string>
|
||||||
<string name="settings_playback_minutes_value">%1$d Min.</string>
|
<string name="settings_playback_minutes_value">%1$s Min.</string>
|
||||||
<string name="settings_playback_no_items_available">Keine Einträge verfügbar</string>
|
<string name="settings_playback_no_items_available">Keine Einträge verfügbar</string>
|
||||||
<string name="settings_playback_not_set">Nicht festgelegt</string>
|
<string name="settings_playback_not_set">Nicht festgelegt</string>
|
||||||
<string name="settings_playback_option_default">Standard</string>
|
<string name="settings_playback_option_default">Standard</string>
|
||||||
|
|
@ -724,9 +724,9 @@
|
||||||
<string name="settings_playback_threshold_mode_percentage">Prozent</string>
|
<string name="settings_playback_threshold_mode_percentage">Prozent</string>
|
||||||
<string name="settings_playback_threshold_percentage">Schwellenwert in Prozent</string>
|
<string name="settings_playback_threshold_percentage">Schwellenwert in Prozent</string>
|
||||||
<string name="settings_playback_threshold_percentage_description">Karte für nächste Episode anzeigen, wenn die Wiedergabe diesen Prozentsatz erreicht.</string>
|
<string name="settings_playback_threshold_percentage_description">Karte für nächste Episode anzeigen, wenn die Wiedergabe diesen Prozentsatz erreicht.</string>
|
||||||
<string name="settings_playback_threshold_percentage_value">%1$d%</string>
|
<string name="settings_playback_threshold_percentage_value">%1$s%</string>
|
||||||
<string name="settings_playback_timeout_instant">Sofort</string>
|
<string name="settings_playback_timeout_instant">Sofort</string>
|
||||||
<string name="settings_playback_timeout_seconds">%1$ds</string>
|
<string name="settings_playback_timeout_seconds">%1$ss</string>
|
||||||
<string name="settings_playback_timeout_unlimited">Unbegrenzt</string>
|
<string name="settings_playback_timeout_unlimited">Unbegrenzt</string>
|
||||||
<string name="settings_playback_tunneled_playback">Tunneled-Wiedergabe</string>
|
<string name="settings_playback_tunneled_playback">Tunneled-Wiedergabe</string>
|
||||||
<string name="settings_playback_tunneled_playback_description">Tunneled-Wiedergabe für niedrigere Latenz bei Audio-/Video-Synchronisation aktivieren.</string>
|
<string name="settings_playback_tunneled_playback_description">Tunneled-Wiedergabe für niedrigere Latenz bei Audio-/Video-Synchronisation aktivieren.</string>
|
||||||
|
|
|
||||||
|
|
@ -494,7 +494,7 @@
|
||||||
<string name="settings_playback_map_dv7_to_hevc_description">Εναλλαγή Dolby Vision Profile 7 σε HEVC για μη υποστηριζόμενες συσκευές.</string>
|
<string name="settings_playback_map_dv7_to_hevc_description">Εναλλαγή Dolby Vision Profile 7 σε HEVC για μη υποστηριζόμενες συσκευές.</string>
|
||||||
<string name="settings_playback_minutes_before_end">Λεπτά πριν το τέλος</string>
|
<string name="settings_playback_minutes_before_end">Λεπτά πριν το τέλος</string>
|
||||||
<string name="settings_playback_minutes_before_end_description">Εμφάνιση κάρτας επόμενου επεισοδίου τόσα λεπτά πριν το τέλος.</string>
|
<string name="settings_playback_minutes_before_end_description">Εμφάνιση κάρτας επόμενου επεισοδίου τόσα λεπτά πριν το τέλος.</string>
|
||||||
<string name="settings_playback_minutes_value">%1$d λεπτά</string>
|
<string name="settings_playback_minutes_value">%1$s λεπτά</string>
|
||||||
<string name="settings_playback_no_items_available">Δεν υπάρχουν διαθέσιμα στοιχεία</string>
|
<string name="settings_playback_no_items_available">Δεν υπάρχουν διαθέσιμα στοιχεία</string>
|
||||||
<string name="settings_playback_not_set">Δεν έχει οριστεί</string>
|
<string name="settings_playback_not_set">Δεν έχει οριστεί</string>
|
||||||
<string name="settings_playback_option_default">Προεπιλογή</string>
|
<string name="settings_playback_option_default">Προεπιλογή</string>
|
||||||
|
|
@ -569,9 +569,9 @@
|
||||||
<string name="settings_playback_threshold_mode_percentage">Ποσοστό</string>
|
<string name="settings_playback_threshold_mode_percentage">Ποσοστό</string>
|
||||||
<string name="settings_playback_threshold_percentage">Ποσοστό κατωφλίου</string>
|
<string name="settings_playback_threshold_percentage">Ποσοστό κατωφλίου</string>
|
||||||
<string name="settings_playback_threshold_percentage_description">Εμφάνιση κάρτας επόμενου επεισοδίου όταν η αναπαραγωγή φτάσει σε αυτό το ποσοστό.</string>
|
<string name="settings_playback_threshold_percentage_description">Εμφάνιση κάρτας επόμενου επεισοδίου όταν η αναπαραγωγή φτάσει σε αυτό το ποσοστό.</string>
|
||||||
<string name="settings_playback_threshold_percentage_value">%1$d%</string>
|
<string name="settings_playback_threshold_percentage_value">%1$s%</string>
|
||||||
<string name="settings_playback_timeout_instant">Άμεσα</string>
|
<string name="settings_playback_timeout_instant">Άμεσα</string>
|
||||||
<string name="settings_playback_timeout_seconds">%1$ds</string>
|
<string name="settings_playback_timeout_seconds">%1$ss</string>
|
||||||
<string name="settings_playback_timeout_unlimited">Απεριόριστο</string>
|
<string name="settings_playback_timeout_unlimited">Απεριόριστο</string>
|
||||||
<string name="settings_playback_tunneled_playback">Tunneled αναπαραγωγή</string>
|
<string name="settings_playback_tunneled_playback">Tunneled αναπαραγωγή</string>
|
||||||
<string name="settings_playback_tunneled_playback_description">Ενεργοποίηση tunneled αναπαραγωγής για χαμηλότερη καθυστέρηση συγχρονισμού ήχου/βίντεο.</string>
|
<string name="settings_playback_tunneled_playback_description">Ενεργοποίηση tunneled αναπαραγωγής για χαμηλότερη καθυστέρηση συγχρονισμού ήχου/βίντεο.</string>
|
||||||
|
|
|
||||||
|
|
@ -612,7 +612,7 @@
|
||||||
<string name="settings_playback_map_dv7_to_hevc_description">Usar Dolby Vision Perfil 7 a HEVC como alternativa para dispositivos no compatibles.</string>
|
<string name="settings_playback_map_dv7_to_hevc_description">Usar Dolby Vision Perfil 7 a HEVC como alternativa para dispositivos no compatibles.</string>
|
||||||
<string name="settings_playback_minutes_before_end">Minutos antes del final</string>
|
<string name="settings_playback_minutes_before_end">Minutos antes del final</string>
|
||||||
<string name="settings_playback_minutes_before_end_description">Mostrar la tarjeta del siguiente episodio esta cantidad de minutos antes del final.</string>
|
<string name="settings_playback_minutes_before_end_description">Mostrar la tarjeta del siguiente episodio esta cantidad de minutos antes del final.</string>
|
||||||
<string name="settings_playback_minutes_value">%1$d min</string>
|
<string name="settings_playback_minutes_value">%1$s min</string>
|
||||||
<string name="settings_playback_no_items_available">No hay elementos disponibles</string>
|
<string name="settings_playback_no_items_available">No hay elementos disponibles</string>
|
||||||
<string name="settings_playback_not_set">No establecido</string>
|
<string name="settings_playback_not_set">No establecido</string>
|
||||||
<string name="settings_playback_option_default">Predeterminado</string>
|
<string name="settings_playback_option_default">Predeterminado</string>
|
||||||
|
|
@ -687,9 +687,9 @@
|
||||||
<string name="settings_playback_threshold_mode_percentage">Porcentaje</string>
|
<string name="settings_playback_threshold_mode_percentage">Porcentaje</string>
|
||||||
<string name="settings_playback_threshold_percentage">Porcentaje de umbral</string>
|
<string name="settings_playback_threshold_percentage">Porcentaje de umbral</string>
|
||||||
<string name="settings_playback_threshold_percentage_description">Mostrar la tarjeta del siguiente episodio cuando la reproducción alcance este porcentaje.</string>
|
<string name="settings_playback_threshold_percentage_description">Mostrar la tarjeta del siguiente episodio cuando la reproducción alcance este porcentaje.</string>
|
||||||
<string name="settings_playback_threshold_percentage_value">%1$d%</string>
|
<string name="settings_playback_threshold_percentage_value">%1$s%</string>
|
||||||
<string name="settings_playback_timeout_instant">Instantáneo</string>
|
<string name="settings_playback_timeout_instant">Instantáneo</string>
|
||||||
<string name="settings_playback_timeout_seconds">%1$ds</string>
|
<string name="settings_playback_timeout_seconds">%1$ss</string>
|
||||||
<string name="settings_playback_timeout_unlimited">Ilimitado</string>
|
<string name="settings_playback_timeout_unlimited">Ilimitado</string>
|
||||||
<string name="settings_playback_tunneled_playback">Reproducción tunneled</string>
|
<string name="settings_playback_tunneled_playback">Reproducción tunneled</string>
|
||||||
<string name="settings_playback_tunneled_playback_description">Activa la reproducción tunneled para una menor latencia en la sincronización de audio/video.</string>
|
<string name="settings_playback_tunneled_playback_description">Activa la reproducción tunneled para una menor latencia en la sincronización de audio/video.</string>
|
||||||
|
|
|
||||||
|
|
@ -645,7 +645,7 @@
|
||||||
<string name="settings_playback_map_dv7_to_hevc_description">Utiliser Dolby Vision Profil 7 vers HEVC comme alternative pour les appareils non compatibles.</string>
|
<string name="settings_playback_map_dv7_to_hevc_description">Utiliser Dolby Vision Profil 7 vers HEVC comme alternative pour les appareils non compatibles.</string>
|
||||||
<string name="settings_playback_minutes_before_end">Minutes avant la fin</string>
|
<string name="settings_playback_minutes_before_end">Minutes avant la fin</string>
|
||||||
<string name="settings_playback_minutes_before_end_description">Afficher la carte de l'épisode suivant ce nombre de minutes avant la fin.</string>
|
<string name="settings_playback_minutes_before_end_description">Afficher la carte de l'épisode suivant ce nombre de minutes avant la fin.</string>
|
||||||
<string name="settings_playback_minutes_value">%1$d min</string>
|
<string name="settings_playback_minutes_value">%1$s min</string>
|
||||||
<string name="settings_playback_no_items_available">Aucun élément disponible</string>
|
<string name="settings_playback_no_items_available">Aucun élément disponible</string>
|
||||||
<string name="settings_playback_not_set">Non défini</string>
|
<string name="settings_playback_not_set">Non défini</string>
|
||||||
<string name="settings_playback_option_default">Par défaut</string>
|
<string name="settings_playback_option_default">Par défaut</string>
|
||||||
|
|
@ -720,9 +720,9 @@
|
||||||
<string name="settings_playback_threshold_mode_percentage">Pourcentage</string>
|
<string name="settings_playback_threshold_mode_percentage">Pourcentage</string>
|
||||||
<string name="settings_playback_threshold_percentage">Pourcentage de seuil</string>
|
<string name="settings_playback_threshold_percentage">Pourcentage de seuil</string>
|
||||||
<string name="settings_playback_threshold_percentage_description">Afficher la carte de l'épisode suivant lorsque la lecture atteint ce pourcentage.</string>
|
<string name="settings_playback_threshold_percentage_description">Afficher la carte de l'épisode suivant lorsque la lecture atteint ce pourcentage.</string>
|
||||||
<string name="settings_playback_threshold_percentage_value">%1$d%</string>
|
<string name="settings_playback_threshold_percentage_value">%1$s%</string>
|
||||||
<string name="settings_playback_timeout_instant">Instantané</string>
|
<string name="settings_playback_timeout_instant">Instantané</string>
|
||||||
<string name="settings_playback_timeout_seconds">%1$ds</string>
|
<string name="settings_playback_timeout_seconds">%1$ss</string>
|
||||||
<string name="settings_playback_timeout_unlimited">Illimité</string>
|
<string name="settings_playback_timeout_unlimited">Illimité</string>
|
||||||
<string name="settings_playback_tunneled_playback">Lecture tunnelisée</string>
|
<string name="settings_playback_tunneled_playback">Lecture tunnelisée</string>
|
||||||
<string name="settings_playback_tunneled_playback_description">Active la lecture tunnelisée pour une latence réduite dans la synchronisation audio/vidéo.</string>
|
<string name="settings_playback_tunneled_playback_description">Active la lecture tunnelisée pour une latence réduite dans la synchronisation audio/vidéo.</string>
|
||||||
|
|
|
||||||
|
|
@ -494,7 +494,7 @@
|
||||||
<string name="settings_playback_map_dv7_to_hevc_description">Fallback da Dolby Vision Profile 7 a HEVC per i dispositivi non supportati.</string>
|
<string name="settings_playback_map_dv7_to_hevc_description">Fallback da Dolby Vision Profile 7 a HEVC per i dispositivi non supportati.</string>
|
||||||
<string name="settings_playback_minutes_before_end">Minuti prima della fine</string>
|
<string name="settings_playback_minutes_before_end">Minuti prima della fine</string>
|
||||||
<string name="settings_playback_minutes_before_end_description">Mostra la scheda dell'episodio successivo questo numero di minuti prima della fine.</string>
|
<string name="settings_playback_minutes_before_end_description">Mostra la scheda dell'episodio successivo questo numero di minuti prima della fine.</string>
|
||||||
<string name="settings_playback_minutes_value">%1$d min</string>
|
<string name="settings_playback_minutes_value">%1$s min</string>
|
||||||
<string name="settings_playback_no_items_available">Nessun elemento disponibile</string>
|
<string name="settings_playback_no_items_available">Nessun elemento disponibile</string>
|
||||||
<string name="settings_playback_not_set">Non impostato</string>
|
<string name="settings_playback_not_set">Non impostato</string>
|
||||||
<string name="settings_playback_option_default">Predefinito</string>
|
<string name="settings_playback_option_default">Predefinito</string>
|
||||||
|
|
@ -569,9 +569,9 @@
|
||||||
<string name="settings_playback_threshold_mode_percentage">Percentuale</string>
|
<string name="settings_playback_threshold_mode_percentage">Percentuale</string>
|
||||||
<string name="settings_playback_threshold_percentage">Percentuale di soglia</string>
|
<string name="settings_playback_threshold_percentage">Percentuale di soglia</string>
|
||||||
<string name="settings_playback_threshold_percentage_description">Mostra la scheda dell'episodio successivo quando la riproduzione raggiunge questa percentuale.</string>
|
<string name="settings_playback_threshold_percentage_description">Mostra la scheda dell'episodio successivo quando la riproduzione raggiunge questa percentuale.</string>
|
||||||
<string name="settings_playback_threshold_percentage_value">%1$d%</string>
|
<string name="settings_playback_threshold_percentage_value">%1$s%</string>
|
||||||
<string name="settings_playback_timeout_instant">Istantaneo</string>
|
<string name="settings_playback_timeout_instant">Istantaneo</string>
|
||||||
<string name="settings_playback_timeout_seconds">%1$ds</string>
|
<string name="settings_playback_timeout_seconds">%1$ss</string>
|
||||||
<string name="settings_playback_timeout_unlimited">Illimitato</string>
|
<string name="settings_playback_timeout_unlimited">Illimitato</string>
|
||||||
<string name="settings_playback_tunneled_playback">Riproduzione Tunneled</string>
|
<string name="settings_playback_tunneled_playback">Riproduzione Tunneled</string>
|
||||||
<string name="settings_playback_tunneled_playback_description">Abilita la riproduzione tunneled per una minore latenza nella sincronizzazione audio/video.</string>
|
<string name="settings_playback_tunneled_playback_description">Abilita la riproduzione tunneled per una minore latenza nella sincronizzazione audio/video.</string>
|
||||||
|
|
|
||||||
|
|
@ -612,7 +612,7 @@
|
||||||
<string name="settings_playback_map_dv7_to_hevc_description">Fallback Dolby Vision Profile 7 na HEVC dla nieobsługiwanych urządzeń.</string>
|
<string name="settings_playback_map_dv7_to_hevc_description">Fallback Dolby Vision Profile 7 na HEVC dla nieobsługiwanych urządzeń.</string>
|
||||||
<string name="settings_playback_minutes_before_end">Minuty przed końcem</string>
|
<string name="settings_playback_minutes_before_end">Minuty przed końcem</string>
|
||||||
<string name="settings_playback_minutes_before_end_description">Pokaż kartę następnego odcinka tyle minut przed końcem.</string>
|
<string name="settings_playback_minutes_before_end_description">Pokaż kartę następnego odcinka tyle minut przed końcem.</string>
|
||||||
<string name="settings_playback_minutes_value">%1$d min</string>
|
<string name="settings_playback_minutes_value">%1$s min</string>
|
||||||
<string name="settings_playback_no_items_available">Brak dostępnych elementów</string>
|
<string name="settings_playback_no_items_available">Brak dostępnych elementów</string>
|
||||||
<string name="settings_playback_not_set">Nie ustawiono</string>
|
<string name="settings_playback_not_set">Nie ustawiono</string>
|
||||||
<string name="settings_playback_option_default">Domyślny</string>
|
<string name="settings_playback_option_default">Domyślny</string>
|
||||||
|
|
@ -687,9 +687,9 @@
|
||||||
<string name="settings_playback_threshold_mode_percentage">Procent</string>
|
<string name="settings_playback_threshold_mode_percentage">Procent</string>
|
||||||
<string name="settings_playback_threshold_percentage">Próg procentowy</string>
|
<string name="settings_playback_threshold_percentage">Próg procentowy</string>
|
||||||
<string name="settings_playback_threshold_percentage_description">Pokaż kartę następnego odcinka, gdy odtwarzanie osiągnie ten procent.</string>
|
<string name="settings_playback_threshold_percentage_description">Pokaż kartę następnego odcinka, gdy odtwarzanie osiągnie ten procent.</string>
|
||||||
<string name="settings_playback_threshold_percentage_value">%1$d%</string>
|
<string name="settings_playback_threshold_percentage_value">%1$s%</string>
|
||||||
<string name="settings_playback_timeout_instant">Natychmiast</string>
|
<string name="settings_playback_timeout_instant">Natychmiast</string>
|
||||||
<string name="settings_playback_timeout_seconds">%1$ds</string>
|
<string name="settings_playback_timeout_seconds">%1$ss</string>
|
||||||
<string name="settings_playback_timeout_unlimited">Bez limitu</string>
|
<string name="settings_playback_timeout_unlimited">Bez limitu</string>
|
||||||
<string name="settings_playback_tunneled_playback">Odtwarzanie tunelowane</string>
|
<string name="settings_playback_tunneled_playback">Odtwarzanie tunelowane</string>
|
||||||
<string name="settings_playback_tunneled_playback_description">Włącz odtwarzanie tunelowane dla niższego opóźnienia synchronizacji audio/wideo.</string>
|
<string name="settings_playback_tunneled_playback_description">Włącz odtwarzanie tunelowane dla niższego opóźnienia synchronizacji audio/wideo.</string>
|
||||||
|
|
|
||||||
|
|
@ -624,7 +624,7 @@
|
||||||
<string name="settings_playback_map_dv7_to_hevc_description">Fallback de Dolby Vision Profile 7 para HEVC para dispositivos não suportados.</string>
|
<string name="settings_playback_map_dv7_to_hevc_description">Fallback de Dolby Vision Profile 7 para HEVC para dispositivos não suportados.</string>
|
||||||
<string name="settings_playback_minutes_before_end">Minutos Antes do Fim</string>
|
<string name="settings_playback_minutes_before_end">Minutos Antes do Fim</string>
|
||||||
<string name="settings_playback_minutes_before_end_description">Mostra o cartão do próximo episódio estes minutos antes do fim.</string>
|
<string name="settings_playback_minutes_before_end_description">Mostra o cartão do próximo episódio estes minutos antes do fim.</string>
|
||||||
<string name="settings_playback_minutes_value">%1$d min</string>
|
<string name="settings_playback_minutes_value">%1$s min</string>
|
||||||
<string name="settings_playback_no_items_available">Nenhum item disponível</string>
|
<string name="settings_playback_no_items_available">Nenhum item disponível</string>
|
||||||
<string name="settings_playback_not_set">Não definido</string>
|
<string name="settings_playback_not_set">Não definido</string>
|
||||||
<string name="settings_playback_option_default">Padrão</string>
|
<string name="settings_playback_option_default">Padrão</string>
|
||||||
|
|
@ -699,9 +699,9 @@
|
||||||
<string name="settings_playback_threshold_mode_percentage">Percentagem</string>
|
<string name="settings_playback_threshold_mode_percentage">Percentagem</string>
|
||||||
<string name="settings_playback_threshold_percentage">Percentagem Limite</string>
|
<string name="settings_playback_threshold_percentage">Percentagem Limite</string>
|
||||||
<string name="settings_playback_threshold_percentage_description">Mostra o cartão do próximo episódio quando a reprodução atingir esta percentagem.</string>
|
<string name="settings_playback_threshold_percentage_description">Mostra o cartão do próximo episódio quando a reprodução atingir esta percentagem.</string>
|
||||||
<string name="settings_playback_threshold_percentage_value">%1$d%%</string>
|
<string name="settings_playback_threshold_percentage_value">%1$s%</string>
|
||||||
<string name="settings_playback_timeout_instant">Instantâneo</string>
|
<string name="settings_playback_timeout_instant">Instantâneo</string>
|
||||||
<string name="settings_playback_timeout_seconds">%1$ds</string>
|
<string name="settings_playback_timeout_seconds">%1$ss</string>
|
||||||
<string name="settings_playback_timeout_unlimited">Ilimitado</string>
|
<string name="settings_playback_timeout_unlimited">Ilimitado</string>
|
||||||
<string name="settings_playback_tunneled_playback">Reprodução em Túnel</string>
|
<string name="settings_playback_tunneled_playback">Reprodução em Túnel</string>
|
||||||
<string name="settings_playback_tunneled_playback_description">Ativa a reprodução em túnel para menor latência na sincronização de áudio/vídeo.</string>
|
<string name="settings_playback_tunneled_playback_description">Ativa a reprodução em túnel para menor latência na sincronização de áudio/vídeo.</string>
|
||||||
|
|
|
||||||
|
|
@ -494,7 +494,7 @@
|
||||||
<string name="settings_playback_map_dv7_to_hevc_description">Desteklenmeyen cihazlar için Dolby Vision Profile 7\'den HEVC\'ye geri dönüş.</string>
|
<string name="settings_playback_map_dv7_to_hevc_description">Desteklenmeyen cihazlar için Dolby Vision Profile 7\'den HEVC\'ye geri dönüş.</string>
|
||||||
<string name="settings_playback_minutes_before_end">Bitmeden kaç dakika önce</string>
|
<string name="settings_playback_minutes_before_end">Bitmeden kaç dakika önce</string>
|
||||||
<string name="settings_playback_minutes_before_end_description">Sonraki bölüm kartını bitişten kaç dakika önce göstereceğini seç.</string>
|
<string name="settings_playback_minutes_before_end_description">Sonraki bölüm kartını bitişten kaç dakika önce göstereceğini seç.</string>
|
||||||
<string name="settings_playback_minutes_value">%1$d dk</string>
|
<string name="settings_playback_minutes_value">%1$s dk</string>
|
||||||
<string name="settings_playback_no_items_available">Kullanılabilir öğe yok</string>
|
<string name="settings_playback_no_items_available">Kullanılabilir öğe yok</string>
|
||||||
<string name="settings_playback_not_set">Ayarlanmadı</string>
|
<string name="settings_playback_not_set">Ayarlanmadı</string>
|
||||||
<string name="settings_playback_option_default">Varsayılan</string>
|
<string name="settings_playback_option_default">Varsayılan</string>
|
||||||
|
|
@ -569,9 +569,9 @@
|
||||||
<string name="settings_playback_threshold_mode_percentage">Yüzde</string>
|
<string name="settings_playback_threshold_mode_percentage">Yüzde</string>
|
||||||
<string name="settings_playback_threshold_percentage">Eşik yüzdesi</string>
|
<string name="settings_playback_threshold_percentage">Eşik yüzdesi</string>
|
||||||
<string name="settings_playback_threshold_percentage_description">Oynatma bu yüzdeye ulaşınca sonraki bölüm kartını göster.</string>
|
<string name="settings_playback_threshold_percentage_description">Oynatma bu yüzdeye ulaşınca sonraki bölüm kartını göster.</string>
|
||||||
<string name="settings_playback_threshold_percentage_value">%1$d%</string>
|
<string name="settings_playback_threshold_percentage_value">%1$s%</string>
|
||||||
<string name="settings_playback_timeout_instant">Hemen</string>
|
<string name="settings_playback_timeout_instant">Hemen</string>
|
||||||
<string name="settings_playback_timeout_seconds">%1$dsn</string>
|
<string name="settings_playback_timeout_seconds">%1$ssn</string>
|
||||||
<string name="settings_playback_timeout_unlimited">Sınırsız</string>
|
<string name="settings_playback_timeout_unlimited">Sınırsız</string>
|
||||||
<string name="settings_playback_tunneled_playback">Tunneled oynatma</string>
|
<string name="settings_playback_tunneled_playback">Tunneled oynatma</string>
|
||||||
<string name="settings_playback_tunneled_playback_description">Daha düşük gecikmeli ses/video senkronu için tunneled oynatmayı aç.</string>
|
<string name="settings_playback_tunneled_playback_description">Daha düşük gecikmeli ses/video senkronu için tunneled oynatmayı aç.</string>
|
||||||
|
|
|
||||||
|
|
@ -663,7 +663,7 @@
|
||||||
<string name="settings_playback_map_dv7_to_hevc_description">Map Dolby Vision Profile 7 to standard HEVC for devices without DV hardware support</string>
|
<string name="settings_playback_map_dv7_to_hevc_description">Map Dolby Vision Profile 7 to standard HEVC for devices without DV hardware support</string>
|
||||||
<string name="settings_playback_minutes_before_end">Threshold Minutes</string>
|
<string name="settings_playback_minutes_before_end">Threshold Minutes</string>
|
||||||
<string name="settings_playback_minutes_before_end_description">Fallback when no outro timestamp exists.</string>
|
<string name="settings_playback_minutes_before_end_description">Fallback when no outro timestamp exists.</string>
|
||||||
<string name="settings_playback_minutes_value">%1$d min</string>
|
<string name="settings_playback_minutes_value">%1$s min</string>
|
||||||
<string name="settings_playback_no_items_available">No items available</string>
|
<string name="settings_playback_no_items_available">No items available</string>
|
||||||
<string name="settings_playback_not_set">Not set</string>
|
<string name="settings_playback_not_set">Not set</string>
|
||||||
<string name="settings_playback_option_default">Default (media file)</string>
|
<string name="settings_playback_option_default">Default (media file)</string>
|
||||||
|
|
@ -738,9 +738,9 @@
|
||||||
<string name="settings_playback_threshold_mode_percentage">Percentage</string>
|
<string name="settings_playback_threshold_mode_percentage">Percentage</string>
|
||||||
<string name="settings_playback_threshold_percentage">Threshold Percentage</string>
|
<string name="settings_playback_threshold_percentage">Threshold Percentage</string>
|
||||||
<string name="settings_playback_threshold_percentage_description">Fallback when no outro timestamp exists.</string>
|
<string name="settings_playback_threshold_percentage_description">Fallback when no outro timestamp exists.</string>
|
||||||
<string name="settings_playback_threshold_percentage_value">%1$d%</string>
|
<string name="settings_playback_threshold_percentage_value">%1$s%</string>
|
||||||
<string name="settings_playback_timeout_instant">Instant</string>
|
<string name="settings_playback_timeout_instant">Instant</string>
|
||||||
<string name="settings_playback_timeout_seconds">%1$ds</string>
|
<string name="settings_playback_timeout_seconds">%1$ss</string>
|
||||||
<string name="settings_playback_timeout_unlimited">Unlimited</string>
|
<string name="settings_playback_timeout_unlimited">Unlimited</string>
|
||||||
<string name="settings_playback_tunneled_playback">Tunneled Playback</string>
|
<string name="settings_playback_tunneled_playback">Tunneled Playback</string>
|
||||||
<string name="settings_playback_tunneled_playback_description">Hardware-level audio/video sync. May improve playback on some Android TV devices</string>
|
<string name="settings_playback_tunneled_playback_description">Hardware-level audio/video sync. May improve playback on some Android TV devices</string>
|
||||||
|
|
|
||||||
|
|
@ -39,11 +39,11 @@ object PlayerNextEpisodeRules {
|
||||||
if (durationMs <= 0L) return false
|
if (durationMs <= 0L) return false
|
||||||
when (thresholdMode) {
|
when (thresholdMode) {
|
||||||
NextEpisodeThresholdMode.PERCENTAGE -> {
|
NextEpisodeThresholdMode.PERCENTAGE -> {
|
||||||
val clampedPercent = thresholdPercent.coerceIn(97f, 99.5f)
|
val clampedPercent = thresholdPercent.coerceIn(97f, 100f)
|
||||||
(positionMs.toDouble() / durationMs.toDouble()) >= (clampedPercent / 100.0)
|
(positionMs.toDouble() / durationMs.toDouble()) >= (clampedPercent / 100.0)
|
||||||
}
|
}
|
||||||
NextEpisodeThresholdMode.MINUTES_BEFORE_END -> {
|
NextEpisodeThresholdMode.MINUTES_BEFORE_END -> {
|
||||||
val clampedMinutes = thresholdMinutesBeforeEnd.coerceIn(1f, 3.5f)
|
val clampedMinutes = thresholdMinutesBeforeEnd.coerceIn(0f, 3.5f)
|
||||||
val remainingMs = durationMs - positionMs
|
val remainingMs = durationMs - positionMs
|
||||||
remainingMs <= (clampedMinutes * 60_000f).toLong()
|
remainingMs <= (clampedMinutes * 60_000f).toLong()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.heightIn
|
import androidx.compose.foundation.layout.heightIn
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.wrapContentWidth
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.LazyListScope
|
import androidx.compose.foundation.lazy.LazyListScope
|
||||||
import androidx.compose.foundation.lazy.LazyRow
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
|
@ -46,6 +47,7 @@ import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.input.KeyboardType
|
import androidx.compose.ui.text.input.KeyboardType
|
||||||
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import com.nuvio.app.features.addons.AddonRepository
|
import com.nuvio.app.features.addons.AddonRepository
|
||||||
|
|
@ -64,6 +66,7 @@ import kotlinx.coroutines.launch
|
||||||
import nuvio.composeapp.generated.resources.*
|
import nuvio.composeapp.generated.resources.*
|
||||||
import org.jetbrains.compose.resources.StringResource
|
import org.jetbrains.compose.resources.StringResource
|
||||||
import org.jetbrains.compose.resources.stringResource
|
import org.jetbrains.compose.resources.stringResource
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
internal fun LazyListScope.playbackSettingsContent(
|
internal fun LazyListScope.playbackSettingsContent(
|
||||||
isTablet: Boolean,
|
isTablet: Boolean,
|
||||||
|
|
@ -103,6 +106,47 @@ internal fun LazyListScope.playbackSettingsContent(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun formatStep(value: Float): String {
|
||||||
|
return if (value % 1f == 0f) {
|
||||||
|
value.toInt().toString()
|
||||||
|
} else {
|
||||||
|
value.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun snapToStep(value: Float, step: Float): Float {
|
||||||
|
return (value / step).roundToInt() * step
|
||||||
|
}
|
||||||
|
|
||||||
|
fun calculateSteps(
|
||||||
|
min: Float,
|
||||||
|
max: Float,
|
||||||
|
stepSize: Float
|
||||||
|
): Int {
|
||||||
|
val totalSteps = ((max - min) / stepSize).roundToInt()
|
||||||
|
return (totalSteps - 1).coerceAtLeast(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ValueBox(
|
||||||
|
text: String,
|
||||||
|
modifier: Modifier = Modifier
|
||||||
|
) {
|
||||||
|
Box(
|
||||||
|
modifier = modifier,
|
||||||
|
contentAlignment = Alignment.CenterEnd
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
text = text,
|
||||||
|
maxLines = 1,
|
||||||
|
overflow = TextOverflow.Ellipsis,
|
||||||
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
|
color = MaterialTheme.colorScheme.primary,
|
||||||
|
fontWeight = FontWeight.SemiBold,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun PlaybackSettingsSection(
|
private fun PlaybackSettingsSection(
|
||||||
isTablet: Boolean,
|
isTablet: Boolean,
|
||||||
|
|
@ -285,10 +329,9 @@ private fun PlaybackSettingsSection(
|
||||||
) {
|
) {
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
) {
|
) {
|
||||||
Column(modifier = Modifier.weight(1f)) {
|
Column(modifier = Modifier.weight(1f).padding(end = 12.dp)) {
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(Res.string.settings_playback_stream_timeout),
|
text = stringResource(Res.string.settings_playback_stream_timeout),
|
||||||
style = MaterialTheme.typography.bodyLarge,
|
style = MaterialTheme.typography.bodyLarge,
|
||||||
|
|
@ -296,26 +339,22 @@ private fun PlaybackSettingsSection(
|
||||||
)
|
)
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(Res.string.settings_playback_stream_timeout_description),
|
text = stringResource(Res.string.settings_playback_stream_timeout_description),
|
||||||
style = MaterialTheme.typography.bodySmall,
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Text(
|
ValueBox(text = timeoutLabel, modifier = Modifier.wrapContentWidth())
|
||||||
text = timeoutLabel,
|
|
||||||
style = MaterialTheme.typography.bodyMedium,
|
|
||||||
color = MaterialTheme.colorScheme.primary,
|
|
||||||
fontWeight = FontWeight.SemiBold,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
var sliderValue by remember(timeoutSec) { mutableFloatStateOf(timeoutSec.toFloat()) }
|
var sliderValue by remember(timeoutSec) { mutableFloatStateOf(timeoutSec.toFloat()) }
|
||||||
var lastHapticStep by remember(timeoutSec) { mutableStateOf(timeoutSec) }
|
var lastHapticStep by remember(timeoutSec) { mutableStateOf(timeoutSec.toFloat()) }
|
||||||
Slider(
|
Slider(
|
||||||
value = sliderValue,
|
value = sliderValue,
|
||||||
onValueChange = {
|
onValueChange = {
|
||||||
sliderValue = it
|
val snapped = snapToStep(it, 1f)
|
||||||
val steppedValue = it.toInt()
|
sliderValue = snapped
|
||||||
if (steppedValue != lastHapticStep) {
|
|
||||||
lastHapticStep = steppedValue
|
if (snapped != lastHapticStep) {
|
||||||
|
lastHapticStep = snapped
|
||||||
hapticFeedback.performHapticFeedback(HapticFeedbackType.TextHandleMove)
|
hapticFeedback.performHapticFeedback(HapticFeedbackType.TextHandleMove)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -323,7 +362,7 @@ private fun PlaybackSettingsSection(
|
||||||
PlayerSettingsRepository.setStreamAutoPlayTimeoutSeconds(sliderValue.toInt())
|
PlayerSettingsRepository.setStreamAutoPlayTimeoutSeconds(sliderValue.toInt())
|
||||||
},
|
},
|
||||||
valueRange = 0f..11f,
|
valueRange = 0f..11f,
|
||||||
steps = 10,
|
steps = calculateSteps(0f, 11f, 1f),
|
||||||
colors = SliderDefaults.colors(
|
colors = SliderDefaults.colors(
|
||||||
thumbColor = MaterialTheme.colorScheme.primary,
|
thumbColor = MaterialTheme.colorScheme.primary,
|
||||||
activeTrackColor = MaterialTheme.colorScheme.primary,
|
activeTrackColor = MaterialTheme.colorScheme.primary,
|
||||||
|
|
@ -556,10 +595,9 @@ private fun PlaybackSettingsSection(
|
||||||
) {
|
) {
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
) {
|
) {
|
||||||
Column(modifier = Modifier.weight(1f)) {
|
Column(modifier = Modifier.weight(1f).padding(end = 12.dp)) {
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(Res.string.settings_playback_threshold_percentage),
|
text = stringResource(Res.string.settings_playback_threshold_percentage),
|
||||||
style = MaterialTheme.typography.bodyLarge,
|
style = MaterialTheme.typography.bodyLarge,
|
||||||
|
|
@ -567,37 +605,32 @@ private fun PlaybackSettingsSection(
|
||||||
)
|
)
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(Res.string.settings_playback_threshold_percentage_description),
|
text = stringResource(Res.string.settings_playback_threshold_percentage_description),
|
||||||
style = MaterialTheme.typography.bodySmall,
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Text(
|
ValueBox(text = stringResource(
|
||||||
text = stringResource(
|
|
||||||
Res.string.settings_playback_threshold_percentage_value,
|
Res.string.settings_playback_threshold_percentage_value,
|
||||||
thresholdPercent.toInt(),
|
formatStep(thresholdPercent)), modifier = Modifier.wrapContentWidth())
|
||||||
),
|
|
||||||
style = MaterialTheme.typography.bodyMedium,
|
|
||||||
color = MaterialTheme.colorScheme.primary,
|
|
||||||
fontWeight = FontWeight.SemiBold,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
var sliderVal by remember(thresholdPercent) { mutableFloatStateOf(thresholdPercent) }
|
var sliderValue by remember(thresholdPercent) { mutableFloatStateOf(thresholdPercent) }
|
||||||
var lastHapticPercent by remember(thresholdPercent) { mutableStateOf(thresholdPercent.toInt()) }
|
var lastHapticPercent by remember(thresholdPercent) { mutableStateOf(thresholdPercent) }
|
||||||
Slider(
|
Slider(
|
||||||
value = sliderVal,
|
value = sliderValue,
|
||||||
onValueChange = {
|
onValueChange = {
|
||||||
sliderVal = it
|
val snapped = snapToStep(it, 0.5f)
|
||||||
val stepped = it.toInt()
|
sliderValue = snapped
|
||||||
if (stepped != lastHapticPercent) {
|
|
||||||
lastHapticPercent = stepped
|
if (snapped != lastHapticPercent) {
|
||||||
|
lastHapticPercent = snapped
|
||||||
hapticFeedback.performHapticFeedback(HapticFeedbackType.TextHandleMove)
|
hapticFeedback.performHapticFeedback(HapticFeedbackType.TextHandleMove)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onValueChangeFinished = {
|
onValueChangeFinished = {
|
||||||
PlayerSettingsRepository.setNextEpisodeThresholdPercent(sliderVal)
|
PlayerSettingsRepository.setNextEpisodeThresholdPercent(sliderValue)
|
||||||
},
|
},
|
||||||
valueRange = 50f..100f,
|
valueRange = 97f..100f,
|
||||||
steps = 49,
|
steps = calculateSteps(97f, 100f, 0.5f),
|
||||||
colors = SliderDefaults.colors(
|
colors = SliderDefaults.colors(
|
||||||
thumbColor = MaterialTheme.colorScheme.primary,
|
thumbColor = MaterialTheme.colorScheme.primary,
|
||||||
activeTrackColor = MaterialTheme.colorScheme.primary,
|
activeTrackColor = MaterialTheme.colorScheme.primary,
|
||||||
|
|
@ -615,10 +648,9 @@ private fun PlaybackSettingsSection(
|
||||||
) {
|
) {
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
) {
|
) {
|
||||||
Column(modifier = Modifier.weight(1f)) {
|
Column(modifier = Modifier.weight(1f).padding(end = 12.dp)) {
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(Res.string.settings_playback_minutes_before_end),
|
text = stringResource(Res.string.settings_playback_minutes_before_end),
|
||||||
style = MaterialTheme.typography.bodyLarge,
|
style = MaterialTheme.typography.bodyLarge,
|
||||||
|
|
@ -626,37 +658,32 @@ private fun PlaybackSettingsSection(
|
||||||
)
|
)
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(Res.string.settings_playback_minutes_before_end_description),
|
text = stringResource(Res.string.settings_playback_minutes_before_end_description),
|
||||||
style = MaterialTheme.typography.bodySmall,
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Text(
|
ValueBox(text = stringResource(
|
||||||
text = stringResource(
|
|
||||||
Res.string.settings_playback_minutes_value,
|
Res.string.settings_playback_minutes_value,
|
||||||
thresholdMinutes.toInt(),
|
formatStep(thresholdMinutes)), modifier = Modifier.wrapContentWidth())
|
||||||
),
|
|
||||||
style = MaterialTheme.typography.bodyMedium,
|
|
||||||
color = MaterialTheme.colorScheme.primary,
|
|
||||||
fontWeight = FontWeight.SemiBold,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
var sliderVal by remember(thresholdMinutes) { mutableFloatStateOf(thresholdMinutes) }
|
var sliderValue by remember(thresholdMinutes) { mutableFloatStateOf(thresholdMinutes) }
|
||||||
var lastHapticMin by remember(thresholdMinutes) { mutableStateOf(thresholdMinutes.toInt()) }
|
var lastHapticMin by remember(thresholdMinutes) { mutableStateOf(thresholdMinutes) }
|
||||||
Slider(
|
Slider(
|
||||||
value = sliderVal,
|
value = sliderValue,
|
||||||
onValueChange = {
|
onValueChange = {
|
||||||
sliderVal = it
|
val snapped = snapToStep(it, 0.5f)
|
||||||
val stepped = it.toInt()
|
sliderValue = snapped
|
||||||
if (stepped != lastHapticMin) {
|
|
||||||
lastHapticMin = stepped
|
if (snapped != lastHapticMin) {
|
||||||
|
lastHapticMin = snapped
|
||||||
hapticFeedback.performHapticFeedback(HapticFeedbackType.TextHandleMove)
|
hapticFeedback.performHapticFeedback(HapticFeedbackType.TextHandleMove)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onValueChangeFinished = {
|
onValueChangeFinished = {
|
||||||
PlayerSettingsRepository.setNextEpisodeThresholdMinutesBeforeEnd(sliderVal)
|
PlayerSettingsRepository.setNextEpisodeThresholdMinutesBeforeEnd(sliderValue)
|
||||||
},
|
},
|
||||||
valueRange = 1f..15f,
|
valueRange = 0f..3.5f,
|
||||||
steps = 13,
|
steps = calculateSteps(0f, 3.5f, 0.5f),
|
||||||
colors = SliderDefaults.colors(
|
colors = SliderDefaults.colors(
|
||||||
thumbColor = MaterialTheme.colorScheme.primary,
|
thumbColor = MaterialTheme.colorScheme.primary,
|
||||||
activeTrackColor = MaterialTheme.colorScheme.primary,
|
activeTrackColor = MaterialTheme.colorScheme.primary,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue