diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/dialog')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java | 73 |
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())); } |