aboutsummaryrefslogtreecommitdiff
path: root/library/src/main/kotlin/ca/allanwang/kau/dialogs/color/ColorPickerPreference.kt
blob: 043e287e7129b553809e1e24d34067481471dfa8 (plain)
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
68
69
70
71
72
package ca.allanwang.kau.dialogs.color

import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.os.Parcelable
import android.support.annotation.ColorInt
import android.support.annotation.StringRes
import android.support.v4.content.res.ResourcesCompat
import android.support.v7.app.AppCompatActivity
import android.support.v7.preference.Preference
import android.text.Editable
import android.text.TextWatcher
import android.util.AttributeSet
import android.view.View
import android.view.ViewGroup
import android.widget.*
import ca.allanwang.kau.R
import ca.allanwang.kau.utils.ANDROID_NAMESPACE
import ca.allanwang.kau.utils.integer
import ca.allanwang.kau.utils.resolveColor
import ca.allanwang.kau.utils.toColor
import com.afollestad.materialdialogs.DialogAction
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.color.CircleView
import com.afollestad.materialdialogs.color.ColorChooserDialog
import com.afollestad.materialdialogs.internal.MDTintHelper
import com.afollestad.materialdialogs.util.DialogUtils
import java.util.*

/**
 * Created by Allan Wang on 2017-06-08.
 */
class ColorPickerPreference @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0
) : Preference(context, attrs, defStyleAttr, defStyleRes), Preference.OnPreferenceClickListener {

    var defaultColor: Int = Color.BLACK
    var currentColor: Int
    var accentMode = false
    var dialogTitle: Int = 0

    init {
        onPreferenceClickListener = this
        if (attrs != null) {
            val defaultValue = attrs.getAttributeValue(ANDROID_NAMESPACE, "defaultValue")
            if (defaultValue?.startsWith("#") ?: false) {
                try {
                    defaultColor = defaultValue.toColor()
                } catch (e: IllegalArgumentException) {
                    throw IllegalArgumentException("ColorPickerPreference $key has a default value that is not a color resource: $defaultValue")
                }
            } else {
                val resourceId = attrs.getAttributeResourceValue(ANDROID_NAMESPACE, "defaultValue", 0)
                if (resourceId != 0)
                    defaultColor = context.integer(resourceId)
                else
                    throw IllegalArgumentException("ColorPickerPreference $key has a default value that is not a color resource: $defaultValue")
            }
        }
        currentColor = getPersistedInt(defaultColor)
    }

    override fun onPreferenceClick(preference: Preference): Boolean {
        context.colorPickerDialog {

        }.show()
        return true
    }
}