summaryrefslogtreecommitdiff
path: root/app/src/main/java/de
diff options
context:
space:
mode:
authorTom Hennen <tom.hennen@gmail.com>2016-03-27 12:51:24 -0400
committerTom Hennen <tom.hennen@gmail.com>2016-03-27 12:51:24 -0400
commit8e22b32cb79edbe8d637855d9aa8117210e7ac89 (patch)
tree5c5d47113c8d6b8cc0e423c85a64def4e93c9ac1 /app/src/main/java/de
parent1b030be7a01e40206d74c205d9994e47ea3f6406 (diff)
downloadAntennaPod-8e22b32cb79edbe8d637855d9aa8117210e7ac89.zip
added 'add podcast' and back now works properly
Diffstat (limited to 'app/src/main/java/de')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java67
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java55
3 files changed, 91 insertions, 35 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
index 1beef2071..5bb5e389c 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -679,10 +679,6 @@ public class MainActivity extends AppCompatActivity implements NavDrawerActivity
loadData();
}
- public void onEvent(SubscriptionFragment.SubscriptionEvent event) {
- loadFeedFragmentById(event.feed.getId(), null);
- }
-
public void onEventMainThread(ProgressEvent event) {
Log.d(TAG, "onEvent(" + event + ")");
switch(event.action) {
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
index 269d8410e..d10674819 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
@@ -2,9 +2,11 @@ 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;
@@ -14,55 +16,74 @@ 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 {
+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 Context context;
+ private final WeakReference<MainActivity> mainActivityRef;
- public SubscriptionsAdapter(Context context, NavListAdapter.ItemAccess itemAccess) {
+ public SubscriptionsAdapter(MainActivity mainActivity, NavListAdapter.ItemAccess itemAccess) {
this.itemAccess = itemAccess;
- this.context = context;
+ 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 itemAccess.getCount();
+ return 1 + itemAccess.getCount();
}
@Override
public Object getItem(int position) {
- return itemAccess.getItem(position);
+ if (position == ADD_POSITION) {
+ return ADD_ITEM_OBJ;
+ }
+ return itemAccess.getItem(getAdjustedPosition(position));
}
@Override
public long getItemId(int position) {
- return itemAccess.getItem(position).getId();
+ if (position == ADD_POSITION) {
+ return 0;
+ }
+ return itemAccess.getItem(getAdjustedPosition(position)).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
- final Feed feed = (Feed) getItem(position);
- if (feed == null) return null;
if (convertView == null) {
holder = new Holder();
LayoutInflater layoutInflater =
- (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ (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);
@@ -74,9 +95,23 @@ public class SubscriptionsAdapter extends BaseAdapter {
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(context)
+ Glide.with(mainActivityRef.get())
.load(feed.getImageUri())
.placeholder(R.color.light_gray)
.error(R.color.light_gray)
@@ -100,6 +135,16 @@ public class SubscriptionsAdapter extends BaseAdapter {
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;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
index d25d7f2c3..b3af107c7 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
@@ -29,7 +29,6 @@ import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.util.FeedItemUtil;
-import de.greenrobot.event.EventBus;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
@@ -76,18 +75,13 @@ public class SubscriptionFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- mSubscriptionAdapter = new SubscriptionsAdapter(getActivity(), mItemAccess);
+ mSubscriptionAdapter = new SubscriptionsAdapter((MainActivity)getActivity(), mItemAccess);
mSubscriptionGridLayout.setAdapter(mSubscriptionAdapter);
loadSubscriptions();
- mSubscriptionGridLayout.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- EventBus.getDefault().post(new SubscriptionEvent(mSubscriptionList.get(position)));
- }
- });
+ mSubscriptionGridLayout.setOnItemClickListener(mSubscriptionAdapter);
if (getActivity() instanceof MainActivity) {
((MainActivity) getActivity()).getSupportActionBar().setTitle(R.string.subscriptions_label);
@@ -115,9 +109,17 @@ public class SubscriptionFragment extends Fragment {
AdapterView.AdapterContextMenuInfo adapterInfo = (AdapterView.AdapterContextMenuInfo) menuInfo;
int position = adapterInfo.position;
+ Object selectedObject = mSubscriptionAdapter.getItem(position);
+ if (selectedObject.equals(SubscriptionsAdapter.ADD_ITEM_OBJ)) {
+ mPosition = position;
+ return;
+ }
+
+ Feed feed = (Feed)selectedObject;
+
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.nav_feed_context, menu);
- Feed feed = (Feed)mSubscriptionAdapter.getItem(position);
+
menu.setHeaderTitle(feed.getTitle());
mPosition = position;
@@ -131,13 +133,34 @@ public class SubscriptionFragment extends Fragment {
if(position < 0) {
return false;
}
- Feed feed = mDrawerData.feeds.get(position);
+
+ Object selectedObject = mSubscriptionAdapter.getItem(position);
+ if (selectedObject.equals(SubscriptionsAdapter.ADD_ITEM_OBJ)) {
+ // this is the add object, do nothing
+ return false;
+ }
+
+ Feed feed = (Feed)selectedObject;
switch(item.getItemId()) {
case R.id.mark_all_seen_item:
- DBWriter.markFeedSeen(feed.getId());
+ Observable.fromCallable(() -> DBWriter.markFeedSeen(feed.getId()))
+ .subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(result -> {
+ loadSubscriptions();
+ }, error -> {
+ Log.e(TAG, Log.getStackTraceString(error));
+ });
return true;
case R.id.mark_all_read_item:
- DBWriter.markFeedRead(feed.getId());
+ Observable.fromCallable(() -> DBWriter.markFeedRead(feed.getId()))
+ .subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(result -> {
+ loadSubscriptions();
+ }, error -> {
+ Log.e(TAG, Log.getStackTraceString(error));
+ });
return true;
case R.id.remove_item:
final FeedRemover remover = new FeedRemover(getContext(), feed) {
@@ -179,12 +202,4 @@ public class SubscriptionFragment extends Fragment {
public void onResume() {
super.onResume();
}
-
- public class SubscriptionEvent {
- public final Feed feed;
-
- SubscriptionEvent(Feed f) {
- feed = f;
- }
- }
}