|
@@ -1,18 +1,23 @@
|
|
package com.nextcloud.talk.adapters
|
|
package com.nextcloud.talk.adapters
|
|
|
|
|
|
import android.net.Uri
|
|
import android.net.Uri
|
|
|
|
+import android.util.Log
|
|
import android.view.LayoutInflater
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import android.view.ViewGroup
|
|
import androidx.core.content.ContextCompat
|
|
import androidx.core.content.ContextCompat
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
import com.facebook.drawee.backends.pipeline.Fresco
|
|
import com.facebook.drawee.backends.pipeline.Fresco
|
|
|
|
+import com.facebook.drawee.controller.BaseControllerListener
|
|
|
|
+import com.facebook.drawee.controller.ControllerListener
|
|
import com.facebook.drawee.interfaces.DraweeController
|
|
import com.facebook.drawee.interfaces.DraweeController
|
|
import com.facebook.drawee.view.SimpleDraweeView
|
|
import com.facebook.drawee.view.SimpleDraweeView
|
|
import com.facebook.imagepipeline.common.RotationOptions
|
|
import com.facebook.imagepipeline.common.RotationOptions
|
|
|
|
+import com.facebook.imagepipeline.image.ImageInfo
|
|
import com.facebook.imagepipeline.request.ImageRequestBuilder
|
|
import com.facebook.imagepipeline.request.ImageRequestBuilder
|
|
import com.nextcloud.talk.databinding.SharedItemGridBinding
|
|
import com.nextcloud.talk.databinding.SharedItemGridBinding
|
|
import com.nextcloud.talk.repositories.SharedItem
|
|
import com.nextcloud.talk.repositories.SharedItem
|
|
|
|
+import com.nextcloud.talk.utils.DrawableUtils
|
|
import com.nextcloud.talk.utils.DrawableUtils.getDrawableResourceIdForMimeType
|
|
import com.nextcloud.talk.utils.DrawableUtils.getDrawableResourceIdForMimeType
|
|
import com.nextcloud.talk.utils.FileViewerUtils
|
|
import com.nextcloud.talk.utils.FileViewerUtils
|
|
|
|
|
|
@@ -44,16 +49,22 @@ class SharedItemsGridAdapter : RecyclerView.Adapter<SharedItemsGridAdapter.ViewH
|
|
.setHeaders(authHeader)
|
|
.setHeaders(authHeader)
|
|
.build()
|
|
.build()
|
|
|
|
|
|
|
|
+ val listener: ControllerListener<ImageInfo?> = object : BaseControllerListener<ImageInfo?>() {
|
|
|
|
+ override fun onFailure(id: String, e: Throwable) {
|
|
|
|
+ Log.w(TAG, "Failed to load image. A static mimetype image will be used", e)
|
|
|
|
+ setStaticMimetypeImage(currentItem, holder)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
val draweeController: DraweeController = Fresco.newDraweeControllerBuilder()
|
|
val draweeController: DraweeController = Fresco.newDraweeControllerBuilder()
|
|
.setOldController(holder.binding.image.controller)
|
|
.setOldController(holder.binding.image.controller)
|
|
.setAutoPlayAnimations(true)
|
|
.setAutoPlayAnimations(true)
|
|
.setImageRequest(imageRequest)
|
|
.setImageRequest(imageRequest)
|
|
|
|
+ .setControllerListener(listener)
|
|
.build()
|
|
.build()
|
|
holder.binding.image.controller = draweeController
|
|
holder.binding.image.controller = draweeController
|
|
} else {
|
|
} else {
|
|
- val drawableResourceId = getDrawableResourceIdForMimeType(currentItem.mimeType)
|
|
|
|
- val drawable = ContextCompat.getDrawable(holder.binding.image.context, drawableResourceId)
|
|
|
|
- holder.binding.image.hierarchy.setPlaceholderImage(drawable)
|
|
|
|
|
|
+ setStaticMimetypeImage(currentItem, holder)
|
|
}
|
|
}
|
|
holder.binding.image.setOnClickListener {
|
|
holder.binding.image.setOnClickListener {
|
|
val fileViewerUtils = FileViewerUtils(it.context, currentItem.userEntity)
|
|
val fileViewerUtils = FileViewerUtils(it.context, currentItem.userEntity)
|
|
@@ -72,6 +83,15 @@ class SharedItemsGridAdapter : RecyclerView.Adapter<SharedItemsGridAdapter.ViewH
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private fun setStaticMimetypeImage(
|
|
|
|
+ currentItem: SharedItem,
|
|
|
|
+ holder: SharedItemsGridAdapter.ViewHolder
|
|
|
|
+ ) {
|
|
|
|
+ val drawableResourceId = DrawableUtils.getDrawableResourceIdForMimeType(currentItem.mimeType)
|
|
|
|
+ val drawable = ContextCompat.getDrawable(holder.binding.image.context, drawableResourceId)
|
|
|
|
+ holder.binding.image.hierarchy.setPlaceholderImage(drawable)
|
|
|
|
+ }
|
|
|
|
+
|
|
override fun getItemCount(): Int {
|
|
override fun getItemCount(): Int {
|
|
return items.size
|
|
return items.size
|
|
}
|
|
}
|