summaryrefslogtreecommitdiff
path: root/src/de/podfetcher/fragment/ItemlistFragment.java
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-06-24 18:12:01 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-06-24 18:12:01 +0200
commit3e0937df7da4d096e9f486622bd53d9a9af60ea3 (patch)
tree4da83bfe24ca1fd1a5737c6cd0e1f45f1b9ecc1e /src/de/podfetcher/fragment/ItemlistFragment.java
parentb283eae1b9b15c092f49b86cfbecc400f60b1171 (diff)
downloadAntennaPod-3e0937df7da4d096e9f486622bd53d9a9af60ea3.zip
Changes in ItemlistFragment + improved application startup time
Diffstat (limited to 'src/de/podfetcher/fragment/ItemlistFragment.java')
-rw-r--r--src/de/podfetcher/fragment/ItemlistFragment.java153
1 files changed, 153 insertions, 0 deletions
diff --git a/src/de/podfetcher/fragment/ItemlistFragment.java b/src/de/podfetcher/fragment/ItemlistFragment.java
new file mode 100644
index 000000000..a7633f19f
--- /dev/null
+++ b/src/de/podfetcher/fragment/ItemlistFragment.java
@@ -0,0 +1,153 @@
+package de.podfetcher.fragment;
+
+import java.util.ArrayList;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.ListView;
+
+import com.actionbarsherlock.app.SherlockListFragment;
+import com.actionbarsherlock.view.ActionMode;
+import com.actionbarsherlock.view.Menu;
+import com.actionbarsherlock.view.MenuInflater;
+import com.actionbarsherlock.view.MenuItem;
+
+import de.podfetcher.R;
+import de.podfetcher.activity.ItemviewActivity;
+import de.podfetcher.adapter.FeedItemlistAdapter;
+import de.podfetcher.feed.FeedItem;
+import de.podfetcher.feed.FeedManager;
+import de.podfetcher.storage.DownloadRequester;
+import de.podfetcher.util.FeedItemMenuHandler;
+
+/** Displays a list of FeedItems. */
+public class ItemlistFragment extends SherlockListFragment {
+
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ this.getListView().setItemsCanFocus(true);
+ }
+
+ private static final String TAG = "FeedItemlistFragment";
+ public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.podfetcher.activity.selected_feeditem";
+ public static final String ARGUMENT_FEED_ID = "argument.de.podfetcher.feed_id";
+ protected FeedItemlistAdapter fila;
+ protected FeedManager manager;
+ protected DownloadRequester requester;
+
+ /** The feed which the activity displays */
+ protected ArrayList<FeedItem> items;
+
+ protected FeedItem selectedItem;
+ protected ActionMode mActionMode;
+
+ public ItemlistFragment(ArrayList<FeedItem> items) {
+ super();
+ this.items = items;
+ manager = FeedManager.getInstance();
+ requester = DownloadRequester.getInstance();
+ }
+
+ public ItemlistFragment() {
+ }
+
+ public static ItemlistFragment newInstance(long feedId) {
+ ItemlistFragment i = new ItemlistFragment();
+ Bundle b = new Bundle();
+ b.putLong(ARGUMENT_FEED_ID, feedId);
+ i.setArguments(b);
+ return i;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (items == null) {
+ long feedId = getArguments().getLong(ARGUMENT_FEED_ID);
+ items = FeedManager.getInstance().getFeed(feedId).getItems();
+ }
+ fila = new FeedItemlistAdapter(getActivity(), 0, items,
+ onButActionClicked);
+ setListAdapter(fila);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ if (mActionMode != null) {
+ mActionMode.finish();
+ }
+ }
+
+
+
+ @Override
+ public void onListItemClick(ListView l, View v, int position, long id) {
+ FeedItem selection = fila.getItem(position);
+ Intent showItem = new Intent(getActivity(), ItemviewActivity.class);
+ showItem.putExtra(FeedlistFragment.EXTRA_SELECTED_FEED, selection
+ .getFeed().getId());
+ showItem.putExtra(EXTRA_SELECTED_FEEDITEM, selection.getId());
+
+ startActivity(showItem);
+ }
+
+ private final OnClickListener onButActionClicked = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ int index = getListView().getPositionForView(v);
+ if (index != ListView.INVALID_POSITION) {
+ FeedItem newSelectedItem = items.get(index);
+ if (newSelectedItem != selectedItem) {
+ if (mActionMode != null) {
+ mActionMode.finish();
+ }
+
+ selectedItem = newSelectedItem;
+ mActionMode = getSherlockActivity().startActionMode(
+ mActionModeCallback);
+ } else {
+ mActionMode.finish();
+ }
+
+ }
+ }
+ };
+
+ private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+ @Override
+ public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+ return FeedItemMenuHandler.onPrepareMenu(menu, selectedItem);
+ }
+
+ @Override
+ public void onDestroyActionMode(ActionMode mode) {
+ mActionMode = null;
+ selectedItem = null;
+ }
+
+ @Override
+ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ return FeedItemMenuHandler.onCreateMenu(mode.getMenuInflater(), menu);
+
+ }
+
+ @Override
+ public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+ FeedItemMenuHandler.onMenuItemClicked(getSherlockActivity(), item, selectedItem);
+ fila.notifyDataSetChanged();
+ mode.finish();
+ return true;
+ }
+ };
+
+ public FeedItemlistAdapter getListAdapter() {
+ return fila;
+ }
+
+
+}