aboutsummaryrefslogtreecommitdiff
path: root/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefBinder.kt
diff options
context:
space:
mode:
Diffstat (limited to 'kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefBinder.kt')
-rw-r--r--kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefBinder.kt126
1 files changed, 89 insertions, 37 deletions
diff --git a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefBinder.kt b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefBinder.kt
index 4b50ee4..cf2a12f 100644
--- a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefBinder.kt
+++ b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefBinder.kt
@@ -1,7 +1,31 @@
+/*
+ * Copyright 2018 Allan Wang
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package ca.allanwang.kau.kpref.activity
import androidx.annotation.StringRes
-import ca.allanwang.kau.kpref.activity.items.*
+import ca.allanwang.kau.kpref.activity.items.KPrefCheckbox
+import ca.allanwang.kau.kpref.activity.items.KPrefColorPicker
+import ca.allanwang.kau.kpref.activity.items.KPrefHeader
+import ca.allanwang.kau.kpref.activity.items.KPrefItemBase
+import ca.allanwang.kau.kpref.activity.items.KPrefItemCore
+import ca.allanwang.kau.kpref.activity.items.KPrefPlainText
+import ca.allanwang.kau.kpref.activity.items.KPrefSeekbar
+import ca.allanwang.kau.kpref.activity.items.KPrefSubItems
+import ca.allanwang.kau.kpref.activity.items.KPrefText
+import ca.allanwang.kau.kpref.activity.items.KPrefTimePicker
/**
* Created by Allan Wang on 2017-06-08.
@@ -35,11 +59,11 @@ interface KPrefActivityContract {
fun reloadByTitle(@StringRes vararg title: Int)
}
-
-class GlobalOptions(core: CoreAttributeContract, activity: KPrefActivityContract
+class GlobalOptions(
+ core: CoreAttributeContract,
+ activity: KPrefActivityContract
) : CoreAttributeContract by core, KPrefActivityContract by activity
-
/**
* Builder for kpref items
* Contains DSLs for every possible item
@@ -56,51 +80,79 @@ class KPrefAdapterBuilder(val globalOptions: GlobalOptions) {
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() }))
+ 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() }))
+ 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(KPrefText.KPrefTextBuilder(globalOptions, title, getter, setter)
- .apply { builder() }))
+ fun <T> text(
+ @StringRes title: Int,
+ getter: (() -> T),
+ setter: ((value: T) -> Unit),
+ builder: KPrefText.KPrefTextContract<T>.() -> Unit = {}
+ ) = list.add(
+ KPrefText(KPrefText.KPrefTextBuilder(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() }))
+ 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() }))
+ 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() }))
+ 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
- fun timePicker(@StringRes title: Int,
- getter: (() -> Int),
- setter: ((value: Int) -> Unit),
- builder: KPrefTimePicker.KPrefTimeContract.() -> Unit = {}) = list.add(KPrefTimePicker(KPrefTimePicker.KPrefTimeBuilder(globalOptions, title, getter, setter)
- .apply { builder() }))
+ fun timePicker(
+ @StringRes title: Int,
+ getter: (() -> Int),
+ setter: ((value: Int) -> Unit),
+ builder: KPrefTimePicker.KPrefTimeContract.() -> Unit = {}
+ ) = list.add(
+ KPrefTimePicker(KPrefTimePicker.KPrefTimeBuilder(globalOptions, title, getter, setter)
+ .apply { builder() })
+ )
@KPrefMarker
val list: MutableList<KPrefItemCore> = mutableListOf()
-} \ No newline at end of file
+}