diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-11-16 19:17:13 +0100 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-11-16 19:17:13 +0100 |
commit | a7831abf77a75b15681c3a4364d04950394dddab (patch) | |
tree | 3c87ebd327ded4441d424b64203ef3b9c234a7f1 /src/de | |
parent | 5c55b0922bbae266163f4c8557d8010753d94a51 (diff) | |
parent | b154865d60b6474b537437ae40ca99fd63d9562a (diff) | |
download | AntennaPod-a7831abf77a75b15681c3a4364d04950394dddab.zip |
Merge branch 'feed-item-labels' of git://github.com/patheticpat/AntennaPod into patheticpat-feed-item-labels
Conflicts:
src/de/danoeh/antennapod/feed/FeedItem.java
Diffstat (limited to 'src/de')
8 files changed, 92 insertions, 18 deletions
diff --git a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java b/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java index 050d7b493..5a1da7ef5 100644 --- a/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java +++ b/src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java @@ -14,7 +14,6 @@ import android.widget.Adapter; import android.widget.ArrayAdapter; import android.widget.ImageButton; import android.widget.ImageView; -import android.widget.RelativeLayout; import android.widget.TextView; import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; @@ -68,12 +67,12 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> { holder.type = (ImageView) convertView.findViewById(R.id.imgvType); holder.downloading = (ImageView) convertView .findViewById(R.id.imgvDownloading); - holder.encInfo = (RelativeLayout) convertView - .findViewById(R.id.enc_info); if (showFeedtitle) { holder.feedtitle = (TextView) convertView .findViewById(R.id.txtvFeedname); } + holder.statusLabel = (View) convertView + .findViewById(R.id.vStatusLabel); convertView.setTag(holder); } else { @@ -93,22 +92,34 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> { holder.feedtitle.setVisibility(View.VISIBLE); holder.feedtitle.setText(item.getFeed().getTitle()); } - if (!item.isRead()) { + + if (item.isInProgress()) { + holder.title.setTypeface(Typeface.DEFAULT_BOLD); + holder.statusLabel.setBackgroundColor(convertView.getResources().getColor(R.color.status_progress)); + holder.statusLabel.setVisibility(View.VISIBLE); + } else if (!item.isRead()) { holder.title.setTypeface(Typeface.DEFAULT_BOLD); + holder.statusLabel.setBackgroundColor(convertView.getResources().getColor(R.color.status_unread)); + holder.statusLabel.setVisibility(View.VISIBLE); } else { holder.title.setTypeface(Typeface.DEFAULT); + holder.statusLabel.setVisibility(View.INVISIBLE); } holder.published.setText(convertView.getResources().getString( R.string.published_prefix) + DateUtils.formatSameDayTime(item.getPubDate().getTime(), - System.currentTimeMillis(), DateFormat.SHORT, + System.currentTimeMillis(), DateFormat.MEDIUM, DateFormat.SHORT)); if (item.getMedia() == null) { - holder.encInfo.setVisibility(View.GONE); + holder.downloaded.setVisibility(View.GONE); + holder.downloading.setVisibility(View.GONE); + holder.inPlaylist.setVisibility(View.GONE); + holder.type.setVisibility(View.GONE); + holder.lenSize.setVisibility(View.GONE); } else { - holder.encInfo.setVisibility(View.VISIBLE); + holder.lenSize.setVisibility(View.VISIBLE); if (FeedManager.getInstance().isInQueue(item)) { holder.inPlaylist.setVisibility(View.VISIBLE); } else { @@ -139,10 +150,13 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> { MediaType mediaType = item.getMedia().getMediaType(); if (mediaType == MediaType.AUDIO) { holder.type.setImageResource(R.drawable.type_audio); + holder.type.setVisibility(View.VISIBLE); } else if (mediaType == MediaType.VIDEO) { holder.type.setImageResource(R.drawable.type_video); + holder.type.setVisibility(View.VISIBLE); } else { holder.type.setImageBitmap(null); + holder.type.setVisibility(View.GONE); } } @@ -165,7 +179,7 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> { ImageView type; ImageView downloading; ImageButton butAction; - RelativeLayout encInfo; + View statusLabel; } public int getSelectedItemIndex() { diff --git a/src/de/danoeh/antennapod/adapter/FeedlistAdapter.java b/src/de/danoeh/antennapod/adapter/FeedlistAdapter.java index 93aa2443e..2a5c449b1 100644 --- a/src/de/danoeh/antennapod/adapter/FeedlistAdapter.java +++ b/src/de/danoeh/antennapod/adapter/FeedlistAdapter.java @@ -47,6 +47,12 @@ public class FeedlistAdapter extends ArrayAdapter<Feed> { holder.newEpisodes = (TextView) convertView .findViewById(R.id.txtvNewEps); + holder.inProgressEpisodes = (TextView) convertView + .findViewById(R.id.txtvProgressEps); + holder.newEpisodesLabel = (View) convertView + .findViewById(R.id.lNewStatusLabel); + holder.inProgressEpisodesLabel = (View) convertView + .findViewById(R.id.lProgressStatusLabel); holder.image = (ImageView) convertView .findViewById(R.id.imgvFeedimage); holder.lastUpdate = (TextView) convertView @@ -74,18 +80,30 @@ public class FeedlistAdapter extends ArrayAdapter<Feed> { R.string.last_update_prefix) + DateUtils.formatSameDayTime(feed.getLastUpdate() .getTime(), System.currentTimeMillis(), - DateFormat.SHORT, DateFormat.SHORT)); + DateFormat.MEDIUM, DateFormat.SHORT)); } holder.numberOfEpisodes.setText(feed.getNumOfItems() + convertView.getResources() .getString(R.string.episodes_suffix)); + int newItems = feed.getNumOfNewItems(); + int inProgressItems = feed.getNumOfStartedItems(); + if (newItems > 0) { holder.newEpisodes.setText(Integer.toString(newItems)); - holder.newEpisodes.setVisibility(View.VISIBLE); + holder.newEpisodesLabel.setVisibility(View.VISIBLE); + } else { + holder.newEpisodesLabel.setVisibility(View.INVISIBLE); + } + + if (inProgressItems > 0) { + holder.inProgressEpisodes + .setText(Integer.toString(inProgressItems)); + holder.inProgressEpisodesLabel.setVisibility(View.VISIBLE); } else { - holder.newEpisodes.setVisibility(View.INVISIBLE); + holder.inProgressEpisodesLabel.setVisibility(View.INVISIBLE); } + holder.image.setTag(feed.getImage()); imageLoader.loadThumbnailBitmap( @@ -102,7 +120,10 @@ public class FeedlistAdapter extends ArrayAdapter<Feed> { TextView lastUpdate; TextView numberOfEpisodes; TextView newEpisodes; + TextView inProgressEpisodes; ImageView image; + View newEpisodesLabel; + View inProgressEpisodesLabel; } public int getSelectedItemIndex() { diff --git a/src/de/danoeh/antennapod/feed/Feed.java b/src/de/danoeh/antennapod/feed/Feed.java index 55256ea31..8ca82be62 100644 --- a/src/de/danoeh/antennapod/feed/Feed.java +++ b/src/de/danoeh/antennapod/feed/Feed.java @@ -84,6 +84,21 @@ public class Feed extends FeedFile { } /** + * Returns the number of FeedItems where the media started to play but + * wasn't finished yet. + * */ + public int getNumOfStartedItems() { + int count = 0; + + for (FeedItem item : items) { + if (item.isInProgress()) { + count++; + } + } + return count; + } + + /** * Returns true if at least one item in the itemlist is unread.If the * 'display only episodes' - preference is set to true, this method will * only count items with episodes. diff --git a/src/de/danoeh/antennapod/feed/FeedItem.java b/src/de/danoeh/antennapod/feed/FeedItem.java index 6227298df..7ce58d081 100644 --- a/src/de/danoeh/antennapod/feed/FeedItem.java +++ b/src/de/danoeh/antennapod/feed/FeedItem.java @@ -147,7 +147,18 @@ public class FeedItem extends FeedComponent { } public boolean isRead() { - return read; + return read || isInProgress(); + } + + public void setRead(boolean read) { + this.read = read; + if (media != null) { + media.setPosition(0); + } + } + + public boolean isInProgress() { + return (media != null && media.isInProgress()); } public String getContentEncoded() { @@ -186,6 +197,10 @@ public class FeedItem extends FeedComponent { this.itemIdentifier = itemIdentifier; } + public boolean hasMedia() { + return media != null; + } + public boolean isPlaying() { if (media != null) { if (PodcastApp.getCurrentlyPlayingMediaId() == media.getId()) { @@ -202,5 +217,4 @@ public class FeedItem extends FeedComponent { public void setCachedContentEncoded(String c) { cachedContentEncoded = new SoftReference<String>(c); } - } diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java index 7f4a1c5aa..0666261d4 100644 --- a/src/de/danoeh/antennapod/feed/FeedManager.java +++ b/src/de/danoeh/antennapod/feed/FeedManager.java @@ -379,8 +379,13 @@ public class FeedManager { if (AppConfig.DEBUG) Log.d(TAG, "Setting item with title " + item.getTitle() + " as read/unread"); - item.read = read; + + item.setRead(read); + setFeedItem(context, item); + if (item.hasMedia()) + setFeedMedia(context, item.getMedia()); + contentChanger.post(new Runnable() { @Override @@ -416,7 +421,7 @@ public class FeedManager { if (AppConfig.DEBUG) Log.d(TAG, "marking all items as read"); for (FeedItem item : unreadItems) { - item.read = true; + item.setRead(true); } final ArrayList<FeedItem> unreadItemsCopy = new ArrayList<FeedItem>( unreadItems); @@ -430,6 +435,8 @@ public class FeedManager { adapter.open(); for (FeedItem item : unreadItemsCopy) { setFeedItem(item, adapter); + if (item.hasMedia()) + setFeedMedia(context, item.getMedia()); } adapter.close(); } diff --git a/src/de/danoeh/antennapod/feed/FeedMedia.java b/src/de/danoeh/antennapod/feed/FeedMedia.java index 55e1f9bf3..357a642a6 100644 --- a/src/de/danoeh/antennapod/feed/FeedMedia.java +++ b/src/de/danoeh/antennapod/feed/FeedMedia.java @@ -118,4 +118,8 @@ public class FeedMedia extends FeedFile { this.playbackCompletionDate = playbackCompletionDate; } + public boolean isInProgress() { + return (this.position > 0); + } + } diff --git a/src/de/danoeh/antennapod/service/PlaybackService.java b/src/de/danoeh/antennapod/service/PlaybackService.java index 0bf7ab075..bb8f95798 100644 --- a/src/de/danoeh/antennapod/service/PlaybackService.java +++ b/src/de/danoeh/antennapod/service/PlaybackService.java @@ -688,7 +688,6 @@ public class PlaybackService extends Service { .getDefaultSharedPreferences(getApplicationContext()); // Save state cancelPositionSaver(); - media.setPosition(0); media.setPlaybackCompletionDate(new Date()); manager.markItemRead(PlaybackService.this, media.getItem(), true); FeedItem nextItem = manager diff --git a/src/de/danoeh/antennapod/util/menuhandler/FeedItemMenuHandler.java b/src/de/danoeh/antennapod/util/menuhandler/FeedItemMenuHandler.java index 91f199ce0..d6bc79ade 100644 --- a/src/de/danoeh/antennapod/util/menuhandler/FeedItemMenuHandler.java +++ b/src/de/danoeh/antennapod/util/menuhandler/FeedItemMenuHandler.java @@ -50,8 +50,8 @@ public class FeedItemMenuHandler { selectedItem.getLink() != null); menu.findItem(R.id.mark_unread_item).setVisible( - selectedItem.isRead() && AppConfig.DEBUG); - menu.findItem(R.id.mark_read_item).setVisible(!selectedItem.isRead()); + selectedItem.isRead() || selectedItem.isInProgress()); + menu.findItem(R.id.mark_read_item).setVisible(!selectedItem.isRead() || selectedItem.isInProgress()); if (selectedItem.getLink() != null) { menu.findItem(R.id.visit_website_item).setVisible(true); |