Skip to content

Commit 812b840

Browse files
committed
Add DSL helpers for single/multi choice dialogs
1 parent 6f76311 commit 812b840

File tree

2 files changed

+13
-4
lines changed
  • library/src/main/java/de/Maxr1998/modernpreferences/helpers
  • testapp/src/main/java/de/Maxr1998/modernpreferences/example

2 files changed

+13
-4
lines changed

library/src/main/java/de/Maxr1998/modernpreferences/helpers/PreferencesDsl.kt

+11
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ import android.content.Context
2222
import de.Maxr1998.modernpreferences.Preference
2323
import de.Maxr1998.modernpreferences.PreferenceScreen
2424
import de.Maxr1998.modernpreferences.preferences.*
25+
import de.Maxr1998.modernpreferences.preferences.choice.MultiChoiceDialogPreference
26+
import de.Maxr1998.modernpreferences.preferences.choice.SelectionItem
27+
import de.Maxr1998.modernpreferences.preferences.choice.SingleChoiceDialogPreference
2528

2629
// PreferenceScreen DSL functions
2730
inline fun screen(context: Context?, block: PreferenceScreen.Builder.() -> Unit): PreferenceScreen {
@@ -67,6 +70,14 @@ inline fun PreferenceScreen.Appendable.expandText(key: String, block: Expandable
6770
return ExpandableTextPreference(key).apply(block).also(::addPreferenceItem)
6871
}
6972

73+
inline fun PreferenceScreen.Appendable.singleChoice(key: String, items: List<SelectionItem>, block: SingleChoiceDialogPreference.() -> Unit): SingleChoiceDialogPreference {
74+
return SingleChoiceDialogPreference(key, items).apply(block).also(::addPreferenceItem)
75+
}
76+
77+
inline fun PreferenceScreen.Appendable.multiChoice(key: String, items: List<SelectionItem>, block: MultiChoiceDialogPreference.() -> Unit): MultiChoiceDialogPreference {
78+
return MultiChoiceDialogPreference(key, items).apply(block).also(::addPreferenceItem)
79+
}
80+
7081
inline fun <reified T : Preference> PreferenceScreen.Appendable.custom(key: String, block: T.() -> Unit): T {
7182
return T::class.java.getConstructor(String::class.java).newInstance(key).apply(block).also(::addPreferenceItem)
7283
}

testapp/src/main/java/de/Maxr1998/modernpreferences/example/Common.kt

+2-4
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ import android.widget.Toast
2525
import de.Maxr1998.modernpreferences.Preference
2626
import de.Maxr1998.modernpreferences.helpers.*
2727
import de.Maxr1998.modernpreferences.preferences.SeekBarPreference
28-
import de.Maxr1998.modernpreferences.preferences.choice.MultiChoiceDialogPreference
2928
import de.Maxr1998.modernpreferences.preferences.choice.SelectionItem
30-
import de.Maxr1998.modernpreferences.preferences.choice.SingleChoiceDialogPreference
3129
import java.util.*
3230

3331
object Common {
@@ -126,10 +124,10 @@ object Common {
126124
SelectionItem("key_1", "Option 2", "Second option"),
127125
SelectionItem("key_2", "Option 3", "You can put anything you want into this summary!"),
128126
)
129-
+SingleChoiceDialogPreference("single-choice-dialog", selectableItems).apply {
127+
singleChoice("single-choice-dialog", selectableItems) {
130128
title = "Single choice selection dialog"
131129
}
132-
+MultiChoiceDialogPreference("multi-choice-dialog", selectableItems).apply {
130+
multiChoice("multi-choice-dialog", selectableItems) {
133131
title = "Multi choice selection dialog"
134132
}
135133
expandText("expand-text") {

0 commit comments

Comments
 (0)