All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amrdeveloper.easyadapter.compiler.data.bind.BindGifData.kt Maven / Gradle / Ivy

Go to download

Android Annotation Processor library to generate adapter class easily from your model with a lot of customization.

The newest version!
package com.amrdeveloper.easyadapter.compiler.data.bind

import com.amrdeveloper.easyadapter.compiler.generator.GeneratorConstants
import com.amrdeveloper.easyadapter.compiler.utils.ViewTable
import com.amrdeveloper.easyadapter.option.GifLoader
import com.amrdeveloper.easyadapter.option.ViewSetterType
import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.FunSpec

data class BindGifData(
    override var fieldName: String,
    override var viewId: String,
    val gifLoader: GifLoader,
    override var condition: String,
    override var bindType: BindType = BindType.GIF,
    override var viewClassType: String = "android.widget.ImageView",
    override var viewClassSetter: String = "",
    override var viewSetterType: ViewSetterType = ViewSetterType.METHOD,
) : BindingData() {

    override fun generateFieldBinding(builder: FunSpec.Builder, table: ViewTable, rClass: ClassName) {
        val variableName = declareViewVariableIfNotExists(builder, table, rClass)
        val bindingFormat = when(gifLoader) {
            GifLoader.GLIDE -> {
                "${GeneratorConstants.glideClassName}.with(itemView.context).asGif().load(%L).into(%L)"
            }
            GifLoader.COIL -> {
                """
                    coil.ImageLoader.Builder(itemView.context).componentRegistry {
                        if(android.os.Build.VERSION.SDK_INT > 28)
                            add(coil.decode.ImageDecoderDecoder(itemView.context))
                        else 
                            add(coil.decode.GifDecoder())
                    }.build()
                    .enqueue(${GeneratorConstants.coilImageRequestClassName}
                    .Builder(itemView.context).data(%L).target(%L)
                    .build()
                )
                """.trimIndent()
            }
        }
        val statement = if (condition.isEmpty()) bindingFormat else "if ($condition) $bindingFormat"
        builder.addStatement (statement, getBindingValueSetter(), variableName)
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy