Skip to content

Commit 764b6aa

Browse files
ge78fugStypox
authored andcommitted
Made the channel-images in the grid list bigger
Also improved the handling of additional information (expanded description, video count, subscriber count)
1 parent 5942add commit 764b6aa

4 files changed

Lines changed: 57 additions & 49 deletions

File tree

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
package org.schabi.newpipe.info_list.holder;
22

33
import android.view.ViewGroup;
4-
import android.widget.TextView;
54

65
import org.schabi.newpipe.R;
7-
import org.schabi.newpipe.extractor.InfoItem;
8-
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
96
import org.schabi.newpipe.info_list.InfoItemBuilder;
10-
import org.schabi.newpipe.local.history.HistoryRecordManager;
11-
import org.schabi.newpipe.util.Localization;
127

138
/*
149
* Created by Christian Schabesberger on 12.02.17.
@@ -31,40 +26,7 @@
3126
*/
3227

3328
public class ChannelInfoItemHolder extends ChannelMiniInfoItemHolder {
34-
private final TextView itemChannelDescriptionView;
35-
3629
public ChannelInfoItemHolder(final InfoItemBuilder infoItemBuilder, final ViewGroup parent) {
3730
super(infoItemBuilder, R.layout.list_channel_item, parent);
38-
itemChannelDescriptionView = itemView.findViewById(R.id.itemChannelDescriptionView);
39-
}
40-
41-
@Override
42-
public void updateFromItem(final InfoItem infoItem,
43-
final HistoryRecordManager historyRecordManager) {
44-
super.updateFromItem(infoItem, historyRecordManager);
45-
46-
if (!(infoItem instanceof ChannelInfoItem)) {
47-
return;
48-
}
49-
final ChannelInfoItem item = (ChannelInfoItem) infoItem;
50-
51-
itemChannelDescriptionView.setText(item.getDescription());
52-
}
53-
54-
@Override
55-
protected String getDetailLine(final ChannelInfoItem item) {
56-
String details = super.getDetailLine(item);
57-
58-
if (item.getStreamCount() >= 0) {
59-
final String formattedVideoAmount = Localization.localizeStreamCount(
60-
itemBuilder.getContext(), item.getStreamCount());
61-
62-
if (!details.isEmpty()) {
63-
details += " • " + formattedVideoAmount;
64-
} else {
65-
details = formattedVideoAmount;
66-
}
67-
}
68-
return details;
6931
}
7032
}

app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelMiniInfoItemHolder.java

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
package org.schabi.newpipe.info_list.holder;
22

3+
import android.view.View;
34
import android.view.ViewGroup;
45
import android.widget.ImageView;
56
import android.widget.TextView;
67

8+
import androidx.annotation.Nullable;
9+
710
import org.schabi.newpipe.R;
811
import org.schabi.newpipe.extractor.InfoItem;
912
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
13+
import org.schabi.newpipe.extractor.utils.Utils;
1014
import org.schabi.newpipe.info_list.InfoItemBuilder;
1115
import org.schabi.newpipe.local.history.HistoryRecordManager;
1216
import org.schabi.newpipe.util.PicassoHelper;
1317
import org.schabi.newpipe.util.Localization;
1418

