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 | 103 |
1 files changed, 30 insertions, 73 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 cbba1637f..9514ea5eb 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java @@ -13,26 +13,17 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; - import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.PluralsRes; import androidx.annotation.StringRes; -import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import androidx.collection.ArrayMap; import androidx.core.app.ActivityCompat; import androidx.fragment.app.Fragment; - import com.google.android.material.snackbar.Snackbar; import com.leinardi.android.speeddial.SpeedDialView; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; - import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; import de.danoeh.antennapod.core.feed.FeedItem; @@ -43,6 +34,12 @@ import de.danoeh.antennapod.core.util.FeedItemPermutors; import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.core.util.SortOrder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + public class EpisodesApplyActionFragment extends Fragment { public static final String TAG = "EpisodeActionFragment"; @@ -55,6 +52,7 @@ public class EpisodesApplyActionFragment extends Fragment { public static final int ACTION_DELETE = 32; private static final int ACTION_ALL = ACTION_ADD_TO_QUEUE | ACTION_REMOVE_FROM_QUEUE | ACTION_MARK_PLAYED | ACTION_MARK_UNPLAYED | ACTION_DOWNLOAD | ACTION_DELETE; + private Toolbar toolbar; /** * Specify an action (defined by #flag) 's UI bindings. @@ -76,20 +74,15 @@ public class EpisodesApplyActionFragment extends Fragment { } private final List<? extends ActionBinding> actionBindings; - - private ListView mListView; - private ArrayAdapter<String> mAdapter; - - private SpeedDialView mSpeedDialView; - @NonNull - private CharSequence actionBarTitleOriginal = ""; - - private final Map<Long,FeedItem> idMap = new ArrayMap<>(); + private final Map<Long, FeedItem> idMap = new ArrayMap<>(); private final List<FeedItem> episodes = new ArrayList<>(); private int actions; private final List<String> titles = new ArrayList<>(); private final LongList checkedIds = new LongList(); + private ListView mListView; + private ArrayAdapter<String> mAdapter; + private SpeedDialView mSpeedDialView; private MenuItem mSelectToggle; public EpisodesApplyActionFragment() { @@ -137,7 +130,7 @@ public class EpisodesApplyActionFragment extends Fragment { mListView = view.findViewById(android.R.id.list); mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); - mListView.setOnItemClickListener((ListView, view1, position, rowId) -> { + mListView.setOnItemClickListener((listView, view1, position, rowId) -> { long id = episodes.get(position).getId(); if (checkedIds.contains(id)) { checkedIds.remove(id); @@ -177,8 +170,8 @@ public class EpisodesApplyActionFragment extends Fragment { mAdapter = new ArrayAdapter<>(getActivity(), R.layout.simple_list_item_multiple_choice_on_start, titles); mListView.setAdapter(mAdapter); - - saveActionBarTitle(); // needed when we dynamically change the title based on selection + toolbar = view.findViewById(R.id.toolbar); + ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); // Init action UI (via a FAB Speed Dial) mSpeedDialView = view.findViewById(R.id.fabSD); @@ -206,18 +199,10 @@ public class EpisodesApplyActionFragment extends Fragment { } return true; }); - - showSpeedDialIfAnyChecked(); - + refreshCheckboxes(); return view; } - @Override - public void onStop() { - restoreActionBarTitle(); // it might have been changed to "N selected". Restore original. - super.onStop(); - } - private void showSpeedDialIfAnyChecked() { if (checkedIds.size() > 0) { if (!mSpeedDialView.isShown()) { @@ -327,7 +312,7 @@ public class EpisodesApplyActionFragment extends Fragment { return true; } } - if(resId != 0) { + if (resId != 0) { Snackbar.make(getActivity().findViewById(R.id.content), resId, Snackbar.LENGTH_SHORT) .show(); return true; @@ -345,7 +330,7 @@ public class EpisodesApplyActionFragment extends Fragment { private void checkAll() { for (FeedItem episode : episodes) { - if(!checkedIds.contains(episode.getId())) { + if (!checkedIds.contains(episode.getId())) { checkedIds.add(episode.getId()); } } @@ -359,12 +344,12 @@ public class EpisodesApplyActionFragment extends Fragment { private void checkPlayed(boolean isPlayed) { for (FeedItem episode : episodes) { - if(episode.isPlayed() == isPlayed) { - if(!checkedIds.contains(episode.getId())) { + if (episode.isPlayed() == isPlayed) { + if (!checkedIds.contains(episode.getId())) { checkedIds.add(episode.getId()); } } else { - if(checkedIds.contains(episode.getId())) { + if (checkedIds.contains(episode.getId())) { checkedIds.remove(episode.getId()); } } @@ -374,12 +359,12 @@ public class EpisodesApplyActionFragment extends Fragment { private void checkDownloaded(boolean isDownloaded) { for (FeedItem episode : episodes) { - if(episode.hasMedia() && episode.getMedia().isDownloaded() == isDownloaded) { - if(!checkedIds.contains(episode.getId())) { + if (episode.hasMedia() && episode.getMedia().isDownloaded() == isDownloaded) { + if (!checkedIds.contains(episode.getId())) { checkedIds.add(episode.getId()); } } else { - if(checkedIds.contains(episode.getId())) { + if (checkedIds.contains(episode.getId())) { checkedIds.remove(episode.getId()); } } @@ -389,7 +374,7 @@ public class EpisodesApplyActionFragment extends Fragment { private void checkQueued(boolean isQueued) { for (FeedItem episode : episodes) { - if(episode.isTagged(FeedItem.TAG_QUEUE) == isQueued) { + if (episode.isTagged(FeedItem.TAG_QUEUE) == isQueued) { checkedIds.add(episode.getId()); } else { checkedIds.remove(episode.getId()); @@ -400,7 +385,7 @@ public class EpisodesApplyActionFragment extends Fragment { private void checkWithMedia() { for (FeedItem episode : episodes) { - if(episode.hasMedia()) { + if (episode.hasMedia()) { checkedIds.add(episode.getId()); } else { checkedIds.remove(episode.getId()); @@ -425,35 +410,7 @@ public class EpisodesApplyActionFragment extends Fragment { } ActivityCompat.invalidateOptionsMenu(EpisodesApplyActionFragment.this.getActivity()); showSpeedDialIfAnyChecked(); - updateActionBarTitle(); - } - - private void saveActionBarTitle() { - ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); - if (actionBar != null) { - CharSequence title = actionBar.getTitle(); - if (title == null) { - title = ""; - } - actionBarTitleOriginal = title; - } - } - - private void restoreActionBarTitle() { - ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(actionBarTitleOriginal); - } - } - - private void updateActionBarTitle() { - ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); - if (actionBar != null) { - CharSequence title = checkedIds.size() > 0 ? - getString(R.string.num_selected_label, checkedIds.size()) : - actionBarTitleOriginal; - actionBar.setTitle(title); - } + toolbar.setTitle(getString(R.string.num_selected_label, checkedIds.size())); } private void queueChecked() { @@ -487,7 +444,7 @@ public class EpisodesApplyActionFragment extends Fragment { // download the check episodes in the same order as they are currently displayed List<FeedItem> toDownload = new ArrayList<>(checkedIds.size()); for (FeedItem episode : episodes) { - if(checkedIds.contains(episode.getId()) && episode.hasMedia()) { + if (checkedIds.contains(episode.getId()) && episode.hasMedia()) { toDownload.add(episode); } } @@ -503,7 +460,7 @@ public class EpisodesApplyActionFragment extends Fragment { private void deleteChecked() { for (long id : checkedIds.toArray()) { FeedItem episode = idMap.get(id); - if(episode.hasMedia()) { + if (episode.hasMedia()) { DBWriter.deleteFeedMediaOfItem(getActivity(), episode.getMedia().getId()); } } @@ -516,7 +473,7 @@ public class EpisodesApplyActionFragment extends Fragment { getResources().getQuantityString(msgId, numItems, numItems), Snackbar.LENGTH_LONG ) - .setAction(android.R.string.ok, v -> {}) + .setAction(android.R.string.ok, v -> { }) .show(); } getActivity().getSupportFragmentManager().popBackStack(); |