aboutsummaryrefslogtreecommitdiff
path: root/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt
diff options
context:
space:
mode:
Diffstat (limited to 'imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt')
-rw-r--r--imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt37
1 files changed, 23 insertions, 14 deletions
diff --git a/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt b/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt
index 852e1e8..d258822 100644
--- a/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt
+++ b/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt
@@ -25,33 +25,42 @@ class ImageItem(val data: ImageModel)
: KauIItem<ImageItem, ImageItem.ViewHolder>(R.layout.kau_iitem_image, { ViewHolder(it) }) {
private var failedToLoad = false
+ var withFade = true
- fun bindEvents(fastAdapter: FastAdapter<ImageItem>) {
- fastAdapter.withMultiSelect(true)
- fastAdapter.withSelectable(true)
- fastAdapter.withOnClickListener { v, _, _, _ ->
- val image = v as BlurredImageView
- image.toggleBlur()
- true
+ companion object {
+ fun bindEvents(fastAdapter: FastAdapter<ImageItem>) {
+ fastAdapter.withMultiSelect(true)
+ .withSelectable(true)
+ //adapter selector occurs before the on click event
+ .withOnClickListener { v, _, item, _ ->
+ val image = v as BlurredImageView
+ if (item.isSelected) image.blur()
+ else image.removeBlur()
+ true
+ }
}
}
+ override fun isSelectable(): Boolean = !failedToLoad
+
override fun bindView(holder: ViewHolder, payloads: List<Any>?) {
super.bindView(holder, payloads)
- holder.container.alpha = 0f
+ if (withFade) holder.container.alpha = 0f
Glide.with(holder.itemView)
.load(data.data)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(e: GlideException?, model: Any, target: Target<Drawable>, isFirstResource: Boolean): Boolean {
failedToLoad = true;
holder.container.setIcon(GoogleMaterial.Icon.gmd_error);
- holder.container.animate().alpha(1f).start();
+ if (withFade) holder.container.animate().alpha(1f).start();
return true;
}
override fun onResourceReady(resource: Drawable, model: Any, target: Target<Drawable>, dataSource: DataSource, isFirstResource: Boolean): Boolean {
- holder.container.animate().alpha(1f).start();
- return false;
+ holder.container.imageBase.setImageDrawable(resource)
+ if (isSelected) holder.container.blurInstantly()
+ if (withFade) holder.container.animate().alpha(1f).start();
+ return true;
}
})
.into(holder.container.imageBase)
@@ -63,14 +72,13 @@ class ImageItem(val data: ImageModel)
.sizePx(sizePx)
.paddingPx(sizePx / 3)
.color(Color.WHITE))
- //todo add background
- imageBase.setBackgroundColor(ImagePickerActivityBase.accentColor)
+ imageBase.setBackgroundColor(ImagePickerActivity.accentColor)
imageForeground.gone()
}
private fun computeViewSize(context: Context): Int {
val screenWidthPx = context.resources.displayMetrics.widthPixels
- return screenWidthPx / ImagePickerActivityBase.computeColumnCount(context)
+ return screenWidthPx / ImagePickerActivity.computeColumnCount(context)
}
override fun unbindView(holder: ViewHolder) {
@@ -81,6 +89,7 @@ class ImageItem(val data: ImageModel)
} else {
holder.container.fullReset()
}
+ failedToLoad = false
}
class ViewHolder(v: View) : RecyclerView.ViewHolder(v) {