mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 14:20:30 +05:30
Merge pull request #1816 from Bnyro/master
apply grid columns for recommended videos
This commit is contained in:
commit
f838ad0d1f
@ -1,12 +1,16 @@
|
||||
package com.github.libretube.ui.adapters
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.text.format.DateUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.RecyclerView.LayoutManager
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.api.obj.StreamItem
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
@ -27,7 +31,7 @@ class VideosAdapter(
|
||||
private val streamItems: MutableList<StreamItem>,
|
||||
private val childFragmentManager: FragmentManager,
|
||||
private val showAllAtOnce: Boolean = true,
|
||||
private val forceType: Int = FORCE_NONE
|
||||
private val forceMode: ForceMode = ForceMode.NONE
|
||||
) : RecyclerView.Adapter<VideosViewHolder>() {
|
||||
|
||||
var index = 10
|
||||
@ -55,8 +59,8 @@ class VideosAdapter(
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VideosViewHolder {
|
||||
val layoutInflater = LayoutInflater.from(parent.context)
|
||||
return when {
|
||||
forceType == FORCE_TRENDING -> VideosViewHolder(TrendingRowBinding.inflate(layoutInflater, parent, false))
|
||||
forceType == FORCE_CHANNEL -> VideosViewHolder(VideoRowBinding.inflate(layoutInflater, parent, false))
|
||||
forceMode == ForceMode.TRENDING -> VideosViewHolder(TrendingRowBinding.inflate(layoutInflater, parent, false))
|
||||
forceMode == ForceMode.CHANNEL -> VideosViewHolder(VideoRowBinding.inflate(layoutInflater, parent, false))
|
||||
PreferenceHelper.getBoolean(
|
||||
PreferenceKeys.ALTERNATIVE_VIDEOS_LAYOUT,
|
||||
false
|
||||
@ -122,7 +126,7 @@ class VideosAdapter(
|
||||
|
||||
ImageHelper.loadImage(video.thumbnail, thumbnail)
|
||||
|
||||
if (forceType != FORCE_CHANNEL) {
|
||||
if (forceMode != ForceMode.CHANNEL) {
|
||||
ImageHelper.loadImage(video.uploaderAvatar, channelImage)
|
||||
channelName.text = video.uploaderName
|
||||
|
||||
@ -152,9 +156,29 @@ class VideosAdapter(
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val FORCE_NONE = 0
|
||||
const val FORCE_TRENDING = 1
|
||||
const val FORCE_NORMAL = 2
|
||||
const val FORCE_CHANNEL = 3
|
||||
enum class ForceMode {
|
||||
NONE,
|
||||
TRENDING,
|
||||
ROW,
|
||||
CHANNEL
|
||||
}
|
||||
|
||||
fun getLayout(context: Context): LayoutManager {
|
||||
return if (PreferenceHelper.getBoolean(
|
||||
PreferenceKeys.ALTERNATIVE_VIDEOS_LAYOUT,
|
||||
false
|
||||
)
|
||||
) {
|
||||
LinearLayoutManager(context)
|
||||
} else {
|
||||
GridLayoutManager(
|
||||
context,
|
||||
PreferenceHelper.getString(
|
||||
PreferenceKeys.GRID_COLUMNS,
|
||||
context.resources.getInteger(R.integer.grid_items).toString()
|
||||
).toInt()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -175,7 +175,7 @@ class ChannelFragment : BaseFragment() {
|
||||
channelAdapter = VideosAdapter(
|
||||
response.relatedStreams.orEmpty().toMutableList(),
|
||||
childFragmentManager,
|
||||
forceType = VideosAdapter.FORCE_CHANNEL
|
||||
forceMode = VideosAdapter.Companion.ForceMode.CHANNEL
|
||||
)
|
||||
binding.channelRecView.adapter = channelAdapter
|
||||
}
|
||||
|
@ -16,7 +16,6 @@ import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.ui.activities.SettingsActivity
|
||||
import com.github.libretube.ui.adapters.VideosAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.util.LayoutHelper
|
||||
import com.github.libretube.util.LocaleHelper
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
@ -101,7 +100,7 @@ class HomeFragment : BaseFragment() {
|
||||
childFragmentManager
|
||||
)
|
||||
|
||||
binding.recview.layoutManager = LayoutHelper.getVideoLayout(requireContext())
|
||||
binding.recview.layoutManager = VideosAdapter.getLayout(requireContext())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,6 @@ import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
import com.github.libretube.R
|
||||
@ -331,7 +330,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
||||
// FullScreen button trigger
|
||||
// hide fullscreen button if auto rotation enabled
|
||||
playerBinding.fullscreen.visibility =
|
||||
if (PlayerHelper.autoRotationEnabled) View.GONE else View.VISIBLE
|
||||
if (PlayerHelper.autoRotationEnabled) View.INVISIBLE else View.VISIBLE
|
||||
playerBinding.fullscreen.setOnClickListener {
|
||||
// hide player controller
|
||||
exoPlayerView.hideController()
|
||||
@ -382,8 +381,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
||||
binding.commentsRecView.layoutManager = LinearLayoutManager(view?.context)
|
||||
binding.commentsRecView.setItemViewCacheSize(20)
|
||||
|
||||
binding.relatedRecView.layoutManager =
|
||||
GridLayoutManager(view?.context, resources.getInteger(R.integer.grid_items))
|
||||
binding.relatedRecView.layoutManager = VideosAdapter.getLayout(requireContext())
|
||||
}
|
||||
|
||||
private fun setFullscreen() {
|
||||
|
@ -18,7 +18,6 @@ import com.github.libretube.ui.adapters.VideosAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.models.SubscriptionsViewModel
|
||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||
import com.github.libretube.util.LayoutHelper
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
|
||||
class SubscriptionsFragment : BaseFragment() {
|
||||
@ -49,7 +48,7 @@ class SubscriptionsFragment : BaseFragment() {
|
||||
|
||||
binding.subProgress.visibility = View.VISIBLE
|
||||
|
||||
binding.subFeed.layoutManager = LayoutHelper.getVideoLayout(requireContext())
|
||||
binding.subFeed.layoutManager = VideosAdapter.getLayout(requireContext())
|
||||
|
||||
if (viewModel.videoFeed.value == null || !loadFeedInBackground) {
|
||||
viewModel.videoFeed.value = null
|
||||
|
@ -1,26 +1,3 @@
|
||||
package com.github.libretube.util
|
||||
|
||||
import android.content.Context
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
|
||||
object LayoutHelper {
|
||||
fun getVideoLayout(context: Context) = if (
|
||||
PreferenceHelper.getBoolean(
|
||||
PreferenceKeys.ALTERNATIVE_VIDEOS_LAYOUT,
|
||||
false
|
||||
)
|
||||
) {
|
||||
LinearLayoutManager(context)
|
||||
} else {
|
||||
GridLayoutManager(
|
||||
context,
|
||||
PreferenceHelper.getString(
|
||||
PreferenceKeys.GRID_COLUMNS,
|
||||
context.resources.getInteger(R.integer.grid_items).toString()
|
||||
).toInt()
|
||||
)
|
||||
}
|
||||
}
|
||||
object LayoutHelper
|
||||
|
Loading…
Reference in New Issue
Block a user