summaryrefslogtreecommitdiff
path: root/src/de/danoeh
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/danoeh')
-rw-r--r--src/de/danoeh/antennapod/adapter/NavListAdapter.java2
-rw-r--r--src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java57
-rw-r--r--src/de/danoeh/antennapod/fragment/NewEpisodesFragment.java58
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() {