Use actual enum support for display mode preferences

This commit is contained in:
arkon 2020-05-25 15:03:51 -04:00
parent a0f5633094
commit 78a352541a
8 changed files with 34 additions and 39 deletions

View file

@ -73,7 +73,7 @@ object PreferenceKeys {
const val lastUsedCategory = "last_used_category" const val lastUsedCategory = "last_used_category"
const val catalogueDisplayMode = "pref_catalogue_display_mode" const val catalogueDisplayMode = "pref_display_mode_catalogue"
const val enabledLanguages = "source_languages" const val enabledLanguages = "source_languages"
@ -131,7 +131,7 @@ object PreferenceKeys {
const val downloadNewCategories = "download_new_categories" const val downloadNewCategories = "download_new_categories"
const val libraryDisplayMode = "pref_library_display_mode" const val libraryDisplayMode = "pref_display_mode_library"
const val lang = "app_language" const val lang = "app_language"

View file

@ -22,9 +22,9 @@ object PreferenceValues {
AMOLED("amoled"), AMOLED("amoled"),
} }
enum class DisplayMode(val value: Int) { enum class DisplayMode {
COMPACT_GRID(0), COMPACT_GRID,
COMFORTABLE_GRID(1), COMFORTABLE_GRID,
LIST(2), LIST,
} }
} }

View file

@ -139,7 +139,7 @@ class PreferencesHelper(val context: Context) {
fun lastVersionCode() = flowPrefs.getInt("last_version_code", 0) fun lastVersionCode() = flowPrefs.getInt("last_version_code", 0)
fun catalogueDisplayMode() = flowPrefs.getInt(Keys.catalogueDisplayMode, DisplayMode.COMPACT_GRID.value) fun catalogueDisplayMode() = flowPrefs.getEnum(Keys.catalogueDisplayMode, DisplayMode.COMPACT_GRID)
fun enabledLanguages() = flowPrefs.getStringSet(Keys.enabledLanguages, setOf("en", Locale.getDefault().language)) fun enabledLanguages() = flowPrefs.getStringSet(Keys.enabledLanguages, setOf("en", Locale.getDefault().language))
@ -185,7 +185,7 @@ class PreferencesHelper(val context: Context) {
fun libraryUpdatePrioritization() = flowPrefs.getInt(Keys.libraryUpdatePrioritization, 0) fun libraryUpdatePrioritization() = flowPrefs.getInt(Keys.libraryUpdatePrioritization, 0)
fun libraryDisplayMode() = flowPrefs.getInt(Keys.libraryDisplayMode, DisplayMode.COMPACT_GRID.value) fun libraryDisplayMode() = flowPrefs.getEnum(Keys.libraryDisplayMode, DisplayMode.COMPACT_GRID)
fun downloadBadge() = flowPrefs.getBoolean(Keys.downloadBadge, false) fun downloadBadge() = flowPrefs.getBoolean(Keys.downloadBadge, false)

View file

@ -188,7 +188,7 @@ open class BrowseSourceController(bundle: Bundle) :
binding.catalogueView.removeView(oldRecycler) binding.catalogueView.removeView(oldRecycler)
} }
val recycler = if (preferences.catalogueDisplayMode().get() == DisplayMode.LIST.value) { val recycler = if (preferences.catalogueDisplayMode().get() == DisplayMode.LIST) {
RecyclerView(view.context).apply { RecyclerView(view.context).apply {
id = R.id.recycler id = R.id.recycler
layoutManager = LinearLayoutManager(context) layoutManager = LinearLayoutManager(context)
@ -268,10 +268,9 @@ open class BrowseSourceController(bundle: Bundle) :
) )
val displayItem = when (preferences.catalogueDisplayMode().get()) { val displayItem = when (preferences.catalogueDisplayMode().get()) {
DisplayMode.COMPACT_GRID.value -> R.id.action_compact_grid DisplayMode.COMPACT_GRID -> R.id.action_compact_grid
DisplayMode.COMFORTABLE_GRID.value -> R.id.action_comfortable_grid DisplayMode.COMFORTABLE_GRID -> R.id.action_comfortable_grid
DisplayMode.LIST.value -> R.id.action_list DisplayMode.LIST -> R.id.action_list
else -> throw NotImplementedError("Unknown display mode")
} }
menu.findItem(displayItem).isChecked = true menu.findItem(displayItem).isChecked = true
} }
@ -442,7 +441,7 @@ open class BrowseSourceController(bundle: Bundle) :
val view = view ?: return val view = view ?: return
val adapter = adapter ?: return val adapter = adapter ?: return
preferences.catalogueDisplayMode().set(mode.value) preferences.catalogueDisplayMode().set(mode)
presenter.refreshDisplayMode() presenter.refreshDisplayMode()
activity?.invalidateOptionsMenu() activity?.invalidateOptionsMenu()
setupRecycler(view) setupRecycler(view)

