aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefBinder.kt
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefBinder.kt')
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefBinder.kt128
1 files changed, 0 insertions, 128 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefBinder.kt b/core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefBinder.kt
deleted file mode 100644
index a424839..0000000
--- a/core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefBinder.kt
+++ /dev/null
@@ -1,128 +0,0 @@
-package ca.allanwang.kau.kpref
-
-import android.support.annotation.StringRes
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
-import ca.allanwang.kau.R
-import ca.allanwang.kau.kpref.items.*
-import com.mikepenz.fastadapter.commons.adapters.FastItemAdapter
-import org.jetbrains.anko.doAsync
-import org.jetbrains.anko.uiThread
-
-/**
- * Created by Allan Wang on 2017-06-08.
- *
- * Houses all the components that can be called externally to setup the kpref mainAdapter
- */
-
-/**
- * Base extension that will register the layout manager and mainAdapter with the given items
- * Returns FastAdapter
- */
-fun RecyclerView.setKPrefAdapter(globalOptions: GlobalOptions, builder: KPrefAdapterBuilder.() -> Unit): FastItemAdapter<KPrefItemCore> {
- layoutManager = LinearLayoutManager(context)
- val adapter = FastItemAdapter<KPrefItemCore>()
- adapter.withOnClickListener { v, _, item, _ -> item.onClick(v, v.findViewById(R.id.kau_pref_inner_content)) }
- this.adapter = adapter
- doAsync {
- val items = KPrefAdapterBuilder(globalOptions)
- builder.invoke(items)
- uiThread {
- adapter.add(items.list)
- }
- }
- return adapter
-}
-
-@DslMarker
-annotation class KPrefMarker
-
-/**
- * Contains attributes shared amongst all kpref items
- */
-@KPrefMarker
-interface CoreAttributeContract {
- var textColor: (() -> Int)?
- var accentColor: (() -> Int)?
-}
-
-/**
- * Implementation of [CoreAttributeContract]
- */
-class CoreAttributeBuilder : CoreAttributeContract {
- override var textColor: (() -> Int)? = null
- override var accentColor: (() -> Int)? = textColor
-}
-
-interface KPrefActivityContract {
- fun showNextPrefs(@StringRes toolbarTitleRes: Int, builder: KPrefAdapterBuilder.() -> Unit)
- fun showPrevPrefs()
- fun reloadByTitle(@StringRes vararg title: Int)
-}
-
-
-class GlobalOptions(core: CoreAttributeContract, activity: KPrefActivityContract
-) : CoreAttributeContract by core, KPrefActivityContract by activity
-
-
-/**
- * Builder for kpref items
- * Contains DSLs for every possible item
- * The arguments are all the mandatory values plus an optional builder housing all the possible configurations
- * The mandatory values are final so they cannot be edited in the builder
- */
-@KPrefMarker
-class KPrefAdapterBuilder(val globalOptions: GlobalOptions) {
-
- @KPrefMarker
- fun header(@StringRes title: Int)
- = list.add(KPrefHeader(KPrefItemCore.CoreBuilder(globalOptions, title)))
-
- @KPrefMarker
- fun checkbox(@StringRes title: Int,
- getter: (() -> Boolean),
- setter: ((value: Boolean) -> Unit),
- builder: KPrefItemBase.BaseContract<Boolean>.() -> Unit = {})
- = list.add(KPrefCheckbox(KPrefItemBase.BaseBuilder(globalOptions, title, getter, setter)
- .apply { builder() }))
-
- @KPrefMarker
- fun colorPicker(@StringRes title: Int,
- getter: (() -> Int),
- setter: ((value: Int) -> Unit),
- builder: KPrefColorPicker.KPrefColorContract.() -> Unit = {})
- = list.add(KPrefColorPicker(KPrefColorPicker.KPrefColorBuilder(globalOptions, title, getter, setter)
- .apply { builder() }))
-
- @KPrefMarker
- fun <T> text(@StringRes title: Int,
- getter: (() -> T),
- setter: ((value: T) -> Unit),
- builder: KPrefText.KPrefTextContract<T>.() -> Unit = {})
- = list.add(KPrefText<T>(KPrefText.KPrefTextBuilder<T>(globalOptions, title, getter, setter)
- .apply { builder() }))
-
- @KPrefMarker
- fun subItems(@StringRes title: Int,
- itemBuilder: KPrefAdapterBuilder.() -> Unit,
- builder: KPrefSubItems.KPrefSubItemsContract.() -> Unit)
- = list.add(KPrefSubItems(KPrefSubItems.KPrefSubItemsBuilder(globalOptions, title, itemBuilder)
- .apply { builder() }))
-
- @KPrefMarker
- fun plainText(@StringRes title: Int,
- builder: KPrefItemBase.BaseContract<Unit>.() -> Unit = {})
- = list.add(KPrefPlainText(KPrefPlainText.KPrefPlainTextBuilder(globalOptions, title)
- .apply { builder() }))
-
- @KPrefMarker
- fun seekbar(@StringRes title: Int,
- getter: (() -> Int),
- setter: ((value: Int) -> Unit),
- builder: KPrefSeekbar.KPrefSeekbarContract.() -> Unit = {})
- = list.add(KPrefSeekbar(KPrefSeekbar.KPrefSeekbarBuilder(globalOptions, title, getter, setter)
- .apply { builder() }))
-
- @KPrefMarker
- val list: MutableList<KPrefItemCore> = mutableListOf()
-} \ No newline at end of file