1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
package ca.allanwang.kau.kpref.activity.items
import ca.allanwang.kau.colorpicker.CircleView
import ca.allanwang.kau.colorpicker.ColorBuilder
import ca.allanwang.kau.colorpicker.ColorContract
import ca.allanwang.kau.colorpicker.colorPickerDialog
import ca.allanwang.kau.kpref.activity.GlobalOptions
import ca.allanwang.kau.kpref.activity.KClick
import ca.allanwang.kau.kpref.activity.R
/**
* Created by Allan Wang on 2017-06-07.
*
* ColorPicker preference
* When a color is successfully selected in the dialog, it will be saved as an int
*/
open class KPrefColorPicker(open val builder: KPrefColorContract) : KPrefItemBase<Int>(builder) {
override fun onPostBindView(viewHolder: ViewHolder, textColor: Int?, accentColor: Int?) {
super.onPostBindView(viewHolder, textColor, accentColor)
builder.apply {
titleRes = core.titleFun()
colorCallback = { pref = it }
}
if (builder.showPreview) {
val preview = viewHolder.bindInnerView<CircleView>(R.layout.kau_pref_color)
preview.setBackgroundColor(pref)
preview.withBorder = true
builder.apply {
colorCallback = {
pref = it
if (builder.showPreview)
preview.setBackgroundColor(it)
viewHolder.updateTitle()
viewHolder.updateDesc()
}
}
}
}
override fun KClick<Int>.defaultOnClick() {
builder.defaultColor = pref
context.colorPickerDialog(builder).show()
}
/**
* Extension of the base contract and [ColorContract] along with a showPreview option
*/
interface KPrefColorContract : BaseContract<Int>, ColorContract {
var showPreview: Boolean
}
/**
* Default implementation of [KPrefColorContract]
*/
class KPrefColorBuilder(globalOptions: GlobalOptions,
titleId: Int,
getter: () -> Int,
setter: (value: Int) -> Unit
) : KPrefColorContract, BaseContract<Int> by BaseBuilder(globalOptions, titleId, getter, setter),
ColorContract by ColorBuilder() {
override var showPreview: Boolean = true
}
override fun getType(): Int = R.id.kau_item_pref_color_picker
}
|