mirror of
https://gitlab.com/ultrasonic/ultrasonic.git
synced 2025-06-05 18:13:05 +03:00
Provide configuration for image load request.
Signed-off-by: Yahor Berdnikau <egorr.berd@gmail.com>
This commit is contained in:
parent
c23420a83a
commit
c0b6500b47
@ -6,15 +6,46 @@ import com.squareup.picasso.Picasso
|
|||||||
import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient
|
import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient
|
||||||
|
|
||||||
class SubsonicImageLoader(
|
class SubsonicImageLoader(
|
||||||
private val context: Context,
|
context: Context,
|
||||||
apiClient: SubsonicAPIClient
|
apiClient: SubsonicAPIClient
|
||||||
) {
|
) {
|
||||||
private val picasso = Picasso.Builder(context)
|
private val picasso = Picasso.Builder(context)
|
||||||
.addRequestHandler(CoverArtRequestHandler(apiClient))
|
.addRequestHandler(CoverArtRequestHandler(apiClient))
|
||||||
.build().apply { setIndicatorsEnabled(BuildConfig.DEBUG) }
|
.build().apply { setIndicatorsEnabled(BuildConfig.DEBUG) }
|
||||||
|
|
||||||
fun loadCoverArt(entityId: String, view: ImageView) {
|
fun load(request: ImageRequest) = when (request) {
|
||||||
picasso.load(createLoadCoverArtRequest(entityId))
|
is ImageRequest.CoverArt -> loadCoverArt(request)
|
||||||
.into(view)
|
}
|
||||||
|
|
||||||
|
private fun loadCoverArt(request: ImageRequest.CoverArt) {
|
||||||
|
picasso.load(createLoadCoverArtRequest(request.entityId))
|
||||||
|
.apply {
|
||||||
|
if (request.placeHolderDrawableRes != null) {
|
||||||
|
placeholder(request.placeHolderDrawableRes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.apply {
|
||||||
|
if (request.errorDrawableRes != null) {
|
||||||
|
error(request.errorDrawableRes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.into(request.imageView)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sealed class ImageRequest(
|
||||||
|
val placeHolderDrawableRes: Int? = null,
|
||||||
|
val errorDrawableRes: Int? = null,
|
||||||
|
val imageView: ImageView
|
||||||
|
) {
|
||||||
|
class CoverArt(
|
||||||
|
val entityId: String,
|
||||||
|
imageView: ImageView,
|
||||||
|
placeHolderDrawableRes: Int? = null,
|
||||||
|
errorDrawableRes: Int? = null
|
||||||
|
) : ImageRequest(
|
||||||
|
placeHolderDrawableRes,
|
||||||
|
errorDrawableRes,
|
||||||
|
imageView
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -2,7 +2,9 @@ package org.moire.ultrasonic.subsonic
|
|||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
|
import org.moire.ultrasonic.R
|
||||||
import org.moire.ultrasonic.domain.MusicDirectory
|
import org.moire.ultrasonic.domain.MusicDirectory
|
||||||
|
import org.moire.ultrasonic.subsonic.loader.image.ImageRequest
|
||||||
import org.moire.ultrasonic.subsonic.loader.image.SubsonicImageLoader
|
import org.moire.ultrasonic.subsonic.loader.image.SubsonicImageLoader
|
||||||
import org.moire.ultrasonic.util.ImageLoader
|
import org.moire.ultrasonic.util.ImageLoader
|
||||||
import org.moire.ultrasonic.util.LegacyImageLoader
|
import org.moire.ultrasonic.util.LegacyImageLoader
|
||||||
@ -30,10 +32,13 @@ class SubsonicImageLoaderProxy(
|
|||||||
if (id != null &&
|
if (id != null &&
|
||||||
view != null &&
|
view != null &&
|
||||||
view is ImageView) {
|
view is ImageView) {
|
||||||
subsonicImageLoader.loadCoverArt(
|
val request = ImageRequest.CoverArt(
|
||||||
entityId = id,
|
id,
|
||||||
view = view
|
view,
|
||||||
|
placeHolderDrawableRes = R.drawable.unknown_album,
|
||||||
|
errorDrawableRes = R.drawable.unknown_album
|
||||||
)
|
)
|
||||||
|
subsonicImageLoader.load(request)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user