Use actual enum support for display mode preferences
This commit is contained in:
parent
a0f5633094
commit
78a352541a
8 changed files with 34 additions and 39 deletions
|
@ -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"
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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")
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
Reference in a new issue