From 6aae748205c583b98f5c6dd58abac38afc7d9774 Mon Sep 17 00:00:00 2001 From: casey langen Date: Sat, 9 Feb 2019 23:00:43 -0800 Subject: [PATCH] Stubbed out BrowseFragment. Will need to extract AlbumBrowseActivity and TrackListActivity into fragments. Ugh. --- .../app/src/main/AndroidManifest.xml | 6 +- .../remote/injection/ViewComponent.kt | 2 + .../ui/albums/activity/AlbumBrowseActivity.kt | 26 ++++--- .../ui/browse/activity/BrowseActivity.kt | 68 +++++++++++++++++++ .../browse/adapter/BrowseFragmentAdapter.kt | 22 ++++++ .../remote/ui/home/activity/MainActivity.kt | 6 +- .../remote/ui/shared/activity/BaseActivity.kt | 8 +-- .../ui/tracks/activity/TrackListActivity.kt | 2 +- .../src/main/res/layout/browse_activity.xml | 25 +++++++ 9 files changed, 143 insertions(+), 22 deletions(-) create mode 100644 src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/browse/activity/BrowseActivity.kt create mode 100644 src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/browse/adapter/BrowseFragmentAdapter.kt create mode 100644 src/musikdroid/app/src/main/res/layout/browse_activity.xml diff --git a/src/musikdroid/app/src/main/AndroidManifest.xml b/src/musikdroid/app/src/main/AndroidManifest.xml index 9f69a2da4..643c103b3 100644 --- a/src/musikdroid/app/src/main/AndroidManifest.xml +++ b/src/musikdroid/app/src/main/AndroidManifest.xml @@ -32,6 +32,10 @@ android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize" /> + + @@ -71,7 +75,7 @@ android:windowSoftInputMode="adjustResize" /> diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/injection/ViewComponent.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/injection/ViewComponent.kt index c3b558526..72c6f205e 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/injection/ViewComponent.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/injection/ViewComponent.kt @@ -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) diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/albums/activity/AlbumBrowseActivity.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/albums/activity/AlbumBrowseActivity.kt index 15d391bdd..0c23de93f 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/albums/activity/AlbumBrowseActivity.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/albums/activity/AlbumBrowseActivity.kt @@ -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(350) { override fun onDebounced(last: String?) { - if (!isPaused()) { + if (!paused) { requery() } } diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/browse/activity/BrowseActivity.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/browse/activity/BrowseActivity.kt new file mode 100644 index 000000000..453a9e475 --- /dev/null +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/browse/activity/BrowseActivity.kt @@ -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) + } + } +} \ No newline at end of file diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/browse/adapter/BrowseFragmentAdapter.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/browse/adapter/BrowseFragmentAdapter.kt new file mode 100644 index 000000000..c0ab6c1eb --- /dev/null +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/browse/adapter/BrowseFragmentAdapter.kt @@ -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 + } +} \ No newline at end of file diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/home/activity/MainActivity.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/home/activity/MainActivity.kt index 2f382f0a9..a56bfe8ce 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/home/activity/MainActivity.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/home/activity/MainActivity.kt @@ -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 diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/activity/BaseActivity.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/activity/BaseActivity.kt index 6f3a8de6b..f9b322dab 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/activity/BaseActivity.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/activity/BaseActivity.kt @@ -30,9 +30,11 @@ 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 > createViewModel(): T? = null protected fun > getViewModel(): T? = mixin(ViewModelMixin::class.java)?.get() as T protected fun mixin(mixin: T): T = mixins.add(mixin) diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/tracks/activity/TrackListActivity.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/tracks/activity/TrackListActivity.kt index 840796e0f..9e164f8f8 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/tracks/activity/TrackListActivity.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/tracks/activity/TrackListActivity.kt @@ -185,7 +185,7 @@ class TrackListActivity : BaseActivity(), Filterable { private val filterDebouncer = object : Debouncer(350) { override fun onDebounced(last: String?) { - if (!isPaused()) { + if (!paused) { tracks.requery() } } diff --git a/src/musikdroid/app/src/main/res/layout/browse_activity.xml b/src/musikdroid/app/src/main/res/layout/browse_activity.xml new file mode 100644 index 000000000..f26073082 --- /dev/null +++ b/src/musikdroid/app/src/main/res/layout/browse_activity.xml @@ -0,0 +1,25 @@ + + + + + + + + + + \ No newline at end of file