diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java index d1ee926ac..07a64cde8 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java @@ -1,5 +1,6 @@ package de.danoeh.antennapod.dialog; +import android.app.AlertDialog; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -84,7 +85,7 @@ public class EpisodesApplyActionFragment extends Fragment { Bundle savedInstanceState) { View view = inflater.inflate(R.layout.episodes_apply_action_fragment, container, false); - mListView = (ListView) view.findViewById(android.R.id.list); + mListView = view.findViewById(android.R.id.list); mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); mListView.setOnItemClickListener((ListView, view1, position, rowId) -> { long id = episodes.get(position).getId(); @@ -95,6 +96,28 @@ public class EpisodesApplyActionFragment extends Fragment { } refreshCheckboxes(); }); + mListView.setOnItemLongClickListener((adapterView, view12, position, id) -> { + new AlertDialog.Builder(getActivity()) + .setItems(R.array.batch_long_press_options, (dialogInterface, item) -> { + int direction; + if (item == 0) { + direction = -1; + } else { + direction = 1; + } + + int currentPosition = position + direction; + while (currentPosition >= 0 && currentPosition < episodes.size()) { + long id1 = episodes.get(currentPosition).getId(); + if (!checkedIds.contains(id1)) { + checkedIds.add(id1); + } + currentPosition += direction; + } + refreshCheckboxes(); + }).show(); + return true; + }); for(FeedItem episode : episodes) { titles.add(episode.getTitle()); @@ -106,7 +129,7 @@ public class EpisodesApplyActionFragment extends Fragment { checkAll(); int lastVisibleDiv = 0; - btnAddToQueue = (Button) view.findViewById(R.id.btnAddToQueue); + btnAddToQueue = view.findViewById(R.id.btnAddToQueue); if((actions & ACTION_QUEUE) != 0) { btnAddToQueue.setOnClickListener(v -> queueChecked()); lastVisibleDiv = R.id.divider1; @@ -114,7 +137,7 @@ public class EpisodesApplyActionFragment extends Fragment { btnAddToQueue.setVisibility(View.GONE); view.findViewById(R.id.divider1).setVisibility(View.GONE); } - btnMarkAsPlayed = (Button) view.findViewById(R.id.btnMarkAsPlayed); + btnMarkAsPlayed = view.findViewById(R.id.btnMarkAsPlayed); if((actions & ACTION_MARK_PLAYED) != 0) { btnMarkAsPlayed.setOnClickListener(v -> markedCheckedPlayed()); lastVisibleDiv = R.id.divider2; @@ -122,7 +145,7 @@ public class EpisodesApplyActionFragment extends Fragment { btnMarkAsPlayed.setVisibility(View.GONE); view.findViewById(R.id.divider2).setVisibility(View.GONE); } - btnMarkAsUnplayed = (Button) view.findViewById(R.id.btnMarkAsUnplayed); + btnMarkAsUnplayed = view.findViewById(R.id.btnMarkAsUnplayed); if((actions & ACTION_MARK_UNPLAYED) != 0) { btnMarkAsUnplayed.setOnClickListener(v -> markedCheckedUnplayed()); lastVisibleDiv = R.id.divider3; @@ -130,7 +153,7 @@ public class EpisodesApplyActionFragment extends Fragment { btnMarkAsUnplayed.setVisibility(View.GONE); view.findViewById(R.id.divider3).setVisibility(View.GONE); } - btnDownload = (Button) view.findViewById(R.id.btnDownload); + btnDownload = view.findViewById(R.id.btnDownload); if((actions & ACTION_DOWNLOAD) != 0) { btnDownload.setOnClickListener(v -> downloadChecked()); lastVisibleDiv = R.id.divider4; @@ -138,7 +161,7 @@ public class EpisodesApplyActionFragment extends Fragment { btnDownload.setVisibility(View.GONE); view.findViewById(R.id.divider4).setVisibility(View.GONE); } - btnDelete = (Button) view.findViewById(R.id.btnDelete); + btnDelete = view.findViewById(R.id.btnDelete); if((actions & ACTION_REMOVE) != 0) { btnDelete.setOnClickListener(v -> deleteChecked()); } else { |