View file

@ -17,15 +17,14 @@ import eu.kanade.tachiyomi.widget.AutofitRecyclerView
import kotlinx.android.synthetic.main.source_compact_grid_item.view.card import kotlinx.android.synthetic.main.source_compact_grid_item.view.card
import kotlinx.android.synthetic.main.source_compact_grid_item.view.gradient import kotlinx.android.synthetic.main.source_compact_grid_item.view.gradient
class SourceItem(val manga: Manga, private val catalogueDisplayMode: Preference<Int>) : class SourceItem(val manga: Manga, private val catalogueDisplayMode: Preference<DisplayMode>) :
AbstractFlexibleItem<SourceHolder>() { AbstractFlexibleItem<SourceHolder>() {
override fun getLayoutRes(): Int { override fun getLayoutRes(): Int {
return when (catalogueDisplayMode.get()) { return when (catalogueDisplayMode.get()) {
DisplayMode.COMPACT_GRID.value -> R.layout.source_compact_grid_item DisplayMode.COMPACT_GRID -> R.layout.source_compact_grid_item
DisplayMode.COMFORTABLE_GRID.value -> R.layout.source_comfortable_grid_item DisplayMode.COMFORTABLE_GRID -> R.layout.source_comfortable_grid_item
DisplayMode.LIST.value -> R.layout.source_list_item DisplayMode.LIST -> R.layout.source_list_item
else -> throw NotImplementedError("Unknown display mode")
} }
} }
@ -34,7 +33,7 @@ class SourceItem(val manga: Manga, private val catalogueDisplayMode: Preference<
adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>> adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>
): SourceHolder { ): SourceHolder {
return when (catalogueDisplayMode.get()) { return when (catalogueDisplayMode.get()) {
DisplayMode.COMPACT_GRID.value -> { DisplayMode.COMPACT_GRID -> {
val parent = adapter.recyclerView as AutofitRecyclerView val parent = adapter.recyclerView as AutofitRecyclerView
val coverHeight = parent.itemWidth / 3 * 4 val coverHeight = parent.itemWidth / 3 * 4
view.apply { view.apply {
@ -47,7 +46,7 @@ class SourceItem(val manga: Manga, private val catalogueDisplayMode: Preference<
} }
SourceGridHolder(view, adapter) SourceGridHolder(view, adapter)
} }
DisplayMode.COMFORTABLE_GRID.value -> { DisplayMode.COMFORTABLE_GRID -> {
val parent = adapter.recyclerView as AutofitRecyclerView val parent = adapter.recyclerView as AutofitRecyclerView
val coverHeight = parent.itemWidth / 3 * 4 val coverHeight = parent.itemWidth / 3 * 4
view.apply { view.apply {
@ -57,10 +56,9 @@ class SourceItem(val manga: Manga, private val catalogueDisplayMode: Preference<
} }
SourceComfortableGridHolder(view, adapter) SourceComfortableGridHolder(view, adapter)
} }
DisplayMode.LIST.value -> { DisplayMode.LIST -> {
SourceListHolder(view, adapter) SourceListHolder(view, adapter)
} }
else -> throw NotImplementedError("Unknown display mode")
} }
} }

View file

@ -73,7 +73,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
fun onCreate(controller: LibraryController) { fun onCreate(controller: LibraryController) {
this.controller = controller this.controller = controller
recycler = if (preferences.libraryDisplayMode().get() == DisplayMode.LIST.value) { recycler = if (preferences.libraryDisplayMode().get() == DisplayMode.LIST) {
(swipe_refresh.inflate(R.layout.library_list_recycler) as RecyclerView).apply { (swipe_refresh.inflate(R.layout.library_list_recycler) as RecyclerView).apply {
layoutManager = LinearLayoutManager(context) layoutManager = LinearLayoutManager(context)
} }

View file

@ -21,7 +21,7 @@ import kotlinx.android.synthetic.main.source_compact_grid_item.view.gradient
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Preference<Int>) : class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Preference<DisplayMode>) :
AbstractFlexibleItem<LibraryHolder>(), IFilterable<String> { AbstractFlexibleItem<LibraryHolder>(), IFilterable<String> {
private val sourceManager: SourceManager = Injekt.get() private val sourceManager: SourceManager = Injekt.get()
@ -31,16 +31,15 @@ class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Prefe
override fun getLayoutRes(): Int { override fun getLayoutRes(): Int {
return when (libraryDisplayMode.get()) { return when (libraryDisplayMode.get()) {
DisplayMode.COMPACT_GRID.value -> R.layout.source_compact_grid_item DisplayMode.COMPACT_GRID -> R.layout.source_compact_grid_item
DisplayMode.COMFORTABLE_GRID.value -> R.layout.source_comfortable_grid_item DisplayMode.COMFORTABLE_GRID -> R.layout.source_comfortable_grid_item
DisplayMode.LIST.value -> R.layout.source_list_item DisplayMode.LIST -> R.layout.source_list_item
else -> throw NotImplementedError("Unknown display mode")
} }
} }
override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): LibraryHolder { override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): LibraryHolder {
return when (libraryDisplayMode.get()) { return when (libraryDisplayMode.get()) {
DisplayMode.COMPACT_GRID.value -> { DisplayMode.COMPACT_GRID -> {
val parent = adapter.recyclerView as AutofitRecyclerView val parent = adapter.recyclerView as AutofitRecyclerView
val coverHeight = parent.itemWidth / 3 * 4 val coverHeight = parent.itemWidth / 3 * 4
view.apply { view.apply {
@ -51,7 +50,7 @@ class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Prefe
} }
LibraryGridHolder(view, adapter) LibraryGridHolder(view, adapter)
} }
DisplayMode.COMFORTABLE_GRID.value -> { DisplayMode.COMFORTABLE_GRID -> {
val parent = adapter.recyclerView as AutofitRecyclerView val parent = adapter.recyclerView as AutofitRecyclerView
val coverHeight = parent.itemWidth / 3 * 4 val coverHeight = parent.itemWidth / 3 * 4
view.apply { view.apply {
@ -61,10 +60,9 @@ class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Prefe
} }
LibraryComfortableGridHolder(view, adapter) LibraryComfortableGridHolder(view, adapter)
} }
DisplayMode.LIST.value -> { DisplayMode.LIST -> {
LibraryListHolder(view, adapter) LibraryListHolder(view, adapter)
} }
else -> throw NotImplementedError("Unknown display mode")
} }
} }

View file

@ -193,9 +193,9 @@ class LibrarySettingsSheet(
override fun initModels() { override fun initModels() {
val mode = preferences.libraryDisplayMode().get() val mode = preferences.libraryDisplayMode().get()
compactGrid.checked = mode == DisplayMode.COMPACT_GRID.value compactGrid.checked = mode == DisplayMode.COMPACT_GRID
comfortableGrid.checked = mode == DisplayMode.COMFORTABLE_GRID.value comfortableGrid.checked = mode == DisplayMode.COMFORTABLE_GRID
list.checked = mode == DisplayMode.LIST.value list.checked = mode == DisplayMode.LIST
} }
override fun onItemClicked(item: Item) { override fun onItemClicked(item: Item) {
@ -207,9 +207,9 @@ class LibrarySettingsSheet(
preferences.libraryDisplayMode().set( preferences.libraryDisplayMode().set(
when (item) { when (item) {
compactGrid -> DisplayMode.COMPACT_GRID.value compactGrid -> DisplayMode.COMPACT_GRID
comfortableGrid -> DisplayMode.COMFORTABLE_GRID.value comfortableGrid -> DisplayMode.COMFORTABLE_GRID
list -> DisplayMode.LIST.value list -> DisplayMode.LIST
else -> throw NotImplementedError("Unknown display mode") else -> throw NotImplementedError("Unknown display mode")
} }
) )