Last few changes for comfortable grid

This commit is contained in:
Jobobby04 2020-05-24 19:37:06 -04:00
parent 1ba236e551
commit bc85e95d0a
4 changed files with 16 additions and 17 deletions

View File

@ -130,8 +130,10 @@ open class BrowseSourcePresenter(
query = savedState.getString(::query.name, "") query = savedState.getString(::query.name, "")
} }
prefs.catalogueViewSetting().asObservable() add(
.subscribe { setDisplayMode(it) } prefs.catalogueViewSetting().asObservable()
.subscribe { setDisplayMode(it) }
)
restartPager() restartPager()
} }

View File

@ -13,15 +13,14 @@ import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.widget.AutofitRecyclerView import eu.kanade.tachiyomi.widget.AutofitRecyclerView
import exh.util.updateLayoutParams
import kotlinx.android.synthetic.main.source_grid_item.view.card import kotlinx.android.synthetic.main.source_grid_item.view.card
import kotlinx.android.synthetic.main.source_grid_item.view.gradient import kotlinx.android.synthetic.main.source_grid_item.view.gradient
class SourceItem(val manga: Manga, private val catalogueAsList: Preference<Int>) : class SourceItem(val manga: Manga, private val catalogueViewSetting: Preference<Int>) :
AbstractFlexibleItem<SourceHolder>() { AbstractFlexibleItem<SourceHolder>() {
override fun getLayoutRes(): Int { override fun getLayoutRes(): Int {
return when (catalogueAsList.get()) { return when (catalogueViewSetting.get()) {
0 -> R.layout.source_grid_item 0 -> R.layout.source_grid_item
1 -> R.layout.source_list_item 1 -> R.layout.source_list_item
else -> R.layout.source_comfortable_grid_item else -> R.layout.source_comfortable_grid_item
@ -35,7 +34,7 @@ class SourceItem(val manga: Manga, private val catalogueAsList: Preference<Int>)
val parent = adapter.recyclerView val parent = adapter.recyclerView
return if (parent is AutofitRecyclerView) { return if (parent is AutofitRecyclerView) {
val coverHeight = parent.itemWidth / 3 * 4 val coverHeight = parent.itemWidth / 3 * 4
if (catalogueAsList.get() == 0) { if (catalogueViewSetting.get() == 0) {
view.apply { view.apply {
card.layoutParams = FrameLayout.LayoutParams( card.layoutParams = FrameLayout.LayoutParams(
MATCH_PARENT, coverHeight MATCH_PARENT, coverHeight
@ -47,9 +46,9 @@ class SourceItem(val manga: Manga, private val catalogueAsList: Preference<Int>)
SourceGridHolder(view, adapter) SourceGridHolder(view, adapter)
} else { } else {
view.apply { view.apply {
card.updateLayoutParams<ConstraintLayout.LayoutParams> { card.layoutParams = ConstraintLayout.LayoutParams(
height = coverHeight MATCH_PARENT, coverHeight
} )
gradient.layoutParams = FrameLayout.LayoutParams( gradient.layoutParams = FrameLayout.LayoutParams(
MATCH_PARENT, coverHeight / 2, Gravity.BOTTOM MATCH_PARENT, coverHeight / 2, Gravity.BOTTOM
) )

View File

@ -18,7 +18,6 @@ import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.widget.AutofitRecyclerView import eu.kanade.tachiyomi.widget.AutofitRecyclerView
import exh.util.updateLayoutParams
import kotlinx.android.synthetic.main.source_comfortable_grid_item.view.title import kotlinx.android.synthetic.main.source_comfortable_grid_item.view.title
import kotlinx.android.synthetic.main.source_grid_item.view.card import kotlinx.android.synthetic.main.source_grid_item.view.card
import kotlinx.android.synthetic.main.source_grid_item.view.gradient import kotlinx.android.synthetic.main.source_grid_item.view.gradient
@ -46,9 +45,9 @@ class LibraryItem(val manga: LibraryManga, private val libraryViewSetting: Prefe
override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): LibraryHolder { override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): LibraryHolder {
val parent = adapter.recyclerView val parent = adapter.recyclerView
return if (parent is AutofitRecyclerView) { return if (parent is AutofitRecyclerView) {
val coverHeight = parent.itemWidth / 3 * 4
if (libraryViewSetting.get() == 0) { if (libraryViewSetting.get() == 0) {
view.apply { view.apply {
val coverHeight = parent.itemWidth / 3 * 4
card.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, coverHeight) card.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, coverHeight)
gradient.layoutParams = FrameLayout.LayoutParams( gradient.layoutParams = FrameLayout.LayoutParams(
MATCH_PARENT, coverHeight / 2, Gravity.BOTTOM MATCH_PARENT, coverHeight / 2, Gravity.BOTTOM
@ -57,10 +56,9 @@ class LibraryItem(val manga: LibraryManga, private val libraryViewSetting: Prefe
LibraryGridHolder(view, adapter) LibraryGridHolder(view, adapter)
} else { } else {
view.apply { view.apply {
val coverHeight = parent.itemWidth / 3 * 4 card.layoutParams = ConstraintLayout.LayoutParams(
card.updateLayoutParams<ConstraintLayout.LayoutParams> { MATCH_PARENT, coverHeight
height = coverHeight )
}
gradient.layoutParams = FrameLayout.LayoutParams( gradient.layoutParams = FrameLayout.LayoutParams(
MATCH_PARENT, coverHeight / 2, Gravity.BOTTOM MATCH_PARENT, coverHeight / 2, Gravity.BOTTOM
) )

View File

@ -301,10 +301,10 @@ class LibraryPresenter(
* value. * value.
*/ */
private fun getLibraryMangasObservable(): Observable<LibraryMap> { private fun getLibraryMangasObservable(): Observable<LibraryMap> {
val libraryAsList = preferences.libraryViewSetting() val libraryViewSetting = preferences.libraryViewSetting()
return db.getLibraryMangas().asRxObservable() return db.getLibraryMangas().asRxObservable()
.map { list -> .map { list ->
list.map { LibraryItem(it, libraryAsList) }.groupBy { it.manga.category } list.map { LibraryItem(it, libraryViewSetting) }.groupBy { it.manga.category }
} }
} }