summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/fragment/EpisodesFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/danoeh/antennapod/fragment/EpisodesFragment.java')
-rw-r--r--src/de/danoeh/antennapod/fragment/EpisodesFragment.java327
1 files changed, 0 insertions, 327 deletions
diff --git a/src/de/danoeh/antennapod/fragment/EpisodesFragment.java b/src/de/danoeh/antennapod/fragment/EpisodesFragment.java
deleted file mode 100644
index 3c79a8c10..000000000
--- a/src/de/danoeh/antennapod/fragment/EpisodesFragment.java
+++ /dev/null
@@ -1,327 +0,0 @@
-package de.danoeh.antennapod.fragment;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.util.Log;
-import android.view.*;
-import android.view.ContextMenu.ContextMenuInfo;
-import android.widget.ExpandableListView;
-import android.widget.ExpandableListView.OnChildClickListener;
-import de.danoeh.antennapod.BuildConfig;
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.ItemviewActivity;
-import de.danoeh.antennapod.activity.OrganizeQueueActivity;
-import de.danoeh.antennapod.adapter.ActionButtonCallback;
-import de.danoeh.antennapod.adapter.ExternalEpisodesListAdapter;
-import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator;
-import de.danoeh.antennapod.feed.EventDistributor;
-import de.danoeh.antennapod.feed.FeedItem;
-import de.danoeh.antennapod.storage.DBReader;
-import de.danoeh.antennapod.storage.DBTasks;
-import de.danoeh.antennapod.storage.DBWriter;
-import de.danoeh.antennapod.storage.DownloadRequestException;
-import de.danoeh.antennapod.util.QueueAccess;
-import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
-
-import java.util.List;
-
-public class EpisodesFragment extends Fragment {
- private static final String TAG = "EpisodesFragment";
-
- private static final int EVENTS = EventDistributor.QUEUE_UPDATE
- | EventDistributor.UNREAD_ITEMS_UPDATE
- | EventDistributor.FEED_LIST_UPDATE
- | EventDistributor.DOWNLOAD_HANDLED
- | EventDistributor.DOWNLOAD_QUEUED;
-
- private ExpandableListView listView;
- private ExternalEpisodesListAdapter adapter;
-
- private List<FeedItem> queue;
- private List<FeedItem> unreadItems;
-
- protected FeedItem selectedItem = null;
- protected long selectedGroupId = -1;
- protected boolean contextMenuClosed = true;
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- EventDistributor.getInstance().unregister(contentUpdate);
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
- EventDistributor.getInstance().register(contentUpdate);
- if (adapter != null) {
- adapter.notifyDataSetChanged();
- }
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View v = inflater.inflate(R.layout.episodes_fragment, null);
- listView = (ExpandableListView) v.findViewById(android.R.id.list);
- return v;
- }
-
- protected ActionButtonCallback adapterCallback = new ActionButtonCallback() {
-
- @Override
- public void onActionButtonPressed(FeedItem item) {
- resetContextMenuSelection();
- selectedItem = item;
- listView.showContextMenu();
- }
- };
-
- protected ExternalEpisodesListAdapter.OnGroupActionClicked groupActionCallback = new ExternalEpisodesListAdapter.OnGroupActionClicked() {
-
- @Override
- public void onClick(long groupId) {
- resetContextMenuSelection();
- selectedGroupId = groupId;
- listView.showContextMenu();
- }
- };
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- adapter = new ExternalEpisodesListAdapter(getActivity(),
- adapterCallback, groupActionCallback, itemAccess);
- listView.setAdapter(adapter);
- listView.expandGroup(ExternalEpisodesListAdapter.GROUP_POS_QUEUE);
- listView.expandGroup(ExternalEpisodesListAdapter.GROUP_POS_UNREAD);
- listView.setOnChildClickListener(new OnChildClickListener() {
-
- @Override
- public boolean onChildClick(ExpandableListView parent, View v,
- int groupPosition, int childPosition, long id) {
- FeedItem selection = adapter.getChild(groupPosition,
- childPosition);
- if (selection != null) {
- Intent showItem = new Intent(getActivity(),
- ItemviewActivity.class);
- showItem.putExtra(FeedlistFragment.EXTRA_SELECTED_FEED,
- selection.getFeed().getId());
- showItem.putExtra(ItemlistFragment.EXTRA_SELECTED_FEEDITEM,
- selection.getId());
-
- startActivity(showItem);
- return true;
- }
- return true;
- }
- });
- loadData();
- registerForContextMenu(listView);
-
- }
-
- ExternalEpisodesListAdapter.ItemAccess itemAccess = new ExternalEpisodesListAdapter.ItemAccess() {
-
- @Override
- public int getQueueSize() {
- return (queue != null) ? queue.size() : 0;
- }
-
- @Override
- public int getUnreadItemsSize() {
- return (unreadItems != null) ? unreadItems.size() : 0;
- }
-
- @Override
- public FeedItem getQueueItemAt(int position) {
- return (queue != null) ? queue.get(position) : null;
- }
-
- @Override
- public FeedItem getUnreadItemAt(int position) {
- return (unreadItems != null) ? unreadItems.get(position) : null;
- }
- };
-
- private void loadData() {
- AsyncTask<Void, Void, Void> loadTask = new AsyncTask<Void, Void, Void>() {
- private volatile List<FeedItem> queueRef;
- private volatile List<FeedItem> unreadItemsRef;
-
- @Override
- protected Void doInBackground(Void... voids) {
- if (BuildConfig.DEBUG) Log.d(TAG, "Starting to load list data");
- Context context = EpisodesFragment.this.getActivity();
- if (context != null) {
- queueRef = DBReader.getQueue(context);
- unreadItemsRef = DBReader.getUnreadItemsList(context);
- }
- return null;
- }
-
- @Override
- protected void onPostExecute(Void aVoid) {
- super.onPostExecute(aVoid);
- if (queueRef != null && unreadItemsRef != null) {
- if (BuildConfig.DEBUG) Log.d(TAG, "Done loading list data");
- queue = queueRef;
- unreadItems = unreadItemsRef;
- if (adapter != null) {
- adapter.notifyDataSetChanged();
- }
- } else {
- if (queueRef == null) {
- Log.e(TAG, "Could not load queue");
- }
- if (unreadItemsRef == null) {
- Log.e(TAG, "Could not load unread items");
- }
- }
- }
- };
- loadTask.execute();
- }
-
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
-
- @Override
- public void update(EventDistributor eventDistributor, Integer arg) {
- if ((EVENTS & arg) != 0) {
- if (BuildConfig.DEBUG)
- Log.d(TAG, "Received contentUpdate Intent.");
- loadData();
- }
- }
- };
-
- @Override
- public void onCreateContextMenu(final ContextMenu menu, View v,
- ContextMenuInfo menuInfo) {
- super.onCreateContextMenu(menu, v, menuInfo);
- if (!contextMenuClosed) { // true if context menu was cancelled before
- resetContextMenuSelection();
- }
- contextMenuClosed = false;
- listView.setOnItemLongClickListener(null);
- if (selectedItem != null) {
- new MenuInflater(getActivity()).inflate(R.menu.feeditem, menu);
-
- menu.setHeaderTitle(selectedItem.getTitle());
- FeedItemMenuHandler.onPrepareMenu(
- new FeedItemMenuHandler.MenuInterface() {
-
- @Override
- public void setItemVisibility(int id, boolean visible) {
- menu.findItem(id).setVisible(visible);
- }
- }, selectedItem, false, QueueAccess.ItemListAccess(queue));
-
- // check to see if the item is in the queue, if so add queue menu items
- int itemIndex = queue.indexOf(selectedItem);
- if (itemIndex != -1) {
- addQueueOnlyMenus(menu, itemIndex);
- }
-
- } else if (selectedGroupId == ExternalEpisodesListAdapter.GROUP_POS_QUEUE) {
- menu.add(Menu.NONE, R.id.organize_queue_item, Menu.NONE,
- R.string.organize_queue_label);
- menu.add(Menu.NONE, R.id.clear_queue_item, Menu.NONE, getActivity()
- .getString(R.string.clear_queue_label));
- menu.add(Menu.NONE, R.id.download_all_item, Menu.NONE,
- getActivity().getString(R.string.download_all));
- } else if (selectedGroupId == ExternalEpisodesListAdapter.GROUP_POS_UNREAD) {
- menu.add(Menu.NONE, R.id.mark_all_read_item, Menu.NONE,
- getActivity().getString(R.string.mark_all_read_label));
- menu.add(Menu.NONE, R.id.enqueue_all_item, Menu.NONE, getActivity()
- .getString(R.string.enqueue_all_new));
- }
- }
-
- /**
- * Adds submenus to the ContextMenu if the item selected is in the queue.
- * @param menu the ContextMenu to add the submenus to
- * @param itemIndex the index of the selected item within the queue.
- */
- private void addQueueOnlyMenus(ContextMenu menu, int itemIndex) {
- if (itemIndex != 0) {
- // don't add move to top if this item is already on the top
- menu.add(Menu.NONE, R.id.move_to_top_item, Menu.NONE, getActivity()
- .getString(R.string.move_to_top_label));
- }
- if (itemIndex != queue.size() - 1) {
- // don't add move to bottom if this item is already on the bottom
- menu.add(Menu.NONE, R.id.move_to_bottom_item, Menu.NONE, getActivity()
- .getString(R.string.move_to_bottom_label));
- }
- }
-
- @Override
- public boolean onContextItemSelected(android.view.MenuItem item) {
- boolean handled = false;
- if (selectedItem != null) {
- try {
- handled = FeedItemMenuHandler.onMenuItemClicked(
- getActivity(), item.getItemId(), selectedItem);
- } catch (DownloadRequestException e) {
- e.printStackTrace();
- DownloadRequestErrorDialogCreator.newRequestErrorDialog(
- getActivity(), e.getMessage());
- }
- if (!handled) {
- // if it wasn't handled by the FeedItemMenuHandler it might be one of ours
- switch (item.getItemId()) {
- case R.id.move_to_top_item:
- DBWriter.moveQueueItemToTop(getActivity(), selectedItem.getId(), true);
- handled = true;
- break;
- case R.id.move_to_bottom_item:
- DBWriter.moveQueueItemToBottom(getActivity(), selectedItem.getId(), true);
- handled = true;
- break;
- }
- }
- } else if (selectedGroupId == ExternalEpisodesListAdapter.GROUP_POS_QUEUE) {
- handled = true;
- switch (item.getItemId()) {
- case R.id.organize_queue_item:
- startActivity(new Intent(getActivity(),
- OrganizeQueueActivity.class));
- break;
- case R.id.clear_queue_item:
- DBWriter.clearQueue(getActivity());
- break;
- case R.id.download_all_item:
- DBTasks.downloadAllItemsInQueue(getActivity());
- break;
- default:
- handled = false;
- }
- } else if (selectedGroupId == ExternalEpisodesListAdapter.GROUP_POS_UNREAD) {
- handled = true;
- switch (item.getItemId()) {
- case R.id.mark_all_read_item:
- DBWriter.markAllItemsRead(getActivity());
- break;
- case R.id.enqueue_all_item:
- DBTasks.enqueueAllNewItems(getActivity());
- break;
- default:
- handled = false;
- }
- }
-
- resetContextMenuSelection();
- return handled;
- }
-
- private void resetContextMenuSelection() {
- selectedItem = null;
- selectedGroupId = -1;
- contextMenuClosed = true;
- }
-}