summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java27
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java15
5 files changed, 34 insertions, 14 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
index 2627da3d9..51dcb664c 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
@@ -102,7 +102,7 @@ public class AllEpisodesFragment extends EpisodesListFragment {
@NonNull
@Override
- protected List<FeedItem> loadMoreData() {
+ protected List<FeedItem> loadMoreData(int page) {
return DBReader.getRecentlyPublishedEpisodes((page - 1) * EPISODES_PER_PAGE, EPISODES_PER_PAGE, feedItemFilter);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
index 06c8148e5..9409c7c3a 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
@@ -36,6 +36,7 @@ import de.danoeh.antennapod.fragment.actions.EpisodeMultiSelectActionHandler;
import de.danoeh.antennapod.ui.common.PagedToolbarFragment;
import de.danoeh.antennapod.view.EpisodeItemListRecyclerView;
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
+import io.reactivex.Completable;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@@ -246,9 +247,25 @@ public abstract class EpisodesListFragment extends Fragment implements EpisodeIt
}
});
speedDialView.setOnActionSelectedListener(actionItem -> {
- new EpisodeMultiSelectActionHandler(((MainActivity) getActivity()), actionItem.getId())
- .handleAction(listAdapter.getSelectedItems());
- listAdapter.endSelectMode();
+ EpisodeMultiSelectActionHandler handler =
+ new EpisodeMultiSelectActionHandler(((MainActivity) getActivity()), actionItem.getId());
+ Completable.fromAction(
+ () -> {
+ handler.handleAction(listAdapter.getSelectedItems());
+ if (listAdapter.shouldSelectLazyLoadedItems()) {
+ int applyPage = page + 1;
+ List<FeedItem> nextPage;
+ do {
+ nextPage = loadMoreData(applyPage);
+ handler.handleAction(nextPage);
+ applyPage++;
+ } while (nextPage.size() == EPISODES_PER_PAGE);
+ }
+ })
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(() -> listAdapter.endSelectMode(),
+ error -> Log.e(TAG, Log.getStackTraceString(error)));
return true;
});
@@ -276,7 +293,7 @@ public abstract class EpisodesListFragment extends Fragment implements EpisodeIt
}
isLoadingMore = true;
loadingMoreView.setVisibility(View.VISIBLE);
- disposable = Observable.fromCallable(this::loadMoreData)
+ disposable = Observable.fromCallable(() -> loadMoreData(page))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> {
@@ -477,7 +494,7 @@ public abstract class EpisodesListFragment extends Fragment implements EpisodeIt
* @return The items from the next page of data
*/
@NonNull
- protected abstract List<FeedItem> loadMoreData();
+ protected abstract List<FeedItem> loadMoreData(int page);
/**
* Returns the total number of items that would be returned if {@link #loadMoreData} was called often enough.
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
index 56b2b433f..cc45a7d35 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
@@ -99,7 +99,7 @@ public class FavoriteEpisodesFragment extends EpisodesListFragment {
@NonNull
@Override
- protected List<FeedItem> loadMoreData() {
+ protected List<FeedItem> loadMoreData(int page) {
return DBReader.getFavoriteItemsList((page - 1) * EPISODES_PER_PAGE, EPISODES_PER_PAGE);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java
index 14bfe2951..067e7466c 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java
@@ -116,7 +116,7 @@ public class InboxFragment extends EpisodesListFragment implements Toolbar.OnMen
@NonNull
@Override
- protected List<FeedItem> loadMoreData() {
+ protected List<FeedItem> loadMoreData(int page) {
return DBReader.getNewItemsList((page - 1) * EPISODES_PER_PAGE, EPISODES_PER_PAGE);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java b/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java
index aad611e5d..0dc416e0e 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java
@@ -103,12 +103,15 @@ public class EpisodeMultiSelectActionHandler {
private void showMessage(@PluralsRes int msgId, int numItems) {
totalNumItems += numItems;
- String text = activity.getResources().getQuantityString(msgId, totalNumItems, totalNumItems);
- if (snackbar != null) {
- snackbar.setText(text);
- } else {
- snackbar = activity.showSnackbarAbovePlayer(text, Snackbar.LENGTH_LONG);
- }
+ activity.runOnUiThread(() -> {
+ String text = activity.getResources().getQuantityString(msgId, totalNumItems, totalNumItems);
+ if (snackbar != null) {
+ snackbar.setText(text);
+ snackbar.show(); // Resets the timeout
+ } else {
+ snackbar = activity.showSnackbarAbovePlayer(text, Snackbar.LENGTH_LONG);
+ }
+ });
}
private long[] getSelectedIds(List<FeedItem> items) {