/* * Copyright (c) 2019 Hemanth Savarala. * * Licensed under the GNU General Public License v3 * * This is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by * the Free Software Foundation either version 3 of the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. */ package code.name.monkey.appthemehelper.common.prefs import android.content.Context import android.util.AttributeSet import android.view.View import androidx.preference.Preference import androidx.preference.PreferenceViewHolder import code.name.monkey.appthemehelper.R class ATEColorPreference @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0 ) : Preference(context, attrs, defStyleAttr, defStyleRes) { private var mView: View? = null private var color: Int = 0 private var border: Int = 0 init { widgetLayoutResource = R.layout.ate_preference_color isPersistent = false } /*override fun onBindView(view: View) { super.onBindView(view) mView = view invalidateColor() }*/ override fun onBindViewHolder(holder: PreferenceViewHolder) { super.onBindViewHolder(holder) mView = holder.itemView invalidateColor() } fun setColor(color: Int, border: Int) { this.color = color this.border = border invalidateColor() } private fun invalidateColor() { if (mView != null) { val circle = mView!!.findViewById(R.id.circle) as BorderCircleView if (this.color != 0) { circle.visibility = View.VISIBLE circle.setBackgroundColor(color) circle.setBorderColor(border) } else { circle.visibility = View.GONE } } } }