[Android] Fix cover crash on context sheet

Nicolas Pomepuy git at videolan.org
Mon Jul 3 12:57:32 UTC 2023


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Mon Jul  3 08:17:25 2023 +0200| [44a68fa41bf596e3f5114427b9e10fab15481e12] | committer: Nicolas Pomepuy

Fix cover crash on context sheet

Fixes #2980

> https://code.videolan.org/videolan/vlc-android/commit/44a68fa41bf596e3f5114427b9e10fab15481e12
---

 .../vlc-android/res/layout/contextual_sheet.xml    | 21 ++++++++-
 .../org/videolan/vlc/gui/dialogs/ContextSheet.kt   | 51 +++++++++++++++++-----
 2 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/application/vlc-android/res/layout/contextual_sheet.xml b/application/vlc-android/res/layout/contextual_sheet.xml
index 125f030c2c..b5897489f5 100644
--- a/application/vlc-android/res/layout/contextual_sheet.xml
+++ b/application/vlc-android/res/layout/contextual_sheet.xml
@@ -1,6 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout>
 
+    <data>
+        <import type="android.view.View" />
+        <import type="org.videolan.medialibrary.media.MediaLibraryItem" />
+
+        <variable
+                name="item"
+                type="MediaLibraryItem" />
+        <variable
+                name="cover"
+                type="android.graphics.drawable.BitmapDrawable" />
+
+        <variable
+                name="showCover"
+                type="boolean" />
+    </data>
+
     <androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:app="http://schemas.android.com/apk/res-auto"
             xmlns:tools="http://schemas.android.com/tools"
@@ -17,7 +33,7 @@
                     android:id="@+id/ctx_cover_layout"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:visibility="gone"
+                    android:visibility="@{showCover ? View.VISIBLE : View.GONE}"
                     tools:visibility="visible">
 
                 <androidx.cardview.widget.CardView
@@ -33,6 +49,8 @@
                     <ImageView
                             android:id="@+id/ctx_cover"
                             style="@style/Theme.VLC.BottomSheetTitle"
+                            android:src="@{cover}"
+                            app:media="@{item}"
                             android:layout_width="@dimen/audio_cover"
                             android:layout_height="@dimen/audio_cover"
                             android:scaleType="centerCrop" />
@@ -57,6 +75,7 @@
                     android:id="@+id/ctx_title"
                     style="@style/Theme.VLC.BottomSheetTitle"
                     android:layout_width="wrap_content"
+                    android:visibility="@{showCover ? View.GONE : View.VISIBLE}"
                     android:layout_height="wrap_content"
                     android:paddingLeft="16dp"
                     android:paddingRight="16dp" />
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt
index 702d9218b2..ee4baa1216 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt
@@ -24,10 +24,8 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
-import android.widget.TextView
 import androidx.core.content.ContextCompat
 import androidx.core.content.pm.ShortcutManagerCompat
-import androidx.core.net.toUri
 import androidx.core.os.bundleOf
 import androidx.databinding.DataBindingUtil
 import androidx.fragment.app.FragmentActivity
@@ -36,7 +34,42 @@ import androidx.recyclerview.widget.RecyclerView
 import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED
 import org.videolan.medialibrary.interfaces.media.MediaWrapper
 import org.videolan.medialibrary.media.MediaLibraryItem
-import org.videolan.resources.*
+import org.videolan.resources.AndroidDevices
+import org.videolan.resources.CTX_ADD_FOLDER_AND_SUB_PLAYLIST
+import org.videolan.resources.CTX_ADD_FOLDER_PLAYLIST
+import org.videolan.resources.CTX_ADD_GROUP
+import org.videolan.resources.CTX_ADD_SCANNED
+import org.videolan.resources.CTX_ADD_SHORTCUT
+import org.videolan.resources.CTX_ADD_TO_PLAYLIST
+import org.videolan.resources.CTX_APPEND
+import org.videolan.resources.CTX_COPY
+import org.videolan.resources.CTX_CUSTOM_REMOVE
+import org.videolan.resources.CTX_DELETE
+import org.videolan.resources.CTX_DOWNLOAD_SUBTITLES
+import org.videolan.resources.CTX_FAV_ADD
+import org.videolan.resources.CTX_FAV_EDIT
+import org.videolan.resources.CTX_FAV_REMOVE
+import org.videolan.resources.CTX_FIND_METADATA
+import org.videolan.resources.CTX_GO_TO_FOLDER
+import org.videolan.resources.CTX_GROUP_SIMILAR
+import org.videolan.resources.CTX_INFORMATION
+import org.videolan.resources.CTX_MARK_ALL_AS_PLAYED
+import org.videolan.resources.CTX_MARK_AS_PLAYED
+import org.videolan.resources.CTX_MARK_AS_UNPLAYED
+import org.videolan.resources.CTX_PLAY
+import org.videolan.resources.CTX_PLAY_ALL
+import org.videolan.resources.CTX_PLAY_AS_AUDIO
+import org.videolan.resources.CTX_PLAY_FROM_START
+import org.videolan.resources.CTX_PLAY_NEXT
+import org.videolan.resources.CTX_PLAY_SHUFFLE
+import org.videolan.resources.CTX_REMOVE_FROM_PLAYLIST
+import org.videolan.resources.CTX_REMOVE_GROUP
+import org.videolan.resources.CTX_RENAME
+import org.videolan.resources.CTX_RENAME_GROUP
+import org.videolan.resources.CTX_SET_RINGTONE
+import org.videolan.resources.CTX_SHARE
+import org.videolan.resources.CTX_STOP_AFTER_THIS
+import org.videolan.resources.CTX_UNGROUP
 import org.videolan.tools.isStarted
 import org.videolan.vlc.R
 import org.videolan.vlc.databinding.ContextItemBinding
@@ -88,18 +121,14 @@ class ContextSheet : VLCBottomSheetDialogFragment() {
         if (arguments?.containsKey(CTX_MEDIA_KEY) == true) {
             val media: MediaLibraryItem = arguments?.get(CTX_MEDIA_KEY) as MediaLibraryItem
 
+            binding.item = media
             val artwork = when (media) {
                 is MediaWrapper -> media.artworkURL
                 else -> media.artworkMrl
             }
-            if (!artwork.isNullOrBlank()) {
-                binding.ctxTitle.visibility = View.GONE
-                binding.ctxCoverLayout.visibility = View.VISIBLE
-                binding.ctxCoverTitle.text = media.title
-                binding.ctxCover.setImageURI(artwork.toUri())
-            } else {
-                view.findViewById<TextView>(R.id.ctx_title).text = media.title
-            }
+            binding.showCover = !artwork.isNullOrBlank()
+            binding.ctxCoverTitle.text = media.title
+            binding.ctxTitle.text = media.title
         } else if (arguments?.containsKey(CTX_TITLE_KEY) == true) {
             binding.ctxCoverTitle.text = arguments?.getString(CTX_TITLE_KEY)
                     ?: ""



More information about the Android mailing list