summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/adapter
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java10
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java153
2 files changed, 162 insertions, 1 deletions
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 c98a2fac7..0227aeee4 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
@@ -19,6 +19,7 @@ import com.bumptech.glide.Glide;
import com.joanzapata.iconify.Iconify;
import com.joanzapata.iconify.widget.IconTextView;
+import de.danoeh.antennapod.fragment.SubscriptionFragment;
import org.apache.commons.lang3.ArrayUtils;
import java.util.ArrayList;
@@ -108,6 +109,9 @@ public class NavListAdapter extends BaseAdapter
case PlaybackHistoryFragment.TAG:
icon = R.attr.ic_history;
break;
+ case SubscriptionFragment.TAG:
+ icon = R.attr.ic_folder;
+ break;
case AddFeedFragment.TAG:
icon = R.attr.content_new;
break;
@@ -127,7 +131,11 @@ public class NavListAdapter extends BaseAdapter
@Override
public int getCount() {
- return getSubscriptionOffset() + itemAccess.getCount();
+ int baseCount = getSubscriptionOffset();
+ if (UserPreferences.showSubscriptionsInDrawer()) {
+ baseCount += itemAccess.getCount();
+ }
+ return baseCount;
}
@Override
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
new file mode 100644
index 000000000..d10674819
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
@@ -0,0 +1,153 @@
+package de.danoeh.antennapod.adapter;
+
+import android.content.Context;
+import android.net.Uri;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.drawable.GlideDrawable;
+import com.bumptech.glide.request.RequestListener;
+import com.bumptech.glide.request.target.Target;
+
+import java.lang.ref.WeakReference;
+
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.activity.MainActivity;
+import de.danoeh.antennapod.core.feed.Feed;
+import de.danoeh.antennapod.core.glide.ApGlideSettings;
+import de.danoeh.antennapod.fragment.AddFeedFragment;
+import de.danoeh.antennapod.fragment.ItemlistFragment;
+import jp.shts.android.library.TriangleLabelView;
+
+/**
+ * Adapter for subscriptions
+ */
+public class SubscriptionsAdapter extends BaseAdapter implements AdapterView.OnItemClickListener {
+
+ /** placeholder object that indicates item should be added */
+ public static final Object ADD_ITEM_OBJ = new Object();
+
+ /** the position in the view that holds the add item */
+ private static final int ADD_POSITION = 0;
+
+ private NavListAdapter.ItemAccess itemAccess;
+
+ private final WeakReference<MainActivity> mainActivityRef;
+
+ public SubscriptionsAdapter(MainActivity mainActivity, NavListAdapter.ItemAccess itemAccess) {
+ this.itemAccess = itemAccess;
+ this.mainActivityRef = new WeakReference<>(mainActivity);
+ }
+
+ public void setItemAccess(NavListAdapter.ItemAccess itemAccess) {
+ this.itemAccess = itemAccess;
+ }
+
+ private int getAdjustedPosition(int origPosition) {
+ return origPosition - 1;
+ }
+
+ @Override
+ public int getCount() {
+ return 1 + itemAccess.getCount();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ if (position == ADD_POSITION) {
+ return ADD_ITEM_OBJ;
+ }
+ return itemAccess.getItem(getAdjustedPosition(position));
+ }
+
+ @Override
+ public long getItemId(int position) {
+ if (position == ADD_POSITION) {
+ return 0;
+ }
+ return itemAccess.getItem(getAdjustedPosition(position)).getId();
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ Holder holder;
+
+ if (convertView == null) {
+ holder = new Holder();
+
+ LayoutInflater layoutInflater =
+ (LayoutInflater) mainActivityRef.get().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ convertView = layoutInflater.inflate(R.layout.subscription_item, parent, false);
+ holder.feedTitle = (TextView) convertView.findViewById(R.id.txtvTitle);
+ holder.imageView = (ImageView) convertView.findViewById(R.id.imgvCover);
+ holder.count = (TriangleLabelView) convertView.findViewById(R.id.triangleCountView);
+
+
+ convertView.setTag(holder);
+ } else {
+ holder = (Holder) convertView.getTag();
+ }
+
+ if (position == ADD_POSITION) {
+ holder.feedTitle.setText(R.string.add_feed_label);
+ holder.count.setVisibility(View.INVISIBLE);
+ Glide.with(mainActivityRef.get())
+ .load(R.drawable.ic_add_grey_600_48dp)
+ .dontAnimate()
+ .into(holder.imageView);
+ return convertView;
+ }
+
+ final Feed feed = (Feed) getItem(position);
+ if (feed == null) return null;
+
+ holder.feedTitle.setText(feed.getTitle());
+ holder.count.setVisibility(View.VISIBLE);
+ holder.count.setPrimaryText(String.valueOf(itemAccess.getFeedCounter(feed.getId())));
+ Glide.with(mainActivityRef.get())
+ .load(feed.getImageUri())
+ .placeholder(R.color.light_gray)
+ .error(R.color.light_gray)
+ .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
+ .fitCenter()
+ .dontAnimate()
+ .listener(new RequestListener<Uri, GlideDrawable>() {
+ @Override
+ public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
+ return false;
+ }
+
+ @Override
+ public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
+ holder.feedTitle.setVisibility(View.INVISIBLE);
+ return false;
+ }
+ })
+ .into(holder.imageView);
+
+ return convertView;
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ if (position == ADD_POSITION) {
+ mainActivityRef.get().loadChildFragment(new AddFeedFragment());
+ } else {
+ Fragment fragment = ItemlistFragment.newInstance(getItemId(position));
+ mainActivityRef.get().loadChildFragment(fragment);
+ }
+ }
+
+ static class Holder {
+ public TextView feedTitle;
+ public ImageView imageView;
+ public TriangleLabelView count;
+ }
+}