From 072639b5b22e816df9f78b5cd8a7d4e5379b6aff Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Wed, 17 Sep 2014 20:51:45 +0200 Subject: Changed project structure Switched from custom layout to standard gradle project structure --- .../antennapod/adapter/ActionButtonCallback.java | 8 - .../antennapod/adapter/ActionButtonUtils.java | 78 ------ src/de/danoeh/antennapod/adapter/AdapterUtils.java | 57 ---- .../antennapod/adapter/ChapterListAdapter.java | 180 ------------ .../adapter/DefaultActionButtonCallback.java | 57 ---- .../antennapod/adapter/DownloadLogAdapter.java | 112 -------- .../adapter/DownloadedEpisodesListAdapter.java | 122 -------- .../antennapod/adapter/DownloadlistAdapter.java | 142 ---------- .../adapter/ExternalEpisodesListAdapter.java | 306 --------------------- .../antennapod/adapter/FeedItemlistAdapter.java | 220 --------------- .../adapter/FeedItemlistDescriptionAdapter.java | 55 ---- .../danoeh/antennapod/adapter/NavListAdapter.java | 229 --------------- .../antennapod/adapter/NewEpisodesListAdapter.java | 170 ------------ .../antennapod/adapter/QueueListAdapter.java | 127 --------- .../antennapod/adapter/SearchlistAdapter.java | 110 -------- .../adapter/gpodnet/PodcastListAdapter.java | 64 ----- 16 files changed, 2037 deletions(-) delete mode 100644 src/de/danoeh/antennapod/adapter/ActionButtonCallback.java delete mode 100644 src/de/danoeh/antennapod/adapter/ActionButtonUtils.java delete mode 100644 src/de/danoeh/antennapod/adapter/AdapterUtils.java delete mode 100644 src/de/danoeh/antennapod/adapter/ChapterListAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java delete mode 100644 src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/DownloadlistAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/ExternalEpisodesListAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/NavListAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/QueueListAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/SearchlistAdapter.java delete mode 100644 src/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java (limited to 'src/de/danoeh/antennapod/adapter') diff --git a/src/de/danoeh/antennapod/adapter/ActionButtonCallback.java b/src/de/danoeh/antennapod/adapter/ActionButtonCallback.java deleted file mode 100644 index 30ad2d03f..000000000 --- a/src/de/danoeh/antennapod/adapter/ActionButtonCallback.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import de.danoeh.antennapod.feed.FeedItem; - -public interface ActionButtonCallback { - /** Is called when the action button of a list item has been pressed. */ - abstract void onActionButtonPressed(FeedItem item); -} diff --git a/src/de/danoeh/antennapod/adapter/ActionButtonUtils.java b/src/de/danoeh/antennapod/adapter/ActionButtonUtils.java deleted file mode 100644 index 1de071a73..000000000 --- a/src/de/danoeh/antennapod/adapter/ActionButtonUtils.java +++ /dev/null @@ -1,78 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.content.res.TypedArray; -import android.view.View; -import android.widget.ImageButton; - -import org.apache.commons.lang3.Validate; - -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.feed.FeedMedia; -import de.danoeh.antennapod.storage.DownloadRequester; - -/** - * Utility methods for the action button that is displayed on the right hand side - * of a listitem. - */ -public class ActionButtonUtils { - - private final int[] labels; - private final TypedArray drawables; - private final Context context; - - public ActionButtonUtils(Context context) { - Validate.notNull(context); - - this.context = context; - drawables = context.obtainStyledAttributes(new int[]{ - R.attr.av_play, R.attr.navigation_cancel, R.attr.av_download, R.attr.navigation_chapters, R.attr.navigation_accept}); - labels = new int[]{R.string.play_label, R.string.cancel_download_label, R.string.download_label, R.string.mark_read_label}; - } - - /** - * Sets the displayed bitmap and content description of the given - * action button so that it matches the state of the FeedItem. - */ - public void configureActionButton(ImageButton butSecondary, FeedItem item) { - Validate.isTrue(butSecondary != null && item != null, "butSecondary or item was null"); - - final FeedMedia media = item.getMedia(); - if (media != null) { - final boolean isDownloadingMedia = DownloadRequester.getInstance().isDownloadingFile(media); - if (!media.isDownloaded()) { - if (isDownloadingMedia) { - // item is being downloaded - butSecondary.setVisibility(View.VISIBLE); - butSecondary.setImageDrawable(drawables - .getDrawable(1)); - butSecondary.setContentDescription(context.getString(labels[1])); - } else { - // item is not downloaded and not being downloaded - butSecondary.setVisibility(View.VISIBLE); - butSecondary.setImageDrawable(drawables.getDrawable(2)); - butSecondary.setContentDescription(context.getString(labels[2])); - } - } else { - // item is not being downloaded - butSecondary.setVisibility(View.VISIBLE); - if (media.isPlaying()) { - butSecondary.setImageDrawable(drawables.getDrawable(3)); - } else { - butSecondary - .setImageDrawable(drawables.getDrawable(0)); - } - butSecondary.setContentDescription(context.getString(labels[0])); - } - } else { - if (item.isRead()) { - butSecondary.setVisibility(View.INVISIBLE); - } else { - butSecondary.setVisibility(View.VISIBLE); - butSecondary.setImageDrawable(drawables.getDrawable(4)); - butSecondary.setContentDescription(context.getString(labels[3])); - } - } - } -} diff --git a/src/de/danoeh/antennapod/adapter/AdapterUtils.java b/src/de/danoeh/antennapod/adapter/AdapterUtils.java deleted file mode 100644 index f393fb7d7..000000000 --- a/src/de/danoeh/antennapod/adapter/AdapterUtils.java +++ /dev/null @@ -1,57 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.res.Resources; -import android.view.View; -import android.widget.ProgressBar; -import android.widget.TextView; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.feed.FeedMedia; -import de.danoeh.antennapod.util.Converter; - -/** - * Utility methods for adapters - */ -public class AdapterUtils { - - private AdapterUtils() { - - } - - /** - * Updates the contents of the TextView that shows the current playback position and the ProgressBar. - */ - public static void updateEpisodePlaybackProgress(FeedItem item, Resources res, TextView txtvPos, ProgressBar episodeProgress) { - FeedMedia media = item.getMedia(); - episodeProgress.setVisibility(View.GONE); - if (media == null) { - txtvPos.setVisibility(View.GONE); - return; - } else { - txtvPos.setVisibility(View.VISIBLE); - } - - FeedItem.State state = item.getState(); - if (state == FeedItem.State.PLAYING - || state == FeedItem.State.IN_PROGRESS) { - if (media.getDuration() > 0) { - episodeProgress.setVisibility(View.VISIBLE); - episodeProgress - .setProgress((int) (((double) media - .getPosition()) / media.getDuration() * 100)); - txtvPos.setText(Converter - .getDurationStringLong(media.getDuration() - - media.getPosition())); - } - } else if (!media.isDownloaded()) { - txtvPos.setText(res.getString( - R.string.size_prefix) - + Converter.byteToString(media.getSize())); - } else { - txtvPos.setText(res.getString( - R.string.length_prefix) - + Converter.getDurationStringLong(media - .getDuration())); - } - } -} diff --git a/src/de/danoeh/antennapod/adapter/ChapterListAdapter.java b/src/de/danoeh/antennapod/adapter/ChapterListAdapter.java deleted file mode 100644 index c12de6ebd..000000000 --- a/src/de/danoeh/antennapod/adapter/ChapterListAdapter.java +++ /dev/null @@ -1,180 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.text.Layout; -import android.text.Selection; -import android.text.Spannable; -import android.text.Spanned; -import android.text.style.ClickableSpan; -import android.text.util.Linkify; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.View.OnTouchListener; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.TextView; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.feed.Chapter; -import de.danoeh.antennapod.util.ChapterUtils; -import de.danoeh.antennapod.util.Converter; -import de.danoeh.antennapod.util.playback.Playable; - -import java.util.List; - -public class ChapterListAdapter extends ArrayAdapter { - - private static final String TAG = "ChapterListAdapter"; - - private List chapters; - private Playable media; - - private int defaultTextColor; - - public ChapterListAdapter(Context context, int textViewResourceId, - List objects, Playable media) { - super(context, textViewResourceId, objects); - this.chapters = objects; - this.media = media; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - Holder holder; - - Chapter sc = getItem(position); - - // Inflate Layout - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) getContext() - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - convertView = inflater.inflate(R.layout.simplechapter_item, parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - defaultTextColor = holder.title.getTextColors().getDefaultColor(); - holder.start = (TextView) convertView.findViewById(R.id.txtvStart); - holder.link = (TextView) convertView.findViewById(R.id.txtvLink); - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - - } - - holder.title.setText(sc.getTitle()); - holder.start.setText(Converter.getDurationStringLong((int) sc - .getStart())); - if (sc.getLink() != null) { - holder.link.setVisibility(View.VISIBLE); - holder.link.setText(sc.getLink()); - Linkify.addLinks(holder.link, Linkify.WEB_URLS); - } else { - holder.link.setVisibility(View.GONE); - } - holder.link.setMovementMethod(null); - holder.link.setOnTouchListener(new OnTouchListener() { - - @Override - public boolean onTouch(View v, MotionEvent event) { - // from - // http://stackoverflow.com/questions/7236840/android-textview-linkify-intercepts-with-parent-view-gestures - TextView widget = (TextView) v; - Object text = widget.getText(); - if (text instanceof Spanned) { - Spannable buffer = (Spannable) text; - - int action = event.getAction(); - - if (action == MotionEvent.ACTION_UP - || action == MotionEvent.ACTION_DOWN) { - int x = (int) event.getX(); - int y = (int) event.getY(); - - x -= widget.getTotalPaddingLeft(); - y -= widget.getTotalPaddingTop(); - - x += widget.getScrollX(); - y += widget.getScrollY(); - - Layout layout = widget.getLayout(); - int line = layout.getLineForVertical(y); - int off = layout.getOffsetForHorizontal(line, x); - - ClickableSpan[] link = buffer.getSpans(off, off, - ClickableSpan.class); - - if (link.length != 0) { - if (action == MotionEvent.ACTION_UP) { - link[0].onClick(widget); - } else if (action == MotionEvent.ACTION_DOWN) { - Selection.setSelection(buffer, - buffer.getSpanStart(link[0]), - buffer.getSpanEnd(link[0])); - } - return true; - } - } - - } - - return false; - - } - }); - Chapter current = ChapterUtils.getCurrentChapter(media); - if (current != null) { - if (current == sc) { - holder.title.setTextColor(convertView.getResources().getColor( - R.color.bright_blue)); - holder.start.setTextColor(convertView.getResources().getColor( - R.color.bright_blue)); - } else { - holder.title.setTextColor(defaultTextColor); - holder.start.setTextColor(defaultTextColor); - } - } else { - Log.w(TAG, "Could not find out what the current chapter is."); - } - - return convertView; - } - - static class Holder { - TextView title; - TextView start; - TextView link; - } - - @Override - public int getCount() { - // ignore invalid chapters - int counter = 0; - for (Chapter chapter : chapters) { - if (!ignoreChapter(chapter)) { - counter++; - } - } - return counter; - } - - private boolean ignoreChapter(Chapter c) { - return media.getDuration() > 0 && media.getDuration() < c.getStart(); - } - - @Override - public Chapter getItem(int position) { - int i = 0; - for (Chapter chapter : chapters) { - if (!ignoreChapter(chapter)) { - if (i == position) { - return chapter; - } else { - i++; - } - } - } - return super.getItem(position); - } - -} diff --git a/src/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java b/src/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java deleted file mode 100644 index 0c4cbe685..000000000 --- a/src/de/danoeh/antennapod/adapter/DefaultActionButtonCallback.java +++ /dev/null @@ -1,57 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.widget.Toast; - -import org.apache.commons.lang3.Validate; - -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator; -import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.feed.FeedMedia; -import de.danoeh.antennapod.storage.DBTasks; -import de.danoeh.antennapod.storage.DBWriter; -import de.danoeh.antennapod.storage.DownloadRequestException; -import de.danoeh.antennapod.storage.DownloadRequester; - -/** - * Default implementation of an ActionButtonCallback - */ -public class DefaultActionButtonCallback implements ActionButtonCallback { - private static final String TAG = "DefaultActionButtonCallback"; - - private final Context context; - - public DefaultActionButtonCallback(Context context) { - Validate.notNull(context); - this.context = context; - } - - @Override - public void onActionButtonPressed(final FeedItem item) { - - - if (item.hasMedia()) { - final FeedMedia media = item.getMedia(); - boolean isDownloading = DownloadRequester.getInstance().isDownloadingFile(media); - if (!isDownloading && !media.isDownloaded()) { - try { - DBTasks.downloadFeedItems(context, item); - Toast.makeText(context, R.string.status_downloading_label, Toast.LENGTH_SHORT).show(); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage()); - } - } else if (isDownloading) { - DownloadRequester.getInstance().cancelDownload(context, media); - Toast.makeText(context, R.string.download_cancelled_msg, Toast.LENGTH_SHORT).show(); - } else { // media is downloaded - DBTasks.playMedia(context, media, true, true, false); - } - } else { - if (!item.isRead()) { - DBWriter.markItemRead(context, item, true, true); - } - } - } -} diff --git a/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java deleted file mode 100644 index 2cc216227..000000000 --- a/src/de/danoeh/antennapod/adapter/DownloadLogAdapter.java +++ /dev/null @@ -1,112 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.text.format.DateUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.TextView; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.feed.Feed; -import de.danoeh.antennapod.feed.FeedImage; -import de.danoeh.antennapod.feed.FeedMedia; -import de.danoeh.antennapod.service.download.DownloadStatus; - -/** Displays a list of DownloadStatus entries. */ -public class DownloadLogAdapter extends BaseAdapter { - - private Context context; - - private ItemAccess itemAccess; - - public DownloadLogAdapter(Context context, ItemAccess itemAccess) { - super(); - this.itemAccess = itemAccess; - this.context = context; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - Holder holder; - DownloadStatus status = getItem(position); - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.downloadlog_item, parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.type = (TextView) convertView.findViewById(R.id.txtvType); - holder.date = (TextView) convertView.findViewById(R.id.txtvDate); - holder.successful = (TextView) convertView - .findViewById(R.id.txtvStatus); - holder.reason = (TextView) convertView - .findViewById(R.id.txtvReason); - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - if (status.getFeedfileType() == Feed.FEEDFILETYPE_FEED) { - holder.type.setText(R.string.download_type_feed); - } else if (status.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA) { - holder.type.setText(R.string.download_type_media); - } else if (status.getFeedfileType() == FeedImage.FEEDFILETYPE_FEEDIMAGE) { - holder.type.setText(R.string.download_type_image); - } - if (status.getTitle() != null) { - holder.title.setText(status.getTitle()); - } else { - holder.title.setText(R.string.download_log_title_unknown); - } - holder.date.setText(DateUtils.getRelativeTimeSpanString( - status.getCompletionDate().getTime(), - System.currentTimeMillis(), 0, 0)); - if (status.isSuccessful()) { - holder.successful.setTextColor(convertView.getResources().getColor( - R.color.download_success_green)); - holder.successful.setText(R.string.download_successful); - holder.reason.setVisibility(View.GONE); - } else { - holder.successful.setTextColor(convertView.getResources().getColor( - R.color.download_failed_red)); - holder.successful.setText(R.string.download_failed); - String reasonText = status.getReason().getErrorString(context); - if (status.getReasonDetailed() != null) { - reasonText += ": " + status.getReasonDetailed(); - } - holder.reason.setText(reasonText); - holder.reason.setVisibility(View.VISIBLE); - } - - return convertView; - } - - static class Holder { - TextView title; - TextView type; - TextView date; - TextView successful; - TextView reason; - } - - @Override - public int getCount() { - return itemAccess.getCount(); - } - - @Override - public DownloadStatus getItem(int position) { - return itemAccess.getItem(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - public static interface ItemAccess { - public int getCount(); - public DownloadStatus getItem(int position); - } - -} diff --git a/src/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java b/src/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java deleted file mode 100644 index ef5af67de..000000000 --- a/src/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java +++ /dev/null @@ -1,122 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.text.format.DateUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.TextView; - -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.asynctask.PicassoProvider; -import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.util.Converter; - -/** - * Shows a list of downloaded episodes - */ -public class DownloadedEpisodesListAdapter extends BaseAdapter { - - private final Context context; - private final ItemAccess itemAccess; - - private final int imageSize; - - public DownloadedEpisodesListAdapter(Context context, ItemAccess itemAccess) { - super(); - this.context = context; - this.itemAccess = itemAccess; - this.imageSize = (int) context.getResources().getDimension(R.dimen.thumbnail_length_downloaded_item); - } - - @Override - public int getCount() { - return itemAccess.getCount(); - } - - @Override - public FeedItem getItem(int position) { - return itemAccess.getItem(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - Holder holder; - final FeedItem item = (FeedItem) getItem(position); - if (item == null) return null; - - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.downloaded_episodeslist_item, - parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.pubDate = (TextView) convertView - .findViewById(R.id.txtvPublished); - holder.butSecondary = (ImageButton) convertView - .findViewById(R.id.butSecondaryAction); - holder.imageView = (ImageView) convertView.findViewById(R.id.imgvImage); - holder.txtvSize = (TextView) convertView.findViewById(R.id.txtvSize); - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - - holder.title.setText(item.getTitle()); - holder.pubDate.setText(DateUtils.formatDateTime(context, item.getPubDate().getTime(), DateUtils.FORMAT_SHOW_DATE)); - holder.txtvSize.setText(Converter.byteToString(item.getMedia().getSize())); - FeedItem.State state = item.getState(); - - if (state == FeedItem.State.PLAYING) { - holder.butSecondary.setEnabled(false); - } else { - holder.butSecondary.setEnabled(true); - } - - holder.butSecondary.setFocusable(false); - holder.butSecondary.setTag(item); - holder.butSecondary.setOnClickListener(secondaryActionListener); - - - PicassoProvider.getMediaMetadataPicassoInstance(context) - .load(item.getImageUri()) - .fit() - .into(holder.imageView); - - return convertView; - } - - private View.OnClickListener secondaryActionListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - FeedItem item = (FeedItem) v.getTag(); - itemAccess.onFeedItemSecondaryAction(item); - } - }; - - - static class Holder { - TextView title; - TextView pubDate; - ImageView imageView; - TextView txtvSize; - ImageButton butSecondary; - } - - public interface ItemAccess { - int getCount(); - - FeedItem getItem(int position); - - void onFeedItemSecondaryAction(FeedItem item); - } -} diff --git a/src/de/danoeh/antennapod/adapter/DownloadlistAdapter.java b/src/de/danoeh/antennapod/adapter/DownloadlistAdapter.java deleted file mode 100644 index 658af9e4e..000000000 --- a/src/de/danoeh/antennapod/adapter/DownloadlistAdapter.java +++ /dev/null @@ -1,142 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageButton; -import android.widget.ProgressBar; -import android.widget.TextView; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.service.download.DownloadRequest; -import de.danoeh.antennapod.service.download.DownloadStatus; -import de.danoeh.antennapod.service.download.Downloader; -import de.danoeh.antennapod.util.Converter; -import de.danoeh.antennapod.util.ThemeUtils; - -public class DownloadlistAdapter extends BaseAdapter { - - public static final int SELECTION_NONE = -1; - - private int selectedItemIndex; - private ItemAccess itemAccess; - private Context context; - - public DownloadlistAdapter(Context context, - ItemAccess itemAccess) { - super(); - this.selectedItemIndex = SELECTION_NONE; - this.context = context; - this.itemAccess = itemAccess; - } - - @Override - public int getCount() { - return itemAccess.getCount(); - } - - @Override - public Downloader getItem(int position) { - return itemAccess.getItem(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - Holder holder; - Downloader downloader = getItem(position); - DownloadRequest request = downloader.getDownloadRequest(); - // Inflate layout - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.downloadlist_item, parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.message = (TextView) convertView - .findViewById(R.id.txtvMessage); - holder.downloaded = (TextView) convertView - .findViewById(R.id.txtvDownloaded); - holder.percent = (TextView) convertView - .findViewById(R.id.txtvPercent); - holder.progbar = (ProgressBar) convertView - .findViewById(R.id.progProgress); - holder.butSecondary = (ImageButton) convertView - .findViewById(R.id.butSecondaryAction); - - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - - if (position == selectedItemIndex) { - convertView.setBackgroundColor(convertView.getResources().getColor( - ThemeUtils.getSelectionBackgroundColor())); - } else { - convertView.setBackgroundResource(0); - } - - holder.title.setText(request.getTitle()); - if (request.getStatusMsg() != 0) { - holder.message.setText(request.getStatusMsg()); - } - String strDownloaded = Converter.byteToString(request.getSoFar()); - if (request.getSize() != DownloadStatus.SIZE_UNKNOWN) { - strDownloaded += " / " + Converter.byteToString(request.getSize()); - holder.percent.setText(request.getProgressPercent() + "%"); - holder.progbar.setProgress(request.getProgressPercent()); - holder.percent.setVisibility(View.VISIBLE); - } else { - holder.progbar.setProgress(0); - holder.percent.setVisibility(View.INVISIBLE); - } - - holder.downloaded.setText(strDownloaded); - - holder.butSecondary.setFocusable(false); - holder.butSecondary.setTag(downloader); - holder.butSecondary.setOnClickListener(butSecondaryListener); - - return convertView; - } - - private View.OnClickListener butSecondaryListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - Downloader downloader = (Downloader) v.getTag(); - itemAccess.onSecondaryActionClick(downloader); - } - }; - - static class Holder { - TextView title; - TextView message; - TextView downloaded; - TextView percent; - ProgressBar progbar; - ImageButton butSecondary; - } - - public int getSelectedItemIndex() { - return selectedItemIndex; - } - - public void setSelectedItemIndex(int selectedItemIndex) { - this.selectedItemIndex = selectedItemIndex; - notifyDataSetChanged(); - } - - public interface ItemAccess { - public int getCount(); - - public Downloader getItem(int position); - - public void onSecondaryActionClick(Downloader downloader); - } - -} diff --git a/src/de/danoeh/antennapod/adapter/ExternalEpisodesListAdapter.java b/src/de/danoeh/antennapod/adapter/ExternalEpisodesListAdapter.java deleted file mode 100644 index 3f666eb8b..000000000 --- a/src/de/danoeh/antennapod/adapter/ExternalEpisodesListAdapter.java +++ /dev/null @@ -1,306 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.content.res.TypedArray; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.widget.BaseExpandableListAdapter; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; - -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.asynctask.PicassoProvider; -import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.feed.FeedMedia; -import de.danoeh.antennapod.storage.DownloadRequester; -import de.danoeh.antennapod.util.Converter; - -/** - * Displays unread items and items in the queue in one combined list. The - * structure of this list is: [header] [queueItems] [header] [unreadItems]. - */ -public class ExternalEpisodesListAdapter extends BaseExpandableListAdapter { - private static final String TAG = "ExternalEpisodesListAdapter"; - - public static final int GROUP_POS_QUEUE = 0; - public static final int GROUP_POS_UNREAD = 1; - - private Context context; - private ItemAccess itemAccess; - - private ActionButtonCallback feedItemActionCallback; - private OnGroupActionClicked groupActionCallback; - - private final int imageSize; - - public ExternalEpisodesListAdapter(Context context, - ActionButtonCallback callback, - OnGroupActionClicked groupActionCallback, - ItemAccess itemAccess) { - super(); - this.context = context; - this.itemAccess = itemAccess; - this.feedItemActionCallback = callback; - this.groupActionCallback = groupActionCallback; - this.imageSize = (int) context.getResources().getDimension(R.dimen.thumbnail_length); - } - - @Override - public boolean areAllItemsEnabled() { - return true; - } - - @Override - public FeedItem getChild(int groupPosition, int childPosition) { - if (groupPosition == GROUP_POS_QUEUE) { - return itemAccess.getQueueItemAt(childPosition); - } else if (groupPosition == GROUP_POS_UNREAD) { - return itemAccess.getUnreadItemAt(childPosition); - } - return null; - } - - @Override - public long getChildId(int groupPosition, int childPosition) { - return childPosition; - } - - @Override - public View getChildView(int groupPosition, final int childPosition, - boolean isLastChild, View convertView, ViewGroup parent) { - Holder holder; - final FeedItem item = getChild(groupPosition, childPosition); - - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.external_itemlist_item, - parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.feedTitle = (TextView) convertView - .findViewById(R.id.txtvFeedname); - holder.lenSize = (TextView) convertView - .findViewById(R.id.txtvLenSize); - holder.downloadStatus = (ImageView) convertView - .findViewById(R.id.imgvDownloadStatus); - holder.feedImage = (ImageView) convertView - .findViewById(R.id.imgvFeedimage); - holder.butAction = (ImageButton) convertView - .findViewById(R.id.butAction); - holder.statusPlaying = (View) convertView - .findViewById(R.id.statusPlaying); - holder.episodeProgress = (ProgressBar) convertView - .findViewById(R.id.pbar_episode_progress); - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - - holder.title.setText(item.getTitle()); - holder.feedTitle.setText(item.getFeed().getTitle()); - FeedItem.State state = item.getState(); - - if (groupPosition == GROUP_POS_QUEUE) { - switch (state) { - case PLAYING: - holder.statusPlaying.setVisibility(View.VISIBLE); - holder.episodeProgress.setVisibility(View.VISIBLE); - break; - case IN_PROGRESS: - holder.statusPlaying.setVisibility(View.GONE); - holder.episodeProgress.setVisibility(View.VISIBLE); - break; - case NEW: - holder.statusPlaying.setVisibility(View.GONE); - holder.episodeProgress.setVisibility(View.GONE); - break; - default: - holder.statusPlaying.setVisibility(View.GONE); - holder.episodeProgress.setVisibility(View.GONE); - break; - } - } else { - holder.statusPlaying.setVisibility(View.GONE); - holder.episodeProgress.setVisibility(View.GONE); - } - - FeedMedia media = item.getMedia(); - if (media != null) { - - if (state == FeedItem.State.PLAYING - || state == FeedItem.State.IN_PROGRESS) { - if (media.getDuration() > 0) { - holder.episodeProgress.setProgress((int) (((double) media - .getPosition()) / media.getDuration() * 100)); - holder.lenSize.setText(Converter - .getDurationStringLong(media.getDuration() - - media.getPosition())); - } - } else if (!media.isDownloaded()) { - holder.lenSize.setText(context.getString(R.string.size_prefix) - + Converter.byteToString(media.getSize())); - } else { - holder.lenSize.setText(context - .getString(R.string.length_prefix) - + Converter.getDurationStringLong(media.getDuration())); - } - - TypedArray drawables = context.obtainStyledAttributes(new int[]{ - R.attr.av_download, R.attr.navigation_refresh}); - final int[] labels = new int[]{R.string.status_downloaded_label, R.string.downloading_label}; - holder.lenSize.setVisibility(View.VISIBLE); - if (!media.isDownloaded()) { - if (DownloadRequester.getInstance().isDownloadingFile(media)) { - holder.downloadStatus.setVisibility(View.VISIBLE); - holder.downloadStatus.setImageDrawable(drawables - .getDrawable(1)); - holder.downloadStatus.setContentDescription(context.getString(labels[1])); - } else { - holder.downloadStatus.setVisibility(View.INVISIBLE); - } - } else { - holder.downloadStatus.setVisibility(View.VISIBLE); - holder.downloadStatus - .setImageDrawable(drawables.getDrawable(0)); - holder.downloadStatus.setContentDescription(context.getString(labels[0])); - } - } else { - holder.downloadStatus.setVisibility(View.INVISIBLE); - holder.lenSize.setVisibility(View.INVISIBLE); - } - - PicassoProvider.getMediaMetadataPicassoInstance(context) - .load(item.getImageUri()) - .fit() - .into(holder.feedImage); - - holder.butAction.setFocusable(false); - holder.butAction.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - feedItemActionCallback.onActionButtonPressed(item); - } - }); - - return convertView; - - } - - static class Holder { - TextView title; - TextView feedTitle; - TextView lenSize; - ImageView downloadStatus; - ImageView feedImage; - ImageButton butAction; - View statusPlaying; - ProgressBar episodeProgress; - } - - @Override - public int getChildrenCount(int groupPosition) { - if (groupPosition == GROUP_POS_QUEUE) { - return itemAccess.getQueueSize(); - } else if (groupPosition == GROUP_POS_UNREAD) { - return itemAccess.getUnreadItemsSize(); - } - return 0; - } - - @Override - public int getGroupCount() { - // Hide 'unread items' group if empty - if (itemAccess.getUnreadItemsSize() > 0) { - return 2; - } else { - return 1; - } - } - - @Override - public long getGroupId(int groupPosition) { - return groupPosition; - } - - @Override - public View getGroupView(final int groupPosition, boolean isExpanded, - View convertView, ViewGroup parent) { - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.feeditemlist_header, parent, false); - TextView headerTitle = (TextView) convertView - .findViewById(0); - ImageButton actionButton = (ImageButton) convertView - .findViewById(R.id.butAction); - TextView numItems = (TextView) convertView.findViewById(0); - - String headerString = null; - int childrenCount = 0; - - if (groupPosition == 0) { - headerString = context.getString(R.string.queue_label); - childrenCount = getChildrenCount(GROUP_POS_QUEUE); - } else { - headerString = context.getString(R.string.waiting_list_label); - childrenCount = getChildrenCount(GROUP_POS_UNREAD); - } - headerTitle.setText(headerString); - if (childrenCount <= 0) { - numItems.setVisibility(View.INVISIBLE); - } else { - numItems.setVisibility(View.VISIBLE); - numItems.setText(Integer.toString(childrenCount)); - } - actionButton.setFocusable(false); - actionButton.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - groupActionCallback.onClick(getGroupId(groupPosition)); - } - }); - return convertView; - } - - @Override - public boolean isEmpty() { - return itemAccess.getUnreadItemsSize() == 0 - && itemAccess.getQueueSize() == 0; - } - - @Override - public Object getGroup(int groupPosition) { - return null; - } - - @Override - public boolean hasStableIds() { - return true; - } - - @Override - public boolean isChildSelectable(int groupPosition, int childPosition) { - return true; - } - - public interface OnGroupActionClicked { - public void onClick(long groupId); - } - - public static interface ItemAccess { - public int getQueueSize(); - - public int getUnreadItemsSize(); - - public FeedItem getQueueItemAt(int position); - - public FeedItem getUnreadItemAt(int position); - } - -} diff --git a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java b/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java deleted file mode 100644 index 357b5f8b4..000000000 --- a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java +++ /dev/null @@ -1,220 +0,0 @@ -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; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.widget.*; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.feed.FeedMedia; -import de.danoeh.antennapod.feed.MediaType; -import de.danoeh.antennapod.storage.DownloadRequester; -import de.danoeh.antennapod.util.Converter; -import de.danoeh.antennapod.util.ThemeUtils; - -/** - * List adapter for items of feeds that the user has already subscribed to. - */ -public class FeedItemlistAdapter extends BaseAdapter { - - private ActionButtonCallback callback; - private final ItemAccess itemAccess; - private final Context context; - private boolean showFeedtitle; - private int selectedItemIndex; - private final ActionButtonUtils actionButtonUtils; - - public static final int SELECTION_NONE = -1; - - public FeedItemlistAdapter(Context context, - ItemAccess itemAccess, - ActionButtonCallback callback, boolean showFeedtitle) { - super(); - this.callback = callback; - this.context = context; - this.itemAccess = itemAccess; - this.showFeedtitle = showFeedtitle; - this.selectedItemIndex = SELECTION_NONE; - this.actionButtonUtils = new ActionButtonUtils(context); - } - - @Override - public int getCount() { - return itemAccess.getCount(); - - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public FeedItem getItem(int position) { - return itemAccess.getItem(position); - } - - @Override - public View getView(final int position, View convertView, ViewGroup parent) { - Holder holder; - final FeedItem item = getItem(position); - - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.feeditemlist_item, parent, false); - holder.title = (TextView) convertView - .findViewById(R.id.txtvItemname); - holder.lenSize = (TextView) convertView - .findViewById(R.id.txtvLenSize); - holder.butAction = (ImageButton) convertView - .findViewById(R.id.butSecondaryAction); - holder.published = (TextView) convertView - .findViewById(R.id.txtvPublished); - holder.inPlaylist = (ImageView) convertView - .findViewById(R.id.imgvInPlaylist); - holder.type = (ImageView) convertView.findViewById(R.id.imgvType); - holder.statusUnread = (View) convertView - .findViewById(R.id.statusUnread); - holder.episodeProgress = (ProgressBar) convertView - .findViewById(R.id.pbar_episode_progress); - - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - if (!(getItemViewType(position) == Adapter.IGNORE_ITEM_VIEW_TYPE)) { - convertView.setVisibility(View.VISIBLE); - if (position == selectedItemIndex) { - convertView.setBackgroundColor(convertView.getResources() - .getColor(ThemeUtils.getSelectionBackgroundColor())); - } else { - convertView.setBackgroundResource(0); - } - - StringBuilder buffer = new StringBuilder(item.getTitle()); - if (showFeedtitle) { - buffer.append("("); - buffer.append(item.getFeed().getTitle()); - buffer.append(")"); - } - holder.title.setText(buffer.toString()); - - FeedItem.State state = item.getState(); - switch (state) { - case PLAYING: - holder.statusUnread.setVisibility(View.GONE); - holder.episodeProgress.setVisibility(View.VISIBLE); - break; - case IN_PROGRESS: - holder.statusUnread.setVisibility(View.GONE); - holder.episodeProgress.setVisibility(View.VISIBLE); - break; - case NEW: - holder.statusUnread.setVisibility(View.VISIBLE); - break; - default: - holder.statusUnread.setVisibility(View.GONE); - break; - } - - holder.published.setText(DateUtils.formatDateTime(context, item.getPubDate().getTime(), DateUtils.FORMAT_SHOW_DATE)); - - - FeedMedia media = item.getMedia(); - if (media == null) { - holder.episodeProgress.setVisibility(View.GONE); - holder.inPlaylist.setVisibility(View.INVISIBLE); - holder.type.setVisibility(View.INVISIBLE); - holder.lenSize.setVisibility(View.INVISIBLE); - } else { - - AdapterUtils.updateEpisodePlaybackProgress(item, context.getResources(), holder.lenSize, holder.episodeProgress); - - if (((ItemAccess) itemAccess).isInQueue(item)) { - holder.inPlaylist.setVisibility(View.VISIBLE); - } else { - holder.inPlaylist.setVisibility(View.INVISIBLE); - } - - if (DownloadRequester.getInstance().isDownloadingFile( - item.getMedia())) { - holder.episodeProgress.setVisibility(View.VISIBLE); - holder.episodeProgress.setProgress(((ItemAccess) itemAccess).getItemDownloadProgressPercent(item)); - } - - TypedArray typeDrawables = context.obtainStyledAttributes( - new int[]{R.attr.type_audio, R.attr.type_video}); - final int[] labels = new int[]{R.string.media_type_audio_label, R.string.media_type_video_label}; - - MediaType mediaType = item.getMedia().getMediaType(); - if (mediaType == MediaType.AUDIO) { - holder.type.setImageDrawable(typeDrawables.getDrawable(0)); - holder.type.setContentDescription(context.getString(labels[0])); - holder.type.setVisibility(View.VISIBLE); - } else if (mediaType == MediaType.VIDEO) { - holder.type.setImageDrawable(typeDrawables.getDrawable(1)); - holder.type.setContentDescription(context.getString(labels[1])); - holder.type.setVisibility(View.VISIBLE); - } else { - holder.type.setImageBitmap(null); - holder.type.setVisibility(View.GONE); - } - } - - actionButtonUtils.configureActionButton(holder.butAction, item); - holder.butAction.setFocusable(false); - holder.butAction.setTag(item); - holder.butAction.setOnClickListener(butActionListener); - - } else { - convertView.setVisibility(View.GONE); - } - return convertView; - - } - - private final OnClickListener butActionListener = new OnClickListener() { - @Override - public void onClick(View v) { - FeedItem item = (FeedItem) v.getTag(); - callback.onActionButtonPressed(item); - } - }; - - static class Holder { - TextView title; - TextView published; - TextView lenSize; - ImageView type; - ImageView inPlaylist; - ImageButton butAction; - View statusUnread; - ProgressBar episodeProgress; - } - - public int getSelectedItemIndex() { - return selectedItemIndex; - } - - public void setSelectedItemIndex(int selectedItemIndex) { - this.selectedItemIndex = selectedItemIndex; - notifyDataSetChanged(); - } - - public static interface ItemAccess { - public boolean isInQueue(FeedItem item); - - int getItemDownloadProgressPercent(FeedItem item); - - int getCount(); - - FeedItem getItem(int position); - } - -} diff --git a/src/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java b/src/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java deleted file mode 100644 index c2c2285ac..000000000 --- a/src/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java +++ /dev/null @@ -1,55 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.TextView; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.feed.FeedItem; - -import java.util.List; - -/** - * List adapter for showing a list of FeedItems with their title and description. - */ -public class FeedItemlistDescriptionAdapter extends ArrayAdapter { - - public FeedItemlistDescriptionAdapter(Context context, int resource, List objects) { - super(context, resource, objects); - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - Holder holder; - - FeedItem item = getItem(position); - - // Inflate layout - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) getContext() - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.itemdescription_listitem, parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.description = (TextView) convertView.findViewById(R.id.txtvDescription); - - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - - holder.title.setText(item.getTitle()); - if (item.getDescription() != null) { - holder.description.setText(item.getDescription()); - } - - return convertView; - } - - static class Holder { - TextView title; - TextView description; - } -} diff --git a/src/de/danoeh/antennapod/adapter/NavListAdapter.java b/src/de/danoeh/antennapod/adapter/NavListAdapter.java deleted file mode 100644 index ef8e8ce07..000000000 --- a/src/de/danoeh/antennapod/adapter/NavListAdapter.java +++ /dev/null @@ -1,229 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Typeface; -import android.graphics.drawable.Drawable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.TextView; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.asynctask.PicassoProvider; -import de.danoeh.antennapod.feed.Feed; - -/** - * BaseAdapter for the navigation drawer - */ -public class NavListAdapter extends BaseAdapter { - public static final int VIEW_TYPE_COUNT = 3; - public static final int VIEW_TYPE_NAV = 0; - 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.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; - - public static final int SUBSCRIPTION_OFFSET = 1 + NAV_TITLES.length; - - private ItemAccess itemAccess; - private Context context; - - public NavListAdapter(ItemAccess itemAccess, Context context) { - this.itemAccess = itemAccess; - this.context = context; - - TypedArray ta = context.obtainStyledAttributes(new int[]{R.attr.ic_new, R.attr.stat_playlist, - R.attr.av_download, R.attr.device_access_time, R.attr.content_new}); - drawables = new Drawable[]{ta.getDrawable(0), ta.getDrawable(1), ta.getDrawable(2), - ta.getDrawable(3), ta.getDrawable(4)}; - ta.recycle(); - } - - @Override - public int getCount() { - return NAV_TITLES.length + 1 + itemAccess.getCount(); - } - - @Override - public Object getItem(int position) { - int viewType = getItemViewType(position); - if (viewType == VIEW_TYPE_NAV) { - return context.getString(NAV_TITLES[position]); - } else if (viewType == VIEW_TYPE_SECTION_DIVIDER) { - return context.getString(R.string.podcasts_label); - } else { - return itemAccess.getItem(position); - } - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public int getItemViewType(int position) { - if (0 <= position && position < NAV_TITLES.length) { - return VIEW_TYPE_NAV; - } else if (position < NAV_TITLES.length + 1) { - return VIEW_TYPE_SECTION_DIVIDER; - } else { - return VIEW_TYPE_SUBSCRIPTION; - } - } - - @Override - public int getViewTypeCount() { - return VIEW_TYPE_COUNT; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - int viewType = getItemViewType(position); - View v = null; - if (viewType == VIEW_TYPE_NAV) { - v = getNavView((String) getItem(position), position, convertView, parent); - } else if (viewType == VIEW_TYPE_SECTION_DIVIDER) { - v = getSectionDividerView((String) getItem(position), position, convertView, parent); - } else { - v = getFeedView(position - SUBSCRIPTION_OFFSET, convertView, parent); - } - if (v != null) { - TextView txtvTitle = (TextView) v.findViewById(R.id.txtvTitle); - if (position == itemAccess.getSelectedItemIndex()) { - txtvTitle.setTypeface(null, Typeface.BOLD); - } else { - txtvTitle.setTypeface(null, Typeface.NORMAL); - } - } - return v; - } - - private View getNavView(String title, int position, View convertView, ViewGroup parent) { - NavHolder holder; - if (convertView == null) { - holder = new NavHolder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - convertView = inflater.inflate(R.layout.nav_listitem, parent, false); - - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.count = (TextView) convertView.findViewById(R.id.txtvCount); - holder.image = (ImageView) convertView.findViewById(R.id.imgvCover); - convertView.setTag(holder); - } else { - holder = (NavHolder) convertView.getTag(); - } - - holder.title.setText(title); - - if (NAV_TITLES[position] == R.string.queue_label) { - int queueSize = itemAccess.getQueueSize(); - if (queueSize > 0) { - holder.count.setVisibility(View.VISIBLE); - holder.count.setText(String.valueOf(queueSize)); - } else { - holder.count.setVisibility(View.GONE); - } - } else if (NAV_TITLES[position] == R.string.all_episodes_label) { - int unreadItems = itemAccess.getNumberOfUnreadItems(); - if (unreadItems > 0) { - holder.count.setVisibility(View.VISIBLE); - holder.count.setText(String.valueOf(unreadItems)); - } else { - holder.count.setVisibility(View.GONE); - } - } else { - holder.count.setVisibility(View.GONE); - } - - holder.image.setImageDrawable(drawables[position]); - - return convertView; - } - - private View getSectionDividerView(String title, int position, View convertView, ViewGroup parent) { - SectionHolder holder; - if (convertView == null) { - holder = new SectionHolder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - convertView = inflater.inflate(R.layout.nav_section_item, parent, false); - - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - convertView.setTag(holder); - } else { - holder = (SectionHolder) convertView.getTag(); - } - - holder.title.setText(title); - - convertView.setEnabled(false); - convertView.setOnClickListener(null); - - return convertView; - } - - private View getFeedView(int feedPos, View convertView, ViewGroup parent) { - FeedHolder holder; - Feed feed = itemAccess.getItem(feedPos); - - if (convertView == null) { - holder = new FeedHolder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - convertView = inflater.inflate(R.layout.nav_feedlistitem, parent, false); - - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.image = (ImageView) convertView.findViewById(R.id.imgvCover); - convertView.setTag(holder); - } else { - holder = (FeedHolder) convertView.getTag(); - } - - holder.title.setText(feed.getTitle()); - - PicassoProvider.getDefaultPicassoInstance(context) - .load(feed.getImageUri()) - .fit() - .into(holder.image); - - return convertView; - } - - static class NavHolder { - TextView title; - TextView count; - ImageView image; - } - - static class SectionHolder { - TextView title; - } - - static class FeedHolder { - TextView title; - ImageView image; - } - - - public interface ItemAccess { - public int getCount(); - - public Feed getItem(int position); - - public int getSelectedItemIndex(); - - public int getQueueSize(); - - public int getNumberOfUnreadItems(); - } - -} diff --git a/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java b/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java deleted file mode 100644 index 8abe49133..000000000 --- a/src/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java +++ /dev/null @@ -1,170 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.text.format.DateUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; - -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.asynctask.PicassoProvider; -import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.feed.FeedMedia; -import de.danoeh.antennapod.storage.DownloadRequester; -import de.danoeh.antennapod.util.Converter; - -/** - * List adapter for the list of new episodes - */ -public class NewEpisodesListAdapter extends BaseAdapter { - - private final Context context; - private final ItemAccess itemAccess; - private final ActionButtonCallback actionButtonCallback; - private final ActionButtonUtils actionButtonUtils; - - public NewEpisodesListAdapter(Context context, ItemAccess itemAccess, ActionButtonCallback actionButtonCallback) { - super(); - this.context = context; - this.itemAccess = itemAccess; - this.actionButtonUtils = new ActionButtonUtils(context); - this.actionButtonCallback = actionButtonCallback; - } - - @Override - public int getCount() { - return itemAccess.getCount(); - } - - @Override - public Object getItem(int position) { - return itemAccess.getItem(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public int getViewTypeCount() { - return 1; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - Holder holder; - final FeedItem item = (FeedItem) getItem(position); - if (item == null) return null; - - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.new_episodes_listitem, - parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.pubDate = (TextView) convertView - .findViewById(R.id.txtvPublished); - holder.statusUnread = convertView.findViewById(R.id.statusUnread); - holder.butSecondary = (ImageButton) convertView - .findViewById(R.id.butSecondaryAction); - holder.queueStatus = (ImageView) convertView - .findViewById(R.id.imgvInPlaylist); - holder.downloadProgress = (ProgressBar) convertView - .findViewById(R.id.pbar_download_progress); - holder.imageView = (ImageView) convertView.findViewById(R.id.imgvImage); - holder.txtvDuration = (TextView) convertView.findViewById(R.id.txtvDuration); - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - - holder.title.setText(item.getTitle()); - holder.pubDate.setText(DateUtils.formatDateTime(context, item.getPubDate().getTime(), DateUtils.FORMAT_SHOW_DATE)); - if (item.isRead()) { - holder.statusUnread.setVisibility(View.GONE); - } else { - holder.statusUnread.setVisibility(View.VISIBLE); - } - - FeedMedia media = item.getMedia(); - if (media != null) { - final boolean isDownloadingMedia = DownloadRequester.getInstance().isDownloadingFile(media); - - if (media.getDuration() > 0) { - holder.txtvDuration.setText(Converter.getDurationStringLong(media.getDuration())); - } else { - holder.txtvDuration.setText(""); - } - - if (isDownloadingMedia) { - holder.downloadProgress.setVisibility(View.VISIBLE); - holder.txtvDuration.setVisibility(View.GONE); - } else { - holder.txtvDuration.setVisibility(View.VISIBLE); - holder.downloadProgress.setVisibility(View.GONE); - } - - if (!media.isDownloaded()) { - if (isDownloadingMedia) { - // item is being downloaded - holder.downloadProgress.setProgress(itemAccess.getItemDownloadProgressPercent(item)); - } - } - } - if (itemAccess.isInQueue(item)) { - holder.queueStatus.setVisibility(View.VISIBLE); - } else { - holder.queueStatus.setVisibility(View.INVISIBLE); - } - - actionButtonUtils.configureActionButton(holder.butSecondary, item); - holder.butSecondary.setFocusable(false); - holder.butSecondary.setTag(item); - holder.butSecondary.setOnClickListener(secondaryActionListener); - - PicassoProvider.getMediaMetadataPicassoInstance(context) - .load(item.getImageUri()) - .fit() - .into(holder.imageView); - - return convertView; - } - - private View.OnClickListener secondaryActionListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - FeedItem item = (FeedItem) v.getTag(); - actionButtonCallback.onActionButtonPressed(item); - } - }; - - - static class Holder { - TextView title; - TextView pubDate; - View statusUnread; - ImageView queueStatus; - ImageView imageView; - ProgressBar downloadProgress; - TextView txtvDuration; - ImageButton butSecondary; - } - - public interface ItemAccess { - - int getCount(); - - FeedItem getItem(int position); - - int getItemDownloadProgressPercent(FeedItem item); - - boolean isInQueue(FeedItem item); - } -} diff --git a/src/de/danoeh/antennapod/adapter/QueueListAdapter.java b/src/de/danoeh/antennapod/adapter/QueueListAdapter.java deleted file mode 100644 index ebe519592..000000000 --- a/src/de/danoeh/antennapod/adapter/QueueListAdapter.java +++ /dev/null @@ -1,127 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.*; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.asynctask.PicassoProvider; -import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.feed.FeedMedia; -import de.danoeh.antennapod.storage.DownloadRequester; - -/** - * List adapter for the queue. - */ -public class QueueListAdapter extends BaseAdapter { - - - private final Context context; - private final ItemAccess itemAccess; - private final ActionButtonCallback actionButtonCallback; - private final ActionButtonUtils actionButtonUtils; - - - public QueueListAdapter(Context context, ItemAccess itemAccess, ActionButtonCallback actionButtonCallback) { - super(); - this.context = context; - this.itemAccess = itemAccess; - this.actionButtonUtils = new ActionButtonUtils(context); - this.actionButtonCallback = actionButtonCallback; - } - - @Override - public int getCount() { - return itemAccess.getCount(); - } - - @Override - public Object getItem(int position) { - return itemAccess.getItem(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - Holder holder; - final FeedItem item = (FeedItem) getItem(position); - if (item == null) return null; - - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.queue_listitem, - parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.butSecondary = (ImageButton) convertView - .findViewById(R.id.butSecondaryAction); - holder.position = (TextView) convertView.findViewById(R.id.txtvPosition); - holder.progress = (ProgressBar) convertView - .findViewById(R.id.pbar_download_progress); - holder.imageView = (ImageView) convertView.findViewById(R.id.imgvImage); - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - - holder.title.setText(item.getTitle()); - - AdapterUtils.updateEpisodePlaybackProgress(item, context.getResources(), holder.position, holder.progress); - - FeedMedia media = item.getMedia(); - if (media != null) { - final boolean isDownloadingMedia = DownloadRequester.getInstance().isDownloadingFile(media); - - if (!media.isDownloaded()) { - if (isDownloadingMedia) { - // item is being downloaded - holder.progress.setVisibility(View.VISIBLE); - holder.progress.setProgress(itemAccess.getItemDownloadProgressPercent(item)); - } - } - } - - actionButtonUtils.configureActionButton(holder.butSecondary, item); - holder.butSecondary.setFocusable(false); - holder.butSecondary.setTag(item); - holder.butSecondary.setOnClickListener(secondaryActionListener); - - PicassoProvider.getMediaMetadataPicassoInstance(context) - .load(item.getImageUri()) - .fit() - .into(holder.imageView); - - return convertView; - } - - private View.OnClickListener secondaryActionListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - FeedItem item = (FeedItem) v.getTag(); - actionButtonCallback.onActionButtonPressed(item); - } - }; - - - static class Holder { - TextView title; - ImageView imageView; - TextView position; - ProgressBar progress; - ImageButton butSecondary; - } - - public interface ItemAccess { - int getCount(); - - FeedItem getItem(int position); - - int getItemDownloadProgressPercent(FeedItem item); - } -} diff --git a/src/de/danoeh/antennapod/adapter/SearchlistAdapter.java b/src/de/danoeh/antennapod/adapter/SearchlistAdapter.java deleted file mode 100644 index 2314c2269..000000000 --- a/src/de/danoeh/antennapod/adapter/SearchlistAdapter.java +++ /dev/null @@ -1,110 +0,0 @@ -package de.danoeh.antennapod.adapter; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.TextView; - -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.asynctask.PicassoProvider; -import de.danoeh.antennapod.feed.Feed; -import de.danoeh.antennapod.feed.FeedComponent; -import de.danoeh.antennapod.feed.FeedItem; -import de.danoeh.antennapod.feed.SearchResult; - -/** - * List adapter for search activity. - */ -public class SearchlistAdapter extends BaseAdapter { - - private final Context context; - private final ItemAccess itemAccess; - - - public SearchlistAdapter(Context context, ItemAccess itemAccess) { - this.context = context; - this.itemAccess = itemAccess; - } - - @Override - public int getCount() { - return itemAccess.getCount(); - } - - @Override - public SearchResult getItem(int position) { - return itemAccess.getItem(position); - } - - @Override - public long getItemId(int position) { - return 0; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - final Holder holder; - SearchResult result = getItem(position); - FeedComponent component = result.getComponent(); - - // Inflate Layout - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - convertView = inflater.inflate(R.layout.searchlist_item, parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.cover = (ImageView) convertView - .findViewById(R.id.imgvFeedimage); - holder.subtitle = (TextView) convertView - .findViewById(R.id.txtvSubtitle); - - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - if (component.getClass() == Feed.class) { - final Feed feed = (Feed) component; - holder.title.setText(feed.getTitle()); - holder.subtitle.setVisibility(View.GONE); - - PicassoProvider.getDefaultPicassoInstance(context) - .load(feed.getImageUri()) - .fit() - .into(holder.cover); - - } else if (component.getClass() == FeedItem.class) { - final FeedItem item = (FeedItem) component; - holder.title.setText(item.getTitle()); - if (result.getSubtitle() != null) { - holder.subtitle.setVisibility(View.VISIBLE); - holder.subtitle.setText(result.getSubtitle()); - } - - PicassoProvider.getDefaultPicassoInstance(context) - .load(item.getFeed().getImageUri()) - .fit() - .into(holder.cover); - - } - - return convertView; - } - - static class Holder { - ImageView cover; - TextView title; - TextView subtitle; - } - - public static interface ItemAccess { - int getCount(); - - SearchResult getItem(int position); - } - -} diff --git a/src/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java b/src/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java deleted file mode 100644 index f2e78a57e..000000000 --- a/src/de/danoeh/antennapod/adapter/gpodnet/PodcastListAdapter.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.danoeh.antennapod.adapter.gpodnet; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.TextView; - -import java.util.List; - -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.asynctask.PicassoProvider; -import de.danoeh.antennapod.gpoddernet.model.GpodnetPodcast; - -/** - * Adapter for displaying a list of GPodnetPodcast-Objects. - */ -public class PodcastListAdapter extends ArrayAdapter { - - public PodcastListAdapter(Context context, int resource, List objects) { - super(context, resource, objects); - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - Holder holder; - - GpodnetPodcast podcast = getItem(position); - - // Inflate Layout - if (convertView == null) { - holder = new Holder(); - LayoutInflater inflater = (LayoutInflater) getContext() - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - convertView = inflater.inflate(R.layout.gpodnet_podcast_listitem, parent, false); - holder.title = (TextView) convertView.findViewById(R.id.txtvTitle); - holder.description = (TextView) convertView.findViewById(R.id.txtvDescription); - holder.image = (ImageView) convertView.findViewById(R.id.imgvCover); - - convertView.setTag(holder); - } else { - holder = (Holder) convertView.getTag(); - } - - holder.title.setText(podcast.getTitle()); - holder.description.setText(podcast.getDescription()); - - PicassoProvider.getDefaultPicassoInstance(convertView.getContext()) - .load(podcast.getLogoUrl()) - .fit() - .into(holder.image); - - return convertView; - } - - static class Holder { - TextView title; - TextView description; - ImageView image; - } -} -- cgit v1.2.3