diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-07-05 11:03:35 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-07-05 11:03:35 +0200 |
commit | c0c9e2fed2f991bab0eae12b7d3d20221f63a418 (patch) | |
tree | 8959b7cca939ecff5853dfe3a24a7e76df1ba370 /src/de/podfetcher | |
parent | 5920c96ae782144b739975bf4b2c890fb5fcb528 (diff) | |
download | AntennaPod-c0c9e2fed2f991bab0eae12b7d3d20221f63a418.zip |
Items in queue can now be reordered
Diffstat (limited to 'src/de/podfetcher')
-rw-r--r-- | src/de/podfetcher/feed/FeedManager.java | 14 | ||||
-rw-r--r-- | src/de/podfetcher/fragment/ItemlistFragment.java | 70 | ||||
-rw-r--r-- | src/de/podfetcher/fragment/QueueFragment.java | 33 |
3 files changed, 83 insertions, 34 deletions
diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java index e082529ff..493c01af6 100644 --- a/src/de/podfetcher/feed/FeedManager.java +++ b/src/de/podfetcher/feed/FeedManager.java @@ -214,6 +214,20 @@ public class FeedManager { adapter.close(); } } + + public void moveQueueItem(Context context, FeedItem item, int delta) { + Log.d(TAG, "Moving queue item"); + int itemIndex = queue.indexOf(item); + int newIndex = itemIndex + delta; + if (newIndex >= 0 && newIndex < queue.size()) { + FeedItem oldItem = queue.set(newIndex, item); + queue.set(itemIndex, oldItem); + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setQueue(queue); + adapter.close(); + } + } public boolean isInQueue(FeedItem item) { return queue.contains(item); diff --git a/src/de/podfetcher/fragment/ItemlistFragment.java b/src/de/podfetcher/fragment/ItemlistFragment.java index 37878d987..ff1f4cc7c 100644 --- a/src/de/podfetcher/fragment/ItemlistFragment.java +++ b/src/de/podfetcher/fragment/ItemlistFragment.java @@ -28,7 +28,8 @@ import de.podfetcher.storage.DownloadRequester; import de.podfetcher.util.FeedItemMenuHandler; /** Displays a list of FeedItems. */ -public class ItemlistFragment extends SherlockListFragment { +public class ItemlistFragment extends SherlockListFragment implements + ActionMode.Callback { private static final String TAG = "FeedItemlistFragment"; public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.podfetcher.activity.selected_feeditem"; @@ -42,7 +43,7 @@ public class ItemlistFragment extends SherlockListFragment { protected FeedItem selectedItem; protected ActionMode mActionMode; - + /** Argument for FeeditemlistAdapter */ protected boolean showFeedtitle; @@ -57,9 +58,12 @@ public class ItemlistFragment extends SherlockListFragment { public ItemlistFragment() { } - /** Creates new ItemlistFragment which shows the Feeditems of a specific feed. - * Sets 'showFeedtitle' to false - * @param feedId The id of the feed to show + /** + * Creates new ItemlistFragment which shows the Feeditems of a specific + * feed. Sets 'showFeedtitle' to false + * + * @param feedId + * The id of the feed to show * @return the newly created instance of an ItemlistFragment */ public static ItemlistFragment newInstance(long feedId) { @@ -70,7 +74,7 @@ public class ItemlistFragment extends SherlockListFragment { i.setArguments(b); return i; } - + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -91,7 +95,7 @@ public class ItemlistFragment extends SherlockListFragment { mActionMode.finish(); } } - + @Override public void onResume() { super.onResume(); @@ -103,7 +107,6 @@ public class ItemlistFragment extends SherlockListFragment { getActivity().registerReceiver(contentUpdate, filter); } - @Override public void onListItemClick(ListView l, View v, int position, long id) { FeedItem selection = fila.getItem(position); @@ -114,7 +117,7 @@ public class ItemlistFragment extends SherlockListFragment { startActivity(showItem); } - + private BroadcastReceiver contentUpdate = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -136,7 +139,7 @@ public class ItemlistFragment extends SherlockListFragment { selectedItem = newSelectedItem; mActionMode = getSherlockActivity().startActionMode( - mActionModeCallback); + ItemlistFragment.this); } else { mActionMode.finish(); } @@ -149,39 +152,38 @@ public class ItemlistFragment extends SherlockListFragment { public void onViewCreated(View view, Bundle savedInstanceState) { this.getListView().setItemsCanFocus(true); } - - private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() { - @Override - public boolean onPrepareActionMode(ActionMode mode, Menu menu) { - return FeedItemMenuHandler.onPrepareMenu(menu, selectedItem); - } + @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 void onDestroyActionMode(ActionMode mode) { + mActionMode = null; + selectedItem = null; + } - @Override - public boolean onCreateActionMode(ActionMode mode, Menu menu) { - mode.setTitle(selectedItem.getTitle()); - return FeedItemMenuHandler.onCreateMenu(mode.getMenuInflater(), menu); + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + mode.setTitle(selectedItem.getTitle()); + return FeedItemMenuHandler.onCreateMenu(mode.getMenuInflater(), menu); - } + } - @Override - public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - FeedItemMenuHandler.onMenuItemClicked(getSherlockActivity(), item, selectedItem); + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + boolean handled = FeedItemMenuHandler.onMenuItemClicked( + getSherlockActivity(), item, selectedItem); + if (handled) { fila.notifyDataSetChanged(); - mode.finish(); - return true; } - }; - + mode.finish(); + return handled; + } + public FeedItemlistAdapter getListAdapter() { return fila; } - } diff --git a/src/de/podfetcher/fragment/QueueFragment.java b/src/de/podfetcher/fragment/QueueFragment.java index b82e0b1b3..2afaca35e 100644 --- a/src/de/podfetcher/fragment/QueueFragment.java +++ b/src/de/podfetcher/fragment/QueueFragment.java @@ -1,5 +1,10 @@ package de.podfetcher.fragment; +import com.actionbarsherlock.view.ActionMode; +import com.actionbarsherlock.view.Menu; +import com.actionbarsherlock.view.MenuItem; + +import de.podfetcher.R; import de.podfetcher.feed.FeedManager; public class QueueFragment extends ItemlistFragment { @@ -8,4 +13,32 @@ public class QueueFragment extends ItemlistFragment { super(FeedManager.getInstance().getQueue(), true); } + @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 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; + } + } |