summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/adapter
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-02-24 12:30:23 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2013-02-24 12:30:23 +0100
commitf9e00f72a0dfeea3e5b9db8a522f7251e158dc7d (patch)
tree86396c75b933e10fe4adad579ade3bafa329b0f2 /src/de/danoeh/antennapod/adapter
parent56f199dc8c69d7e24d0e05613f9911c323cb46a6 (diff)
downloadAntennaPod-f9e00f72a0dfeea3e5b9db8a522f7251e158dc7d.zip
limited access to feed items, feeds, playback history and download log
Diffstat (limited to 'src/de/danoeh/antennapod/adapter')
-rw-r--r--src/de/danoeh/antennapod/adapter/AbstractFeedItemlistAdapter.java48
-rw-r--r--src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java36
-rw-r--r--src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java16
-rw-r--r--src/de/danoeh/antennapod/adapter/FeedlistAdapter.java32
4 files changed, 85 insertions, 47 deletions
diff --git a/src/de/danoeh/antennapod/adapter/AbstractFeedItemlistAdapter.java b/src/de/danoeh/antennapod/adapter/AbstractFeedItemlistAdapter.java
index 74b54c105..6f4cf7c29 100644
--- a/src/de/danoeh/antennapod/adapter/AbstractFeedItemlistAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/AbstractFeedItemlistAdapter.java
@@ -1,41 +1,39 @@
package de.danoeh.antennapod.adapter;
-import java.util.List;
-
-import android.content.Context;
-import android.widget.ArrayAdapter;
-import de.danoeh.antennapod.PodcastApp;
+import android.widget.BaseAdapter;
import de.danoeh.antennapod.feed.FeedItem;
-import de.danoeh.antennapod.preferences.UserPreferences;
-import de.danoeh.antennapod.util.EpisodeFilter;
-public abstract class AbstractFeedItemlistAdapter extends
- ArrayAdapter<FeedItem> {
+public abstract class AbstractFeedItemlistAdapter extends BaseAdapter {
- private List<FeedItem> objects;
+ ItemAccess itemAccess;
- public AbstractFeedItemlistAdapter(Context context, int textViewResourceId,
- List<FeedItem> objects) {
- super(context, textViewResourceId, objects);
- this.objects = objects;
+ public AbstractFeedItemlistAdapter(ItemAccess itemAccess) {
+ super();
+ if (itemAccess == null) {
+ throw new IllegalArgumentException("itemAccess must not be null");
+ }
+ this.itemAccess = itemAccess;
}
@Override
public int getCount() {
- if (UserPreferences.isDisplayOnlyEpisodes()) {
- return EpisodeFilter.countItemsWithEpisodes(objects);
- } else {
- return super.getCount();
- }
-
+ return itemAccess.getCount();
+
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
}
@Override
public FeedItem getItem(int position) {
- if (UserPreferences.isDisplayOnlyEpisodes()) {
- return EpisodeFilter.accessEpisodeByIndex(objects, position);
- } else {
- return super.getItem(position);
- }
+ return itemAccess.getItem(position);
+ }
+
+ public static interface ItemAccess {
+ int getCount();
+
+ FeedItem getItem(int position);
}
}
diff --git a/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
index ce339be88..c0ccdc7fe 100644
--- a/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
@@ -1,39 +1,40 @@
package de.danoeh.antennapod.adapter;
import java.text.DateFormat;
-import java.util.List;
import android.content.Context;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
+import android.widget.BaseAdapter;
import android.widget.TextView;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.asynctask.DownloadStatus;
import de.danoeh.antennapod.feed.Feed;
-import de.danoeh.antennapod.feed.FeedFile;
import de.danoeh.antennapod.feed.FeedImage;
+import de.danoeh.antennapod.feed.FeedManager;
import de.danoeh.antennapod.feed.FeedMedia;
import de.danoeh.antennapod.util.DownloadError;
/** Displays a list of DownloadStatus entries. */
-public class DownloadLogAdapter extends ArrayAdapter<DownloadStatus> {
+public class DownloadLogAdapter extends BaseAdapter {
- public DownloadLogAdapter(Context context, int textViewResourceId,
- List<DownloadStatus> objects) {
- super(context, textViewResourceId, objects);
+ private Context context;
+ private FeedManager manager = FeedManager.getInstance();
+
+ public DownloadLogAdapter(Context context) {
+ super();
+ this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
DownloadStatus status = getItem(position);
- FeedFile feedfile = status.getFeedFile();
if (convertView == null) {
holder = new Holder();
- LayoutInflater inflater = (LayoutInflater) getContext()
+ LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.downloadlog_item, null);
holder.title = (TextView) convertView.findViewById(R.id.txtvTitle);
@@ -71,7 +72,7 @@ public class DownloadLogAdapter extends ArrayAdapter<DownloadStatus> {
holder.successful.setTextColor(convertView.getResources().getColor(
R.color.download_failed_red));
holder.successful.setText(R.string.download_failed);
- String reasonText = DownloadError.getErrorString(getContext(),
+ String reasonText = DownloadError.getErrorString(context,
status.getReason());
if (status.getReasonDetailed() != null) {
reasonText += ": " + status.getReasonDetailed();
@@ -91,4 +92,19 @@ public class DownloadLogAdapter extends ArrayAdapter<DownloadStatus> {
TextView reason;
}
+ @Override
+ public int getCount() {
+ return manager.getDownloadLogSize();
+ }
+
+ @Override
+ public DownloadStatus getItem(int position) {
+ return manager.getDownloadStatusFromLogAtIndex(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
}
diff --git a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java b/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
index b03dd0c1f..3b5fed7b5 100644
--- a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
@@ -23,16 +23,20 @@ import de.danoeh.antennapod.util.Converter;
import de.danoeh.antennapod.util.ThemeUtils;
public class FeedItemlistAdapter extends AbstractFeedItemlistAdapter {
+
+ private Context context;
+
private ActionButtonCallback callback;
private boolean showFeedtitle;
private int selectedItemIndex;
public static final int SELECTION_NONE = -1;
- public FeedItemlistAdapter(Context context, int textViewResourceId,
- List<FeedItem> objects, ActionButtonCallback callback,
- boolean showFeedtitle) {
- super(context, textViewResourceId, objects);
+ public FeedItemlistAdapter(Context context,
+ AbstractFeedItemlistAdapter.ItemAccess itemAccess,
+ ActionButtonCallback callback, boolean showFeedtitle) {
+ super(itemAccess);
+ this.context = context;
this.callback = callback;
this.showFeedtitle = showFeedtitle;
this.selectedItemIndex = SELECTION_NONE;
@@ -45,7 +49,7 @@ public class FeedItemlistAdapter extends AbstractFeedItemlistAdapter {
if (convertView == null) {
holder = new Holder();
- LayoutInflater inflater = (LayoutInflater) getContext()
+ LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.feeditemlist_item, null);
holder.title = (TextView) convertView
@@ -160,7 +164,7 @@ public class FeedItemlistAdapter extends AbstractFeedItemlistAdapter {
holder.downloading.setVisibility(View.GONE);
}
- TypedArray typeDrawables = getContext().obtainStyledAttributes(
+ TypedArray typeDrawables = context.obtainStyledAttributes(
new int[] { R.attr.type_audio, R.attr.type_video });
MediaType mediaType = item.getMedia().getMediaType();
if (mediaType == MediaType.AUDIO) {
diff --git a/src/de/danoeh/antennapod/adapter/FeedlistAdapter.java b/src/de/danoeh/antennapod/adapter/FeedlistAdapter.java
index f89f2854a..09284ab49 100644
--- a/src/de/danoeh/antennapod/adapter/FeedlistAdapter.java
+++ b/src/de/danoeh/antennapod/adapter/FeedlistAdapter.java
@@ -9,24 +9,29 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
+import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.asynctask.FeedImageLoader;
import de.danoeh.antennapod.feed.Feed;
+import de.danoeh.antennapod.feed.FeedManager;
import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.ThemeUtils;
-public class FeedlistAdapter extends ArrayAdapter<Feed> {
+public class FeedlistAdapter extends BaseAdapter {
private static final String TAG = "FeedlistAdapter";
+ private Context context;
+ private FeedManager manager = FeedManager.getInstance();
+
private int selectedItemIndex;
private FeedImageLoader imageLoader;
public static final int SELECTION_NONE = -1;
- public FeedlistAdapter(Context context, int textViewResourceId,
- List<Feed> objects) {
- super(context, textViewResourceId, objects);
+ public FeedlistAdapter(Context context) {
+ super();
+ this.context = context;
selectedItemIndex = SELECTION_NONE;
imageLoader = FeedImageLoader.getInstance();
}
@@ -39,7 +44,7 @@ public class FeedlistAdapter extends ArrayAdapter<Feed> {
// Inflate Layout
if (convertView == null) {
holder = new Holder();
- LayoutInflater inflater = (LayoutInflater) getContext()
+ LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.feedlist_item, null);
@@ -83,7 +88,7 @@ public class FeedlistAdapter extends ArrayAdapter<Feed> {
.getTime(), System.currentTimeMillis(),
DateFormat.MEDIUM, DateFormat.SHORT));
}
- holder.numberOfEpisodes.setText(feed.getNumOfItems()
+ holder.numberOfEpisodes.setText(feed.getNumOfItems(true)
+ convertView.getResources()
.getString(R.string.episodes_suffix));
@@ -136,4 +141,19 @@ public class FeedlistAdapter extends ArrayAdapter<Feed> {
notifyDataSetChanged();
}
+ @Override
+ public int getCount() {
+ return manager.getFeedsSize();
+ }
+
+ @Override
+ public Feed getItem(int position) {
+ return manager.getFeedAtIndex(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
}