1
0
mirror of https://github.com/ultrasonic/ultrasonic synced 2025-02-28 01:17:44 +01:00

Provide configuration for image load request.

Signed-off-by: Yahor Berdnikau <egorr.berd@gmail.com>
This commit is contained in:
Yahor Berdnikau 2018-06-28 22:03:47 +02:00
parent c23420a83a
commit c0b6500b47
2 changed files with 43 additions and 7 deletions

View File

@ -6,15 +6,46 @@ import com.squareup.picasso.Picasso
import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient
class SubsonicImageLoader(
private val context: Context,
context: Context,
apiClient: SubsonicAPIClient
) {
private val picasso = Picasso.Builder(context)
.addRequestHandler(CoverArtRequestHandler(apiClient))
.build().apply { setIndicatorsEnabled(BuildConfig.DEBUG) }
fun loadCoverArt(entityId: String, view: ImageView) {
picasso.load(createLoadCoverArtRequest(entityId))
.into(view)
fun load(request: ImageRequest) = when (request) {
is ImageRequest.CoverArt -> loadCoverArt(request)
}
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
)
}

View File

@ -2,7 +2,9 @@ package org.moire.ultrasonic.subsonic
import android.view.View
import android.widget.ImageView
import org.moire.ultrasonic.R
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.util.ImageLoader
import org.moire.ultrasonic.util.LegacyImageLoader
@ -30,10 +32,13 @@ class SubsonicImageLoaderProxy(
if (id != null &&
view != null &&
view is ImageView) {
subsonicImageLoader.loadCoverArt(
entityId = id,
view = view
val request = ImageRequest.CoverArt(
id,
view,
placeHolderDrawableRes = R.drawable.unknown_album,
errorDrawableRes = R.drawable.unknown_album
)
subsonicImageLoader.load(request)
}
}
}