summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/adapter
diff options
context:
space:
mode:
authorTom Hennen <TomHennen@users.noreply.github.com>2015-05-20 18:20:03 -0400
committerTom Hennen <TomHennen@users.noreply.github.com>2015-05-20 18:20:03 -0400
commitba036e14990a6dd7e8a5076bdc20176532a4f417 (patch)
tree735d3c244c2e5a1266eb740521bf923c8264726c /app/src/main/java/de/danoeh/antennapod/adapter
parent3301342a761f614370a15afabeaf28a0b364913a (diff)
parent25cbb00b36df1e9378ed84478fa494e6d253b5dd (diff)
downloadAntennaPod-ba036e14990a6dd7e8a5076bdc20176532a4f417.zip
Merge pull request #808 from mfietz/feature/nav-indicators+new-redone
Nav indicators, context menus and new "new"
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesListAdapter.java (renamed from app/src/main/java/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java)12
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java37
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java49
3 files changed, 59 insertions, 39 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesListAdapter.java
index 7ad40340d..ea0c96be9 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/NewEpisodesListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesListAdapter.java
@@ -22,19 +22,22 @@ import de.danoeh.antennapod.core.util.Converter;
/**
* List adapter for the list of new episodes
*/
-public class NewEpisodesListAdapter extends BaseAdapter {
+public class AllEpisodesListAdapter extends BaseAdapter {
private final Context context;
private final ItemAccess itemAccess;
private final ActionButtonCallback actionButtonCallback;
private final ActionButtonUtils actionButtonUtils;
+ private final boolean showOnlyNewEpisodes;
- public NewEpisodesListAdapter(Context context, ItemAccess itemAccess, ActionButtonCallback actionButtonCallback) {
+ public AllEpisodesListAdapter(Context context, ItemAccess itemAccess, ActionButtonCallback actionButtonCallback,
+ boolean showOnlyNewEpisodes) {
super();
this.context = context;
this.itemAccess = itemAccess;
this.actionButtonUtils = new ActionButtonUtils(context);
this.actionButtonCallback = actionButtonCallback;
+ this.showOnlyNewEpisodes = showOnlyNewEpisodes;
}
@Override
@@ -88,7 +91,7 @@ public class NewEpisodesListAdapter extends BaseAdapter {
holder.title.setText(item.getTitle());
holder.pubDate.setText(DateUtils.formatDateTime(context, item.getPubDate().getTime(), DateUtils.FORMAT_ABBREV_ALL));
- if (item.isRead()) {
+ if (showOnlyNewEpisodes || item.isRead() || false == itemAccess.isNew(item)) {
holder.statusUnread.setVisibility(View.INVISIBLE);
} else {
holder.statusUnread.setVisibility(View.VISIBLE);
@@ -175,5 +178,8 @@ public class NewEpisodesListAdapter extends BaseAdapter {
int getItemDownloadProgressPercent(FeedItem item);
boolean isInQueue(FeedItem item);
+
+ boolean isNew(FeedItem item);
+
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
index 74fd4d9c0..b39e23d42 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
@@ -14,6 +14,8 @@ import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
+import com.nineoldandroids.view.ViewHelper;
+
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
@@ -110,22 +112,15 @@ public class FeedItemlistAdapter extends BaseAdapter {
}
holder.title.setText(buffer.toString());
- FeedItem.State state = item.getState();
- switch (state) {
- case PLAYING:
- holder.statusUnread.setVisibility(View.INVISIBLE);
- holder.episodeProgress.setVisibility(View.VISIBLE);
- break;
- case IN_PROGRESS:
- holder.statusUnread.setVisibility(View.INVISIBLE);
- holder.episodeProgress.setVisibility(View.VISIBLE);
- break;
- case NEW:
- holder.statusUnread.setVisibility(View.VISIBLE);
- break;
- default:
- holder.statusUnread.setVisibility(View.INVISIBLE);
- break;
+ if(false == item.isRead() && itemAccess.isNew(item)) {
+ holder.statusUnread.setVisibility(View.VISIBLE);
+ } else {
+ holder.statusUnread.setVisibility(View.INVISIBLE);
+ }
+ if(item.isRead()) {
+ ViewHelper.setAlpha(convertView, 0.5f);
+ } else {
+ ViewHelper.setAlpha(convertView, 1.0f);
}
holder.published.setText(DateUtils.formatDateTime(context, item.getPubDate().getTime(), DateUtils.FORMAT_ABBREV_ALL));
@@ -151,10 +146,10 @@ public class FeedItemlistAdapter extends BaseAdapter {
item.getMedia())) {
holder.episodeProgress.setVisibility(View.VISIBLE);
holder.episodeProgress.setProgress(((ItemAccess) itemAccess).getItemDownloadProgressPercent(item));
- holder.published.setVisibility(View.GONE);
} else {
- holder.episodeProgress.setVisibility(View.GONE);
- holder.published.setVisibility(View.VISIBLE);
+ if(media.getPosition() == 0) {
+ holder.episodeProgress.setVisibility(View.GONE);
+ }
}
TypedArray typeDrawables = context.obtainStyledAttributes(
@@ -217,6 +212,7 @@ public class FeedItemlistAdapter extends BaseAdapter {
}
public interface ItemAccess {
+
boolean isInQueue(FeedItem item);
int getItemDownloadProgressPercent(FeedItem item);
@@ -224,6 +220,9 @@ public class FeedItemlistAdapter extends BaseAdapter {
int getCount();
FeedItem getItem(int position);
+
+ boolean isNew(FeedItem item);
+
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
index 907093ad6..13982f57d 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
@@ -10,6 +10,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
+import android.widget.IconTextView;
import android.widget.ImageView;
import android.widget.TextView;
@@ -190,9 +191,9 @@ public class NavListAdapter extends BaseAdapter
convertView = inflater.inflate(R.layout.nav_listitem, parent, false);
+ holder.image = (ImageView) convertView.findViewById(R.id.imgvCover);
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();
@@ -209,7 +210,7 @@ public class NavListAdapter extends BaseAdapter
holder.count.setVisibility(View.GONE);
}
} else if (tags.get(position).equals(NewEpisodesFragment.TAG)) {
- int unreadItems = itemAccess.getNumberOfUnreadItems();
+ int unreadItems = itemAccess.getNumberOfNewItems();
if (unreadItems > 0) {
holder.count.setVisibility(View.VISIBLE);
holder.count.setText(String.valueOf(unreadItems));
@@ -248,45 +249,59 @@ public class NavListAdapter extends BaseAdapter
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);
+ holder.title = (TextView) convertView.findViewById(R.id.txtvTitle);
+ holder.failure = (IconTextView) convertView.findViewById(R.id.itxtvFailure);
+ holder.count = (TextView) convertView.findViewById(R.id.txtvCount);
convertView.setTag(holder);
} else {
holder = (FeedHolder) convertView.getTag();
}
- holder.title.setText(feed.getTitle());
-
Picasso.with(context)
.load(feed.getImageUri())
.fit()
.into(holder.image);
+ holder.title.setText(feed.getTitle());
+
+
+ if(feed.hasLastUpdateFailed()) {
+ holder.failure.setVisibility(View.VISIBLE);
+ } else {
+ holder.failure.setVisibility(View.GONE);
+ }
+ int feedUnreadItems = itemAccess.getNumberOfUnreadFeedItems(feed.getId());
+ if(feedUnreadItems > 0) {
+ holder.count.setVisibility(View.VISIBLE);
+ holder.count.setText(String.valueOf(feedUnreadItems));
+ holder.count.setTypeface(holder.title.getTypeface());
+ } else {
+ holder.count.setVisibility(View.INVISIBLE);
+ }
return convertView;
}
static class NavHolder {
+ ImageView image;
TextView title;
TextView count;
- ImageView image;
}
static class FeedHolder {
- TextView title;
ImageView image;
+ TextView title;
+ IconTextView failure;
+ TextView count;
}
-
public interface ItemAccess {
- public int getCount();
-
- public Feed getItem(int position);
-
- public int getSelectedItemIndex();
-
- public int getQueueSize();
-
- public int getNumberOfUnreadItems();
+ int getCount();
+ Feed getItem(int position);
+ int getSelectedItemIndex();
+ int getQueueSize();
+ int getNumberOfNewItems();
+ int getNumberOfUnreadFeedItems(long feedId);
}
}