diff options
Diffstat (limited to 'src/de')
3 files changed, 48 insertions, 69 deletions
diff --git a/src/de/danoeh/antennapod/adapter/NavListAdapter.java b/src/de/danoeh/antennapod/adapter/NavListAdapter.java index 5bdc6854e..928ec5dde 100644 --- a/src/de/danoeh/antennapod/adapter/NavListAdapter.java +++ b/src/de/danoeh/antennapod/adapter/NavListAdapter.java @@ -23,7 +23,7 @@ public class NavListAdapter extends BaseAdapter { public static final int VIEW_TYPE_SECTION_DIVIDER = 1; public static final int VIEW_TYPE_SUBSCRIPTION = 2; - public static final int[] NAV_TITLES = {R.string.new_episodes_label, R.string.queue_label, R.string.downloads_label, R.string.playback_history_label, R.string.add_feed_label}; + public static final int[] NAV_TITLES = {R.string.all_episodes_label, R.string.queue_label, R.string.downloads_label, R.string.playback_history_label, R.string.add_feed_label}; private final Drawable[] drawables; diff --git a/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java b/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java index 9d5f5220d..4a959dfd2 100644 --- a/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java +++ b/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java @@ -1,7 +1,6 @@ package de.danoeh.antennapod.adapter; import android.content.Context; -import android.content.res.TypedArray; import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; @@ -19,9 +18,6 @@ import de.danoeh.antennapod.util.Converter; */ public class NewEpisodesListAdapter extends BaseAdapter { - private static final int VIEW_TYPE_FEEDITEM = 0; - private static final int VIEW_TYPE_DIVIDER = 1; - private final Context context; private final ItemAccess itemAccess; private final ActionButtonCallback actionButtonCallback; @@ -37,22 +33,12 @@ public class NewEpisodesListAdapter extends BaseAdapter { @Override public int getCount() { - int unreadItems = itemAccess.getUnreadItemsCount(); - int recentItems = itemAccess.getRecentItemsCount(); - return unreadItems + recentItems + 1; + return itemAccess.getCount(); } @Override public Object getItem(int position) { - int unreadItems = itemAccess.getUnreadItemsCount(); - - if (position == unreadItems) { - return null; - } - if (position < unreadItems && unreadItems > 0) { - return itemAccess.getUnreadItem(position); - } - return itemAccess.getRecentItem(position - unreadItems - 1); + return itemAccess.getItem(position); } @Override @@ -61,41 +47,12 @@ public class NewEpisodesListAdapter extends BaseAdapter { } @Override - public int getItemViewType(int position) { - int unreadItems = itemAccess.getUnreadItemsCount(); - if (position == unreadItems) { - return VIEW_TYPE_DIVIDER; - } else { - return VIEW_TYPE_FEEDITEM; - } - } - - @Override public int getViewTypeCount() { - return 2; + return 1; } @Override public View getView(int position, View convertView, ViewGroup parent) { - int viewType = getItemViewType(position); - if (viewType == VIEW_TYPE_FEEDITEM) { - return getFeedItemView(position, convertView, parent); - } else { - return getDividerView(position, convertView, parent); - } - } - - public View getDividerView(int position, View convertView, ViewGroup parent) { - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.new_episodes_listdivider, - null); - convertView.setOnClickListener(null); - convertView.setEnabled(false); - return convertView; - } - - public View getFeedItemView(int position, View convertView, ViewGroup parent) { Holder holder; final FeedItem item = (FeedItem) getItem(position); if (item == null) return null; @@ -162,7 +119,6 @@ public class NewEpisodesListAdapter extends BaseAdapter { holder.butSecondary.setOnClickListener(secondaryActionListener); - ImageLoader.getInstance().loadThumbnailBitmap( item, holder.imageView, @@ -192,13 +148,10 @@ public class NewEpisodesListAdapter extends BaseAdapter { } public interface ItemAccess { - int getUnreadItemsCount(); - - int getRecentItemsCount(); - FeedItem getUnreadItem(int position); + int getCount(); - FeedItem getRecentItem(int position); + FeedItem getItem(int position); int getItemDownloadProgressPercent(FeedItem item); diff --git a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java index 9c062aeb7..f23130eb5 100644 --- a/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java +++ b/src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java @@ -2,9 +2,11 @@ package de.danoeh.antennapod.fragment; import android.app.Activity; import android.content.Context; +import android.content.SharedPreferences; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; +import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.SearchView; @@ -47,6 +49,9 @@ public class NewEpisodesFragment extends Fragment { EventDistributor.UNREAD_ITEMS_UPDATE; private static final int RECENT_EPISODES_LIMIT = 150; + private static final String PREF_NAME = "PrefNewEpisodesFragment"; + private static final String PREF_EPISODE_FILTER_BOOL = "newEpisodeFilterEnabled"; + private DragSortListView listView; private NewEpisodesListAdapter listAdapter; @@ -60,6 +65,7 @@ public class NewEpisodesFragment extends Fragment { private boolean itemsLoaded = false; private boolean viewsCreated = false; + private boolean showOnlyNewEpisodes = false; private AtomicReference<MainActivity> activity = new AtomicReference<MainActivity>(); @@ -72,6 +78,8 @@ public class NewEpisodesFragment extends Fragment { super.onCreate(savedInstanceState); setRetainInstance(true); setHasOptionsMenu(true); + + updateShowOnlyEpisodes(); } @Override @@ -150,6 +158,7 @@ public class NewEpisodesFragment extends Fragment { public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); menu.findItem(R.id.mark_all_read_item).setVisible(unreadItems != null && !unreadItems.isEmpty()); + menu.findItem(R.id.episode_filter_item).setChecked(showOnlyNewEpisodes); } @Override @@ -166,6 +175,11 @@ public class NewEpisodesFragment extends Fragment { DBWriter.markAllItemsRead(getActivity()); Toast.makeText(getActivity(), R.string.mark_all_read_msg, Toast.LENGTH_SHORT).show(); return true; + case R.id.episode_filter_item: + boolean newVal = !item.isChecked(); + setShowOnlyNewEpisodes(newVal); + item.setChecked(newVal); + return true; default: return false; } @@ -178,7 +192,7 @@ public class NewEpisodesFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); - ((MainActivity) getActivity()).getSupportActionBar().setTitle(R.string.new_episodes_label); + ((MainActivity) getActivity()).getSupportActionBar().setTitle(R.string.all_episodes_label); View root = inflater.inflate(R.layout.new_episodes_fragment, container, false); listView = (DragSortListView) root.findViewById(android.R.id.list); @@ -249,25 +263,20 @@ public class NewEpisodesFragment extends Fragment { private NewEpisodesListAdapter.ItemAccess itemAccess = new NewEpisodesListAdapter.ItemAccess() { - - @Override - public int getUnreadItemsCount() { - return (itemsLoaded) ? unreadItems.size() : 0; - } - - @Override - public int getRecentItemsCount() { - return (itemsLoaded) ? recentItems.size() : 0; - } - @Override - public FeedItem getUnreadItem(int position) { - return (itemsLoaded) ? unreadItems.get(position) : null; + public int getCount() { + if (itemsLoaded) { + return (showOnlyNewEpisodes) ? unreadItems.size() : recentItems.size(); + } + return 0; } @Override - public FeedItem getRecentItem(int position) { - return (itemsLoaded) ? recentItems.get(position) : null; + public FeedItem getItem(int position) { + if (itemsLoaded) { + return (showOnlyNewEpisodes) ? unreadItems.get(position) : recentItems.get(position); + } + return null; } @Override @@ -318,6 +327,23 @@ public class NewEpisodesFragment extends Fragment { } }; + private void updateShowOnlyEpisodes() { + SharedPreferences prefs = getActivity().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); + showOnlyNewEpisodes = prefs.getBoolean(PREF_EPISODE_FILTER_BOOL, false); + } + + private void setShowOnlyNewEpisodes(boolean newVal) { + showOnlyNewEpisodes = newVal; + SharedPreferences prefs = getActivity().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean(PREF_EPISODE_FILTER_BOOL, showOnlyNewEpisodes); + editor.commit(); + if (itemsLoaded && viewsCreated) { + listAdapter.notifyDataSetChanged(); + activity.get().supportInvalidateOptionsMenu(); + } + } + private ItemLoader itemLoader; private void startItemLoader() { |