aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt')
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt137
1 files changed, 0 insertions, 137 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt b/core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt
deleted file mode 100644
index 9a9f7d4..0000000
--- a/core/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt
+++ /dev/null
@@ -1,137 +0,0 @@
-package ca.allanwang.kau.kpref
-
-import android.os.Bundle
-import android.support.annotation.StringRes
-import android.support.constraint.ConstraintLayout
-import android.support.v7.app.AppCompatActivity
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.Toolbar
-import android.view.View
-import android.view.animation.Animation
-import android.view.animation.AnimationUtils
-import android.widget.FrameLayout
-import android.widget.ViewAnimator
-import ca.allanwang.kau.R
-import ca.allanwang.kau.kpref.items.KPrefItemCore
-import ca.allanwang.kau.utils.bindView
-import ca.allanwang.kau.utils.resolveColor
-import ca.allanwang.kau.utils.statusBarColor
-import ca.allanwang.kau.utils.string
-import ca.allanwang.kau.widgets.TextSlider
-import ca.allanwang.kau.views.RippleCanvas
-import com.mikepenz.fastadapter.commons.adapters.FastItemAdapter
-
-abstract class KPrefActivity : AppCompatActivity(), KPrefActivityContract {
-
- val adapter: FastItemAdapter<KPrefItemCore>
- @Suppress("UNCHECKED_CAST")
- get() = recycler.adapter as FastItemAdapter<KPrefItemCore>
- val recycler: RecyclerView
- get() = prefHolder.currentView as RecyclerView
- val container: ConstraintLayout by bindView(R.id.kau_container)
- val bgCanvas: RippleCanvas by bindView(R.id.kau_ripple)
- val toolbarCanvas: RippleCanvas by bindView(R.id.kau_toolbar_ripple)
- val toolbar: Toolbar by bindView(R.id.kau_toolbar)
- val toolbarTitle: TextSlider by bindView(R.id.kau_toolbar_text)
- val prefHolder: ViewAnimator by bindView(R.id.kau_holder)
- private lateinit var globalOptions: GlobalOptions
- var animate: Boolean = true
- set(value) {
- field = value
- toolbarTitle.animationType = if (value) TextSlider.ANIMATION_SLIDE_HORIZONTAL else TextSlider.ANIMATION_NONE
- }
-
- private val SLIDE_IN_LEFT_ITEMS: Animation by lazy { AnimationUtils.loadAnimation(this, R.anim.kau_slide_in_left) }
- private val SLIDE_IN_RIGHT_ITEMS: Animation by lazy { AnimationUtils.loadAnimation(this, R.anim.kau_slide_in_right) }
- private val SLIDE_OUT_LEFT_ITEMS: Animation by lazy { AnimationUtils.loadAnimation(this, R.anim.kau_slide_out_left) }
- private val SLIDE_OUT_RIGHT_ITEMS: Animation by lazy { AnimationUtils.loadAnimation(this, R.anim.kau_slide_out_right) }
-
- /**
- * Core attribute builder that is consistent throughout all items
- * Leave blank to use defaults
- */
- abstract fun kPrefCoreAttributes(): CoreAttributeContract.() -> Unit
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- //setup layout
- setContentView(R.layout.kau_activity_kpref)
- setSupportActionBar(toolbar)
- if (supportActionBar != null)
- with(supportActionBar!!) {
- setDisplayHomeAsUpEnabled(true)
- setDisplayShowHomeEnabled(true)
- toolbar.setNavigationOnClickListener { onBackPressed() }
- setDisplayShowTitleEnabled(false)
- }
- window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- statusBarColor = 0x30000000
- toolbarCanvas.set(resolveColor(R.attr.colorPrimary))
- bgCanvas.set(resolveColor(android.R.attr.colorBackground))
- prefHolder.animateFirstView = false
- //setup prefs
- val core = CoreAttributeBuilder()
- val builder = kPrefCoreAttributes()
- core.builder()
- globalOptions = GlobalOptions(core, this)
- showNextPrefs(R.string.kau_settings, onCreateKPrefs(savedInstanceState))
- }
-
- override fun onPostCreate(savedInstanceState: Bundle?) {
- super.onPostCreate(savedInstanceState)
- }
-
- override fun showNextPrefs(@StringRes toolbarTitleRes: Int, builder: KPrefAdapterBuilder.() -> Unit) {
- val rv = RecyclerView(this).apply {
- layoutParams = FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)
- setKPrefAdapter(globalOptions, builder)
- }
- with(prefHolder) {
- inAnimation = if (animate) SLIDE_IN_RIGHT_ITEMS else null
- outAnimation = if (animate) SLIDE_OUT_LEFT_ITEMS else null
- addView(rv)
- showNext()
- }
- toolbarTitle.setNextText(string(toolbarTitleRes))
- }
-
- override fun showPrevPrefs() {
- val current = prefHolder.currentView
- with(prefHolder) {
- inAnimation = if (animate) SLIDE_IN_LEFT_ITEMS else null
- outAnimation = if (animate) SLIDE_OUT_RIGHT_ITEMS else null
- showPrevious()
- removeView(current)
- adapter.notifyAdapterDataSetChanged()
- }
- toolbarTitle.setPrevText()
- }
-
- fun reload(vararg index: Int) {
- if (index.isEmpty()) adapter.notifyAdapterDataSetChanged()
- else index.forEach { adapter.notifyItemChanged(it) }
- }
-
- override fun reloadByTitle(@StringRes vararg title: Int) {
- if (title.isEmpty()) return
- adapter.adapterItems.forEachIndexed { index, item ->
- if (title.any { item.core.titleRes == it })
- adapter.notifyItemChanged(index)
- }
- }
-
- abstract fun onCreateKPrefs(savedInstanceState: Bundle?): KPrefAdapterBuilder.() -> Unit
-
- override fun onBackPressed() {
- if (!backPress()) super.onBackPressed()
- }
-
- fun backPress(): Boolean {
- if (!toolbarTitle.isRoot) {
- showPrevPrefs()
- return true
- }
- return false
- }
-}
-