diff options
Diffstat (limited to 'app/src/main')
8 files changed, 160 insertions, 8 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java index 818f662cd..ae81779e4 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java @@ -277,7 +277,7 @@ public class NavListAdapter extends BaseAdapter holder.count.setText(String.valueOf(feedUnreadItems)); holder.count.setTypeface(holder.title.getTypeface()); } else { - holder.count.setVisibility(View.GONE); + holder.count.setVisibility(View.INVISIBLE); } return convertView; } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java index 8a5cad137..ff5485251 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -10,6 +10,8 @@ import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.view.MenuItemCompat; import android.support.v7.widget.SearchView; +import android.util.Log; +import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -41,8 +43,10 @@ import de.danoeh.antennapod.core.service.download.Downloader; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; +import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.LongList; +import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; import de.danoeh.antennapod.menuhandler.MenuItemUtils; /** @@ -67,6 +71,7 @@ public class AllEpisodesFragment extends Fragment { private AllEpisodesListAdapter listAdapter; private TextView txtvEmpty; private ProgressBar progLoading; + private ContextMenu contextMenu; private List<FeedItem> episodes; private LongList queuedItemsIds; @@ -293,6 +298,8 @@ public class AllEpisodesFragment extends Fragment { } }); + registerForContextMenu(listView); + if (!itemsLoaded) { progLoading.setVisibility(View.VISIBLE); txtvEmpty.setVisibility(View.GONE); @@ -307,6 +314,55 @@ public class AllEpisodesFragment extends Fragment { return root; } + private final FeedItemMenuHandler.MenuInterface contextMenuInterface = new FeedItemMenuHandler.MenuInterface() { + @Override + public void setItemVisibility(int id, boolean visible) { + if(contextMenu == null) { + return; + } + MenuItem item = contextMenu.findItem(id); + if (item != null) { + item.setVisible(visible); + } + } + }; + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + AdapterView.AdapterContextMenuInfo adapterInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; + FeedItem item = itemAccess.getItem(adapterInfo.position); + + MenuInflater inflater = getActivity().getMenuInflater(); + inflater.inflate(R.menu.allepisodes_context, menu); + + if (item != null) { + menu.setHeaderTitle(item.getTitle()); + } + + contextMenu = menu; + FeedItemMenuHandler.onPrepareMenu(contextMenuInterface, item, true, queuedItemsIds); + } + + @Override + public boolean onContextItemSelected(MenuItem item) { + AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); + FeedItem selectedItem = itemAccess.getItem(menuInfo.position); + + if (selectedItem == null) { + Log.i(TAG, "Selected item at position " + menuInfo.position + " was null, ignoring selection"); + return super.onContextItemSelected(item); + } + + try { + return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem); + } catch (DownloadRequestException e) { + e.printStackTrace(); + Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show(); + return true; + } + } + private void onFragmentLoaded() { if (listAdapter == null) { listAdapter = new AllEpisodesListAdapter(activity.get(), itemAccess, diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java index 463d06376..07ae81100 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -26,6 +26,7 @@ import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.ListView; +import android.widget.RelativeLayout; import android.widget.TextView; import com.joanzapata.android.iconify.Iconify; @@ -301,7 +302,7 @@ public class ItemlistFragment extends ListFragment { } contextMenu = menu; - FeedItemMenuHandler.onPrepareMenu(contextMenuInterface, item, false, queuedItemsIds); + FeedItemMenuHandler.onPrepareMenu(contextMenuInterface, item, true, queuedItemsIds); } @Override @@ -428,6 +429,10 @@ public class ItemlistFragment extends ListFragment { if(feed.getItemFilter() != null) { FeedItemFilter filter = feed.getItemFilter(); if(filter.getValues().length > 0) { + if(feed.hasLastUpdateFailed()) { + RelativeLayout.LayoutParams p = (RelativeLayout.LayoutParams) txtvInformation.getLayoutParams(); + p.addRule(RelativeLayout.BELOW, R.id.txtvFailure); + } txtvInformation.setText("{fa-info-circle} " + this.getString(R.string.filtered_label)); Iconify.addIcons(txtvInformation); txtvInformation.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index 0ccca3e55..d82c7b8f7 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -329,7 +329,7 @@ public class QueueFragment extends Fragment { for(FeedItem queueItem : queue) { queueIds.add(queueItem.getId()); } - FeedItemMenuHandler.onPrepareMenu(contextMenuInterface, item, false, queueIds); + FeedItemMenuHandler.onPrepareMenu(contextMenuInterface, item, true, queueIds); } @Override @@ -352,7 +352,6 @@ public class QueueFragment extends Fragment { } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); @@ -435,7 +434,6 @@ public class QueueFragment extends Fragment { }); - registerForContextMenu(listView); if (!itemsLoaded) { diff --git a/app/src/main/res/menu/allepisodes_context.xml b/app/src/main/res/menu/allepisodes_context.xml new file mode 100644 index 000000000..f89ad5065 --- /dev/null +++ b/app/src/main/res/menu/allepisodes_context.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> + +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + + <item + android:id="@id/skip_episode_item" + android:menuCategory="container" + android:title="@string/skip_episode_label" /> + + <item + android:id="@+id/mark_read_item" + android:menuCategory="container" + android:title="@string/mark_read_label" /> + <item + android:id="@+id/mark_unread_item" + android:menuCategory="container" + android:title="@string/mark_unread_label" /> + + <item + android:id="@+id/add_to_queue_item" + android:menuCategory="container" + android:title="@string/add_to_queue_label" /> + <item + android:id="@+id/remove_from_queue_item" + android:menuCategory="container" + android:title="@string/remove_from_queue_label" /> + + <item + android:id="@+id/reset_position" + android:menuCategory="container" + android:title="@string/reset_position" /> + + <item + android:id="@+id/activate_auto_download" + android:menuCategory="container" + android:title="@string/activate_auto_download" /> + <item + android:id="@+id/deactivate_auto_download" + android:menuCategory="container" + android:title="@string/deactivate_auto_download" /> + + <item + android:id="@+id/share_link_item" + android:menuCategory="container" + android:title="@string/share_link_label" /> + <item + android:id="@+id/visit_website_item" + android:menuCategory="container" + android:title="@string/visit_website_label" /> + + <item + android:id="@+id/support_item" + android:menuCategory="container" + android:title="@string/support_label" /> + +</menu>
\ No newline at end of file diff --git a/app/src/main/res/menu/feeditem_options.xml b/app/src/main/res/menu/feeditem_options.xml index bcffd019a..f8e9b9c75 100644 --- a/app/src/main/res/menu/feeditem_options.xml +++ b/app/src/main/res/menu/feeditem_options.xml @@ -31,6 +31,23 @@ </item> <item + android:id="@+id/reset_position" + custom:showAsAction="collapseActionView" + android:title="@string/reset_position"> + </item> + + <item + android:id="@+id/activate_auto_download" + custom:showAsAction="collapseActionView" + android:title="@string/activate_auto_download"> + </item> + <item + android:id="@+id/deactivate_auto_download" + custom:showAsAction="collapseActionView" + android:title="@string/deactivate_auto_download"> + </item> + + <item android:id="@+id/share_link_item" custom:showAsAction="collapseActionView" android:title="@string/share_link_label"> diff --git a/app/src/main/res/menu/feeditemlist_context.xml b/app/src/main/res/menu/feeditemlist_context.xml index 69b2c6a7a..f89ad5065 100644 --- a/app/src/main/res/menu/feeditemlist_context.xml +++ b/app/src/main/res/menu/feeditemlist_context.xml @@ -3,6 +3,11 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item + android:id="@id/skip_episode_item" + android:menuCategory="container" + android:title="@string/skip_episode_label" /> + + <item android:id="@+id/mark_read_item" android:menuCategory="container" android:title="@string/mark_read_label" /> diff --git a/app/src/main/res/menu/queue_context.xml b/app/src/main/res/menu/queue_context.xml index 7c9f8f928..6ab2daabf 100644 --- a/app/src/main/res/menu/queue_context.xml +++ b/app/src/main/res/menu/queue_context.xml @@ -8,12 +8,17 @@ android:title="@string/move_to_top_label" /> <item + android:id="@+id/move_to_bottom_item" + android:menuCategory="container" + android:title="@string/move_to_bottom_label" /> + + <item android:id="@+id/mark_read_item" android:menuCategory="container" android:title="@string/mark_read_label" /> <item - android:id="@+id/mark_unread_item_item" + android:id="@+id/mark_unread_item" android:menuCategory="container" android:title="@string/mark_unread_label" /> @@ -38,8 +43,18 @@ android:title="@string/deactivate_auto_download" /> <item - android:id="@+id/move_to_bottom_item" + android:id="@+id/share_link_item" android:menuCategory="container" - android:title="@string/move_to_bottom_label" /> + android:title="@string/share_link_label" /> + <item + android:id="@+id/visit_website_item" + android:menuCategory="container" + android:title="@string/visit_website_label" /> + + <item + android:id="@+id/support_item" + android:menuCategory="container" + android:title="@string/support_label" /> + </menu>
\ No newline at end of file |