70 lines
2.1 KiB
Kotlin
70 lines
2.1 KiB
Kotlin
/*
|
|
* 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<View>(R.id.circle) as BorderCircleView
|
|
if (this.color != 0) {
|
|
circle.visibility = View.VISIBLE
|
|
circle.setBackgroundColor(color)
|
|
circle.setBorderColor(border)
|
|
} else {
|
|
circle.visibility = View.GONE
|
|
}
|
|
}
|
|
}
|
|
} |