diff --git a/CHANGELOG.md b/CHANGELOG.md index 91589342..1834e36f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## GitHub #### NEW +- `[Radarr/Catalogue]` Ability to sort by in cinema, physical release, and digital release dates - `[Radarr/Details]` Show the monitor state of the movie in the overview table - `[Radarr/Manual Import]` Ability to manually import content from the filesystem (quick) - `[Sonarr/Add]` View a series' TheTVDB page by long-pressing the tile diff --git a/assets/localization/de.json b/assets/localization/de.json index 0920b7e2..1b5dc8e2 100644 --- a/assets/localization/de.json +++ b/assets/localization/de.json @@ -27,10 +27,12 @@ "radarr.CinemaDateUnknown": "Kinoausstrahlung Unbekannt", "radarr.CutoffUnmet": "Cutoff nicht erreicht", "radarr.DateAdded": "Hinzugefügt am", + "radarr.DirectoryNotFound": "Verzeichnis nicht gefunden", "radarr.Discover": "Entdecken", "radarr.DownloadFailed": "Herunterladen gescheitert", "radarr.DownloadIgnored": "Herunterladen ignoriert", "radarr.EditMovie": "Film bearbeiten", + "radarr.FileBrowser": "Dateiauswahl …", "radarr.FilterCatalogue": "Katalog filtern", "radarr.GrabbedFrom": "Gegrabbed von {}", "radarr.History": "Verlauf", @@ -39,7 +41,7 @@ "radarr.InCinemasToday": "Heute in den Kinos", "radarr.Interactive": "Interaktiv", "radarr.ManualImport": "Manueller Import", - "radarr.ManualImportDescription": "Importiere Filme vom Dateisystem", + "radarr.ManualImportDescription": "Filme vom Dateisystem importieren", "radarr.MinimumAvailability": "Minimale Verfügbarkeit", "radarr.Missing": "Fehlend", "radarr.MonitorMovie": "Überwache Film", @@ -52,6 +54,7 @@ "radarr.MovieNotFound": "Film nicht gefunden", "radarr.MoviePath": "Filmpfad", "radarr.Movies": "Filme", + "radarr.NoFilesFound": "Keine Dateien gefunden", "radarr.NoHistoryFound": "Kein Verlauf gefunden", "radarr.NoMoviesFound": "Keine Filme gefunden", "radarr.NoResultsFound": "Keine Ergebnisse gefunden", @@ -138,7 +141,7 @@ "tautulli.Season": "Staffel {}", "tautulli.Quality": "Qualität", "tautulli.Product": "Produkt", - "tautulli.Player": "Player", + "tautulli.Player": "Wiedergabegerät", "tautulli.Platform": "Plattform", "tautulli.NoActiveStreams": "Keine aktiven Streams", "tautulli.None": "Nichts", @@ -149,34 +152,34 @@ "tautulli.History": "Verlauf", "tautulli.ETA": "Restzeit", "tautulli.Duration": "Dauer", - "tautulli.DirectStreams": "Direct Streams", - "tautulli.DirectStream": "Direct Stream", - "tautulli.DirectPlays": "Direct Plays", - "tautulli.DirectPlay": "Direct Play", + "tautulli.DirectStreams": "Direkt-Streams", + "tautulli.DirectStream": "Direkt-Stream", + "tautulli.DirectPlays": "Direktwiedergaben", + "tautulli.DirectPlay": "Direktwiedergabe", "tautulli.DeletingTemporarySessionsFailed": "Löschen der temporären Sitzungen fehlgeschlagen", "tautulli.DeletingTemporarySessionsDescription": "Temporäre Sitzungen werden gelöscht", - "tautulli.DeletingTemporarySessions": "Lösche temporäre Sitzungen…", + "tautulli.DeletingTemporarySessions": "Lösche temporäre Sitzungen …", "tautulli.DeletingImageCacheFailed": "Löschen des Bild-Zwischenspeicher fehlgeschlagen", "tautulli.DeletingImageCacheDescription": "Tautulli Bild-Zwischenspeicher wird gelöscht", - "tautulli.DeletingImageCache": "Lösche Bild-Zwischenspeicher…", + "tautulli.DeletingImageCache": "Lösche Bild-Zwischenspeicher …", "tautulli.DeletingCacheFailed": "Löschen des Zwischenspeichers fehlgeschlagen", "tautulli.DeletingCacheDescription": "Tautulli Zwischenspeicher wird gelöscht", - "tautulli.DeletingCache": "Lösche Zwischenspeicher…", + "tautulli.DeletingCache": "Lösche Zwischenspeicher …", "tautulli.DeleteTemporarySessions": "Lösche temporäre Sitzungen", "tautulli.DeleteImageCache": "Bild-Zwischenspeicher löschen", "tautulli.DeleteCache": "Zwischenspeicher löschen", "tautulli.Copy": "Kopieren", - "tautulli.Container": "Container", + "tautulli.Container": "Medien-Container", "tautulli.Burn": "Einbrennen", "tautulli.Bandwidth": "Bandbreite", "tautulli.BackupDatabase": "Datenbank sichern", "tautulli.BackupConfiguration": "Konfiguration sichern", "tautulli.BackingUpDatabaseFailed": "Sichern der Datenbank fehlgeschlagen", "tautulli.BackingUpDatabaseDescription": "Deine Datenbank wird im Hintergrund gesichert", - "tautulli.BackingUpDatabase": "Datenbank wird gesichert…", + "tautulli.BackingUpDatabase": "Datenbank wird gesichert …", "tautulli.BackingUpConfigurationFailed": "Sichern der Konfiguration fehlgeschlagen", "tautulli.BackingUpConfigurationDescription": "Deine Konfiguration wird im Hintergrund gesichert", - "tautulli.BackingUpConfiguration": "Konfiguration wird gesichert…", + "tautulli.BackingUpConfiguration": "Konfiguration wird gesichert …", "tautulli.Audio": "Audio", "tautulli.ActivityDetails": "Aktivitätsdetails", "tautulli.Activity": "Aktivität" diff --git a/assets/localization/en.json b/assets/localization/en.json index dc0ff56c..7d599688 100644 --- a/assets/localization/en.json +++ b/assets/localization/en.json @@ -29,6 +29,7 @@ "radarr.Copy": "Copy", "radarr.CutoffUnmet": "Cutoff Unmet", "radarr.DateAdded": "Date Added", + "radarr.DigitalRelease": "Digital Release", "radarr.DirectoryNotFound": "Directory Not Found", "radarr.Discover": "Discover", "radarr.DownloadFailed": "Download Failed", @@ -40,6 +41,7 @@ "radarr.History": "History", "radarr.HistoryDescription": "View Recent Activity", "radarr.Import": "Import", + "radarr.InCinemas": "In Cinemas", "radarr.InCinemasIn": "In Cinemas in {}", "radarr.InCinemasToday": "In Cinemas Today", "radarr.Interactive": "Interactive", @@ -67,6 +69,7 @@ "radarr.NoSubdirectoriesFound": "No Subdirectories Found", "radarr.NoSummaryIsAvailable": "No summary is available.", "radarr.ParentDirectory": "Parent Directory", + "radarr.PhysicalRelease": "Physical Release", "radarr.Quality": "Quality", "radarr.QualityProfile": "Quality Profile", "radarr.Queue": "Queue", diff --git a/assets/localization/fr.json b/assets/localization/fr.json index 1b5988e4..0610551d 100644 --- a/assets/localization/fr.json +++ b/assets/localization/fr.json @@ -27,10 +27,12 @@ "radarr.CinemaDateUnknown": "Date de sortie au cinéma inconnue", "radarr.CutoffUnmet": "Qualité préférée non atteinte", "radarr.DateAdded": "Date ajoutée", + "radarr.DirectoryNotFound": "Répertoire non trouvé", "radarr.Discover": "Découvrir", "radarr.DownloadFailed": "Échec du téléchargement", "radarr.DownloadIgnored": "Téléchargement ignoré", "radarr.EditMovie": "Modifier le film", + "radarr.FileBrowser": "Navigateur de fichier…", "radarr.FilterCatalogue": "Catalogue des filtres", "radarr.GrabbedFrom": "Récupéré depuis {}", "radarr.History": "Historique", @@ -52,6 +54,7 @@ "radarr.MovieNotFound": "Film non trouvé", "radarr.MoviePath": "Chemin du film", "radarr.Movies": "Films", + "radarr.NoFilesFound": "Aucun fichier trouvé", "radarr.NoHistoryFound": "Pas d'historique trouvé", "radarr.NoMoviesFound": "Aucun film trouvé", "radarr.NoResultsFound": "Aucun résultat", @@ -112,7 +115,7 @@ "search.Alphabetical": "Alphabétique", "search.AllSubcategories": "Toutes les sous-catégories", "search.Age": "Âge", - "tautulli.Burn": "Brûler", + "tautulli.Burn": "Graver", "tautulli.Year": "Année", "tautulli.ViewWebGUI": "Afficher l'interface Web", "tautulli.Video": "Vidéo", @@ -130,17 +133,17 @@ "tautulli.TerminationAttachMessage": "Vous pouvez éventuellement joindre un message ci-dessous.", "tautulli.Terminate": "Terminer", "tautulli.Subtitle": "Sous-titre", - "tautulli.Stream": "Stream", + "tautulli.Stream": "Flux", "tautulli.SessionsMany": "{} Sessions", - "tautulli.SessionsOne": "1 Session", + "tautulli.SessionsOne": "1 session", "tautulli.Sessions": "Sessions", "tautulli.SessionEnded": "Session terminée", "tautulli.Season": "Saison {}", "tautulli.Quality": "Qualité", "tautulli.Product": "Produit", - "tautulli.Player": "Player", - "tautulli.Platform": "Platforme", - "tautulli.NoActiveStreams": "Aucun stream en cours", + "tautulli.Player": "Lecteur", + "tautulli.Platform": "Plateforme", + "tautulli.NoActiveStreams": "Aucun flux en cours", "tautulli.None": "Aucun", "tautulli.More": "Plus", "tautulli.Metadata": "Métadonnées", @@ -150,8 +153,8 @@ "tautulli.ETA": "Temps restant", "tautulli.Episode": "Épisode {}", "tautulli.Duration": "Durée", - "tautulli.DirectStreams": "Direct Streams", - "tautulli.DirectStream": "Direct Stream", + "tautulli.DirectStreams": "Flux directs", + "tautulli.DirectStream": "Flux direct", "tautulli.DirectPlays": "Lectures directe", "tautulli.DirectPlay": "Lecture directe", "tautulli.DeletingTemporarySessionsFailed": "Échec de la suppression des sessions temporaires", @@ -167,7 +170,7 @@ "tautulli.DeleteImageCache": "Supprimer le cache des images", "tautulli.DeleteCache": "Supprimer le cache", "tautulli.Copy": "Copier", - "tautulli.Container": "Container", + "tautulli.Container": "Conteneur", "tautulli.Bandwidth": "Bande passante", "tautulli.BackupDatabase": "Sauvegarder la base de donnée", "tautulli.BackupConfiguration": "Sauvegarder la configuration", diff --git a/assets/localization/it.json b/assets/localization/it.json index 32d0f937..068ed216 100644 --- a/assets/localization/it.json +++ b/assets/localization/it.json @@ -1,5 +1,6 @@ { "lunasea.AnErrorHasOccurred": "C'è stato un errore", + "lunasea.Cancel": "Annulla", "lunasea.ChangeProfiles": "Cambia profili", "lunasea.CheckLogsMessage": "Controlla i registri per maggiori dettagli", "lunasea.ComingSoon": "Prossimamente", @@ -18,6 +19,7 @@ "radarr.All": "Tutti", "radarr.Alphabetical": "Alfabetico", "radarr.Approved": "Approvato", + "radarr.Automatic": "Automatico", "radarr.AvailabilityUnknown": "Disponibilità Sconosciuta", "radarr.AvailableIn": "Disponibile in {}", "radarr.AvailableToday": "Disponibile Oggi", @@ -25,16 +27,21 @@ "radarr.CinemaDateUnknown": "Data Cinema Sconosciuta", "radarr.CutoffUnmet": "Soglia Non Raggiunta", "radarr.DateAdded": "Data Aggiunta", + "radarr.DirectoryNotFound": "Directory non trovata", "radarr.Discover": "Scopri", "radarr.DownloadFailed": "Scaricamento fallito", "radarr.DownloadIgnored": "Scaricamento ignorato", "radarr.EditMovie": "Modifica il film", + "radarr.FileBrowser": "Browser di file…", "radarr.FilterCatalogue": "Filtra catalogo", "radarr.GrabbedFrom": "Preso da {}", "radarr.History": "Cronologia", "radarr.HistoryDescription": "Visualizza l'attività recente", "radarr.InCinemasIn": "Nei cinema in {}", "radarr.InCinemasToday": "Nei cinema oggi", + "radarr.Interactive": "Interattivo", + "radarr.ManualImport": "Importazione manuale", + "radarr.ManualImportDescription": "Importa film dal sistema di file", "radarr.MinimumAvailability": "Disponibilità minima", "radarr.Missing": "Mancante", "radarr.MonitorMovie": "Monitora il film", @@ -47,13 +54,17 @@ "radarr.MovieNotFound": "Film non trovato", "radarr.MoviePath": "Percorso film", "radarr.Movies": "Film", + "radarr.NoFilesFound": "Nessun file trovato", "radarr.NoHistoryFound": "Nessuna cronologia trovata", "radarr.NoMoviesFound": "Nessun film trovato", "radarr.NoResultsFound": "Nessun risultato trovato", + "radarr.NoSubdirectoriesFound": "Nessuna sottodirectory trovata", "radarr.NoSummaryIsAvailable": "Nessun riepilogo disponibile.", + "radarr.ParentDirectory": "Directory genitore", "radarr.QualityProfile": "Profilo qualità", "radarr.Queue": "Coda", "radarr.QueueDescription": "Visualizza il contenuto attivo e in coda", + "radarr.Quick": "Veloce", "radarr.RefreshMovie": "Ricarica il film", "radarr.Rejected": "Rifiutato", "radarr.Released": "Rilasciato", @@ -103,5 +114,72 @@ "search.Category": "Categoria", "search.Alphabetical": "Alfabetico", "search.AllSubcategories": "Tutte Le Sottocategorie", - "search.Age": "Età" + "search.Age": "Età", + "tautulli.Bandwidth": "Larghezza di banda", + "tautulli.BackingUpDatabase": "Backup della banca dati…", + "tautulli.BackingUpConfiguration": "Backup della configurazione…", + "tautulli.Audio": "Audio", + "tautulli.ActivityDetails": "Dettagli dell'attività", + "tautulli.Activity": "Attività", + "tautulli.ETA": "Tempo rimanente", + "tautulli.DeletingTemporarySessionsFailed": "Impossibile eliminare le sessioni temporanee", + "tautulli.DeletingTemporarySessionsDescription": "Le sessioni temporanee vengono eliminate", + "tautulli.DeletingTemporarySessions": "Eliminazione delle sessioni temporanee…", + "tautulli.DeletingImageCacheFailed": "Impossibile eliminare la cache delle immagini", + "tautulli.DeletingImageCacheDescription": "La cache delle immagini Tautulli viene eliminata", + "tautulli.DeletingImageCache": "Eliminazione della cache delle immagini…", + "tautulli.DeletingCacheFailed": "Impossibile eliminare la cache", + "tautulli.DeletingCacheDescription": "La cache di Tautulli viene eliminata", + "tautulli.DeletingCache": "Eliminazione della cache…", + "tautulli.DeleteTemporarySessions": "Elimina le sessioni temporanee", + "tautulli.Burn": "Masterizza", + "tautulli.Year": "Anno", + "tautulli.ViewWebGUI": "Visualizzare l'interfaccia utente grafica Web", + "tautulli.Video": "Video", + "tautulli.Users": "Utenti", + "tautulli.User": "Utente", + "tautulli.Transcode": "Trascodice", + "tautulli.Transcodes": "Trascodici", + "tautulli.Title": "Titolo", + "tautulli.TerminateSessionFailed": "Impossibile terminare la sessione", + "tautulli.TerminateSession": "Termina la sessione", + "tautulli.TerminatedSession": "Sessione terminata", + "tautulli.TerminationMessage": "Messaggio di terminazione", + "tautulli.TerminationConfirmMessage": "Vuoi terminare questa sessione?", + "tautulli.TerminationAttachMessage": "Puoi facoltativamente allegare un messaggio di terminazione qui sotto.", + "tautulli.Terminate": "Termina", + "tautulli.Subtitle": "Sottotitolo", + "tautulli.Stream": "Flusso", + "tautulli.SessionsMany": "{} sessioni", + "tautulli.SessionsOne": "1 sessione", + "tautulli.Sessions": "Sessioni", + "tautulli.SessionEnded": "Sessione terminata", + "tautulli.Season": "Stagione {}", + "tautulli.Quality": "Qualità", + "tautulli.Product": "Prodotto", + "tautulli.Player": "Lettore", + "tautulli.Platform": "Piattaforma", + "tautulli.NoActiveStreams": "Nessun flusso attivo", + "tautulli.None": "Nessuno", + "tautulli.More": "Più", + "tautulli.Metadata": "Metadati", + "tautulli.Location": "Posizione", + "tautulli.Library": "Raccolta", + "tautulli.History": "Storia", + "tautulli.Episode": "Episodio {}", + "tautulli.Duration": "Durata", + "tautulli.DirectStreams": "Flussi diretti", + "tautulli.DirectStream": "Flusso diretto", + "tautulli.DirectPlays": "Riproduzioni dirette", + "tautulli.DirectPlay": "Riproduzione diretta", + "tautulli.DeleteImageCache": "Elimina la cache delle immagini", + "tautulli.DeleteCache": "Elimina cache", + "tautulli.Copy": "Copia", + "tautulli.Container": "Contenitore", + "tautulli.BackupDatabase": "Esegui il backup della base di dati", + "tautulli.BackupConfiguration": "Configurazione di backup", + "tautulli.BackingUpDatabaseFailed": "Impossibile eseguire il backup della base di dati", + "tautulli.BackingUpDatabaseDescription": "Backup della base di dati in sfondo", + "tautulli.BackingUpConfigurationFailed": "Impossibile eseguire il backup della configurazione", + "tautulli.BackingUpConfigurationDescription": "Backup della configurazione in sfondo" } \ No newline at end of file diff --git a/lib/modules/radarr/core/types/sorting_movies.dart b/lib/modules/radarr/core/types/sorting_movies.dart index bdb2de0b..072065d9 100644 --- a/lib/modules/radarr/core/types/sorting_movies.dart +++ b/lib/modules/radarr/core/types/sorting_movies.dart @@ -9,8 +9,14 @@ enum RadarrMoviesSorting { ALPHABETICAL, @HiveField(1) DATE_ADDED, + @HiveField(8) + DIGITAL_RELEASE, + @HiveField(10) + IN_CINEMAS, @HiveField(7) MIN_AVAILABILITY, + @HiveField(9) + PHYSICAL_RELEASE, @HiveField(2) QUALITY_PROFILE, @HiveField(3) @@ -34,8 +40,28 @@ extension RadarrMoviesSortingExtension on RadarrMoviesSorting { case RadarrMoviesSorting.STUDIO: return 'studio'; case RadarrMoviesSorting.YEAR: return 'year'; case RadarrMoviesSorting.MIN_AVAILABILITY: return 'minavailability'; - default: return null; + case RadarrMoviesSorting.IN_CINEMAS: return 'incinemas'; + case RadarrMoviesSorting.PHYSICAL_RELEASE: return 'physicalrelease'; + case RadarrMoviesSorting.DIGITAL_RELEASE: return 'digitalrelease'; } + return null; + } + + RadarrMoviesSorting fromKey(String key) { + switch(key) { + case 'abc': return RadarrMoviesSorting.ALPHABETICAL; + case 'dateadded': return RadarrMoviesSorting.DATE_ADDED; + case 'qualityprofile': return RadarrMoviesSorting.QUALITY_PROFILE; + case 'runtime': return RadarrMoviesSorting.RUNTIME; + case 'size': return RadarrMoviesSorting.SIZE; + case 'studio': return RadarrMoviesSorting.STUDIO; + case 'year': return RadarrMoviesSorting.YEAR; + case 'minavailability': return RadarrMoviesSorting.MIN_AVAILABILITY; + case 'incinemas': return RadarrMoviesSorting.IN_CINEMAS; + case 'physicalrelease': return RadarrMoviesSorting.PHYSICAL_RELEASE; + case 'digitalrelease': return RadarrMoviesSorting.DIGITAL_RELEASE; + } + return null; } String get readable { @@ -48,22 +74,11 @@ extension RadarrMoviesSortingExtension on RadarrMoviesSorting { case RadarrMoviesSorting.STUDIO: return 'radarr.Studio'.tr(); case RadarrMoviesSorting.YEAR: return 'radarr.Year'.tr(); case RadarrMoviesSorting.MIN_AVAILABILITY: return 'radarr.MinimumAvailability'.tr(); - default: return null; + case RadarrMoviesSorting.DIGITAL_RELEASE: return 'radarr.DigitalRelease'.tr(); + case RadarrMoviesSorting.IN_CINEMAS: return 'radarr.InCinemas'.tr(); + case RadarrMoviesSorting.PHYSICAL_RELEASE: return 'radarr.PhysicalRelease'.tr(); } - } - - RadarrMoviesSorting fromKey(String key) { - switch(key) { - case 'abc': return RadarrMoviesSorting.ALPHABETICAL; - case'dateadded': return RadarrMoviesSorting.DATE_ADDED; - case 'qualityprofile': return RadarrMoviesSorting.QUALITY_PROFILE; - case 'runtime': return RadarrMoviesSorting.RUNTIME; - case 'size': return RadarrMoviesSorting.SIZE; - case 'studio': return RadarrMoviesSorting.STUDIO; - case 'year': return RadarrMoviesSorting.YEAR; - case 'minavailability': return RadarrMoviesSorting.MIN_AVAILABILITY; - default: return null; - } + throw Exception('Unknown RadarrMoviesSorting'); } List sort(List data, bool ascending) => _Sorter().byType(data, this, ascending); @@ -80,6 +95,9 @@ class _Sorter { case RadarrMoviesSorting.YEAR: return _year(data, ascending); case RadarrMoviesSorting.MIN_AVAILABILITY: return _minimumAvailability(data, ascending); case RadarrMoviesSorting.ALPHABETICAL: return _alphabetical(data, ascending); + case RadarrMoviesSorting.DIGITAL_RELEASE: return _digitalRelease(data, ascending); + case RadarrMoviesSorting.IN_CINEMAS: return _inCinemas(data, ascending); + case RadarrMoviesSorting.PHYSICAL_RELEASE: return _physicalRelease(data, ascending); } throw Exception('sorting type not found'); } @@ -106,6 +124,36 @@ class _Sorter { return movies; } + List _digitalRelease(List movies, bool ascending) { + movies.sort((a,b) { + int _comparison; + if(a.digitalRelease == null) _comparison = 1; + if(b.digitalRelease == null) _comparison = -1; + if(a.digitalRelease == null && b.digitalRelease == null) _comparison = 0; + if(a.digitalRelease != null && b.digitalRelease != null) + _comparison = ascending ? (a.digitalRelease).compareTo(b.digitalRelease) : (b.digitalRelease).compareTo(a.digitalRelease); + return _comparison == 0 + ? a.sortTitle.toLowerCase().compareTo(b.sortTitle.toLowerCase()) + : _comparison; + }); + return movies; + } + + List _inCinemas(List movies, bool ascending) { + movies.sort((a,b) { + int _comparison; + if(a.inCinemas == null) _comparison = 1; + if(b.inCinemas == null) _comparison = -1; + if(a.inCinemas == null && b.inCinemas == null) _comparison = 0; + if(a.inCinemas != null && b.inCinemas != null) + _comparison = ascending ? (a.inCinemas).compareTo(b.inCinemas) : (b.inCinemas).compareTo(a.inCinemas); + return _comparison == 0 + ? a.sortTitle.toLowerCase().compareTo(b.sortTitle.toLowerCase()) + : _comparison; + }); + return movies; + } + List _minimumAvailability(List movies, bool ascending) { movies.sort((a,b) { int _comparison; @@ -122,6 +170,21 @@ class _Sorter { return movies; } + List _physicalRelease(List movies, bool ascending) { + movies.sort((a,b) { + int _comparison; + if(a.physicalRelease == null) _comparison = 1; + if(b.physicalRelease == null) _comparison = -1; + if(a.physicalRelease == null && b.physicalRelease == null) _comparison = 0; + if(a.physicalRelease != null && b.physicalRelease != null) + _comparison = ascending ? (a.physicalRelease).compareTo(b.physicalRelease) : (b.physicalRelease).compareTo(a.physicalRelease); + return _comparison == 0 + ? a.sortTitle.toLowerCase().compareTo(b.sortTitle.toLowerCase()) + : _comparison; + }); + return movies; + } + List _runtime(List movies, bool ascending) { movies.sort((a,b) { int _comparison; diff --git a/lib/modules/radarr/core/types/sorting_movies.g.dart b/lib/modules/radarr/core/types/sorting_movies.g.dart index 2c298133..aa933d52 100644 --- a/lib/modules/radarr/core/types/sorting_movies.g.dart +++ b/lib/modules/radarr/core/types/sorting_movies.g.dart @@ -17,8 +17,14 @@ class RadarrMoviesSortingAdapter extends TypeAdapter { return RadarrMoviesSorting.ALPHABETICAL; case 1: return RadarrMoviesSorting.DATE_ADDED; + case 8: + return RadarrMoviesSorting.DIGITAL_RELEASE; + case 10: + return RadarrMoviesSorting.IN_CINEMAS; case 7: return RadarrMoviesSorting.MIN_AVAILABILITY; + case 9: + return RadarrMoviesSorting.PHYSICAL_RELEASE; case 2: return RadarrMoviesSorting.QUALITY_PROFILE; case 3: @@ -43,9 +49,18 @@ class RadarrMoviesSortingAdapter extends TypeAdapter { case RadarrMoviesSorting.DATE_ADDED: writer.writeByte(1); break; + case RadarrMoviesSorting.DIGITAL_RELEASE: + writer.writeByte(8); + break; + case RadarrMoviesSorting.IN_CINEMAS: + writer.writeByte(10); + break; case RadarrMoviesSorting.MIN_AVAILABILITY: writer.writeByte(7); break; + case RadarrMoviesSorting.PHYSICAL_RELEASE: + writer.writeByte(9); + break; case RadarrMoviesSorting.QUALITY_PROFILE: writer.writeByte(2); break; diff --git a/lib/modules/radarr/routes/catalogue/widgets/movie_tile.dart b/lib/modules/radarr/routes/catalogue/widgets/movie_tile.dart index 2f48e24f..b1b22b5f 100644 --- a/lib/modules/radarr/routes/catalogue/widgets/movie_tile.dart +++ b/lib/modules/radarr/routes/catalogue/widgets/movie_tile.dart @@ -68,7 +68,17 @@ class _State extends State { TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), _buildChildTextSpan(widget.movie.lunaMinimumAvailability, RadarrMoviesSorting.MIN_AVAILABILITY), TextSpan(text: LunaUI.TEXT_BULLET.lunaPad()), - _buildChildTextSpan(widget.movie.lunaDateAdded, RadarrMoviesSorting.DATE_ADDED), + if( + context.read().moviesSortType != RadarrMoviesSorting.IN_CINEMAS && + context.read().moviesSortType != RadarrMoviesSorting.DIGITAL_RELEASE && + context.read().moviesSortType != RadarrMoviesSorting.PHYSICAL_RELEASE + ) _buildChildTextSpan(widget.movie.lunaDateAdded, RadarrMoviesSorting.DATE_ADDED), + if(context.read().moviesSortType == RadarrMoviesSorting.PHYSICAL_RELEASE) + _buildChildTextSpan(widget.movie.lunaPhysicalReleaseDate, RadarrMoviesSorting.PHYSICAL_RELEASE), + if(context.read().moviesSortType == RadarrMoviesSorting.DIGITAL_RELEASE) + _buildChildTextSpan(widget.movie.lunaDigitalReleaseDate, RadarrMoviesSorting.DIGITAL_RELEASE), + if(context.read().moviesSortType == RadarrMoviesSorting.IN_CINEMAS) + _buildChildTextSpan(widget.movie.lunaInCinemasOn, RadarrMoviesSorting.IN_CINEMAS), ], ); } diff --git a/localization/radarr/en.json b/localization/radarr/en.json index 78aa6449..c799db19 100644 --- a/localization/radarr/en.json +++ b/localization/radarr/en.json @@ -15,6 +15,7 @@ "radarr.Copy": "Copy", "radarr.CutoffUnmet": "Cutoff Unmet", "radarr.DateAdded": "Date Added", + "radarr.DigitalRelease": "Digital Release", "radarr.DirectoryNotFound": "Directory Not Found", "radarr.Discover": "Discover", "radarr.DownloadFailed": "Download Failed", @@ -26,6 +27,7 @@ "radarr.History": "History", "radarr.HistoryDescription": "View Recent Activity", "radarr.Import": "Import", + "radarr.InCinemas": "In Cinemas", "radarr.InCinemasIn": "In Cinemas in {}", "radarr.InCinemasToday": "In Cinemas Today", "radarr.Interactive": "Interactive", @@ -53,6 +55,7 @@ "radarr.NoSubdirectoriesFound": "No Subdirectories Found", "radarr.NoSummaryIsAvailable": "No summary is available.", "radarr.ParentDirectory": "Parent Directory", + "radarr.PhysicalRelease": "Physical Release", "radarr.Quality": "Quality", "radarr.QualityProfile": "Quality Profile", "radarr.Queue": "Queue",