aboutsummaryrefslogtreecommitdiff
path: root/sample/src/main/kotlin/ca/allanwang/kau/sample/PermissionCheckbox.kt
diff options
context:
space:
mode:
Diffstat (limited to 'sample/src/main/kotlin/ca/allanwang/kau/sample/PermissionCheckbox.kt')
-rw-r--r--sample/src/main/kotlin/ca/allanwang/kau/sample/PermissionCheckbox.kt67
1 files changed, 67 insertions, 0 deletions
diff --git a/sample/src/main/kotlin/ca/allanwang/kau/sample/PermissionCheckbox.kt b/sample/src/main/kotlin/ca/allanwang/kau/sample/PermissionCheckbox.kt
index 68dde2a..40ad663 100644
--- a/sample/src/main/kotlin/ca/allanwang/kau/sample/PermissionCheckbox.kt
+++ b/sample/src/main/kotlin/ca/allanwang/kau/sample/PermissionCheckbox.kt
@@ -15,12 +15,26 @@
*/
package ca.allanwang.kau.sample
+import android.Manifest
+import android.view.LayoutInflater
import android.view.View
+import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
+import ca.allanwang.fastadapter.viewbinding.BindingClickEventHook
+import ca.allanwang.fastadapter.viewbinding.BindingItem
+import ca.allanwang.fastadapter.viewbinding.BindingLayout
+import ca.allanwang.fastadapter.viewbinding.VhModel
import ca.allanwang.kau.iitems.KauIItem
+import ca.allanwang.kau.logging.KL
+import ca.allanwang.kau.permissions.kauRequestPermissions
+import ca.allanwang.kau.sample.databinding.PermissionCheckboxBinding
import ca.allanwang.kau.utils.hasPermission
+import ca.allanwang.kau.utils.toast
+import com.mikepenz.fastadapter.FastAdapter
+import com.mikepenz.fastadapter.GenericItem
+import com.mikepenz.fastadapter.listeners.EventHook
/**
* Created by Allan Wang on 2017-07-03.
@@ -41,3 +55,56 @@ class PermissionCheckbox(val permission: String) : KauIItem<PermissionCheckbox.V
val checkbox: CheckBox = v.findViewById(R.id.perm_checkbox)
}
}
+
+data class PermissionCheckboxModel(val permission: String) : VhModel {
+ override fun vh(): GenericItem = PermissionCheckboxViewBinding(this)
+}
+
+class PermissionCheckboxViewBinding(
+ override val data: PermissionCheckboxModel
+) : BindingItem<PermissionCheckboxBinding>(data),
+ BindingLayout<PermissionCheckboxBinding> by Companion {
+
+ override fun createBinding(
+ layoutInflater: LayoutInflater,
+ parent: ViewGroup?
+ ): PermissionCheckboxBinding =
+ PermissionCheckboxBinding.inflate(layoutInflater, parent, false)
+
+ override fun PermissionCheckboxBinding.bindView(
+ holder: ViewHolder,
+ payloads: MutableList<Any>
+ ) {
+ permText.text = data.permission
+ permCheckbox.apply {
+ isChecked = holder.itemView.context.hasPermission(data.permission)
+ isFocusable = false
+ isClickable = false
+ jumpDrawablesToCurrentState() // Cancel the animation
+ }
+ }
+
+ companion object : BindingLayout<PermissionCheckboxBinding> {
+ override val layoutRes: Int
+ get() = R.layout.permission_checkbox
+
+ fun clickHook(): EventHook<PermissionCheckboxViewBinding> = object : BindingClickEventHook<PermissionCheckboxBinding, PermissionCheckboxViewBinding>(this) {
+ override fun PermissionCheckboxBinding.onBind(viewHolder: RecyclerView.ViewHolder): View? = root
+
+ override fun PermissionCheckboxBinding.onClick(
+ v: View,
+ position: Int,
+ fastAdapter: FastAdapter<PermissionCheckboxViewBinding>,
+ item: PermissionCheckboxViewBinding
+ ) {
+ KL.d { "Perm Click" }
+ with (v.context) {
+ kauRequestPermissions(item.data.permission) { granted, _ ->
+ toast("${item.data.permission} enabled: $granted")
+ fastAdapter.notifyAdapterDataSetChanged()
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file