1519
public class ChannelMiniInfoItemHolder extends InfoItemHolder {
16-
public final ImageView itemThumbnailView;
17-
public final TextView itemTitleView;
20+
private final ImageView itemThumbnailView;
21+
private final TextView itemTitleView;
1822
private final TextView itemAdditionalDetailView;
23+
private final TextView itemChannelDescriptionView;
1924

2025
ChannelMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder, final int layoutId,
2126
final ViewGroup parent) {
@@ -24,6 +29,7 @@ public class ChannelMiniInfoItemHolder extends InfoItemHolder {
2429
itemThumbnailView = itemView.findViewById(R.id.itemThumbnailView);
2530
itemTitleView = itemView.findViewById(R.id.itemTitleView);
2631
itemAdditionalDetailView = itemView.findViewById(R.id.itemAdditionalDetails);
32+
itemChannelDescriptionView = itemView.findViewById(R.id.itemChannelDescriptionView);
2733
}
2834

2935
public ChannelMiniInfoItemHolder(final InfoItemBuilder infoItemBuilder,
@@ -40,7 +46,14 @@ public void updateFromItem(final InfoItem infoItem,
4046
final ChannelInfoItem item = (ChannelInfoItem) infoItem;
4147

4248
itemTitleView.setText(item.getName());
43-
itemAdditionalDetailView.setText(getDetailLine(item));
49+
50+
final String detailLine = getDetailLine(item);
51+
if (detailLine == null) {
52+
itemAdditionalDetailView.setVisibility(View.GONE);
53+
} else {
54+
itemAdditionalDetailView.setVisibility(View.VISIBLE);
55+
itemAdditionalDetailView.setText(getDetailLine(item));
56+
}
4457

4558
PicassoHelper.loadAvatar(item.getThumbnailUrl()).into(itemThumbnailView);
4659

@@ -56,14 +69,35 @@ public void updateFromItem(final InfoItem infoItem,
5669
}
5770
return true;
5871
});
72+
73+
if (itemChannelDescriptionView != null) {
74+
// itemChannelDescriptionView will be null in the mini variant
75+
if (Utils.isBlank(item.getDescription())) {
76+
itemChannelDescriptionView.setVisibility(View.GONE);
77+
} else {
78+
itemChannelDescriptionView.setVisibility(View.VISIBLE);
79+
itemChannelDescriptionView.setText(item.getDescription());
80+
itemChannelDescriptionView.setMaxLines(detailLine == null ? 3 : 2);
81+
}
82+
}
5983
}
6084

61-
protected String getDetailLine(final ChannelInfoItem item) {
62-
String details = "";
63-
if (item.getSubscriberCount() >= 0) {
64-
details += Localization.shortSubscriberCount(itemBuilder.getContext(),
85+
@Nullable
86+
private String getDetailLine(final ChannelInfoItem item) {
87+
if (item.getStreamCount() >= 0 && item.getSubscriberCount() >= 0) {
88+
return Localization.concatenateStrings(
89+
Localization.shortSubscriberCount(itemBuilder.getContext(),
90+
item.getSubscriberCount()),
91+
Localization.localizeStreamCount(itemBuilder.getContext(),
92+
item.getStreamCount()));
93+
} else if (item.getStreamCount() >= 0) {
94+
return Localization.localizeStreamCount(itemBuilder.getContext(),
95+
item.getStreamCount());
96+
} else if (item.getSubscriberCount() >= 0) {
97+
return Localization.shortSubscriberCount(itemBuilder.getContext(),
6598
item.getSubscriberCount());
99+
} else {
100+
return null;
66101
}
67-
return details;
68102
}
69103
}

app/src/main/res/layout/list_channel_grid_item.xml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,24 @@
3939
android:id="@+id/itemAdditionalDetails"
4040
android:layout_width="wrap_content"
4141
android:layout_height="wrap_content"
42-
android:layout_below="@+id/itemTitleView"
42+
android:layout_below="@id/itemTitleView"
4343
android:layout_centerHorizontal="true"
4444
android:lines="1"
4545
android:textAppearance="?android:attr/textAppearanceSmall"
4646
android:textSize="@dimen/video_item_search_upload_date_text_size"
4747
tools:ignore="RtlHardcoded"
48-
tools:text="10M subscribers" />
48+
tools:text="10M subscribers • 100 videos" />
49+
50+
<TextView
51+
android:id="@+id/itemChannelDescriptionView"
52+
android:layout_width="wrap_content"
53+
android:layout_height="wrap_content"
54+
android:layout_below="@id/itemAdditionalDetails"
55+
android:layout_centerHorizontal="true"
56+
android:textAppearance="?android:attr/textAppearanceSmall"
57+
android:textSize="@dimen/video_item_search_upload_date_text_size"
58+
android:gravity="center"
59+
tools:ignore="RtlHardcoded"
60+
tools:text="@tools:sample/lorem/random" />
4961

5062
</RelativeLayout>

app/src/main/res/values/dimens.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<dimen name="video_item_grid_thumbnail_image_width">164dp</dimen>
3131
<dimen name="video_item_grid_thumbnail_image_height">92dp</dimen>
3232

33-
<dimen name="channel_item_grid_thumbnail_image_size">42dp</dimen>
33+
<dimen name="channel_item_grid_thumbnail_image_size">92dp</dimen>
3434
<dimen name="channel_item_grid_min_width">128dp</dimen>
3535
<!-- Calculated: 2*video_item_search_padding + video_item_search_thumbnail_image_height -->
3636
<dimen name="video_item_search_height">96dp</dimen>

0 commit comments

Comments
 (0)