Skip to content

Commit 4c027cc

Browse files
committed
Added the Show dislikes Appearance setting
1 parent e9c6685 commit 4c027cc

5 files changed

Lines changed: 76 additions & 30 deletions

File tree

app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java

Lines changed: 41 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@
115115
import org.schabi.newpipe.util.NavigationHelper;
116116
import org.schabi.newpipe.util.PermissionHelper;
117117
import org.schabi.newpipe.util.PlayButtonHelper;
118+
import org.schabi.newpipe.util.ServiceHelper;
118119
import org.schabi.newpipe.util.StreamTypeUtil;
119120
import org.schabi.newpipe.util.ThemeHelper;
120121
import org.schabi.newpipe.util.external_communication.KoreUtils;
@@ -174,6 +175,7 @@ public final class VideoDetailFragment
174175
@NonNull
175176
final List<Integer> tabContentDescriptions = new ArrayList<>();
176177
private boolean tabSettingsChanged = false;
178+
private boolean showDislikes = true;
177179
private int lastAppBarVerticalOffset = Integer.MAX_VALUE; // prevents useless updates
178180

179181
private final SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener =
@@ -187,6 +189,11 @@ public final class VideoDetailFragment
187189
} else if (getString(R.string.show_description_key).equals(key)) {
188190
showDescription = sharedPreferences.getBoolean(key, true);
189191
tabSettingsChanged = true;
192+
} else if (getString(R.string.show_dislike_key).equals(key)) {
193+
showDislikes = sharedPreferences.getBoolean(key, true);
194+
if (currentInfo != null && binding != null) {
195+
updateLikeDislikeViews(currentInfo);
196+
}
190197
}
191198
};
192199

@@ -322,6 +329,7 @@ public void onCreate(final Bundle savedInstanceState) {
322329
showComments = prefs.getBoolean(getString(R.string.show_comments_key), true);
323330
showRelatedItems = prefs.getBoolean(getString(R.string.show_next_video_key), true);
324331
showDescription = prefs.getBoolean(getString(R.string.show_description_key), true);
332+
showDislikes = ServiceHelper.isFetchDislikeEnabled(activity);
325333
selectedTabTag = prefs.getString(
326334
getString(R.string.stream_info_selected_tab_key), COMMENTS_TAB_TAG);
327335
prefs.registerOnSharedPreferenceChangeListener(preferenceChangeListener);
@@ -1558,35 +1566,7 @@ public void handleResult(@NonNull final StreamInfo info) {
15581566
binding.detailViewCountView.setVisibility(View.GONE);
15591567
}
15601568

1561-
if (info.getDislikeCount() == -1 && info.getLikeCount() == -1) {
1562-
binding.detailThumbsDownImgView.setVisibility(View.VISIBLE);
1563-
binding.detailThumbsUpImgView.setVisibility(View.VISIBLE);
1564-
binding.detailThumbsUpCountView.setVisibility(View.GONE);
1565-
binding.detailThumbsDownCountView.setVisibility(View.GONE);
1566-
1567-
binding.detailThumbsDisabledView.setVisibility(View.VISIBLE);
1568-
} else {
1569-
if (info.getDislikeCount() >= 0) {
1570-
binding.detailThumbsDownCountView.setText(Localization
1571-
.shortCount(activity, info.getDislikeCount()));
1572-
binding.detailThumbsDownCountView.setVisibility(View.VISIBLE);
1573-
binding.detailThumbsDownImgView.setVisibility(View.VISIBLE);
1574-
} else {
1575-
binding.detailThumbsDownCountView.setVisibility(View.GONE);
1576-
binding.detailThumbsDownImgView.setVisibility(View.GONE);
1577-
}
1578-
1579-
if (info.getLikeCount() >= 0) {
1580-
binding.detailThumbsUpCountView.setText(Localization.shortCount(activity,
1581-
info.getLikeCount()));
1582-
binding.detailThumbsUpCountView.setVisibility(View.VISIBLE);
1583-
binding.detailThumbsUpImgView.setVisibility(View.VISIBLE);
1584-
} else {
1585-
binding.detailThumbsUpCountView.setVisibility(View.GONE);
1586-
binding.detailThumbsUpImgView.setVisibility(View.GONE);
1587-
}
1588-
binding.detailThumbsDisabledView.setVisibility(View.GONE);
1589-
}
1569+
updateLikeDislikeViews(info);
15901570

15911571
if (info.getDuration() > 0) {
15921572
binding.detailDurationView.setText(Localization.getDurationString(info.getDuration()));
@@ -1646,6 +1626,38 @@ public void handleResult(@NonNull final StreamInfo info) {
16461626
noVideoStreams ? R.drawable.ic_headset_shadow : R.drawable.ic_play_arrow_shadow);
16471627
}
16481628

1629+
private void updateLikeDislikeViews(@NonNull final StreamInfo info) {
1630+
if ((info.getDislikeCount() == -1 || !showDislikes) && info.getLikeCount() == -1) {
1631+
binding.detailThumbsDownImgView.setVisibility(showDislikes ? View.VISIBLE : View.GONE);
1632+
binding.detailThumbsUpImgView.setVisibility(View.VISIBLE);
1633+
binding.detailThumbsUpCountView.setVisibility(View.GONE);
1634+
binding.detailThumbsDownCountView.setVisibility(View.GONE);
1635+
1636+
binding.detailThumbsDisabledView.setVisibility(View.VISIBLE);
1637+
} else {
1638+
if (showDislikes && info.getDislikeCount() >= 0) {
1639+
binding.detailThumbsDownCountView.setText(Localization
1640+
.shortCount(activity, info.getDislikeCount()));
1641+
binding.detailThumbsDownCountView.setVisibility(View.VISIBLE);
1642+
binding.detailThumbsDownImgView.setVisibility(View.VISIBLE);
1643+
} else {
1644+
binding.detailThumbsDownCountView.setVisibility(View.GONE);
1645+
binding.detailThumbsDownImgView.setVisibility(View.GONE);
1646+
}
1647+
1648+
if (info.getLikeCount() >= 0) {
1649+
binding.detailThumbsUpCountView.setText(Localization.shortCount(activity,
1650+
info.getLikeCount()));
1651+
binding.detailThumbsUpCountView.setVisibility(View.VISIBLE);
1652+
binding.detailThumbsUpImgView.setVisibility(View.VISIBLE);
1653+
} else {
1654+
binding.detailThumbsUpCountView.setVisibility(View.GONE);
1655+
binding.detailThumbsUpImgView.setVisibility(View.GONE);
1656+
}
1657+
binding.detailThumbsDisabledView.setVisibility(View.GONE);
1658+
}
1659+
}
1660+
16491661
private void displayUploaderAsSubChannel(final StreamInfo info) {
16501662
binding.detailSubChannelTextView.setText(info.getUploaderName());
16511663
binding.detailSubChannelTextView.setVisibility(View.VISIBLE);

app/src/main/java/org/schabi/newpipe/util/ServiceHelper.kt

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,12 @@ object ServiceHelper {
143143
}
144144
}
145145

146+
@JvmStatic
147+
fun isFetchDislikeEnabled(context: Context): Boolean {
148+
return PreferenceManager.getDefaultSharedPreferences(context)
149+
.getBoolean(context.getString(R.string.show_dislike_key), true)
150+
}
151+
146152
fun initService(context: Context, serviceId: Int) {
147153
if (serviceId == ServiceList.PeerTube.serviceId) {
148154
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
@@ -163,6 +169,21 @@ object ServiceHelper {
163169

164170
@JvmStatic
165171
fun initServices(context: Context) {
166-
ServiceList.all().forEach { initService(context, it.serviceId) }
172+
val fetchDislike = isFetchDislikeEnabled(context)
173+
ServiceList.all().forEach {
174+
initService(context, it.serviceId)
175+
setFetchDislikeIfSupported(it, fetchDislike)
176+
}
177+
}
178+
179+
private fun setFetchDislikeIfSupported(service: StreamingService, fetchDislike: Boolean) {
180+
service.javaClass.methods
181+
.firstOrNull { method ->
182+
method.name == "setFetchDislike" &&
183+
method.parameterTypes.contentEquals(
184+
arrayOf(Boolean::class.javaPrimitiveType!!)
185+
)
186+
}
187+
?.let { method -> runCatching { method.invoke(service, fetchDislike) } }
167188
}
168189
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,9 @@
341341
<string name="caption_settings_key">caption_settings_key</string>
342342
<string name="caption_user_set_key">caption_user_set_key</string>
343343

344+
<!-- Show dislikes -->
345+
<string name="show_dislike_key">show_dislike</string>
346+
344347
<!-- Main-Tabs Position -->
345348
<string name="main_tabs_position_key">main_tabs_position</string>
346349

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,8 @@
303303
<string name="detail_uploader_thumbnail_view_description">Uploader\'s avatar thumbnail</string>
304304
<string name="detail_likes_img_view_description">Likes</string>
305305
<string name="detail_dislikes_img_view_description">Dislikes</string>
306+
<string name="show_dislikes_title">Show dislikes</string>
307+
<string name="show_dislikes_summary">Show dislike counts when available</string>
306308
<string name="comments_tab_description">Comments</string>
307309
<string name="related_items_tab_description">Related items</string>
308310
<string name="description_tab_description">Description</string>

app/src/main/res/xml/appearance_settings.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@
6969
app:singleLineTitle="false"
7070
app:iconSpaceReserved="false" />
7171

72+
<SwitchPreferenceCompat
73+
android:defaultValue="true"
74+
android:key="@string/show_dislike_key"
75+
android:summary="@string/show_dislikes_summary"
76+
android:title="@string/show_dislikes_title"
77+
app:singleLineTitle="false"
78+
app:iconSpaceReserved="false" />
79+
7280
<SwitchPreferenceCompat
7381
android:defaultValue="true"
7482
android:key="@string/main_tabs_position_key"

0 commit comments

Comments
 (0)