diff options
author | Jonas Burian <jonas.burian@protonmail.com> | 2021-03-01 20:59:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-01 20:59:28 +0100 |
commit | a476ce2f47ab9c75da607e2109f9518bcc193745 (patch) | |
tree | 7ab7a865a2455c83d1bbe63b6d1eb63f0d18381a /app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java | |
parent | d444e8d23e1062e073925c537f1da9ce63e15c90 (diff) | |
download | AntennaPod-a476ce2f47ab9c75da607e2109f9518bcc193745.zip |
Chapter dividers for the progress bar (#4915)
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java | 47 |
1 files changed, 39 insertions, 8 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java index bdaae1bea..d5f09858e 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java @@ -29,6 +29,7 @@ import de.danoeh.antennapod.activity.CastEnabledActivity; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.core.event.FavoritesEvent; import de.danoeh.antennapod.core.event.PlaybackPositionEvent; +import de.danoeh.antennapod.core.feed.Chapter; import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; @@ -46,6 +47,7 @@ import de.danoeh.antennapod.dialog.SkipPreferenceDialog; import de.danoeh.antennapod.dialog.SleepTimerDialog; import de.danoeh.antennapod.dialog.VariableSpeedDialog; import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; +import de.danoeh.antennapod.view.ChapterSeekBar; import de.danoeh.antennapod.ui.common.PlaybackSpeedIndicatorView; import io.reactivex.Maybe; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -63,7 +65,7 @@ import java.util.List; * Shows the audio player. */ public class AudioPlayerFragment extends Fragment implements - SeekBar.OnSeekBarChangeListener, Toolbar.OnMenuItemClickListener { + ChapterSeekBar.OnSeekBarChangeListener, Toolbar.OnMenuItemClickListener { public static final String TAG = "AudioPlayerFragment"; private static final int POS_COVER = 0; private static final int POS_DESCR = 1; @@ -77,7 +79,7 @@ public class AudioPlayerFragment extends Fragment implements private ViewPager2 pager; private TextView txtvPosition; private TextView txtvLength; - private SeekBar sbPosition; + private ChapterSeekBar sbPosition; private ImageButton butRev; private TextView txtvRev; private ImageButton butPlay; @@ -172,12 +174,33 @@ public class AudioPlayerFragment extends Fragment implements return root; } - public void setHasChapters(boolean hasChapters) { + private void setHasChapters(boolean hasChapters) { this.hasChapters = hasChapters; tabLayoutMediator.detach(); tabLayoutMediator.attach(); } + private void setChapterDividers(Playable media) { + + if (media == null) { + return; + } + + float[] dividerPos = null; + + if (hasChapters) { + List<Chapter> chapters = media.getChapters(); + dividerPos = new float[chapters.size()]; + float duration = media.getDuration(); + + for (int i = 0; i < chapters.size(); i++) { + dividerPos[i] = chapters.get(i).getStart() / duration; + } + } + + sbPosition.setDividerPos(dividerPos); + } + public View getExternalPlayerHolder() { return getView().findViewById(R.id.playerFragment); } @@ -298,16 +321,17 @@ public class AudioPlayerFragment extends Fragment implements disposable = Maybe.create(emitter -> { Playable media = controller.getMedia(); if (media != null) { + media.loadChapterMarks(getContext()); emitter.onSuccess(media); } else { emitter.onComplete(); } }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(media -> updateUi((Playable) media), - error -> Log.e(TAG, Log.getStackTraceString(error)), - () -> updateUi(null)); + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(media -> updateUi((Playable) media), + error -> Log.e(TAG, Log.getStackTraceString(error)), + () -> updateUi(null)); } private PlaybackController newPlaybackController() { @@ -389,8 +413,15 @@ public class AudioPlayerFragment extends Fragment implements if (controller == null) { return; } + + if (media != null && media.getChapters() != null) { + setHasChapters(media.getChapters().size() > 0); + } else { + setHasChapters(false); + } updatePosition(new PlaybackPositionEvent(controller.getPosition(), controller.getDuration())); updatePlaybackSpeedButton(media); + setChapterDividers(media); setupOptionsMenu(media); } |