Stubbed out BrowseFragment. Will need to extract AlbumBrowseActivity and TrackListActivity into fragments. Ugh.

This commit is contained in:
casey langen 2019-02-09 23:00:43 -08:00
parent 4e0555d13c
commit 6aae748205
9 changed files with 143 additions and 22 deletions

View File

@ -32,6 +32,10 @@
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />
<activity android:name=".ui.browse.activity.BrowseActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />
<activity android:name=".ui.category.activity.CategoryBrowseActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />
@ -71,7 +75,7 @@
android:windowSoftInputMode="adjustResize" />
<activity
android:name="io.casey.musikcube.remote.ui.category.activity.AllCategoriesActivity"
android:name=".ui.category.activity.AllCategoriesActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />

View File

@ -2,6 +2,7 @@ package io.casey.musikcube.remote.injection
import dagger.Component
import io.casey.musikcube.remote.ui.albums.activity.AlbumBrowseActivity
import io.casey.musikcube.remote.ui.browse.activity.BrowseActivity
import io.casey.musikcube.remote.ui.category.activity.AllCategoriesActivity
import io.casey.musikcube.remote.ui.category.activity.CategoryBrowseActivity
import io.casey.musikcube.remote.ui.category.fragment.CategoryBrowseFragment
@ -25,6 +26,7 @@ interface ViewComponent {
fun inject(activity: AlbumBrowseActivity)
fun inject(activity: AllCategoriesActivity)
fun inject(activity: BaseActivity)
fun inject(activity: BrowseActivity)
fun inject(activity: CategoryBrowseActivity)
fun inject(activity: ConnectionsActivity)
fun inject(activity: MainActivity)

View File

@ -83,7 +83,7 @@ class AlbumBrowseActivity : BaseActivity(), Filterable {
}
}
private fun initObservables() {
private fun initObservables() =
disposables.add(data.provider.observeState().subscribeBy(
onNext = { state ->
if (state.first == IDataProvider.State.Connected) {
@ -95,23 +95,21 @@ class AlbumBrowseActivity : BaseActivity(), Filterable {
},
onError = {
}))
}
private fun requery() {
disposables.add(
data.provider.getAlbumsForCategory(categoryName, categoryId, lastFilter)
.subscribeBy(
onNext = { albumList ->
adapter.setModel(albumList)
emptyView.update(data.provider.state, adapter.itemCount)
},
onError = {
}))
}
private fun requery() =
@Suppress("unused")
data.provider.getAlbumsForCategory(categoryName, categoryId, lastFilter)
.subscribeBy(
onNext = { albumList ->
adapter.setModel(albumList)
emptyView.update(data.provider.state, adapter.itemCount)
},
onError = {
})
private val filterDebouncer = object : Debouncer<String>(350) {
override fun onDebounced(last: String?) {
if (!isPaused()) {
if (!paused) {
requery()
}
}

View File

@ -0,0 +1,68 @@
package io.casey.musikcube.remote.ui.browse.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.design.widget.TabLayout
import android.support.v4.view.ViewPager
import io.casey.musikcube.remote.R
import io.casey.musikcube.remote.ui.browse.adapter.BrowseFragmentAdapter
import io.casey.musikcube.remote.ui.shared.activity.BaseActivity
import io.casey.musikcube.remote.ui.shared.extension.findFragment
import io.casey.musikcube.remote.ui.shared.fragment.TransportFragment
class BrowseActivity: BaseActivity() {
private lateinit var transport: TransportFragment
private lateinit var pager: ViewPager
private lateinit var tabs: TabLayout
private lateinit var adapter: BrowseFragmentAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.browse_activity)
adapter = BrowseFragmentAdapter(this, supportFragmentManager)
pager = findViewById(R.id.view_pager)
tabs = findViewById(R.id.tab_layout)
tabs.setupWithViewPager(pager)
pager.adapter = adapter
when (savedInstanceState == null) {
true -> createFragments()
else -> restoreFragments()
}
transport.modelChangedListener = {
// content.notifyTransportChanged()
}
}
// override fun onCreateOptionsMenu(menu: Menu): Boolean = content.createOptionsMenu(menu)
// override fun setFilter(filter: String) = content.setFilter(filter)
private fun createFragments() {
// content = CategoryBrowseFragment.create(intent)
transport = TransportFragment.create()
supportFragmentManager
.beginTransaction()
// .add(R.id.content_container, content, CategoryBrowseFragment.TAG)
.add(R.id.transport_container, transport, TransportFragment.TAG)
.commit()
}
private fun restoreFragments() {
transport = findFragment(TransportFragment.TAG)
// content = findFragment(CategoryBrowseFragment.TAG)
}
companion object {
private const val EXTRA_INITIAL_CATEGORY_TYPE = "extra_initial_category_type"
fun getStartIntent(context: Context,
initialCategoryType: String = ""): Intent =
Intent(context, BrowseActivity::class.java).apply {
putExtra(EXTRA_INITIAL_CATEGORY_TYPE, initialCategoryType)
}
}
}

View File

@ -0,0 +1,22 @@
package io.casey.musikcube.remote.ui.browse.adapter
import android.content.Context
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentPagerAdapter
import io.casey.musikcube.remote.ui.category.fragment.CategoryBrowseFragment
class BrowseFragmentAdapter(private val context: Context, fm: FragmentManager): FragmentPagerAdapter(fm) {
override fun getItem(index: Int): Fragment {
return CategoryBrowseFragment.create(
CategoryBrowseFragment.arguments(context, "artist"))
}
override fun getPageTitle(position: Int): CharSequence? {
return "artist"
}
override fun getCount(): Int {
return 4
}
}

View File

@ -20,6 +20,7 @@ import io.casey.musikcube.remote.service.websocket.Messages
import io.casey.musikcube.remote.service.websocket.WebSocketService
import io.casey.musikcube.remote.service.websocket.model.IDataProvider
import io.casey.musikcube.remote.ui.albums.activity.AlbumBrowseActivity
import io.casey.musikcube.remote.ui.browse.activity.BrowseActivity
import io.casey.musikcube.remote.ui.category.activity.AllCategoriesActivity
import io.casey.musikcube.remote.ui.category.activity.CategoryBrowseActivity
import io.casey.musikcube.remote.ui.category.constant.NavigationType
@ -171,7 +172,8 @@ class MainActivity : BaseActivity() {
}
R.id.action_categories -> {
startActivity(AllCategoriesActivity.getStartIntent(this))
// startActivity(AllCategoriesActivity.getStartIntent(this))
startActivity(BrowseActivity.getStartIntent(this))
return true
}
@ -520,7 +522,7 @@ class MainActivity : BaseActivity() {
private fun runUpdateCheck() {
if (!UpdateAvailableDialog.displayed) {
updateCheck.run { required, version, url ->
if (!isPaused() && required) {
if (!paused && required) {
val suppressed = prefs.getString(Prefs.Key.UPDATE_DIALOG_SUPPRESSED_VERSION, "")
if (!UpdateAvailableDialog.displayed && suppressed != version) {
val tag = UpdateAvailableDialog.TAG

View File

@ -31,8 +31,10 @@ abstract class BaseActivity : AppCompatActivity(), ViewModel.Provider, Runner.Ta
protected var disposables = CompositeDisposable()
private set
protected var paused = false
private set
protected lateinit var prefs: SharedPreferences
private var paused = false
private val mixins = MixinSet()
protected val component: ViewComponent =
@ -127,8 +129,6 @@ abstract class BaseActivity : AppCompatActivity(), ViewModel.Provider, Runner.Ta
protected open val transitionType = Transition.Horizontal
protected fun isPaused(): Boolean = paused
override fun <T: ViewModel<*>> createViewModel(): T? = null
protected fun <T: ViewModel<*>> getViewModel(): T? = mixin(ViewModelMixin::class.java)?.get<T>() as T
protected fun <T: IMixin> mixin(mixin: T): T = mixins.add(mixin)

View File

@ -185,7 +185,7 @@ class TrackListActivity : BaseActivity(), Filterable {
private val filterDebouncer = object : Debouncer<String>(350) {
override fun onDebounced(last: String?) {
if (!isPaused()) {
if (!paused) {
tracks.requery()
}
}

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_weight="1"
android:layout_height="0dp"
android:layout_width="match_parent" />
<FrameLayout
android:id="@+id/transport_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="4dp"/>
</LinearLayout>