diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2013-02-24 12:30:23 +0100 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2013-02-24 12:30:23 +0100 |
commit | f9e00f72a0dfeea3e5b9db8a522f7251e158dc7d (patch) | |
tree | 86396c75b933e10fe4adad579ade3bafa329b0f2 /src/de/danoeh/antennapod/adapter | |
parent | 56f199dc8c69d7e24d0e05613f9911c323cb46a6 (diff) | |
download | AntennaPod-f9e00f72a0dfeea3e5b9db8a522f7251e158dc7d.zip |
limited access to feed items, feeds, playback history and download log
Diffstat (limited to 'src/de/danoeh/antennapod/adapter')
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; + } + } |