diff options
Diffstat (limited to 'kpref-activity')
9 files changed, 40 insertions, 34 deletions
diff --git a/kpref-activity/build.gradle b/kpref-activity/build.gradle index 7df08d3..4dfaebf 100644 --- a/kpref-activity/build.gradle +++ b/kpref-activity/build.gradle @@ -10,6 +10,8 @@ dependencies { implementation project(':core') implementation project(':colorpicker') implementation project(':fastadapter') + + implementation kau.Dependencies.materialDialog("color") } apply from: '../artifacts.gradle' diff --git a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefActivity.kt b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefActivity.kt index 818a770..70b40e7 100644 --- a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefActivity.kt +++ b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/KPrefActivity.kt @@ -25,18 +25,13 @@ import ca.allanwang.kau.animators.SlideAnimatorAdd import ca.allanwang.kau.animators.SlideAnimatorRemove import ca.allanwang.kau.internal.KauBaseActivity import ca.allanwang.kau.kotlin.lazyUi +import ca.allanwang.kau.kpref.activity.databinding.KauPrefActivityBinding import ca.allanwang.kau.kpref.activity.items.KPrefItemCore import ca.allanwang.kau.ui.views.RippleCanvas -import ca.allanwang.kau.utils.KAU_LEFT -import ca.allanwang.kau.utils.KAU_RIGHT -import ca.allanwang.kau.utils.resolveColor -import ca.allanwang.kau.utils.setMarginTop -import ca.allanwang.kau.utils.statusBarColor -import ca.allanwang.kau.utils.withLinearAdapter +import ca.allanwang.kau.utils.* import com.mikepenz.fastadapter.adapters.FastItemAdapter import com.mikepenz.fastadapter.select.getSelectExtension -import java.util.Stack -import kotlinx.android.synthetic.main.kau_pref_activity.* +import java.util.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -44,11 +39,12 @@ import kotlinx.coroutines.withContext abstract class KPrefActivity : KauBaseActivity(), KPrefActivityContract { private val adapter: FastItemAdapter<KPrefItemCore> = FastItemAdapter() - val bgCanvas: RippleCanvas get() = kau_ripple - val toolbarCanvas: RippleCanvas get() = kau_toolbar_ripple - val toolbar: Toolbar get() = kau_toolbar + val bgCanvas: RippleCanvas get() = binding.kauRipple + val toolbarCanvas: RippleCanvas get() = binding.kauToolbarRipple + val toolbar: Toolbar get() = binding.kauToolbar private lateinit var globalOptions: GlobalOptions private val kprefStack = Stack<Pair<Int, List<KPrefItemCore>>>() + /** * Toggle sliding animations for the kpref items */ @@ -56,14 +52,14 @@ abstract class KPrefActivity : KauBaseActivity(), KPrefActivityContract { private val recyclerAnimatorNext: KauAnimator by lazyUi { KauAnimator( - SlideAnimatorAdd(KAU_RIGHT, itemDelayFactor = 0f), - SlideAnimatorRemove(KAU_LEFT, itemDelayFactor = 0f) + SlideAnimatorAdd(KAU_RIGHT, itemDelayFactor = 0f), + SlideAnimatorRemove(KAU_LEFT, itemDelayFactor = 0f) ) } private val recyclerAnimatorPrev: KauAnimator by lazyUi { KauAnimator( - SlideAnimatorAdd(KAU_LEFT, itemDelayFactor = 0f), - SlideAnimatorRemove(KAU_RIGHT, itemDelayFactor = 0f) + SlideAnimatorAdd(KAU_LEFT, itemDelayFactor = 0f), + SlideAnimatorRemove(KAU_RIGHT, itemDelayFactor = 0f) ) } @@ -73,11 +69,19 @@ abstract class KPrefActivity : KauBaseActivity(), KPrefActivityContract { */ abstract fun kPrefCoreAttributes(): CoreAttributeContract.() -> Unit + private lateinit var binding: KauPrefActivityBinding + @SuppressLint("NewApi") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setup layout - setContentView(R.layout.kau_pref_activity) + binding = KauPrefActivityBinding.inflate(layoutInflater) + setContentView(binding.root) + binding.init(savedInstanceState) + } + + @SuppressLint("NewApi") + private fun KauPrefActivityBinding.init(savedInstanceState: Bundle?) { setSupportActionBar(toolbar) supportActionBar?.apply { setDisplayHomeAsUpEnabled(true) @@ -86,20 +90,20 @@ abstract class KPrefActivity : KauBaseActivity(), KPrefActivityContract { setDisplayShowTitleEnabled(false) } findViewById<View>(android.R.id.content).setOnApplyWindowInsetsListener { _, insets -> - kau_toolbar.setMarginTop(insets.systemWindowInsetTop) + kauToolbar.setMarginTop(insets.systemWindowInsetTop) insets } window.decorView.systemUiVisibility = - View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN statusBarColor = 0x30000000 - kau_toolbar_ripple.set(resolveColor(R.attr.colorPrimary)) - kau_ripple.set(resolveColor(android.R.attr.colorBackground)) + kauToolbarRipple.set(resolveColor(R.attr.colorPrimary)) + kauRipple.set(resolveColor(android.R.attr.colorBackground)) // setup prefs val core = CoreAttributeBuilder() val builder = kPrefCoreAttributes() core.builder() - globalOptions = GlobalOptions(core, this) - kau_recycler.withLinearAdapter(adapter) + globalOptions = GlobalOptions(core, this@KPrefActivity) + kauRecycler.withLinearAdapter(adapter) adapter.apply { getSelectExtension().isSelectable = true onClickListener = { v, _, item, _ -> @@ -111,9 +115,9 @@ abstract class KPrefActivity : KauBaseActivity(), KPrefActivityContract { } override fun showNextPrefs(@StringRes toolbarTitleRes: Int, builder: KPrefAdapterBuilder.() -> Unit) = - showNextPrefs(toolbarTitleRes, builder, false) + binding.showNextPrefs(toolbarTitleRes, builder, false) - private fun showNextPrefs( + private fun KauPrefActivityBinding.showNextPrefs( @StringRes toolbarTitleRes: Int, builder: KPrefAdapterBuilder.() -> Unit, first: Boolean @@ -125,7 +129,7 @@ abstract class KPrefActivity : KauBaseActivity(), KPrefActivityContract { kprefStack.push(toolbarTitleRes to items.list) items.list } - kau_recycler.itemAnimator = if (animate && !first) recyclerAnimatorNext else null + kauRecycler.itemAnimator = if (animate && !first) recyclerAnimatorNext else null show(toolbarTitleRes, items) } } @@ -143,7 +147,7 @@ abstract class KPrefActivity : KauBaseActivity(), KPrefActivityContract { override fun showPrevPrefs() { kprefStack.pop() val (title, list) = kprefStack.peek() - kau_recycler.itemAnimator = if (animate) recyclerAnimatorPrev else null + binding.kauRecycler.itemAnimator = if (animate) recyclerAnimatorPrev else null show(title, list) } @@ -160,7 +164,7 @@ abstract class KPrefActivity : KauBaseActivity(), KPrefActivityContract { fun reloadList() { // If for some reason we are calling a reload before fetching our first kpref list, we will ignore it if (kprefStack.size < 1) return - kau_recycler.itemAnimator = null + binding.kauRecycler.itemAnimator = null val list = kprefStack.peek().second adapter.setNewList(list.filter { it.core.visible() }) } diff --git a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefCheckbox.kt b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefCheckbox.kt index a867d06..16900c4 100644 --- a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefCheckbox.kt +++ b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefCheckbox.kt @@ -34,7 +34,7 @@ open class KPrefCheckbox(builder: BaseContract<Boolean>) : KPrefItemBase<Boolean (innerView as AppCompatCheckBox).isChecked = pref } - override fun bindView(holder: ViewHolder, payloads: MutableList<Any>) { + override fun bindView(holder: ViewHolder, payloads: List<Any>) { super.bindView(holder, payloads) val checkbox = holder.bindInnerView<CheckBox>(R.layout.kau_pref_checkbox) withAccentColor(checkbox::tint) diff --git a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefColorPicker.kt b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefColorPicker.kt index 76cfbab..d7023af 100644 --- a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefColorPicker.kt +++ b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefColorPicker.kt @@ -33,7 +33,7 @@ import com.afollestad.materialdialogs.MaterialDialog */ open class KPrefColorPicker(open val builder: KPrefColorContract) : KPrefItemBase<Int>(builder) { - override fun bindView(holder: ViewHolder, payloads: MutableList<Any>) { + override fun bindView(holder: ViewHolder, payloads: List<Any>) { super.bindView(holder, payloads) if (builder.showPreview) { val preview = holder.bindInnerView<CircleView>(R.layout.kau_pref_color) diff --git a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefHeader.kt b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefHeader.kt index ca70b61..6828053 100644 --- a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefHeader.kt +++ b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefHeader.kt @@ -28,7 +28,7 @@ open class KPrefHeader(builder: CoreContract) : KPrefItemCore(builder) { override val layoutRes: Int get() = R.layout.kau_pref_header - override fun bindView(holder: ViewHolder, payloads: MutableList<Any>) { + override fun bindView(holder: ViewHolder, payloads: List<Any>) { super.bindView(holder, payloads) withAccentColor(holder.title::setTextColor) } diff --git a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefItemBase.kt b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefItemBase.kt index 16363e2..22be523 100644 --- a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefItemBase.kt +++ b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefItemBase.kt @@ -47,7 +47,7 @@ abstract class KPrefItemBase<T>(protected val base: BaseContract<T>) : KPrefItem } @CallSuper - override fun bindView(holder: ViewHolder, payloads: MutableList<Any>) { + override fun bindView(holder: ViewHolder, payloads: List<Any>) { super.bindView(holder, payloads) _enabled = base.enabler() with(holder) { diff --git a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefItemCore.kt b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefItemCore.kt index 79b7e82..0aaa2d3 100644 --- a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefItemCore.kt +++ b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefItemCore.kt @@ -70,7 +70,7 @@ abstract class KPrefItemCore(val core: CoreContract) : AbstractItem<KPrefItemCor */ @SuppressLint("NewApi") @CallSuper - override fun bindView(holder: ViewHolder, payloads: MutableList<Any>) { + override fun bindView(holder: ViewHolder, payloads: List<Any>) { super.bindView(holder, payloads) with(holder) { updateTitle() diff --git a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefSeekbar.kt b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefSeekbar.kt index 9abdf09..41efa42 100644 --- a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefSeekbar.kt +++ b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefSeekbar.kt @@ -37,7 +37,7 @@ open class KPrefSeekbar(val builder: KPrefSeekbarContract) : KPrefItemBase<Int>( override fun KClick<Int>.defaultOnClick() = Unit - override fun bindView(holder: ViewHolder, payloads: MutableList<Any>) { + override fun bindView(holder: ViewHolder, payloads: List<Any>) { super.bindView(holder, payloads) val text = holder.bindInnerView<TextView>(R.layout.kau_pref_seekbar_text) withTextColor(text::setTextColor) diff --git a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefText.kt b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefText.kt index 50f0c62..b5a69dd 100644 --- a/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefText.kt +++ b/kpref-activity/src/main/kotlin/ca/allanwang/kau/kpref/activity/items/KPrefText.kt @@ -46,7 +46,7 @@ open class KPrefText<T>(open val builder: KPrefTextContract<T>) : KPrefItemBase< context.toast("No click function set") } - override fun bindView(holder: ViewHolder, payloads: MutableList<Any>) { + override fun bindView(holder: ViewHolder, payloads: List<Any>) { super.bindView(holder, payloads) val textView = holder.bindInnerView<TextView>(R.layout.kau_pref_text) withTextColor(textView::setTextColor) |