Merge pull request #3162 from andersonvom/2853-chapter-scrolling

Scroll to chapter currently being played
This commit is contained in:
Martin Fietz 2019-05-19 12:14:56 +02:00 committed by GitHub
commit 5db139958a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 1 deletions

View File

@ -6,6 +6,9 @@ import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.ListView; import android.widget.ListView;
import java.util.List;
import java.util.ListIterator;
import de.danoeh.antennapod.R; import de.danoeh.antennapod.R;
import de.danoeh.antennapod.adapter.ChaptersListAdapter; import de.danoeh.antennapod.adapter.ChaptersListAdapter;
import de.danoeh.antennapod.core.event.ServiceEvent; 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.disposables.Disposable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
public class ChaptersFragment extends ListFragment { public class ChaptersFragment extends ListFragment {
private static final String TAG = "ChaptersFragment"; private static final String TAG = "ChaptersFragment";
private ChaptersListAdapter adapter; private ChaptersListAdapter adapter;
@ -79,6 +81,23 @@ public class ChaptersFragment extends ListFragment {
controller = null; 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) { public void onEventMainThread(ServiceEvent event) {
if (event.action == ServiceEvent.Action.SERVICE_STARTED && controller != null) { if (event.action == ServiceEvent.Action.SERVICE_STARTED && controller != null) {
controller.init(); controller.init();
@ -111,6 +130,7 @@ public class ChaptersFragment extends ListFragment {
setEmptyText(getString(R.string.no_chapters_label)); setEmptyText(getString(R.string.no_chapters_label));
} else { } else {
setEmptyText(null); setEmptyText(null);
scrollTo(getCurrentChapter(media));
} }
} }
} }