Comfortable grid code cleanup

This commit is contained in:
arkon
2020-05-25 14:01:17 -04:00
parent 52e82b3548
commit 0af81c7d05
15 changed files with 92 additions and 105 deletions
@@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DISPLAY_LIST
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DisplayMode
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.lang.plusAssign
import eu.kanade.tachiyomi.util.system.toast
@@ -73,7 +73,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
fun onCreate(controller: LibraryController) {
this.controller = controller
recycler = if (preferences.libraryDisplayMode().get() == DISPLAY_LIST) {
recycler = if (preferences.libraryDisplayMode().get() == DisplayMode.LIST.value) {
(swipe_refresh.inflate(R.layout.library_list_recycler) as RecyclerView).apply {
layoutManager = LinearLayoutManager(context)
}
@@ -7,12 +7,12 @@ import eu.kanade.tachiyomi.data.glide.GlideApp
import eu.kanade.tachiyomi.data.glide.toMangaThumbnail
import eu.kanade.tachiyomi.util.isLocal
import eu.kanade.tachiyomi.util.view.visibleIf
import kotlinx.android.synthetic.main.source_grid_item.card
import kotlinx.android.synthetic.main.source_grid_item.download_text
import kotlinx.android.synthetic.main.source_grid_item.local_text
import kotlinx.android.synthetic.main.source_grid_item.thumbnail
import kotlinx.android.synthetic.main.source_grid_item.title
import kotlinx.android.synthetic.main.source_grid_item.unread_text
import kotlinx.android.synthetic.main.source_compact_grid_item.card
import kotlinx.android.synthetic.main.source_compact_grid_item.download_text
import kotlinx.android.synthetic.main.source_compact_grid_item.local_text
import kotlinx.android.synthetic.main.source_compact_grid_item.thumbnail
import kotlinx.android.synthetic.main.source_compact_grid_item.title
import kotlinx.android.synthetic.main.source_compact_grid_item.unread_text
/**
* Class used to hold the displayed data of a manga in the library, like the cover or the title.
@@ -13,12 +13,11 @@ import eu.davidea.flexibleadapter.items.IFilterable
import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.LibraryManga
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DISPLAY_COMPACT_GRID
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DISPLAY_LIST
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DisplayMode
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
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_compact_grid_item.view.card
import kotlinx.android.synthetic.main.source_compact_grid_item.view.gradient
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
@@ -32,17 +31,18 @@ class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Prefe
override fun getLayoutRes(): Int {
return when (libraryDisplayMode.get()) {
DISPLAY_COMPACT_GRID -> R.layout.source_grid_item
DISPLAY_LIST -> R.layout.source_list_item
else -> R.layout.source_comfortable_grid_item
DisplayMode.COMPACT_GRID.value -> R.layout.source_compact_grid_item
DisplayMode.COMFORTABLE_GRID.value -> R.layout.source_comfortable_grid_item
DisplayMode.LIST.value -> R.layout.source_list_item
else -> throw NotImplementedError("Unknown display mode")
}
}
override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): LibraryHolder {
val parent = adapter.recyclerView
return if (parent is AutofitRecyclerView) {
val coverHeight = parent.itemWidth / 3 * 4
if (libraryDisplayMode.get() == DISPLAY_COMPACT_GRID) {
return when (libraryDisplayMode.get()) {
DisplayMode.COMPACT_GRID.value -> {
val parent = adapter.recyclerView as AutofitRecyclerView
val coverHeight = parent.itemWidth / 3 * 4
view.apply {
card.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, coverHeight)
gradient.layoutParams = FrameLayout.LayoutParams(
@@ -50,19 +50,21 @@ class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Prefe
)
}
LibraryGridHolder(view, adapter)
} else {
}
DisplayMode.COMFORTABLE_GRID.value -> {
val parent = adapter.recyclerView as AutofitRecyclerView
val coverHeight = parent.itemWidth / 3 * 4
view.apply {
card.layoutParams = ConstraintLayout.LayoutParams(
MATCH_PARENT, coverHeight
)
gradient.layoutParams = FrameLayout.LayoutParams(
MATCH_PARENT, coverHeight / 2, Gravity.BOTTOM
)
}
LibraryComfortableGridHolder(view, adapter)
}
} else {
LibraryListHolder(view, adapter)
DisplayMode.LIST.value -> {
LibraryListHolder(view, adapter)
}
else -> throw NotImplementedError("Unknown display mode")
}
}
@@ -5,9 +5,7 @@ import android.content.Context
import android.util.AttributeSet
import android.view.View
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DISPLAY_COMFORTABLE_GRID
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DISPLAY_COMPACT_GRID
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DISPLAY_LIST
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DisplayMode
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.widget.ExtendedNavigationView
import eu.kanade.tachiyomi.widget.TabbedBottomSheetDialog
@@ -185,19 +183,19 @@ class LibrarySettingsSheet(
inner class DisplayGroup : Group {
private val grid = Item.Radio(R.string.action_display_grid, this)
private val compactGrid = Item.Radio(R.string.action_display_grid, this)
private val comfortableGrid = Item.Radio(R.string.action_display_comfortable_grid, this)
private val list = Item.Radio(R.string.action_display_list, this)
override val header = null
override val items = listOf(grid, comfortableGrid, list)
override val items = listOf(compactGrid, comfortableGrid, list)
override val footer = null
override fun initModels() {
val mode = preferences.libraryDisplayMode().get()
grid.checked = mode == DISPLAY_COMPACT_GRID
list.checked = mode == DISPLAY_LIST
comfortableGrid.checked = mode == DISPLAY_COMFORTABLE_GRID
compactGrid.checked = mode == DisplayMode.COMPACT_GRID.value
comfortableGrid.checked = mode == DisplayMode.COMFORTABLE_GRID.value
list.checked = mode == DisplayMode.LIST.value
}
override fun onItemClicked(item: Item) {
@@ -209,9 +207,10 @@ class LibrarySettingsSheet(
preferences.libraryDisplayMode().set(
when (item) {
grid -> DISPLAY_COMPACT_GRID
list -> DISPLAY_LIST
else -> DISPLAY_COMFORTABLE_GRID
compactGrid -> DisplayMode.COMPACT_GRID.value
comfortableGrid -> DisplayMode.COMFORTABLE_GRID.value
list -> DisplayMode.LIST.value
else -> throw NotImplementedError("Unknown display mode")
}
)