diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java index b5e814f35..de3242b1a 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java @@ -135,13 +135,13 @@ public class NavListAdapter extends RecyclerView.Adapter default: return null; } - TypedArray ta = context.obtainStyledAttributes(new int[] { icon } ); + TypedArray ta = context.obtainStyledAttributes(new int[] { icon }); Drawable result = ta.getDrawable(0); ta.recycle(); return result; } - public List getTags() { + public List getFragmentTags() { return Collections.unmodifiableList(fragmentTags); } @@ -160,7 +160,7 @@ public class NavListAdapter extends RecyclerView.Adapter if (viewType == VIEW_TYPE_SUBSCRIPTION) { return itemAccess.getItem(position - getSubscriptionOffset()).id; } else { - return -position - 1; //TODO + return -position - 1; // IDs are >0 } } @@ -215,13 +215,9 @@ public class NavListAdapter extends RecyclerView.Adapter if (viewType != VIEW_TYPE_SECTION_DIVIDER) { TypedValue typedValue = new TypedValue(); - if (itemAccess.isSelected(position)) { - activity.get().getTheme().resolveAttribute(R.attr.drawer_activated_color, typedValue, true); - holder.itemView.setBackgroundResource(typedValue.resourceId); - } else { - activity.get().getTheme().resolveAttribute(android.R.attr.windowBackground, typedValue, true); - holder.itemView.setBackgroundResource(typedValue.resourceId); - } + activity.get().getTheme().resolveAttribute(itemAccess.isSelected(position) + ? R.attr.drawer_activated_color : android.R.attr.windowBackground, typedValue, true); + holder.itemView.setBackgroundResource(typedValue.resourceId); holder.itemView.setOnClickListener(v -> itemAccess.onItemClick(position)); holder.itemView.setOnLongClickListener(v -> itemAccess.onItemLongClick(position)); @@ -230,7 +226,7 @@ public class NavListAdapter extends RecyclerView.Adapter private void bindNavView(String title, int position, NavHolder holder) { Activity context = activity.get(); - if(context == null) { + if (context == null) { return; } holder.title.setText(title); @@ -258,21 +254,21 @@ public class NavListAdapter extends RecyclerView.Adapter holder.count.setText(NumberFormat.getInstance().format(sum)); holder.count.setVisibility(View.VISIBLE); } - } else if(tag.equals(DownloadsFragment.TAG) && UserPreferences.isEnableAutodownload()) { + } else if (tag.equals(DownloadsFragment.TAG) && UserPreferences.isEnableAutodownload()) { int epCacheSize = UserPreferences.getEpisodeCacheSize(); // don't count episodes that can be reclaimed - int spaceUsed = itemAccess.getNumberOfDownloadedItems() - - itemAccess.getReclaimableItems(); + int spaceUsed = itemAccess.getNumberOfDownloadedItems() + - itemAccess.getReclaimableItems(); if (epCacheSize > 0 && spaceUsed >= epCacheSize) { holder.count.setText("{md-disc-full 150%}"); Iconify.addIcons(holder.count); holder.count.setVisibility(View.VISIBLE); holder.count.setOnClickListener(v -> - new AlertDialog.Builder(context) + new AlertDialog.Builder(context) .setTitle(R.string.episode_cache_full_title) .setMessage(R.string.episode_cache_full_message) - .setPositiveButton(android.R.string.ok, (dialog, which) -> {}) + .setPositiveButton(android.R.string.ok, (dialog, which) -> { }) .show() ); } @@ -283,7 +279,7 @@ public class NavListAdapter extends RecyclerView.Adapter private void bindSectionDivider(DividerHolder holder) { Activity context = activity.get(); - if(context == null) { + if (context == null) { return; } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java index 51c8c48ad..209bc62e5 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java @@ -122,12 +122,13 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS @Override public void onCreateContextMenu(@NonNull ContextMenu menu, @NonNull View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); + if (contextPressedItem.type != NavDrawerData.DrawerItem.Type.FEED) { + return; // Should actually never happen because the context menu is not set up for other items + } + MenuInflater inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.nav_feed_context, menu); - - if (contextPressedItem.type == NavDrawerData.DrawerItem.Type.FEED) { - menu.setHeaderTitle(((NavDrawerData.FeedDrawerItem) contextPressedItem).feed.getTitle()); - } + menu.setHeaderTitle(((NavDrawerData.FeedDrawerItem) contextPressedItem).feed.getTitle()); // episodes are not loaded, so we cannot check if the podcast has new or unplayed ones! } @@ -179,12 +180,6 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS } } - private void showMainActivity(String tag) { - Intent intent = new Intent(getActivity(), MainActivity.class); - intent.putExtra(MainActivity.EXTRA_FRAGMENT_TAG, tag); - startActivity(intent); - } - @Subscribe(threadMode = ThreadMode.MAIN) public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) { loadData(); @@ -266,7 +261,7 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS public boolean isSelected(int position) { String lastNavFragment = getLastNavFragment(getContext()); if (position < navAdapter.getSubscriptionOffset()) { - return navAdapter.getTags().get(position).equals(lastNavFragment); + return navAdapter.getFragmentTags().get(position).equals(lastNavFragment); } else if (StringUtils.isNumeric(lastNavFragment)) { // last fragment was not a list, but a feed long feedId = Long.parseLong(lastNavFragment); if (navDrawerData != null) { @@ -318,28 +313,18 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS int viewType = navAdapter.getItemViewType(position); if (viewType != NavListAdapter.VIEW_TYPE_SECTION_DIVIDER) { if (position < navAdapter.getSubscriptionOffset()) { - String tag = navAdapter.getTags().get(position); - if (getActivity() instanceof MainActivity) { - ((MainActivity) getActivity()).loadFragment(tag, null); - ((MainActivity) getActivity()).getBottomSheet().setState(BottomSheetBehavior.STATE_COLLAPSED); - } else { - showMainActivity(tag); - } + String tag = navAdapter.getFragmentTags().get(position); + ((MainActivity) getActivity()).loadFragment(tag, null); + ((MainActivity) getActivity()).getBottomSheet().setState(BottomSheetBehavior.STATE_COLLAPSED); } else { int pos = position - navAdapter.getSubscriptionOffset(); NavDrawerData.DrawerItem clickedItem = flatItemList.get(pos); if (clickedItem.type == NavDrawerData.DrawerItem.Type.FEED) { long feedId = ((NavDrawerData.FeedDrawerItem) clickedItem).feed.getId(); - if (getActivity() instanceof MainActivity) { - ((MainActivity) getActivity()).loadFeedFragmentById(feedId, null); - ((MainActivity) getActivity()).getBottomSheet() - .setState(BottomSheetBehavior.STATE_COLLAPSED); - } else { - Intent intent = new Intent(getActivity(), MainActivity.class); - intent.putExtra(MainActivity.EXTRA_FEED_ID, feedId); - startActivity(intent); - } + ((MainActivity) getActivity()).loadFeedFragmentById(feedId, null); + ((MainActivity) getActivity()).getBottomSheet() + .setState(BottomSheetBehavior.STATE_COLLAPSED); } else { NavDrawerData.FolderDrawerItem folder = ((NavDrawerData.FolderDrawerItem) clickedItem); if (openFolders.contains(folder.name)) { @@ -371,7 +356,7 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS @Override public boolean onItemLongClick(int position) { - if (position < navAdapter.getTags().size()) { + if (position < navAdapter.getFragmentTags().size()) { showDrawerPreferencesDialog(); return true; } else { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/NavDrawerData.java b/core/src/main/java/de/danoeh/antennapod/core/storage/NavDrawerData.java index 03336b369..0a56330a9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/NavDrawerData.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/NavDrawerData.java @@ -61,7 +61,7 @@ public class NavDrawerData { public boolean isOpen; public FolderDrawerItem(String name) { - super(DrawerItem.Type.FOLDER, (long) name.hashCode() << 32); + super(DrawerItem.Type.FOLDER, (long) name.hashCode() << 20); // Keep IDs >0 but make room for many feeds this.name = name; }