aboutsummaryrefslogtreecommitdiff
path: root/library/src/main/kotlin/ca/allanwang/kau/kpref/KPrefActivity.kt
diff options
context:
space:
mode:
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.kt53
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
}