/* * Copyright (c) Kuba SzczodrzyƄski 2019-11-11. */ package pl.szczodrzynski.edziennik import android.graphics.Paint import android.view.View import android.widget.TextView import androidx.core.view.isVisible import androidx.databinding.BindingAdapter import pl.szczodrzynski.edziennik.ext.dp object Binding { @JvmStatic @BindingAdapter("strikeThrough") fun strikeThrough(textView: TextView, strikeThrough: Boolean) { if (strikeThrough) { textView.paintFlags = textView.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG } else { textView.paintFlags = textView.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv() } } @JvmStatic @BindingAdapter("android:isVisible") fun isVisible(view: View, isVisible: Boolean) { view.isVisible = isVisible } private fun resizeDrawable(textView: TextView, index: Int, size: Int) { val drawables = textView.compoundDrawables drawables[index]?.setBounds(0, 0, size, size) textView.setCompoundDrawables(drawables[0], drawables[1], drawables[2], drawables[3]) } @JvmStatic @BindingAdapter("android:drawableLeftAutoSize") fun drawableLeftAutoSize(textView: TextView, enable: Boolean) = resizeDrawable( textView, index = 0, size = textView.textSize.toInt(), ) @JvmStatic @BindingAdapter("android:drawableRightAutoSize") fun drawableRightAutoSize(textView: TextView, enable: Boolean) = resizeDrawable( textView, index = 2, size = textView.textSize.toInt(), ) @JvmStatic @BindingAdapter("android:drawableLeftSize") fun drawableLeftSize(textView: TextView, sizeDp: Int) = resizeDrawable( textView, index = 0, size = sizeDp.dp, ) @JvmStatic @BindingAdapter("android:drawableTopSize") fun drawableTopSize(textView: TextView, sizeDp: Int) = resizeDrawable( textView, index = 1, size = sizeDp.dp, ) @JvmStatic @BindingAdapter("android:drawableRightSize") fun drawableRightSize(textView: TextView, sizeDp: Int) = resizeDrawable( textView, index = 2, size = sizeDp.dp, ) @JvmStatic @BindingAdapter("android:drawableBottomSize") fun drawableBottomSize(textView: TextView, sizeDp: Int) = resizeDrawable( textView, index = 3, size = sizeDp.dp, ) }