From dca9902e107450a09b5de8d7f4aa5350805f72b6 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Fri, 21 Jan 2022 17:39:28 +0100 Subject: [PATCH] Only show download button when user is allow to download Fix #75 --- .../jellyfin/fragments/MediaInfoFragment.kt | 22 ++++++++++++++----- .../viewmodels/EpisodeBottomSheetViewModel.kt | 5 +++++ .../jellyfin/viewmodels/MediaInfoViewModel.kt | 5 +++++ .../main/res/layout/fragment_media_info.xml | 6 +++-- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaInfoFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaInfoFragment.kt index cf7b0e34..f3863e0d 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaInfoFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaInfoFragment.kt @@ -211,12 +211,24 @@ class MediaInfoFragment : Fragment() { binding.downloadButton.isEnabled = !downloaded - // Download icon - val downloadDrawable = when (downloaded) { - true -> R.drawable.ic_download_filled - false -> R.drawable.ic_download + when (canDownload) { + true -> { + binding.downloadButton.isVisible = true + binding.downloadButton.isEnabled = !downloaded + + // Download icon + val downloadDrawable = when (downloaded) { + true -> R.drawable.ic_download_filled + false -> R.drawable.ic_download + } + binding.downloadButton.setImageResource(downloadDrawable) + } + false -> { + binding.downloadButton.isVisible = false + } } - binding.downloadButton.setImageResource(downloadDrawable) + + binding.name.text = item.name binding.originalTitle.text = item.originalTitle if (dateString.isEmpty()) { diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/EpisodeBottomSheetViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/EpisodeBottomSheetViewModel.kt index f610ca0b..0c8d9e70 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/EpisodeBottomSheetViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/EpisodeBottomSheetViewModel.kt @@ -39,6 +39,7 @@ constructor( val dateString: String, val played: Boolean, val favorite: Boolean, + val canDownload: Boolean, val downloaded: Boolean, val downloadEpisode: Boolean, val available: Boolean, @@ -57,6 +58,7 @@ constructor( private var dateString: String = "" var played: Boolean = false var favorite: Boolean = false + private var canDownload = false private var downloaded: Boolean = false private var downloadEpisode: Boolean = false private var available: Boolean = true @@ -74,6 +76,7 @@ constructor( dateString = getDateString(tempItem) played = tempItem.userData?.played == true favorite = tempItem.userData?.isFavorite == true + canDownload = tempItem.canDownload == true downloaded = isItemDownloaded(downloadDatabase, episodeId) uiState.emit( UiState.Normal( @@ -82,6 +85,7 @@ constructor( dateString, played, favorite, + canDownload, downloaded, downloadEpisode, available, @@ -107,6 +111,7 @@ constructor( dateString, played, favorite, + canDownload, downloaded, downloadEpisode, available, diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaInfoViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaInfoViewModel.kt index 4b16c03f..cca8a007 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaInfoViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaInfoViewModel.kt @@ -48,6 +48,7 @@ constructor( val seasons: List, val played: Boolean, val favorite: Boolean, + val canDownload: Boolean, val downloaded: Boolean, val available: Boolean, ) : UiState() @@ -72,6 +73,7 @@ constructor( var seasons: List = emptyList() var played: Boolean = false var favorite: Boolean = false + private var canDownload: Boolean = false private var downloaded: Boolean = false private var downloadMedia: Boolean = false private var available: Boolean = true @@ -95,6 +97,7 @@ constructor( dateString = getDateString(tempItem) played = tempItem.userData?.played ?: false favorite = tempItem.userData?.isFavorite ?: false + canDownload = tempItem.canDownload == true downloaded = isItemDownloaded(downloadDatabase, itemId) if (itemType == "Series") { nextUp = getNextUp(itemId) @@ -114,6 +117,7 @@ constructor( seasons, played, favorite, + canDownload, downloaded, available ) @@ -155,6 +159,7 @@ constructor( seasons, played, favorite, + canDownload, downloaded, available ) diff --git a/app/src/main/res/layout/fragment_media_info.xml b/app/src/main/res/layout/fragment_media_info.xml index 4e35bfa9..c96527bf 100644 --- a/app/src/main/res/layout/fragment_media_info.xml +++ b/app/src/main/res/layout/fragment_media_info.xml @@ -183,7 +183,8 @@ android:background="@drawable/button_accent_background" android:contentDescription="@string/download_button_description" android:padding="12dp" - android:src="@drawable/ic_download" /> + android:src="@drawable/ic_download" + android:visibility="gone" /> + android:src="@drawable/ic_trash" + android:visibility="gone" />