diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-06-24 18:12:01 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-06-24 18:12:01 +0200 |
commit | 3e0937df7da4d096e9f486622bd53d9a9af60ea3 (patch) | |
tree | 4da83bfe24ca1fd1a5737c6cd0e1f45f1b9ecc1e /src/de/podfetcher/fragment/ItemlistFragment.java | |
parent | b283eae1b9b15c092f49b86cfbecc400f60b1171 (diff) | |
download | AntennaPod-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.java | 153 |
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; + } + + +} |