summaryrefslogtreecommitdiff
path: root/src/de
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-11-16 19:17:13 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2012-11-16 19:17:13 +0100
commita7831abf77a75b15681c3a4364d04950394dddab (patch)
tree3c87ebd327ded4441d424b64203ef3b9c234a7f1 /src/de
parent5c55b0922bbae266163f4c8557d8010753d94a51 (diff)
parentb154865d60b6474b537437ae40ca99fd63d9562a (diff)
downloadAntennaPod-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')
-rw-r--r--src/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java30
-rw-r--r--src/de/danoeh/antennapod/adapter/FeedlistAdapter.java27
-rw-r--r--src/de/danoeh/antennapod/feed/Feed.java15
-rw-r--r--src/de/danoeh/antennapod/feed/FeedItem.java18
-rw-r--r--src/de/danoeh/antennapod/feed/FeedManager.java11
-rw-r--r--src/de/danoeh/antennapod/feed/FeedMedia.java4
-rw-r--r--src/de/danoeh/antennapod/service/PlaybackService.java1
-rw-r--r--src/de/danoeh/antennapod/util/menuhandler/FeedItemMenuHandler.java4
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);