summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/dialog
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/dialog')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java73
1 files changed, 25 insertions, 48 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 f2524c40c..5aee3f2be 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
@@ -1,12 +1,8 @@
package de.danoeh.antennapod.dialog;
-import android.content.res.TypedArray;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -17,10 +13,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.PluralsRes;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
-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;
@@ -34,6 +28,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequester;
import de.danoeh.antennapod.core.util.FeedItemPermutors;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.SortOrder;
+import de.danoeh.antennapod.core.util.ThemeUtils;
import java.util.ArrayList;
import java.util.Arrays;
@@ -41,7 +36,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
-public class EpisodesApplyActionFragment extends Fragment {
+public class EpisodesApplyActionFragment extends Fragment implements Toolbar.OnMenuItemClickListener {
public static final String TAG = "EpisodeActionFragment";
@@ -53,7 +48,6 @@ public class EpisodesApplyActionFragment extends Fragment {
public static final int ACTION_DELETE = 32;
public 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.
@@ -84,7 +78,7 @@ public class EpisodesApplyActionFragment extends Fragment {
private ListView mListView;
private ArrayAdapter<String> mAdapter;
private SpeedDialView mSpeedDialView;
- private MenuItem mSelectToggle;
+ private Toolbar toolbar;
public EpisodesApplyActionFragment() {
actionBindings = Arrays.asList(
@@ -117,7 +111,6 @@ public class EpisodesApplyActionFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
- setHasOptionsMenu(true);
}
@Override
@@ -125,6 +118,12 @@ public class EpisodesApplyActionFragment extends Fragment {
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.episodes_apply_action_fragment, container, false);
+ toolbar = view.findViewById(R.id.toolbar);
+ toolbar.inflateMenu(R.menu.episodes_apply_action_options);
+ toolbar.setNavigationOnClickListener(v -> getParentFragmentManager().popBackStack());
+ toolbar.setOnMenuItemClickListener(this);
+ refreshToolbarState();
+
mListView = view.findViewById(android.R.id.list);
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mListView.setOnItemClickListener((listView, view1, position, rowId) -> {
@@ -167,8 +166,6 @@ public class EpisodesApplyActionFragment extends Fragment {
mAdapter = new ArrayAdapter<>(getActivity(),
R.layout.simple_list_item_multiple_choice_on_start, titles);
mListView.setAdapter(mAdapter);
- toolbar = view.findViewById(R.id.toolbar);
- ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
// Init action UI (via a FAB Speed Dial)
mSpeedDialView = view.findViewById(R.id.fabSD);
@@ -215,42 +212,15 @@ public class EpisodesApplyActionFragment extends Fragment {
return view;
}
- @Override
- public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- inflater.inflate(R.menu.episodes_apply_action_options, menu);
-
- mSelectToggle = menu.findItem(R.id.select_toggle);
- mSelectToggle.setOnMenuItemClickListener(item -> {
- if (checkedIds.size() == episodes.size()) {
- checkNone();
- } else {
- checkAll();
- }
- return true;
- });
- }
-
- @Override
- public void onPrepareOptionsMenu(@NonNull Menu menu) {
- // Prepare icon for select toggle button
-
- int[] icon = new int[1];
- @StringRes int titleResId;
+ public void refreshToolbarState() {
+ MenuItem selectAllItem = toolbar.getMenu().findItem(R.id.select_toggle);
if (checkedIds.size() == episodes.size()) {
- icon[0] = R.attr.ic_select_none;
- titleResId = R.string.deselect_all_label;
+ selectAllItem.setIcon(ThemeUtils.getDrawableFromAttr(getContext(), R.attr.ic_select_none));
+ selectAllItem.setTitle(R.string.deselect_all_label);
} else {
- icon[0] = R.attr.ic_select_all;
- titleResId = R.string.select_all_label;
+ selectAllItem.setIcon(ThemeUtils.getDrawableFromAttr(getContext(), R.attr.ic_select_all));
+ selectAllItem.setTitle(R.string.select_all_label);
}
-
- TypedArray a = getActivity().obtainStyledAttributes(icon);
- Drawable iconDrawable = a.getDrawable(0);
- a.recycle();
-
- mSelectToggle.setIcon(iconDrawable);
- mSelectToggle.setTitle(titleResId);
}
private static final Map<Integer, SortOrder> menuItemIdToSortOrder;
@@ -266,11 +236,18 @@ public class EpisodesApplyActionFragment extends Fragment {
}
@Override
- public boolean onOptionsItemSelected(MenuItem item) {
+ public boolean onMenuItemClick(MenuItem item) {
@StringRes int resId = 0;
- switch(item.getItemId()) {
+ switch (item.getItemId()) {
case R.id.select_options:
return true;
+ case R.id.select_toggle:
+ if (checkedIds.size() == episodes.size()) {
+ checkNone();
+ } else {
+ checkAll();
+ }
+ return true;
case R.id.check_all:
checkAll();
resId = R.string.selected_all_label;
@@ -409,7 +386,7 @@ public class EpisodesApplyActionFragment extends Fragment {
boolean checked = checkedIds.contains(episode.getId());
mListView.setItemChecked(i, checked);
}
- getActivity().invalidateOptionsMenu();
+ refreshToolbarState();
toolbar.setTitle(getResources().getQuantityString(R.plurals.num_selected_label,
checkedIds.size(), checkedIds.size()));
}