diff options
author | Anderson Mesquita <andersonvom@gmail.com> | 2019-05-04 23:56:16 -0400 |
---|---|---|
committer | Anderson Mesquita <andersonvom@gmail.com> | 2019-05-05 08:22:31 -0400 |
commit | 419c10632bf1df3f34ceb09a689650ec70550593 (patch) | |
tree | 182e9bfe6de1b4e0bdc376c47295de78220aaa2f /app/src/main/java/de/danoeh/antennapod/fragment | |
parent | 0107cf22cc8836c876696d56c98ae882d0c7dc78 (diff) | |
download | AntennaPod-419c10632bf1df3f34ceb09a689650ec70550593.zip |
Scroll to chapter currently being played
This is especially helpful for episodes that have a large number of
chapters.
Closes: #2853
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java index 8f2073ed0..4bd357f69 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java @@ -5,6 +5,9 @@ import android.support.v4.app.ListFragment; import android.view.View; import android.widget.ListView; +import java.util.List; +import java.util.ListIterator; + import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.ChaptersListAdapter; import de.danoeh.antennapod.core.event.ServiceEvent; @@ -13,7 +16,6 @@ import de.danoeh.antennapod.core.util.playback.Playable; import de.danoeh.antennapod.core.util.playback.PlaybackController; import de.greenrobot.event.EventBus; - public class ChaptersFragment extends ListFragment { private static final String TAG = "ChaptersFragment"; private ChaptersListAdapter adapter; @@ -67,6 +69,23 @@ public class ChaptersFragment extends ListFragment { controller = null; } + private void scrollTo(int position) { + getListView().setSelection(position); + } + + private int getCurrentChapter(Playable media) { + int currentPosition = controller.getPosition(); + + List<Chapter> chapters = media.getChapters(); + for (final ListIterator<Chapter> it = chapters.listIterator(); it.hasNext(); ) { + Chapter chapter = it.next(); + if (chapter.getStart() > currentPosition) { + return it.previousIndex() - 1; + } + } + return chapters.size() - 1; + } + public void onEventMainThread(ServiceEvent event) { if (event.action == ServiceEvent.Action.SERVICE_STARTED && controller != null) { controller.init(); @@ -81,6 +100,7 @@ public class ChaptersFragment extends ListFragment { setEmptyText(getString(R.string.no_chapters_label)); } else { setEmptyText(null); + scrollTo(getCurrentChapter(media)); } } } |