From 7dd56b1976138a419754026551ab6afde2bf8bc2 Mon Sep 17 00:00:00 2001 From: ziro Date: Mon, 29 Jan 2024 10:05:16 +0700 Subject: [PATCH] refactor: Split RecentsPreferences and UiPreferences from PreferencesHelper --- .../domain/recents/RecentsPreferences.kt | 18 ++++++++++++++ .../java/dev/yokai/domain/ui/UiPreferences.kt | 14 +++++++++++ .../data/preference/PreferencesHelper.kt | 14 ----------- .../kanade/tachiyomi/di/PreferenceModule.kt | 6 +++++ .../ui/extension/ExtensionBottomSheet.kt | 2 +- .../ui/library/LibraryCategoryAdapter.kt | 4 +++- .../tachiyomi/ui/library/LibraryController.kt | 8 ++++--- .../tachiyomi/ui/library/LibraryItem.kt | 4 +++- .../ui/library/display/LibraryDisplayView.kt | 6 ++--- .../ui/migration/BaseMigrationPresenter.kt | 2 ++ .../ui/migration/MigrationController.kt | 2 +- .../manga/process/MigrationProcessAdapter.kt | 4 +++- .../ui/recents/RecentMangaAdapter.kt | 24 +++++++++++-------- .../tachiyomi/ui/recents/RecentsController.kt | 4 ++-- .../tachiyomi/ui/recents/RecentsPresenter.kt | 12 ++++++---- .../ui/recents/options/RecentsGeneralView.kt | 12 +++++----- .../source/browse/BrowseSourceController.kt | 8 +++---- .../ui/source/browse/BrowseSourcePresenter.kt | 12 ++++++---- .../globalsearch/GlobalSearchCardAdapter.kt | 4 +++- .../tachiyomi/widget/AutofitRecyclerView.kt | 5 ++-- .../tachiyomi/widget/BaseTabbedScrollView.kt | 7 +++++- 21 files changed, 112 insertions(+), 60 deletions(-) create mode 100644 app/src/main/java/dev/yokai/domain/recents/RecentsPreferences.kt create mode 100644 app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt diff --git a/app/src/main/java/dev/yokai/domain/recents/RecentsPreferences.kt b/app/src/main/java/dev/yokai/domain/recents/RecentsPreferences.kt new file mode 100644 index 0000000000..7777aa8898 --- /dev/null +++ b/app/src/main/java/dev/yokai/domain/recents/RecentsPreferences.kt @@ -0,0 +1,18 @@ +package dev.yokai.domain.recents + +import eu.kanade.tachiyomi.core.preference.PreferenceStore +import eu.kanade.tachiyomi.core.preference.getEnum +import eu.kanade.tachiyomi.data.preference.PreferenceKeys +import eu.kanade.tachiyomi.ui.recents.RecentMangaAdapter + +class RecentsPreferences(private val preferenceStore: PreferenceStore) { + fun showRecentsDownloads() = + preferenceStore.getEnum(PreferenceKeys.showDLsInRecents, RecentMangaAdapter.ShowRecentsDLs.All) + + fun showRecentsRemHistory() = preferenceStore.getBoolean(PreferenceKeys.showRemHistoryInRecents, true) + + fun showReadInAllRecents() = preferenceStore.getBoolean(PreferenceKeys.showReadInAllRecents, false) + + fun showTitleFirstInRecents() = + preferenceStore.getBoolean(PreferenceKeys.showTitleFirstInRecents, false) +} diff --git a/app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt b/app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt new file mode 100644 index 0000000000..0982f39082 --- /dev/null +++ b/app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt @@ -0,0 +1,14 @@ +package dev.yokai.domain.ui + +import eu.kanade.tachiyomi.core.preference.PreferenceStore +import eu.kanade.tachiyomi.core.preference.getEnum +import eu.kanade.tachiyomi.data.preference.PreferenceKeys +import eu.kanade.tachiyomi.ui.recents.RecentMangaAdapter + +class UiPreferences(private val preferenceStore: PreferenceStore) { + fun recentsViewType() = preferenceStore.getInt("recents_view_type", 0) + + fun outlineOnCovers() = preferenceStore.getBoolean(PreferenceKeys.outlineOnCovers, true) + + fun uniformGrid() = preferenceStore.getBoolean(PreferenceKeys.uniformGrid, true) +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index a541719064..c27e0c80c1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -264,10 +264,6 @@ class PreferencesHelper(val context: Context, val preferenceStore: PreferenceSto fun gridSize() = preferenceStore.getFloat(Keys.gridSize, 1f) - fun uniformGrid() = preferenceStore.getBoolean(Keys.uniformGrid, true) - - fun outlineOnCovers() = preferenceStore.getBoolean(Keys.outlineOnCovers, true) - fun downloadBadge() = preferenceStore.getBoolean(Keys.downloadBadge, false) fun languageBadge() = preferenceStore.getBoolean(Keys.languageBadge, false) @@ -361,14 +357,6 @@ class PreferencesHelper(val context: Context, val preferenceStore: PreferenceSto // TODO: SourcePref fun extensionUpdatesCount() = preferenceStore.getInt("ext_updates_count", 0) - fun recentsViewType() = preferenceStore.getInt("recents_view_type", 0) - - fun showRecentsDownloads() = preferenceStore.getEnum(Keys.showDLsInRecents, RecentMangaAdapter.ShowRecentsDLs.All) - - fun showRecentsRemHistory() = preferenceStore.getBoolean(Keys.showRemHistoryInRecents, true) - - fun showReadInAllRecents() = preferenceStore.getBoolean(Keys.showReadInAllRecents, false) - fun showUpdatedTime() = preferenceStore.getBoolean(Keys.showUpdatedTime, false) fun sortFetchedTime() = preferenceStore.getBoolean("sort_fetched_time", false) @@ -379,8 +367,6 @@ class PreferencesHelper(val context: Context, val preferenceStore: PreferenceSto fun collapseGroupedHistory() = preferenceStore.getBoolean("collapse_group_history", true) - fun showTitleFirstInRecents() = preferenceStore.getBoolean(Keys.showTitleFirstInRecents, false) - fun lastExtCheck() = preferenceStore.getLong("last_ext_check", 0) fun lastAppCheck() = preferenceStore.getLong("last_app_check", 0) diff --git a/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt b/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt index 24772a6bd0..2b43ff0a54 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt @@ -1,7 +1,9 @@ package eu.kanade.tachiyomi.di import android.app.Application +import dev.yokai.domain.recents.RecentsPreferences import dev.yokai.domain.source.SourcePreferences +import dev.yokai.domain.ui.UiPreferences import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.data.preference.PreferencesHelper @@ -19,6 +21,10 @@ class PreferenceModule(val application: Application) : InjektModule { addSingletonFactory { TrackPreferences(get()) } + addSingletonFactory { UiPreferences(get()) } + + addSingletonFactory { RecentsPreferences(get()) } + addSingletonFactory { PreferencesHelper( context = application, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt index ec4915b9a5..8ac44659e8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt @@ -358,7 +358,7 @@ class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: At currentSourceTitle = title val changingAdapters = migAdapter !is MangaAdapter if (migAdapter !is MangaAdapter) { - migAdapter = MangaAdapter(this, presenter.preferences.outlineOnCovers().get()) + migAdapter = MangaAdapter(this, presenter.uiPreferences.outlineOnCovers().get()) migrationFrameLayout?.onBind(migAdapter!!) migAdapter?.stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt index 1d62983824..8f2ecacda8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.library import android.os.Build import android.view.HapticFeedbackConstants import android.view.View +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.R @@ -29,11 +30,12 @@ class LibraryCategoryAdapter(val controller: LibraryController?) : val sourceManager by injectLazy() + private val uiPreferences: UiPreferences by injectLazy() private val preferences: PreferencesHelper by injectLazy() var showNumber = preferences.categoryNumberOfItems().get() - var showOutline = preferences.outlineOnCovers().get() + var showOutline = uiPreferences.outlineOnCovers().get() private var lastCategory = "" diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index fc1b9a3f23..0446bd0265 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -51,6 +51,7 @@ import com.bluelinelabs.conductor.ControllerChangeType import com.github.florent37.viewtooltip.ViewTooltip import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.Snackbar +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.SelectableAdapter import eu.davidea.flexibleadapter.items.IFlexible @@ -138,6 +139,7 @@ import kotlin.random.nextInt open class LibraryController( bundle: Bundle? = null, + val uiPreferences: UiPreferences = Injekt.get(), val preferences: PreferencesHelper = Injekt.get(), ) : BaseCoroutineController(bundle), ActionMode.Callback, @@ -968,7 +970,7 @@ open class LibraryController( bottom = 50.dpToPx + (bottomNav?.height ?: 0), ) } - useStaggered(preferences) + useStaggered(preferences, uiPreferences) if (libraryLayout == LibraryItem.LAYOUT_LIST) { spanCount = 1 updatePaddingRelative( @@ -999,7 +1001,7 @@ open class LibraryController( private fun setPreferenceFlows() { listOf( preferences.libraryLayout(), - preferences.uniformGrid(), + uiPreferences.uniformGrid(), preferences.gridSize(), preferences.useStaggeredGrid(), ).forEach { @@ -1011,7 +1013,7 @@ open class LibraryController( .launchIn(viewScope) } preferences.hideStartReadingButton().register() - preferences.outlineOnCovers().register { adapter.showOutline = it } + uiPreferences.outlineOnCovers().register { adapter.showOutline = it } preferences.categoryNumberOfItems().register { adapter.showNumber = it } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt index 21ec449e88..ac0d7a9e5f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt @@ -11,6 +11,7 @@ import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.StaggeredGridLayoutManager +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.AbstractSectionableItem import eu.davidea.flexibleadapter.items.IFilterable @@ -31,6 +32,7 @@ class LibraryItem( val manga: LibraryManga, header: LibraryHeaderItem, private val context: Context?, + private val uiPreferences: UiPreferences = Injekt.get(), private val preferences: PreferencesHelper = Injekt.get(), ) : AbstractSectionableItem(header), IFilterable { @@ -41,7 +43,7 @@ class LibraryItem( private val sourceManager: SourceManager by injectLazy() private val uniformSize: Boolean - get() = preferences.uniformGrid().get() + get() = uiPreferences.uniformGrid().get() private val libraryLayout: Int get() = preferences.libraryLayout().get() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/display/LibraryDisplayView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/display/LibraryDisplayView.kt index 9b37f7fc78..f7dc640616 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/display/LibraryDisplayView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/display/LibraryDisplayView.kt @@ -26,12 +26,12 @@ class LibraryDisplayView @JvmOverloads constructor(context: Context, attrs: Attr override fun inflateBinding() = LibraryDisplayLayoutBinding.bind(this) override fun initGeneralPreferences() { binding.displayGroup.bindToPreference(preferences.libraryLayout()) - binding.uniformGrid.bindToPreference(preferences.uniformGrid()) { + binding.uniformGrid.bindToPreference(uiPreferences.uniformGrid()) { binding.staggeredGrid.isEnabled = !it } - binding.outlineOnCovers.bindToPreference(preferences.outlineOnCovers()) + binding.outlineOnCovers.bindToPreference(uiPreferences.outlineOnCovers()) binding.staggeredGrid.text = context.getString(R.string.use_staggered_grid).addBetaTag(context) - binding.staggeredGrid.isEnabled = !preferences.uniformGrid().get() + binding.staggeredGrid.isEnabled = !uiPreferences.uniformGrid().get() binding.staggeredGrid.bindToPreference(preferences.useStaggeredGrid()) binding.gridSeekbar.value = ((preferences.gridSize().get() + .5f) * 2f).roundToInt().toFloat() binding.resetGridSize.setOnClickListener { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/BaseMigrationPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/BaseMigrationPresenter.kt index 8a05ac335f..621a144146 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/BaseMigrationPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/BaseMigrationPresenter.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.ui.migration +import dev.yokai.domain.ui.UiPreferences import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.preference.PreferenceValues @@ -21,6 +22,7 @@ import uy.kohesive.injekt.injectLazy abstract class BaseMigrationPresenter( protected val sourceManager: SourceManager = Injekt.get(), protected val db: DatabaseHelper = Injekt.get(), + val uiPreferences: UiPreferences = Injekt.get(), val preferences: PreferencesHelper = Injekt.get(), ) : BaseCoroutinePresenter() { private var selectedSource: Pair? = null diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationController.kt index 2390bcf85d..330d8c3fd2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationController.kt @@ -139,7 +139,7 @@ class MigrationController : override fun setMigrationManga(title: String, manga: List?) { this.title = title if (adapter !is MangaAdapter) { - adapter = MangaAdapter(this, presenter.preferences.outlineOnCovers().get()) + adapter = MangaAdapter(this, presenter.uiPreferences.outlineOnCovers().get()) binding.migrationRecycler.adapter = adapter } adapter?.updateDataSet(manga, true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt index 64d6c4cd30..68b387af68 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.ui.migration.manga.process import android.view.MenuItem +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.FlexibleAdapter import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -31,11 +32,12 @@ class MigrationProcessAdapter( private val db: DatabaseHelper by injectLazy() var items: List = emptyList() val preferences: PreferencesHelper by injectLazy() + val uiPreferences: UiPreferences by injectLazy() val sourceManager: SourceManager by injectLazy() val coverCache: CoverCache by injectLazy() val customMangaManager: CustomMangaManager by injectLazy() - var showOutline = preferences.outlineOnCovers().get() + var showOutline = uiPreferences.outlineOnCovers().get() val menuItemListener: MigrationProcessInterface = controller private val enhancedServices by lazy { Injekt.get().services.filterIsInstance() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt index 6888434df4..a3c07408c9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt @@ -2,6 +2,8 @@ package eu.kanade.tachiyomi.ui.recents import android.view.View import androidx.recyclerview.widget.ItemTouchHelper +import dev.yokai.domain.recents.RecentsPreferences +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.data.database.models.Chapter @@ -23,13 +25,15 @@ class RecentMangaAdapter(val delegate: RecentsInterface) : BaseChapterAdapter>(delegate) { val preferences: PreferencesHelper by injectLazy() + val uiPreferences: UiPreferences by injectLazy() + val recentsPreferences: RecentsPreferences by injectLazy() - var showDownloads = preferences.showRecentsDownloads().get() - var showRemoveHistory = preferences.showRecentsRemHistory().get() - var showTitleFirst = preferences.showTitleFirstInRecents().get() + var showDownloads = recentsPreferences.showRecentsDownloads().get() + var showRemoveHistory = recentsPreferences.showRecentsRemHistory().get() + var showTitleFirst = recentsPreferences.showTitleFirstInRecents().get() var showUpdatedTime = preferences.showUpdatedTime().get() - var uniformCovers = preferences.uniformGrid().get() - var showOutline = preferences.outlineOnCovers().get() + var uniformCovers = uiPreferences.uniformGrid().get() + var showOutline = uiPreferences.outlineOnCovers().get() var sortByFetched = preferences.sortFetchedTime().get() var lastUpdatedTime = preferences.libraryUpdateLastTimestamp().get() private var collapseGroupedUpdates = preferences.collapseGroupedUpdates().get() @@ -56,15 +60,15 @@ class RecentMangaAdapter(val delegate: RecentsInterface) : } fun setPreferenceFlows() { - preferences.showRecentsDownloads().register { showDownloads = it } - preferences.showRecentsRemHistory().register { showRemoveHistory = it } - preferences.showTitleFirstInRecents().register { showTitleFirst = it } + recentsPreferences.showRecentsDownloads().register { showDownloads = it } + recentsPreferences.showRecentsRemHistory().register { showRemoveHistory = it } + recentsPreferences.showTitleFirstInRecents().register { showTitleFirst = it } preferences.showUpdatedTime().register { showUpdatedTime = it } - preferences.uniformGrid().register { uniformCovers = it } + uiPreferences.uniformGrid().register { uniformCovers = it } preferences.collapseGroupedUpdates().register { collapseGroupedUpdates = it } preferences.collapseGroupedHistory().register { collapseGroupedHistory = it } preferences.sortFetchedTime().changesIn(delegate.scope()) { sortByFetched = it } - preferences.outlineOnCovers().register(false) { + uiPreferences.outlineOnCovers().register(false) { showOutline = it (0 until itemCount).forEach { i -> (recyclerView.findViewHolderForAdapterPosition(i) as? RecentMangaHolder)?.updateCards() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt index c7a6663087..d3726adc12 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt @@ -486,7 +486,7 @@ class RecentsController(bundle: Bundle? = null) : override fun canStillGoBack(): Boolean { return showingDownloads || - presenter.preferences.recentsViewType().get() != presenter.viewType.mainValue + presenter.uiPreferences.recentsViewType().get() != presenter.viewType.mainValue } override fun handleOnBackStarted(backEvent: BackEventCompat) { @@ -516,7 +516,7 @@ class RecentsController(bundle: Bundle? = null) : binding.downloadBottomSheet.dlBottomSheet.dismiss() return true } - val viewType = RecentsViewType.valueOf(presenter.preferences.recentsViewType().get()) + val viewType = RecentsViewType.valueOf(presenter.uiPreferences.recentsViewType().get()) if (viewType != presenter.viewType) { tempJumpTo(viewType) return true diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt index b3d66c5c5e..b1567b12c7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt @@ -1,5 +1,7 @@ package eu.kanade.tachiyomi.ui.recents +import dev.yokai.domain.recents.RecentsPreferences +import dev.yokai.domain.ui.UiPreferences import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter @@ -43,6 +45,8 @@ import kotlin.math.abs import kotlin.math.roundToInt class RecentsPresenter( + val uiPreferences: UiPreferences = Injekt.get(), + val recentsPreferences: RecentsPreferences = Injekt.get(), val preferences: PreferencesHelper = Injekt.get(), val downloadManager: DownloadManager = Injekt.get(), val db: DatabaseHelper = Injekt.get(), @@ -63,7 +67,7 @@ class RecentsPresenter( RecentMangaHeaderItem(RecentMangaHeaderItem.CONTINUE_READING) var finished = false private var shouldMoveToTop = false - var viewType: RecentsViewType = RecentsViewType.valueOf(preferences.recentsViewType().get()) + var viewType: RecentsViewType = RecentsViewType.valueOf(uiPreferences.recentsViewType().get()) private set var groupHistory: GroupType = preferences.groupChaptersHistory().get() private set @@ -98,7 +102,7 @@ class RecentsPresenter( getRecents() listOf( preferences.groupChaptersHistory(), - preferences.showReadInAllRecents(), + recentsPreferences.showReadInAllRecents(), preferences.sortFetchedTime(), ).forEach { it.changes() @@ -152,7 +156,7 @@ class RecentsPresenter( } val viewType = customViewType ?: viewType - val showRead = ((preferences.showReadInAllRecents().get() || query.isNotEmpty()) && limit != 0) || includeReadAnyway + val showRead = ((recentsPreferences.showReadInAllRecents().get() || query.isNotEmpty()) && limit != 0) || includeReadAnyway val isUngrouped = viewType != RecentsViewType.GroupedAll || query.isNotEmpty() val groupChaptersHistory = preferences.groupChaptersHistory().get() groupHistory = groupChaptersHistory @@ -469,7 +473,7 @@ class RecentsPresenter( fun toggleGroupRecents(pref: RecentsViewType, updatePref: Boolean = true) { if (updatePref) { - preferences.recentsViewType().set(pref.mainValue) + uiPreferences.recentsViewType().set(pref.mainValue) } viewType = pref resetOffsets() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/options/RecentsGeneralView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/options/RecentsGeneralView.kt index 1d78151c39..67abd9db1d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/options/RecentsGeneralView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/options/RecentsGeneralView.kt @@ -19,11 +19,11 @@ class RecentsGeneralView @JvmOverloads constructor(context: Context, attrs: Attr .withSubtitle(binding.showRemoveHistory.context, R.string.press_and_hold_to_also_reset) binding.uniformCovers.text = uniformText .withSubtitle(binding.uniformCovers.context, R.string.affects_library_grid) - binding.showRecentsDownload.bindToPreference(preferences.showRecentsDownloads()) - binding.showRemoveHistory.bindToPreference(preferences.showRecentsRemHistory()) - binding.showReadInAll.bindToPreference(preferences.showReadInAllRecents()) - binding.showTitleFirst.bindToPreference(preferences.showTitleFirstInRecents()) - binding.uniformCovers.bindToPreference(preferences.uniformGrid()) - binding.outlineOnCovers.bindToPreference(preferences.outlineOnCovers()) + binding.showRecentsDownload.bindToPreference(recentsPreferences.showRecentsDownloads()) + binding.showRemoveHistory.bindToPreference(recentsPreferences.showRecentsRemHistory()) + binding.showReadInAll.bindToPreference(recentsPreferences.showReadInAllRecents()) + binding.showTitleFirst.bindToPreference(recentsPreferences.showTitleFirstInRecents()) + binding.uniformCovers.bindToPreference(uiPreferences.uniformGrid()) + binding.outlineOnCovers.bindToPreference(uiPreferences.outlineOnCovers()) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceController.kt index 19f7f8159c..5c376147ed 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourceController.kt @@ -206,7 +206,7 @@ open class BrowseSourceController(bundle: Bundle) : binding.catalogueView.removeView(oldRecycler) } - val recycler = if (presenter.prefs.browseAsList().get()) { + val recycler = if (presenter.preferences.browseAsList().get()) { RecyclerView(view.context).apply { id = R.id.recycler layoutManager = LinearLayoutManagerAccurateOffset(context) @@ -320,7 +320,7 @@ open class BrowseSourceController(bundle: Bundle) : private fun updateDisplayMenuItem(menu: Menu?, isListMode: Boolean? = null) { menu?.findItem(R.id.action_display_mode)?.apply { - val icon = if (isListMode ?: presenter.prefs.browseAsList().get()) { + val icon = if (isListMode ?: presenter.preferences.browseAsList().get()) { R.drawable.ic_view_module_24dp } else { R.drawable.ic_view_list_24dp @@ -663,8 +663,8 @@ open class BrowseSourceController(bundle: Bundle) : val view = view ?: return val adapter = adapter ?: return - val isListMode = !presenter.prefs.browseAsList().get() - presenter.prefs.browseAsList().set(isListMode) + val isListMode = !presenter.preferences.browseAsList().get() + presenter.preferences.browseAsList().set(isListMode) listOf(activityBinding?.toolbar?.menu, activityBinding?.searchToolbar?.menu).forEach { updateDisplayMenuItem(it, isListMode) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt index b1f0093e2f..f3b4f36e00 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.ui.source.browse +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -48,7 +49,8 @@ open class BrowseSourcePresenter( var useLatest: Boolean = false, val sourceManager: SourceManager = Injekt.get(), val db: DatabaseHelper = Injekt.get(), - val prefs: PreferencesHelper = Injekt.get(), + val uiPreferences: UiPreferences = Injekt.get(), + val preferences: PreferencesHelper = Injekt.get(), private val coverCache: CoverCache = Injekt.get(), ) : BaseCoroutinePresenter() { @@ -159,9 +161,9 @@ open class BrowseSourcePresenter( val sourceId = source.id - val browseAsList = prefs.browseAsList() - val sourceListType = prefs.libraryLayout() - val outlineCovers = prefs.outlineOnCovers() + val browseAsList = preferences.browseAsList() + val sourceListType = preferences.libraryLayout() + val outlineCovers = uiPreferences.outlineOnCovers() items.clear() // Prepare the pager. @@ -171,7 +173,7 @@ open class BrowseSourcePresenter( try { val mangas = second .map { networkToLocalManga(it, sourceId) } - .filter { !prefs.hideInLibraryItems().get() || !it.favorite } + .filter { !preferences.hideInLibraryItems().get() || !it.favorite } if (mangas.isEmpty() && page == 1) { withUIContext { view?.onAddPageError(NoResultsException()) } return@onEach diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchCardAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchCardAdapter.kt index 1fb8ebf3e9..98c9a5c94d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchCardAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchCardAdapter.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.ui.source.globalsearch +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.FlexibleAdapter import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.preference.PreferencesHelper @@ -17,8 +18,9 @@ class GlobalSearchCardAdapter(controller: GlobalSearchController) : * Listen for browse item clicks. */ val mangaClickListener: OnMangaClickListener = controller + private val uiPreferences: UiPreferences by injectLazy() private val preferences: PreferencesHelper by injectLazy() - val showOutlines = preferences.outlineOnCovers().get() + val showOutlines = uiPreferences.outlineOnCovers().get() /** * Listener which should be called when user clicks browse. diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt index a5ca9816d2..4abbe9a1f5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt @@ -9,6 +9,7 @@ import androidx.preference.PreferenceManager import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.StaggeredGridLayoutManager +import dev.yokai.domain.ui.UiPreferences import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.library.LibraryItem import eu.kanade.tachiyomi.util.system.dpToPx @@ -85,10 +86,10 @@ class AutofitRecyclerView @JvmOverloads constructor(context: Context, attrs: Att lastMeasuredWidth = width } - fun useStaggered(preferences: PreferencesHelper) { + fun useStaggered(preferences: PreferencesHelper, uiPreferences: UiPreferences) { useStaggered( preferences.useStaggeredGrid().get() && - !preferences.uniformGrid().get() && + !uiPreferences.uniformGrid().get() && preferences.libraryLayout().get() != LibraryItem.LAYOUT_LIST, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/BaseTabbedScrollView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/BaseTabbedScrollView.kt index b434024bd9..397d0a77f7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/BaseTabbedScrollView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/BaseTabbedScrollView.kt @@ -4,6 +4,8 @@ import android.content.Context import android.util.AttributeSet import androidx.core.widget.NestedScrollView import androidx.viewbinding.ViewBinding +import dev.yokai.domain.recents.RecentsPreferences +import dev.yokai.domain.ui.UiPreferences import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.library.LibraryController import eu.kanade.tachiyomi.ui.reader.ReaderActivity @@ -19,7 +21,8 @@ abstract class BaseTabbedScrollView @JvmOverloads constructor( init { clipToPadding = false } - internal val preferences by injectLazy() + internal val preferences: PreferencesHelper by injectLazy() + internal val uiPreferences: UiPreferences by injectLazy() abstract fun initGeneralPreferences() abstract fun inflateBinding(): VB @@ -35,6 +38,8 @@ abstract class BaseTabbedScrollView @JvmOverloads constructor( abstract class BaseRecentsDisplayView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : BaseTabbedScrollView(context, attrs) { var controller: RecentsController? = null + + internal val recentsPreferences: RecentsPreferences by injectLazy() } abstract class BaseLibraryDisplayView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :