From 18d54b62259e6f6b50f985b32cf22df1ab1b70b1 Mon Sep 17 00:00:00 2001 From: George Laios Date: Sat, 16 May 2026 05:46:36 +0300 Subject: [PATCH 1/2] Fix repeat mode UI out-of-sync when switching videos --- .../newpipe/player/ui/VideoPlayerUi.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index f020852cf..1fea488bd 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -399,6 +399,10 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa // #6825 - Ensure that the shuffle-button is in the correct state on the UI setShuffleButton(player.getExoPlayer().getShuffleModeEnabled()); + + // Set repeat button to the correct UI state + setRepeatButton(player.getExoPlayer().getRepeatMode()); + } public abstract void removeViewFromParent(); @@ -982,6 +986,20 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa private void setShuffleButton(final boolean shuffled) { binding.shuffleButton.setImageAlpha(shuffled ? 255 : 77); } + + private void setRepeatButton(final int repeatMode) { + if (repeatMode == REPEAT_MODE_ALL) { + binding.repeatButton.setImageResource( + com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_all); + } else if (repeatMode == REPEAT_MODE_ONE) { + binding.repeatButton.setImageResource( + com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_one); + } else /* repeatMode == REPEAT_MODE_OFF */ { + binding.repeatButton.setImageResource( + com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_off); + } + } + //endregion From 9dd0f1984f3461f1eb5e7cb504fa9260d36aefde Mon Sep 17 00:00:00 2001 From: TobiGr Date: Sat, 16 May 2026 08:35:29 +0200 Subject: [PATCH 2/2] Replace if-else with switch --- .../newpipe/player/ui/VideoPlayerUi.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java index 1fea488bd..0bb01b10d 100644 --- a/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java @@ -988,16 +988,14 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa } private void setRepeatButton(final int repeatMode) { - if (repeatMode == REPEAT_MODE_ALL) { - binding.repeatButton.setImageResource( - com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_all); - } else if (repeatMode == REPEAT_MODE_ONE) { - binding.repeatButton.setImageResource( - com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_one); - } else /* repeatMode == REPEAT_MODE_OFF */ { - binding.repeatButton.setImageResource( - com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_off); - } + final int resId = switch (repeatMode) { + case REPEAT_MODE_ALL + -> com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_all; + case REPEAT_MODE_ONE + -> com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_one; + default -> com.google.android.exoplayer2.ui.R.drawable.exo_controls_repeat_off; + }; + binding.repeatButton.setImageResource(resId); } //endregion