diff options
Diffstat (limited to 'library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt')
-rw-r--r-- | library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt | 53 |
1 files changed, 9 insertions, 44 deletions
diff --git a/library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt b/library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt index 6103e50..96b1237 100644 --- a/library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt +++ b/library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt @@ -3,17 +3,13 @@ package ca.allanwang.kau.kpref import android.os.Bundle import android.support.annotation.StringRes import android.support.constraint.ConstraintLayout -import android.support.v4.widget.TextViewCompat import android.support.v7.app.AppCompatActivity import android.support.v7.widget.RecyclerView import android.support.v7.widget.Toolbar -import android.text.TextUtils -import android.view.Gravity import android.view.View import android.view.animation.Animation import android.view.animation.AnimationUtils import android.widget.FrameLayout -import android.widget.TextView import android.widget.ViewAnimator import ca.allanwang.kau.R import ca.allanwang.kau.kpref.items.KPrefItemCore @@ -23,9 +19,8 @@ import ca.allanwang.kau.utils.resolveColor import ca.allanwang.kau.utils.statusBarColor import ca.allanwang.kau.utils.string import ca.allanwang.kau.views.RippleCanvas -import ca.allanwang.kau.views.TextSwitcherThemed +import ca.allanwang.kau.views.TextSlider import com.mikepenz.fastadapter.commons.adapters.FastItemAdapter -import java.util.* abstract class KPrefActivity : AppCompatActivity(), KPrefActivityContract { @@ -38,19 +33,14 @@ abstract class KPrefActivity : AppCompatActivity(), KPrefActivityContract { 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: TextSwitcherThemed by bindView(R.id.kau_toolbar_text) + val toolbarTitle: TextSlider by bindView(R.id.kau_toolbar_text) val prefHolder: ViewAnimator by bindView(R.id.kau_holder) private lateinit var globalOptions: GlobalOptions - private val titleStack: Stack<Int> = Stack() var animate: Boolean = true - val isRootPref: Boolean - get() = titleStack.size == 1 - - //we can't use the same animations for both views; otherwise the durations will sync - private val SLIDE_IN_LEFT_TITLE: Animation by lazy { AnimationUtils.loadAnimation(this, R.anim.kau_slide_in_left) } - private val SLIDE_IN_RIGHT_TITLE: Animation by lazy { AnimationUtils.loadAnimation(this, R.anim.kau_slide_in_right) } - private val SLIDE_OUT_LEFT_TITLE: Animation by lazy { AnimationUtils.loadAnimation(this, R.anim.kau_slide_out_left) } - private val SLIDE_OUT_RIGHT_TITLE: Animation by lazy { AnimationUtils.loadAnimation(this, R.anim.kau_slide_out_right) } + set(value) { + field = value + toolbarTitle.animate = value + } 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) } @@ -85,17 +75,6 @@ abstract class KPrefActivity : AppCompatActivity(), KPrefActivityContract { val builder = kPrefCoreAttributes() core.builder() globalOptions = GlobalOptions(core, this) - with(toolbarTitle) { - setFactory { - TextView(this@KPrefActivity).apply { - //replica of toolbar title - gravity = Gravity.START - setSingleLine() - ellipsize = TextUtils.TruncateAt.END - TextViewCompat.setTextAppearance(this, R.style.TextAppearance_AppCompat_Title) - } - } - } showNextPrefs(R.string.kau_settings, onCreateKPrefs(savedInstanceState)) } @@ -106,7 +85,6 @@ abstract class KPrefActivity : AppCompatActivity(), KPrefActivityContract { 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) - titleStack.push(toolbarTitleRes) setKPrefAdapter(globalOptions, builder) } with(prefHolder) { @@ -115,18 +93,10 @@ abstract class KPrefActivity : AppCompatActivity(), KPrefActivityContract { addView(rv) showNext() } - with(toolbarTitle) { - inAnimation = if (animate) SLIDE_IN_RIGHT_TITLE else null - outAnimation = if (animate) SLIDE_OUT_LEFT_TITLE else null - setText(string(titleStack.peek())) - } + toolbarTitle.setNextText(string(toolbarTitleRes)) } override fun showPrevPrefs() { - if (titleStack.size <= 1) { - KL.e("Cannot go back in KPrefActivity; already at index ${titleStack.size - 1}") - return - } val current = prefHolder.currentView with(prefHolder) { inAnimation = if (animate) SLIDE_IN_LEFT_ITEMS else null @@ -135,12 +105,7 @@ abstract class KPrefActivity : AppCompatActivity(), KPrefActivityContract { removeView(current) adapter.notifyAdapterDataSetChanged() } - titleStack.pop() - with(toolbarTitle) { - inAnimation = if (animate) SLIDE_IN_LEFT_TITLE else null - outAnimation = if (animate) SLIDE_OUT_RIGHT_TITLE else null - setText(string(titleStack.peek())) - } + toolbarTitle.setPrevText() } fun reload(vararg index: Int) { @@ -163,7 +128,7 @@ abstract class KPrefActivity : AppCompatActivity(), KPrefActivityContract { } fun backPress(): Boolean { - if (!isRootPref) { + if (!toolbarTitle.isRoot) { showPrevPrefs() return true } |