mirror of
https://github.com/clangen/musikcube.git
synced 2024-10-02 13:02:35 +00:00
Stubbed out BrowseFragment. Will need to extract AlbumBrowseActivity and TrackListActivity into fragments. Ugh.
This commit is contained in:
parent
4e0555d13c
commit
6aae748205
@ -32,6 +32,10 @@
|
|||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:windowSoftInputMode="adjustResize" />
|
android:windowSoftInputMode="adjustResize" />
|
||||||
|
|
||||||
|
<activity android:name=".ui.browse.activity.BrowseActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:windowSoftInputMode="adjustResize" />
|
||||||
|
|
||||||
<activity android:name=".ui.category.activity.CategoryBrowseActivity"
|
<activity android:name=".ui.category.activity.CategoryBrowseActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:windowSoftInputMode="adjustResize" />
|
android:windowSoftInputMode="adjustResize" />
|
||||||
@ -71,7 +75,7 @@
|
|||||||
android:windowSoftInputMode="adjustResize" />
|
android:windowSoftInputMode="adjustResize" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="io.casey.musikcube.remote.ui.category.activity.AllCategoriesActivity"
|
android:name=".ui.category.activity.AllCategoriesActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:windowSoftInputMode="adjustResize" />
|
android:windowSoftInputMode="adjustResize" />
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package io.casey.musikcube.remote.injection
|
|||||||
|
|
||||||
import dagger.Component
|
import dagger.Component
|
||||||
import io.casey.musikcube.remote.ui.albums.activity.AlbumBrowseActivity
|
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.AllCategoriesActivity
|
||||||
import io.casey.musikcube.remote.ui.category.activity.CategoryBrowseActivity
|
import io.casey.musikcube.remote.ui.category.activity.CategoryBrowseActivity
|
||||||
import io.casey.musikcube.remote.ui.category.fragment.CategoryBrowseFragment
|
import io.casey.musikcube.remote.ui.category.fragment.CategoryBrowseFragment
|
||||||
@ -25,6 +26,7 @@ interface ViewComponent {
|
|||||||
fun inject(activity: AlbumBrowseActivity)
|
fun inject(activity: AlbumBrowseActivity)
|
||||||
fun inject(activity: AllCategoriesActivity)
|
fun inject(activity: AllCategoriesActivity)
|
||||||
fun inject(activity: BaseActivity)
|
fun inject(activity: BaseActivity)
|
||||||
|
fun inject(activity: BrowseActivity)
|
||||||
fun inject(activity: CategoryBrowseActivity)
|
fun inject(activity: CategoryBrowseActivity)
|
||||||
fun inject(activity: ConnectionsActivity)
|
fun inject(activity: ConnectionsActivity)
|
||||||
fun inject(activity: MainActivity)
|
fun inject(activity: MainActivity)
|
||||||
|
@ -83,7 +83,7 @@ class AlbumBrowseActivity : BaseActivity(), Filterable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initObservables() {
|
private fun initObservables() =
|
||||||
disposables.add(data.provider.observeState().subscribeBy(
|
disposables.add(data.provider.observeState().subscribeBy(
|
||||||
onNext = { state ->
|
onNext = { state ->
|
||||||
if (state.first == IDataProvider.State.Connected) {
|
if (state.first == IDataProvider.State.Connected) {
|
||||||
@ -95,23 +95,21 @@ class AlbumBrowseActivity : BaseActivity(), Filterable {
|
|||||||
},
|
},
|
||||||
onError = {
|
onError = {
|
||||||
}))
|
}))
|
||||||
}
|
|
||||||
|
|
||||||
private fun requery() {
|
private fun requery() =
|
||||||
disposables.add(
|
@Suppress("unused")
|
||||||
data.provider.getAlbumsForCategory(categoryName, categoryId, lastFilter)
|
data.provider.getAlbumsForCategory(categoryName, categoryId, lastFilter)
|
||||||
.subscribeBy(
|
.subscribeBy(
|
||||||
onNext = { albumList ->
|
onNext = { albumList ->
|
||||||
adapter.setModel(albumList)
|
adapter.setModel(albumList)
|
||||||
emptyView.update(data.provider.state, adapter.itemCount)
|
emptyView.update(data.provider.state, adapter.itemCount)
|
||||||
},
|
},
|
||||||
onError = {
|
onError = {
|
||||||
}))
|
})
|
||||||
}
|
|
||||||
|
|
||||||
private val filterDebouncer = object : Debouncer<String>(350) {
|
private val filterDebouncer = object : Debouncer<String>(350) {
|
||||||
override fun onDebounced(last: String?) {
|
override fun onDebounced(last: String?) {
|
||||||
if (!isPaused()) {
|
if (!paused) {
|
||||||
requery()
|
requery()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
@ -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.WebSocketService
|
||||||
import io.casey.musikcube.remote.service.websocket.model.IDataProvider
|
import io.casey.musikcube.remote.service.websocket.model.IDataProvider
|
||||||
import io.casey.musikcube.remote.ui.albums.activity.AlbumBrowseActivity
|
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.AllCategoriesActivity
|
||||||
import io.casey.musikcube.remote.ui.category.activity.CategoryBrowseActivity
|
import io.casey.musikcube.remote.ui.category.activity.CategoryBrowseActivity
|
||||||
import io.casey.musikcube.remote.ui.category.constant.NavigationType
|
import io.casey.musikcube.remote.ui.category.constant.NavigationType
|
||||||
@ -171,7 +172,8 @@ class MainActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
R.id.action_categories -> {
|
R.id.action_categories -> {
|
||||||
startActivity(AllCategoriesActivity.getStartIntent(this))
|
// startActivity(AllCategoriesActivity.getStartIntent(this))
|
||||||
|
startActivity(BrowseActivity.getStartIntent(this))
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -520,7 +522,7 @@ class MainActivity : BaseActivity() {
|
|||||||
private fun runUpdateCheck() {
|
private fun runUpdateCheck() {
|
||||||
if (!UpdateAvailableDialog.displayed) {
|
if (!UpdateAvailableDialog.displayed) {
|
||||||
updateCheck.run { required, version, url ->
|
updateCheck.run { required, version, url ->
|
||||||
if (!isPaused() && required) {
|
if (!paused && required) {
|
||||||
val suppressed = prefs.getString(Prefs.Key.UPDATE_DIALOG_SUPPRESSED_VERSION, "")
|
val suppressed = prefs.getString(Prefs.Key.UPDATE_DIALOG_SUPPRESSED_VERSION, "")
|
||||||
if (!UpdateAvailableDialog.displayed && suppressed != version) {
|
if (!UpdateAvailableDialog.displayed && suppressed != version) {
|
||||||
val tag = UpdateAvailableDialog.TAG
|
val tag = UpdateAvailableDialog.TAG
|
||||||
|
@ -30,9 +30,11 @@ abstract class BaseActivity : AppCompatActivity(), ViewModel.Provider, Runner.Ta
|
|||||||
|
|
||||||
protected var disposables = CompositeDisposable()
|
protected var disposables = CompositeDisposable()
|
||||||
private set
|
private set
|
||||||
|
|
||||||
|
protected var paused = false
|
||||||
|
private set
|
||||||
|
|
||||||
protected lateinit var prefs: SharedPreferences
|
protected lateinit var prefs: SharedPreferences
|
||||||
private var paused = false
|
|
||||||
private val mixins = MixinSet()
|
private val mixins = MixinSet()
|
||||||
|
|
||||||
protected val component: ViewComponent =
|
protected val component: ViewComponent =
|
||||||
@ -127,8 +129,6 @@ abstract class BaseActivity : AppCompatActivity(), ViewModel.Provider, Runner.Ta
|
|||||||
|
|
||||||
protected open val transitionType = Transition.Horizontal
|
protected open val transitionType = Transition.Horizontal
|
||||||
|
|
||||||
protected fun isPaused(): Boolean = paused
|
|
||||||
|
|
||||||
override fun <T: ViewModel<*>> createViewModel(): T? = null
|
override fun <T: ViewModel<*>> createViewModel(): T? = null
|
||||||
protected fun <T: ViewModel<*>> getViewModel(): T? = mixin(ViewModelMixin::class.java)?.get<T>() as T
|
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)
|
protected fun <T: IMixin> mixin(mixin: T): T = mixins.add(mixin)
|
||||||
|
@ -185,7 +185,7 @@ class TrackListActivity : BaseActivity(), Filterable {
|
|||||||
|
|
||||||
private val filterDebouncer = object : Debouncer<String>(350) {
|
private val filterDebouncer = object : Debouncer<String>(350) {
|
||||||
override fun onDebounced(last: String?) {
|
override fun onDebounced(last: String?) {
|
||||||
if (!isPaused()) {
|
if (!paused) {
|
||||||
tracks.requery()
|
tracks.requery()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
25
src/musikdroid/app/src/main/res/layout/browse_activity.xml
Normal file
25
src/musikdroid/app/src/main/res/layout/browse_activity.xml
Normal 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>
|
Loading…
Reference in New Issue
Block a user