Implemented episode filter
This commit is contained in:
parent
d3d2debfb6
commit
18e4625e9a
@ -82,7 +82,7 @@ public class FeedlistAdapter extends ArrayAdapter<Feed> {
|
|||||||
.getTime(), System.currentTimeMillis(),
|
.getTime(), System.currentTimeMillis(),
|
||||||
DateFormat.SHORT, DateFormat.SHORT));
|
DateFormat.SHORT, DateFormat.SHORT));
|
||||||
}
|
}
|
||||||
holder.numberOfEpisodes.setText(feed.getItems().size()
|
holder.numberOfEpisodes.setText(feed.getNumOfItems()
|
||||||
+ convertView.getResources()
|
+ convertView.getResources()
|
||||||
.getString(R.string.episodes_suffix));
|
.getString(R.string.episodes_suffix));
|
||||||
int newItems = feed.getNumOfNewItems();
|
int newItems = feed.getNumOfNewItems();
|
||||||
|
@ -3,6 +3,10 @@ package de.danoeh.antennapod.feed;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import de.danoeh.antennapod.PodcastApp;
|
||||||
|
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data Object for a whole feed
|
* Data Object for a whole feed
|
||||||
*
|
*
|
||||||
@ -40,11 +44,39 @@ public class Feed extends FeedFile {
|
|||||||
this.download_url = url;
|
this.download_url = url;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the number of FeedItems where 'read' is false. */
|
/**
|
||||||
|
* Returns the number of FeedItems where 'read' is false. If the 'display
|
||||||
|
* only episodes' - preference is set to true, this method will only count
|
||||||
|
* items with episodes.
|
||||||
|
* */
|
||||||
public int getNumOfNewItems() {
|
public int getNumOfNewItems() {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
boolean displayOnlyEpisodes = PreferenceManager
|
||||||
|
.getDefaultSharedPreferences(PodcastApp.getInstance())
|
||||||
|
.getBoolean(PodcastApp.PREF_DISPLAY_ONLY_EPISODES, false);
|
||||||
|
|
||||||
for (FeedItem item : items) {
|
for (FeedItem item : items) {
|
||||||
if (!item.isRead()) {
|
if (!item.isRead()) {
|
||||||
|
if (!displayOnlyEpisodes || item.getMedia() != null) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of FeedItems. If the 'display only episodes' -
|
||||||
|
* preference is set to true, this method will only count items with
|
||||||
|
* episodes.
|
||||||
|
* */
|
||||||
|
public int getNumOfItems() {
|
||||||
|
int count = 0;
|
||||||
|
boolean displayOnlyEpisodes = PreferenceManager
|
||||||
|
.getDefaultSharedPreferences(PodcastApp.getInstance())
|
||||||
|
.getBoolean(PodcastApp.PREF_DISPLAY_ONLY_EPISODES, false);
|
||||||
|
for (FeedItem item : items) {
|
||||||
|
if (!displayOnlyEpisodes || item.getMedia() != null) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,6 +171,4 @@ public class Feed extends FeedFile {
|
|||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -28,8 +29,10 @@ import de.danoeh.antennapod.feed.FeedItem;
|
|||||||
import de.danoeh.antennapod.feed.FeedManager;
|
import de.danoeh.antennapod.feed.FeedManager;
|
||||||
import de.danoeh.antennapod.service.DownloadService;
|
import de.danoeh.antennapod.service.DownloadService;
|
||||||
import de.danoeh.antennapod.storage.DownloadRequester;
|
import de.danoeh.antennapod.storage.DownloadRequester;
|
||||||
|
import de.danoeh.antennapod.util.EpisodeFilter;
|
||||||
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
|
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
|
||||||
import de.danoeh.antennapod.AppConfig;
|
import de.danoeh.antennapod.AppConfig;
|
||||||
|
import de.danoeh.antennapod.PodcastApp;
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
|
|
||||||
/** Displays a list of FeedItems. */
|
/** Displays a list of FeedItems. */
|
||||||
@ -99,6 +102,14 @@ public class ItemlistFragment extends SherlockListFragment implements
|
|||||||
feed = FeedManager.getInstance().getFeed(feedId);
|
feed = FeedManager.getInstance().getFeed(feedId);
|
||||||
items = feed.getItems();
|
items = feed.getItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean displayOnlyEpisodes = PreferenceManager
|
||||||
|
.getDefaultSharedPreferences(PodcastApp.getInstance())
|
||||||
|
.getBoolean(PodcastApp.PREF_DISPLAY_ONLY_EPISODES, false);
|
||||||
|
if (displayOnlyEpisodes) {
|
||||||
|
items = EpisodeFilter.getEpisodeList(items);
|
||||||
|
}
|
||||||
|
|
||||||
fila = new FeedItemlistAdapter(getActivity(), 0, items,
|
fila = new FeedItemlistAdapter(getActivity(), 0, items,
|
||||||
onButActionClicked, showFeedtitle);
|
onButActionClicked, showFeedtitle);
|
||||||
setListAdapter(fila);
|
setListAdapter(fila);
|
||||||
|
23
src/de/danoeh/antennapod/util/EpisodeFilter.java
Normal file
23
src/de/danoeh/antennapod/util/EpisodeFilter.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package de.danoeh.antennapod.util;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import de.danoeh.antennapod.feed.FeedItem;
|
||||||
|
|
||||||
|
public class EpisodeFilter {
|
||||||
|
private EpisodeFilter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return a copy of the itemlist without items which have no media. */
|
||||||
|
public static ArrayList<FeedItem> getEpisodeList(List<FeedItem> items) {
|
||||||
|
ArrayList<FeedItem> episodes = new ArrayList<FeedItem>(items);
|
||||||
|
for (FeedItem item : items) {
|
||||||
|
if (item.getMedia() == null) {
|
||||||
|
episodes.remove(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return episodes;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user