From 7d86f46fa323bc4cc3fff365c53d44c66102e644 Mon Sep 17 00:00:00 2001 From: Yash Garg Date: Sun, 14 May 2023 19:59:40 +0530 Subject: [PATCH] feat: show movie size in extra info and improve size formatting (#367) --- .../jellyfin/fragments/MovieFragment.kt | 6 ++++ app/phone/src/main/res/layout/item_info.xml | 34 +++++++++++++++++-- .../jdtech/jellyfin/utils/DownloaderImpl.kt | 5 +-- core/src/main/res/values-b+es+419/strings.xml | 2 +- core/src/main/res/values-es/strings.xml | 2 +- core/src/main/res/values-pl/strings.xml | 4 +-- core/src/main/res/values-pt-rBR/strings.xml | 2 +- core/src/main/res/values-ru/strings.xml | 2 +- core/src/main/res/values-sk/strings.xml | 2 +- core/src/main/res/values/strings.xml | 3 +- 10 files changed, 49 insertions(+), 13 deletions(-) diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/MovieFragment.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/MovieFragment.kt index c9e07f7b..ffba617e 100644 --- a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/MovieFragment.kt +++ b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/MovieFragment.kt @@ -4,6 +4,7 @@ import android.app.DownloadManager import android.content.Intent import android.net.Uri import android.os.Bundle +import android.text.format.Formatter import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -267,6 +268,9 @@ class MovieFragment : Fragment() { private fun bindUiStateNormal(uiState: MovieViewModel.UiState.Normal) { uiState.apply { + val size = item.sources.getOrNull(0)?.size?.let { + Formatter.formatFileSize(requireContext(), it) + } val canDownload = item.canDownload && item.sources.any { it.type == FindroidSourceType.REMOTE } val canDelete = item.sources.any { it.type == FindroidSourceType.LOCAL } @@ -371,6 +375,8 @@ class MovieFragment : Fragment() { binding.info.audioGroup.isVisible = audioString.isNotEmpty() binding.info.subtitles.text = subtitleString binding.info.subtitlesGroup.isVisible = subtitleString.isNotEmpty() + size?.let { binding.info.size.text = it } + binding.info.sizeGroup.isVisible = size != null } binding.info.description.text = item.overview diff --git a/app/phone/src/main/res/layout/item_info.xml b/app/phone/src/main/res/layout/item_info.xml index 89e288e7..56289b6f 100644 --- a/app/phone/src/main/res/layout/item_info.xml +++ b/app/phone/src/main/res/layout/item_info.xml @@ -8,6 +8,28 @@ android:layout_marginHorizontal="24dp" android:layout_marginBottom="12dp"> + + + + + app:layout_constraintTop_toBottomOf="@id/size" /> - + + - diff --git a/core/src/main/java/dev/jdtech/jellyfin/utils/DownloaderImpl.kt b/core/src/main/java/dev/jdtech/jellyfin/utils/DownloaderImpl.kt index c8b4239e..489c2d36 100644 --- a/core/src/main/java/dev/jdtech/jellyfin/utils/DownloaderImpl.kt +++ b/core/src/main/java/dev/jdtech/jellyfin/utils/DownloaderImpl.kt @@ -5,6 +5,7 @@ import android.content.Context import android.net.Uri import android.os.Environment import android.os.StatFs +import android.text.format.Formatter import androidx.core.net.toUri import dev.jdtech.jellyfin.AppPreferences import dev.jdtech.jellyfin.core.R as CoreR @@ -66,8 +67,8 @@ class DownloaderImpl( -1, UiText.StringResource( CoreR.string.not_enough_storage, - source.size.div(1000000), - stats.availableBytes.div(1000000) + Formatter.formatFileSize(context, source.size), + Formatter.formatFileSize(context, stats.availableBytes) ) ) } diff --git a/core/src/main/res/values-b+es+419/strings.xml b/core/src/main/res/values-b+es+419/strings.xml index f0bebf7b..b984fd18 100644 --- a/core/src/main/res/values-b+es+419/strings.xml +++ b/core/src/main/res/values-b+es+419/strings.xml @@ -165,7 +165,7 @@ La ubicación de almacenamiento no está disponible Interno Externo - Éste elemento requiere %d MBs de almacenamiento pero solo hay disponible %d MBs + Éste elemento requiere %s de almacenamiento pero solo hay disponible %s Video Audio Subtítulos diff --git a/core/src/main/res/values-es/strings.xml b/core/src/main/res/values-es/strings.xml index 396087b7..cddcd5c7 100644 --- a/core/src/main/res/values-es/strings.xml +++ b/core/src/main/res/values-es/strings.xml @@ -170,7 +170,7 @@ Conectarse %d MB Error al descargar - Este elemento requiere %d MB libres en el almacenamiento pero solo hay disponibles %d MB + Este elemento requiere %s libres en el almacenamiento pero solo hay disponibles %s No se puede conectar con el servidor de Jellyfin, para ver sin conexión, activa el Modo sin conexión Seleccionar ubicación de almacenamiento La ubicación de almacenamiento no está disponible diff --git a/core/src/main/res/values-pl/strings.xml b/core/src/main/res/values-pl/strings.xml index bbf6a838..eff5b86b 100644 --- a/core/src/main/res/values-pl/strings.xml +++ b/core/src/main/res/values-pl/strings.xml @@ -173,7 +173,7 @@ Przejdź online %d MB Błąd podczas pobierania - Ten element wymaga %d MB wolnego miejsca, ale dostępne jest tylko %d MB + Ten element wymaga %s wolnego miejsca, ale dostępne jest tylko %s Brak połączenia z serwerem Jellyfin, aby oglądać offline, włącz tryb offline Wybierz miejsce przechowywania Lokalizacja przechowywania jest niedostępna @@ -184,4 +184,4 @@ Anuluj pobieranie Czy na pewno chcesz anulować pobieranie\? Zatrzymaj pobieranie - \ No newline at end of file + diff --git a/core/src/main/res/values-pt-rBR/strings.xml b/core/src/main/res/values-pt-rBR/strings.xml index bf246c2d..60a19ec9 100644 --- a/core/src/main/res/values-pt-rBR/strings.xml +++ b/core/src/main/res/values-pt-rBR/strings.xml @@ -166,7 +166,7 @@ Miniatura de pré-visualização Armazenamento Ícone do modo offline - Este item requer %d MB de armazenamento livre, mas apenas %d MB está disponível + Este item requer %s de armazenamento livre, mas apenas %s está disponível Tem certeza de que deseja cancelar o download\? Indicador de download Modo offline diff --git a/core/src/main/res/values-ru/strings.xml b/core/src/main/res/values-ru/strings.xml index bf3f5604..cbbac75f 100644 --- a/core/src/main/res/values-ru/strings.xml +++ b/core/src/main/res/values-ru/strings.xml @@ -165,7 +165,7 @@ Тёмная тема AMOLED Использовать тему AMOLED с чистым чёрным фоном Ошибка во время скачивания - Для этого элемента требуется %dМБ свободного места, но доступно только %dМБ + Для этого элемента требуется %s свободного места, но доступно только %s Нет соединения с сервером Jellyfin, для просмотра в автономном режиме включите Офлайн-Режим С%1$d:Э%2$d-%3$d - %4$s %1$d:%2$d. %3$s diff --git a/core/src/main/res/values-sk/strings.xml b/core/src/main/res/values-sk/strings.xml index 37b3cda7..c1dffc90 100644 --- a/core/src/main/res/values-sk/strings.xml +++ b/core/src/main/res/values-sk/strings.xml @@ -179,7 +179,7 @@ Prejsť do online režimu %d MB Chyba pri sťahovaní - Táto položka potrebuje %d MB voľného miesta, dostupných je iba %d MB + Táto položka potrebuje %s voľného miesta, dostupných je iba %s Vybrať úložisko Nepodarilo sa spojiť s Jellyfin serverom, pre sledovanie offline povoľte Offline Režim Pamäť diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 71433df3..802db169 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -162,6 +162,7 @@ Add server address Add Quick Connect + Size Video Audio Subtitles @@ -175,7 +176,7 @@ Go online %d MB Error while downloading - This item requires %d MB of free storage but only %d MB is available + This item requires %s of free storage but only %s is available No connection to the Jellyfin server, to watch offline enable Offline Mode Select storage location Storage location is unavailable