Apply action to items that are not loaded yet
This commit is contained in:
parent
072e172996
commit
2e999aef62
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user