diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/library/PageAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/library/PageAdapter.kt index 066cf468d20..737d0b9afa3 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/library/PageAdapter.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/library/PageAdapter.kt @@ -1,9 +1,12 @@ package com.lagradost.cloudstream3.ui.library +import android.content.Context import android.view.LayoutInflater +import androidx.preference.PreferenceManager import android.view.ViewGroup import android.widget.FrameLayout import androidx.core.view.isVisible +import com.lagradost.cloudstream3.R import com.lagradost.cloudstream3.databinding.SearchResultGridExpandedBinding import com.lagradost.cloudstream3.syncproviders.SyncAPI import com.lagradost.cloudstream3.ui.AutofitRecyclerView @@ -12,6 +15,7 @@ import com.lagradost.cloudstream3.ui.NoStateAdapter import com.lagradost.cloudstream3.ui.ViewHolderState import com.lagradost.cloudstream3.ui.search.SearchClickCallback import com.lagradost.cloudstream3.ui.search.SearchResultBuilder +import com.lagradost.cloudstream3.utils.UIHelper.getSpanCount import kotlin.math.roundToInt class PageAdapter( @@ -27,6 +31,14 @@ class PageAdapter( })) { private val coverHeight: Int get() = (resView.itemWidth / 0.68).roundToInt() + companion object { + fun updatePosterSize(resView: AutofitRecyclerView?, context: Context, value: Int? = null) { + val spanCount = value ?: PreferenceManager.getDefaultSharedPreferences(context) + .getInt(context.getString(R.string.library_poster_size_key), 3) + resView?.spanCount = spanCount + } + } + override fun onCreateContent(parent: ViewGroup): ViewHolderState { return ViewHolderState( SearchResultGridExpandedBinding.inflate( diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/library/ViewpagerAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/library/ViewpagerAdapter.kt index 68b6eb2735a..3e13bba7655 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/library/ViewpagerAdapter.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/library/ViewpagerAdapter.kt @@ -82,10 +82,13 @@ class ViewpagerAdapter( // Which is only determined after the recyclerview is attached. // If this fails then item height becomes 0 when there is only one item doOnAttach { - adapter = PageAdapter( + val pageAdapter = PageAdapter( this, clickCallback - ).apply { + ) + // Initialize poster size for this page + PageAdapter.updatePosterSize(this, this.context) + adapter = pageAdapter.apply { submitList(item.items) } } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsUI.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsUI.kt index f4c522bf981..136ea3e89e8 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsUI.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsUI.kt @@ -15,6 +15,7 @@ import com.lagradost.cloudstream3.ui.BasePreferenceFragmentCompat import com.lagradost.cloudstream3.ui.clear import com.lagradost.cloudstream3.ui.home.HomeChildItemAdapter import com.lagradost.cloudstream3.ui.home.ParentItemAdapter +import com.lagradost.cloudstream3.ui.library.PageAdapter import com.lagradost.cloudstream3.ui.search.SearchAdapter import com.lagradost.cloudstream3.ui.search.SearchResultBuilder import com.lagradost.cloudstream3.ui.settings.Globals.EMULATOR @@ -65,6 +66,11 @@ class SettingsUI : BasePreferenceFragmentCompat() { true } + getPref(R.string.library_poster_size_key)?.setOnPreferenceChangeListener { _, newValue -> + context?.let { PageAdapter.updatePosterSize(null, it, newValue as? Int) } + true + } + getPref(R.string.poster_ui_key)?.setOnPreferenceClickListener { val prefNames = resources.getStringArray(R.array.poster_ui_options) val keys = resources.getStringArray(R.array.poster_ui_options_values) diff --git a/app/src/main/res/values/donottranslate-strings.xml b/app/src/main/res/values/donottranslate-strings.xml index 0b7aab4cb7b..c8f9c5644ac 100644 --- a/app/src/main/res/values/donottranslate-strings.xml +++ b/app/src/main/res/values/donottranslate-strings.xml @@ -67,6 +67,7 @@ poster_ui_key overscan_key poster_size_key + library_poster_size subtitles_encoding_key override_site_key redo_setup_key diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e41c01fda69..a72e6dd3160 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -743,8 +743,10 @@ Changes the bounds of the screen Overscan - Changes size of posters - Poster size + Changes the number of poster columns + Poster columns + Changes the number of library poster columns + Library poster columns LongPress Speed Toggle Hold to get 2x speed Edit Profile Image diff --git a/app/src/main/res/xml/settings_ui.xml b/app/src/main/res/xml/settings_ui.xml index 1b516ffa304..2daef18d335 100644 --- a/app/src/main/res/xml/settings_ui.xml +++ b/app/src/main/res/xml/settings_ui.xml @@ -35,7 +35,7 @@ app:showSeekBarValue="true" /> + +