diff options
author | Martin Fietz <Martin.Fietz@gmail.com> | 2019-05-19 12:14:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-19 12:14:56 +0200 |
commit | 5db139958aaf674de06fa0b6e47084e81e375e63 (patch) | |
tree | 98eeb56bda2908fb1ab9ad08a68bc8569d902162 /app/src/main/java/de/danoeh/antennapod/fragment | |
parent | 6e29c37360c6e6c630d53c0e6767ff05879383e8 (diff) | |
parent | 419c10632bf1df3f34ceb09a689650ec70550593 (diff) | |
download | AntennaPod-5db139958aaf674de06fa0b6e47084e81e375e63.zip |
Merge pull request #3162 from andersonvom/2853-chapter-scrolling
Scroll to chapter currently being played
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 c4b82459a..ffec47dba 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java @@ -6,6 +6,9 @@ import android.util.Log; 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; @@ -18,7 +21,6 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; - public class ChaptersFragment extends ListFragment { private static final String TAG = "ChaptersFragment"; private ChaptersListAdapter adapter; @@ -79,6 +81,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(); @@ -111,6 +130,7 @@ public class ChaptersFragment extends ListFragment { setEmptyText(getString(R.string.no_chapters_label)); } else { setEmptyText(null); + scrollTo(getCurrentChapter(media)); } } } |