Skip to content

Commit

Permalink
Merge pull request #6814 from Stypox/channel-grid-span-count
Browse files Browse the repository at this point in the history
Fix channel item span count for SubscriptionFragment
  • Loading branch information
Stypox authored Aug 5, 2021
2 parents c3349e1 + 6443961 commit a3440cc
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ import org.schabi.newpipe.player.helper.PlayerHolder
import org.schabi.newpipe.util.Localization
import org.schabi.newpipe.util.NavigationHelper
import org.schabi.newpipe.util.StreamDialogEntry
import org.schabi.newpipe.util.ThemeHelper.getGridSpanCount
import org.schabi.newpipe.util.ThemeHelper.getGridSpanCountStreams
import org.schabi.newpipe.util.ThemeHelper.shouldUseGridLayout
import java.time.OffsetDateTime
import java.util.ArrayList
Expand Down Expand Up @@ -161,7 +161,7 @@ class FeedFragment : BaseStateFragment<FeedState>() {

fun setupListViewMode() {
// does everything needed to setup the layouts for grid or list modes
groupAdapter.spanCount = if (shouldUseGridLayout(context)) getGridSpanCount(context) else 1
groupAdapter.spanCount = if (shouldUseGridLayout(context)) getGridSpanCountStreams(context) else 1
feedBinding.itemsList.layoutManager = GridLayoutManager(requireContext(), groupAdapter.spanCount).apply {
spanSizeLookup = groupAdapter.spanSizeLookup
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ import org.schabi.newpipe.local.subscription.services.SubscriptionsImportService
import org.schabi.newpipe.streams.io.StoredFileHelper
import org.schabi.newpipe.util.NavigationHelper
import org.schabi.newpipe.util.OnClickGesture
import org.schabi.newpipe.util.ThemeHelper.getGridSpanCount
import org.schabi.newpipe.util.ThemeHelper.getGridSpanCountChannels
import org.schabi.newpipe.util.ThemeHelper.shouldUseGridLayout
import org.schabi.newpipe.util.external_communication.ShareUtils
import java.text.SimpleDateFormat
Expand Down Expand Up @@ -267,7 +267,7 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
super.initViews(rootView, savedInstanceState)
_binding = FragmentSubscriptionBinding.bind(rootView)

groupAdapter.spanCount = if (shouldUseGridLayout(context)) getGridSpanCount(context) else 1
groupAdapter.spanCount = if (shouldUseGridLayout(context)) getGridSpanCountChannels(context) else 1
binding.itemsList.layoutManager = GridLayoutManager(requireContext(), groupAdapter.spanCount).apply {
spanSizeLookup = groupAdapter.spanSizeLookup
}
Expand Down
39 changes: 31 additions & 8 deletions app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -324,17 +324,40 @@ public static boolean shouldUseGridLayout(final Context context) {
}

/**
* Calculates the number of grid items that can fit horizontally on the screen. The width of a
* grid item is obtained from the thumbnail width plus the right and left paddings.
* Calculates the number of grid channel info items that can fit horizontally on the screen.
*
* @param context the context to use
* @return the span count of grid list items
* @return the span count of grid channel info items
*/
public static int getGridSpanCountChannels(final Context context) {
return getGridSpanCount(context,
context.getResources().getDimensionPixelSize(R.dimen.channel_item_grid_min_width));
}

/**
* Calculates the number of grid stream info items that can fit horizontally on the screen. The
* width of a grid stream info item is obtained from the thumbnail width plus the right and left
* paddings.
*
* @param context the context to use
* @return the span count of grid stream info items
*/
public static int getGridSpanCount(final Context context) {
public static int getGridSpanCountStreams(final Context context) {
final Resources res = context.getResources();
final int minWidth
= res.getDimensionPixelSize(R.dimen.video_item_grid_thumbnail_image_width)
+ res.getDimensionPixelSize(R.dimen.video_item_search_padding) * 2;
return Math.max(1, res.getDisplayMetrics().widthPixels / minWidth);
return getGridSpanCount(context,
res.getDimensionPixelSize(R.dimen.video_item_grid_thumbnail_image_width)
+ res.getDimensionPixelSize(R.dimen.video_item_search_padding) * 2);
}

/**
* Calculates the number of grid items that can fit horizontally on the screen based on the
* minimum width.
*
* @param context the context to use
* @param minWidth the minimum width of items in the grid
* @return the span count of grid list items
*/
public static int getGridSpanCount(final Context context, final int minWidth) {
return Math.max(1, context.getResources().getDisplayMetrics().widthPixels / minWidth);
}
}

0 comments on commit a3440cc

Please sign in to comment.