mirror of
https://github.com/clangen/musikcube.git
synced 2025-02-22 06:40:54 +00:00
Start observing only after animations complete.
This commit is contained in:
parent
ef6e9422ee
commit
497452c01c
@ -72,11 +72,6 @@ class AlbumBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITranspo
|
||||
initToolbarIfNecessary(appCompatActivity, this)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
initObservables()
|
||||
}
|
||||
|
||||
override fun setFilter(filter: String) {
|
||||
if (filter != lastFilter) {
|
||||
lastFilter = filter
|
||||
@ -84,21 +79,24 @@ class AlbumBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITranspo
|
||||
}
|
||||
}
|
||||
|
||||
fun createOptionsMenu(menu: Menu): Boolean = initSearchMenu(menu, this)
|
||||
override fun onTransportChanged() = adapter.notifyDataSetChanged()
|
||||
fun createOptionsMenu(menu: Menu): Boolean =
|
||||
initSearchMenu(menu, this)
|
||||
|
||||
private fun initObservables() =
|
||||
override fun onTransportChanged() =
|
||||
adapter.notifyDataSetChanged()
|
||||
|
||||
override fun initObservables() {
|
||||
disposables.add(data.provider.observeState().subscribeBy(
|
||||
onNext = { state ->
|
||||
if (state.first == IDataProvider.State.Connected) {
|
||||
requery()
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
emptyView.update(state.first, adapter.itemCount)
|
||||
}
|
||||
},
|
||||
onError = {
|
||||
}))
|
||||
}
|
||||
|
||||
private fun requery() =
|
||||
@Suppress("unused")
|
||||
|
@ -100,11 +100,6 @@ class CategoryBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITran
|
||||
override val fabVisible: Boolean
|
||||
get() = (category == Metadata.Category.PLAYLISTS)
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
initObservers()
|
||||
}
|
||||
|
||||
override fun setFilter(filter: String) {
|
||||
this.lastFilter = filter
|
||||
this.filterDebouncer.call()
|
||||
@ -121,7 +116,7 @@ class CategoryBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITran
|
||||
override fun onTransportChanged() =
|
||||
adapter.notifyDataSetChanged()
|
||||
|
||||
private fun initObservers() =
|
||||
override fun initObservables() {
|
||||
disposables.add(data.provider.observeState().subscribeBy(
|
||||
onNext = { states ->
|
||||
when (states.first) {
|
||||
@ -132,11 +127,13 @@ class CategoryBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITran
|
||||
IDataProvider.State.Disconnected -> {
|
||||
emptyView.update(states.first, adapter.itemCount)
|
||||
}
|
||||
else -> { }
|
||||
else -> {
|
||||
}
|
||||
}
|
||||
},
|
||||
onError = {
|
||||
}))
|
||||
}
|
||||
|
||||
private val categoryTypeString: String
|
||||
get() {
|
||||
|
@ -29,7 +29,7 @@ import java.lang.Exception
|
||||
|
||||
open class BaseFragment: Fragment(), ViewModel.Provider {
|
||||
private val mixins = MixinSet()
|
||||
private val handler = Handler()
|
||||
protected val handler = Handler()
|
||||
protected lateinit var prefs: SharedPreferences
|
||||
protected val component: ViewComponent =
|
||||
DaggerViewComponent.builder()
|
||||
@ -38,9 +38,27 @@ open class BaseFragment: Fragment(), ViewModel.Provider {
|
||||
|
||||
protected var paused = true /* `private set` confuses proguard. sigh */
|
||||
|
||||
protected var animating = false
|
||||
private set(value) {
|
||||
field = value
|
||||
when (field) {
|
||||
true -> destroyObservables()
|
||||
false -> initObservables()
|
||||
}
|
||||
}
|
||||
|
||||
protected var disposables = CompositeDisposable()
|
||||
private set
|
||||
|
||||
private fun destroyObservables() {
|
||||
disposables.dispose()
|
||||
disposables = CompositeDisposable()
|
||||
}
|
||||
|
||||
protected open fun initObservables() {
|
||||
/* for subclass use */
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
mixins.onCreate(savedInstanceState ?: Bundle())
|
||||
@ -64,6 +82,9 @@ open class BaseFragment: Fragment(), ViewModel.Provider {
|
||||
if (this is ITitleProvider) {
|
||||
toolbar?.setTitleFromIntent(title)
|
||||
}
|
||||
if (!animating) {
|
||||
initObservables()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
@ -115,6 +136,7 @@ open class BaseFragment: Fragment(), ViewModel.Provider {
|
||||
else {
|
||||
AnimationUtils.loadAnimation(activity, nextAnim)?.apply {
|
||||
view?.setLayerType(View.LAYER_TYPE_HARDWARE, null)
|
||||
animating = true
|
||||
|
||||
setAnimationListener(object : Animation.AnimationListener {
|
||||
override fun onAnimationRepeat(animation: Animation?) {
|
||||
@ -122,6 +144,7 @@ open class BaseFragment: Fragment(), ViewModel.Provider {
|
||||
|
||||
override fun onAnimationEnd(animation: Animation?) {
|
||||
view?.setLayerType(View.LAYER_TYPE_NONE, null)
|
||||
animating = false
|
||||
}
|
||||
|
||||
override fun onAnimationStart(animation: Animation?) {
|
||||
|
@ -85,7 +85,7 @@ abstract class BaseSlidingWindow(
|
||||
}
|
||||
}
|
||||
|
||||
private val adapterChangedDebouncer = object : Debouncer<String>(200) {
|
||||
private val adapterChangedDebouncer = object : Debouncer<String>(50) {
|
||||
override fun onDebounced(last: String?) {
|
||||
recyclerView.adapter?.notifyDataSetChanged()
|
||||
}
|
||||
|
@ -77,16 +77,15 @@ class TrackListFragment: BaseFragment(), IFilterable, ITitleProvider, ITransport
|
||||
override fun onResume() {
|
||||
tracks.resume() /* needs to happen first */
|
||||
super.onResume()
|
||||
initObservers()
|
||||
requeryIfViewingOfflineCache()
|
||||
}
|
||||
|
||||
private fun initObservers() =
|
||||
override fun initObservables() {
|
||||
disposables.add(data.provider.observeState().subscribeBy(
|
||||
onNext = { states ->
|
||||
val shouldRequery =
|
||||
states.first === IDataProvider.State.Connected ||
|
||||
(states.first === IDataProvider.State.Disconnected && isOfflineTracks)
|
||||
(states.first === IDataProvider.State.Disconnected && isOfflineTracks)
|
||||
|
||||
if (shouldRequery) {
|
||||
filterDebouncer.cancel()
|
||||
@ -98,6 +97,7 @@ class TrackListFragment: BaseFragment(), IFilterable, ITitleProvider, ITransport
|
||||
},
|
||||
onError = {
|
||||
}))
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View =
|
||||
inflater.inflate(this.getLayoutId(), container, false).apply {
|
||||
|
Loading…
x
Reference in New Issue
Block a user