diff options
Diffstat (limited to 'src/de/danoeh/antennapod/fragment')
-rw-r--r-- | src/de/danoeh/antennapod/fragment/ItemlistFragment.java | 113 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/fragment/QueueFragment.java | 30 |
2 files changed, 59 insertions, 84 deletions
diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java index 1e33eaaaa..e58472d62 100644 --- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -8,10 +8,16 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; +import android.view.ContextMenu; import android.view.LayoutInflater; +import android.view.MenuInflater; import android.view.View; +import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnClickListener; +import android.view.View.OnCreateContextMenuListener; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ListView; import com.actionbarsherlock.app.SherlockListFragment; @@ -33,8 +39,7 @@ import de.danoeh.antennapod.storage.DownloadRequester; import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler; /** Displays a list of FeedItems. */ -public class ItemlistFragment extends SherlockListFragment implements - ActionMode.Callback { +public class ItemlistFragment extends SherlockListFragment { private static final String TAG = "ItemlistFragment"; public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.danoeh.antennapod.activity.selected_feeditem"; @@ -51,8 +56,8 @@ public class ItemlistFragment extends SherlockListFragment implements */ protected Feed feed; - protected FeedItem selectedItem; - protected ActionMode mActionMode; + protected static final int NO_SELECTION = -1; + protected int selectedPosition = NO_SELECTION; /** Argument for FeeditemlistAdapter */ protected boolean showFeedtitle; @@ -101,16 +106,13 @@ public class ItemlistFragment extends SherlockListFragment implements } fila = new FeedItemlistAdapter(getActivity(), 0, items, - onButActionClicked, showFeedtitle); + adapterCallback, showFeedtitle); setListAdapter(fila); } @Override public void onPause() { super.onPause(); - if (mActionMode != null) { - mActionMode.finish(); - } } @Override @@ -184,26 +186,14 @@ public class ItemlistFragment extends SherlockListFragment implements } } - private final OnClickListener onButActionClicked = new OnClickListener() { - @Override - public void onClick(View v) { - int index = getListView().getPositionForView(v); - if (index != ListView.INVALID_POSITION) { - FeedItem newSelectedItem = fila.getItem(index); - if (newSelectedItem != selectedItem) { - if (mActionMode != null) { - mActionMode.finish(); - } - - selectedItem = newSelectedItem; - mActionMode = getSherlockActivity().startActionMode( - ItemlistFragment.this); - fila.setSelectedItemIndex(index); - } else { - mActionMode.finish(); - } + private FeedItemlistAdapter.Callback adapterCallback = new FeedItemlistAdapter.Callback() { - } + @Override + public void onActionButtonPressed(int position) { + if (AppConfig.DEBUG) + Log.d(TAG, "adapterCallback; position = " + position); + selectedPosition = position; + getListView().showContextMenu(); } }; @@ -211,41 +201,56 @@ public class ItemlistFragment extends SherlockListFragment implements public void onViewCreated(View view, Bundle savedInstanceState) { this.getListView().setItemsCanFocus(true); getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); + registerForContextMenu(getListView()); + getListView().setOnItemLongClickListener(null); } @Override - public boolean onPrepareActionMode(ActionMode mode, Menu menu) { - return FeedItemMenuHandler.onPrepareMenu(menu, selectedItem); - } - - @Override - public void onDestroyActionMode(ActionMode mode) { - mActionMode = null; - selectedItem = null; - fila.setSelectedItemIndex(FeedItemlistAdapter.SELECTION_NONE); - } - - @Override - public boolean onCreateActionMode(ActionMode mode, Menu menu) { - return FeedItemMenuHandler.onCreateMenu(mode.getMenuInflater(), menu); - + public void onCreateContextMenu(final ContextMenu menu, View v, + ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + if (selectedPosition != NO_SELECTION) { + new MenuInflater(ItemlistFragment.this.getActivity()).inflate( + R.menu.feeditem, menu); + FeedItem selection = fila.getItem(selectedPosition); + if (selection != null) { + menu.setHeaderTitle(selection.getTitle()); + FeedItemMenuHandler.onPrepareMenu( + new FeedItemMenuHandler.MenuInterface() { + + @Override + public void setItemVisibility(int id, + boolean visible) { + menu.findItem(id).setVisible(visible); + } + }, selection); + } + } } @Override - public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + public boolean onContextItemSelected(android.view.MenuItem item) { boolean handled = false; - try { - handled = FeedItemMenuHandler.onMenuItemClicked( - getSherlockActivity(), item, selectedItem); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog( - getActivity(), e.getMessage()); - } - if (handled) { - fila.notifyDataSetChanged(); + + if (selectedPosition != NO_SELECTION) { + FeedItem selectedItem = fila.getItem(selectedPosition); + + if (selectedItem != null) { + try { + handled = FeedItemMenuHandler.onMenuItemClicked( + getSherlockActivity(), item.getItemId(), + selectedItem); + } catch (DownloadRequestException e) { + e.printStackTrace(); + DownloadRequestErrorDialogCreator.newRequestErrorDialog( + getActivity(), e.getMessage()); + } + if (handled) { + fila.notifyDataSetChanged(); + } + } } - mode.finish(); + selectedPosition = NO_SELECTION; return handled; } diff --git a/src/de/danoeh/antennapod/fragment/QueueFragment.java b/src/de/danoeh/antennapod/fragment/QueueFragment.java index 2c712c464..c3647c383 100644 --- a/src/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/src/de/danoeh/antennapod/fragment/QueueFragment.java @@ -18,42 +18,12 @@ public class QueueFragment extends ItemlistFragment { } @Override - public boolean onCreateActionMode(ActionMode mode, Menu menu) { - super.onCreateActionMode(mode, menu); - menu.add(Menu.NONE, R.id.move_up_item, Menu.NONE, - R.string.move_up_label); - menu.add(Menu.NONE, R.id.move_down_item, Menu.NONE, - R.string.move_down_label); - return true; - } - - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override - public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - boolean handled = false; - switch (item.getItemId()) { - case R.id.move_up_item: - manager.moveQueueItem(getActivity(), selectedItem, -1); - handled = true; - break; - case R.id.move_down_item: - manager.moveQueueItem(getActivity(), selectedItem, 1); - handled = true; - break; - default: - handled = super.onActionItemClicked(mode, item); - } - fila.notifyDataSetChanged(); - mode.finish(); - return handled; - } - - @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.add(Menu.NONE, R.id.clear_queue_item, Menu.NONE, getActivity() |