fix shimmer items having the wrong size, update MediaFragmentSimilar to not depend on a specific view model
This commit is contained in:
parent
e113a9c795
commit
e0f05169f5
|
@ -42,9 +42,12 @@ import kotlinx.coroutines.launch
|
||||||
import org.mosad.teapod.R
|
import org.mosad.teapod.R
|
||||||
import org.mosad.teapod.databinding.FragmentHomeBinding
|
import org.mosad.teapod.databinding.FragmentHomeBinding
|
||||||
import org.mosad.teapod.ui.activity.main.viewmodel.HomeViewModel
|
import org.mosad.teapod.ui.activity.main.viewmodel.HomeViewModel
|
||||||
import org.mosad.teapod.util.*
|
|
||||||
import org.mosad.teapod.util.adapter.MediaEpisodeListAdapter
|
import org.mosad.teapod.util.adapter.MediaEpisodeListAdapter
|
||||||
import org.mosad.teapod.util.adapter.MediaItemListAdapter
|
import org.mosad.teapod.util.adapter.MediaItemListAdapter
|
||||||
|
import org.mosad.teapod.util.playerIntent
|
||||||
|
import org.mosad.teapod.util.setDrawableTop
|
||||||
|
import org.mosad.teapod.util.showFragment
|
||||||
|
import org.mosad.teapod.util.toItemMediaList
|
||||||
|
|
||||||
class HomeFragment : Fragment() {
|
class HomeFragment : Fragment() {
|
||||||
|
|
||||||
|
@ -188,7 +191,7 @@ class HomeFragment : Fragment() {
|
||||||
private fun setShimmerLayoutItemSize(shimmerLayout: ShimmerFrameLayout) {
|
private fun setShimmerLayoutItemSize(shimmerLayout: ShimmerFrameLayout) {
|
||||||
(shimmerLayout.children.first() as? LinearLayout)?.children?.forEach { child ->
|
(shimmerLayout.children.first() as? LinearLayout)?.children?.forEach { child ->
|
||||||
child.layoutParams.apply {
|
child.layoutParams.apply {
|
||||||
width = (binding.root.measuredWidth / requireContext().resources.getInteger(R.integer.item_media_columns)) - itemOffset
|
width = (resources.displayMetrics.widthPixels / requireContext().resources.getInteger(R.integer.item_media_columns)) - itemOffset
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ import org.mosad.teapod.util.playerIntent
|
||||||
import org.mosad.teapod.util.tmdb.TMDBApiController
|
import org.mosad.teapod.util.tmdb.TMDBApiController
|
||||||
import org.mosad.teapod.util.tmdb.TMDBMovie
|
import org.mosad.teapod.util.tmdb.TMDBMovie
|
||||||
import org.mosad.teapod.util.tmdb.TMDBTVShow
|
import org.mosad.teapod.util.tmdb.TMDBTVShow
|
||||||
|
import org.mosad.teapod.util.toItemMediaList
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The media detail fragment.
|
* The media detail fragment.
|
||||||
|
@ -126,6 +127,20 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() {
|
||||||
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if has similar titles
|
||||||
|
if (model.similarTo.total > 0) {
|
||||||
|
MediaFragmentSimilar(model.similarTo.toItemMediaList()).also {
|
||||||
|
fragments.add(it)
|
||||||
|
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// disable scrolling on appbar, if no tabs where added
|
||||||
|
if(fragments.isEmpty()) {
|
||||||
|
val params = binding.linearMedia.layoutParams as AppBarLayout.LayoutParams
|
||||||
|
params.scrollFlags = 0 // clear all scroll flags
|
||||||
|
}
|
||||||
|
|
||||||
// specific gui (via tmdb)
|
// specific gui (via tmdb)
|
||||||
when (tmdbResult) {
|
when (tmdbResult) {
|
||||||
is TMDBTVShow -> {
|
is TMDBTVShow -> {
|
||||||
|
@ -154,20 +169,6 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if has similar titles
|
|
||||||
if (model.similarTo.total > 0) {
|
|
||||||
MediaFragmentSimilar().also {
|
|
||||||
fragments.add(it)
|
|
||||||
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// disable scrolling on appbar, if no tabs where added
|
|
||||||
if(fragments.isEmpty()) {
|
|
||||||
val params = binding.linearMedia.layoutParams as AppBarLayout.LayoutParams
|
|
||||||
params.scrollFlags = 0 // clear all scroll flags
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.frameLoading.visibility = View.GONE // hide loading indicator
|
binding.frameLoading.visibility = View.GONE // hide loading indicator
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,17 +27,13 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.viewModels
|
|
||||||
import org.mosad.teapod.databinding.FragmentMediaSimilarBinding
|
import org.mosad.teapod.databinding.FragmentMediaSimilarBinding
|
||||||
import org.mosad.teapod.ui.activity.main.viewmodel.MediaFragmentViewModel
|
import org.mosad.teapod.util.ItemMedia
|
||||||
import org.mosad.teapod.util.adapter.MediaItemListAdapter
|
import org.mosad.teapod.util.adapter.MediaItemListAdapter
|
||||||
import org.mosad.teapod.util.decoration.MediaItemDecoration
|
|
||||||
import org.mosad.teapod.util.showFragment
|
import org.mosad.teapod.util.showFragment
|
||||||
import org.mosad.teapod.util.toItemMediaList
|
|
||||||
|
|
||||||
class MediaFragmentSimilar : Fragment() {
|
class MediaFragmentSimilar(val items: List<ItemMedia>) : Fragment() {
|
||||||
|
|
||||||
private val model: MediaFragmentViewModel by viewModels({requireParentFragment()})
|
|
||||||
private lateinit var binding: FragmentMediaSimilarBinding
|
private lateinit var binding: FragmentMediaSimilarBinding
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||||
|
@ -55,6 +51,6 @@ class MediaFragmentSimilar : Fragment() {
|
||||||
)
|
)
|
||||||
|
|
||||||
val adapterSimilar = binding.recyclerMediaSimilar.adapter as MediaItemListAdapter
|
val adapterSimilar = binding.recyclerMediaSimilar.adapter as MediaItemListAdapter
|
||||||
adapterSimilar.submitList(model.similarTo.toItemMediaList())
|
adapterSimilar.submitList(items)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -8,18 +8,14 @@
|
||||||
<com.google.android.material.card.MaterialCardView
|
<com.google.android.material.card.MaterialCardView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
android:layout_marginEnd="3dp"
|
|
||||||
android:backgroundTint="?themeSecondary"
|
android:backgroundTint="?themeSecondary"
|
||||||
app:cardCornerRadius="7dp"
|
app:cardCornerRadius="7dp"
|
||||||
app:cardElevation="4dp"
|
app:cardElevation="4dp"
|
||||||
app:layout_constrainedWidth="true"
|
app:cardUseCompatPadding="true"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
app:layout_constraintWidth_default="percent"
|
|
||||||
app:layout_constraintWidth_percent="0.96">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -18,6 +18,9 @@
|
||||||
<!-- search fragment -->
|
<!-- search fragment -->
|
||||||
<string name="search_hint">Suche nach Filmen und Serien</string>
|
<string name="search_hint">Suche nach Filmen und Serien</string>
|
||||||
|
|
||||||
|
<!-- my lists fragment -->
|
||||||
|
<string name="downloads">Downloads</string>
|
||||||
|
|
||||||
<!-- media fragment -->
|
<!-- media fragment -->
|
||||||
<string name="button_play">Abspielen</string>
|
<string name="button_play">Abspielen</string>
|
||||||
<plurals name="text_episodes_count">
|
<plurals name="text_episodes_count">
|
||||||
|
|
|
@ -21,6 +21,10 @@
|
||||||
<string name="media_poster_desc" translatable="false">poster</string>
|
<string name="media_poster_desc" translatable="false">poster</string>
|
||||||
<string name="media_poster_backdrop_desc" translatable="false">poster backdrop</string>
|
<string name="media_poster_backdrop_desc" translatable="false">poster backdrop</string>
|
||||||
|
|
||||||
|
<!-- my lists fragment -->
|
||||||
|
<string name="crunchylists" translatable="false">Crunchylists</string>
|
||||||
|
<string name="downloads">Downloads</string>
|
||||||
|
|
||||||
<!-- media fragment -->
|
<!-- media fragment -->
|
||||||
<string name="button_play">Play</string>
|
<string name="button_play">Play</string>
|
||||||
<string name="text_title_ex" translatable="false">A Silent Voice</string>
|
<string name="text_title_ex" translatable="false">A Silent Voice</string>
|
||||||
|
|
Loading…
Reference in New Issue