diff options
Diffstat (limited to 'app/src/main')
14 files changed, 204 insertions, 40 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java index 0cd388b9d..a5ec02cf2 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -278,6 +278,7 @@ public abstract class MediaplayerActivity extends ActionBarActivity startActivity(intent); return true; } else if (media != null) { + FeedItem feedItem = ((FeedMedia) media).getItem(); switch (item.getItemId()) { case R.id.disable_sleeptimer_item: if (controller.serviceAvailable()) { @@ -333,12 +334,20 @@ public abstract class MediaplayerActivity extends ActionBarActivity break; case R.id.support_item: if (media instanceof FeedMedia) { - FeedItem feedItem = ((FeedMedia) media).getItem(); DBTasks.flattrItemIfLoggedIn(this, feedItem); } break; case R.id.share_link_item: - ShareUtils.shareLink(this, media.getWebsiteLink()); + ShareUtils.shareFeedItemLink(this, feedItem); + break; + case R.id.share_download_url_item: + ShareUtils.shareFeedItemDownloadLink(this, feedItem); + break; + case R.id.share_link_with_position_item: + ShareUtils.shareFeedItemLink(this, feedItem, true); + break; + case R.id.share_download_url_with_position_item: + ShareUtils.shareFeedItemDownloadLink(this, feedItem, true); break; case R.id.skip_episode_item: sendBroadcast(new Intent( 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 b2482ae32..f40bcf999 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -30,8 +30,8 @@ import java.util.concurrent.atomic.AtomicReference; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.adapter.DefaultActionButtonCallback; import de.danoeh.antennapod.adapter.AllEpisodesListAdapter; +import de.danoeh.antennapod.adapter.DefaultActionButtonCallback; import de.danoeh.antennapod.core.asynctask.DownloadObserver; import de.danoeh.antennapod.core.dialog.ConfirmationDialog; import de.danoeh.antennapod.core.feed.EventDistributor; @@ -72,6 +72,7 @@ public class AllEpisodesFragment extends Fragment { private TextView txtvEmpty; private ProgressBar progLoading; private ContextMenu contextMenu; + private AdapterView.AdapterContextMenuInfo lastMenuInfo = null; private List<FeedItem> episodes; private LongList queuedItemsIds; @@ -341,12 +342,16 @@ public class AllEpisodesFragment extends Fragment { } contextMenu = menu; + lastMenuInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; FeedItemMenuHandler.onPrepareMenu(getActivity(), contextMenuInterface, item, true, queuedItemsIds); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); + if(menuInfo == null) { + menuInfo = lastMenuInfo; + } FeedItem selectedItem = itemAccess.getItem(menuInfo.position); if (selectedItem == null) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java index 9693e6886..ac7899305 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java @@ -277,7 +277,8 @@ public class ItemDescriptionFragment extends Fragment { } break; case R.id.share_url_item: - ShareUtils.shareLink(getActivity(), selectedURL); + String subject = getString(R.string.share_url_label); + ShareUtils.shareLink(getActivity(), subject, selectedURL); break; case R.id.copy_url_item: if (android.os.Build.VERSION.SDK_INT >= 11) { 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 67e65a6ce..5a788b10c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -83,6 +83,7 @@ public class ItemlistFragment extends ListFragment { protected FeedItemlistAdapter adapter; private ContextMenu contextMenu; + private AdapterView.AdapterContextMenuInfo lastMenuInfo = null; private long feedID; private Feed feed; @@ -217,6 +218,11 @@ public class ItemlistFragment extends ListFragment { return false; } }); + if(feed == null || feed.getLink() == null) { + menu.findItem(R.id.share_link_item).setVisible(false); + menu.findItem(R.id.visit_website_item).setVisible(false); + } + isUpdatingFeed = MenuItemUtils.updateRefreshMenuItem(menu, R.id.refresh_item, updateRefreshMenuItemChecker); } } @@ -302,12 +308,16 @@ public class ItemlistFragment extends ListFragment { } contextMenu = menu; + lastMenuInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; FeedItemMenuHandler.onPrepareMenu(getActivity(), contextMenuInterface, item, true, queuedItemsIds); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); + if(menuInfo == null) { + menuInfo = lastMenuInfo; + } // because of addHeaderView(), positions are increased by 1! FeedItem selectedItem = itemAccess.getItem(menuInfo.position-1); 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 0a825c51a..77b2d590f 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -72,6 +72,7 @@ public class QueueFragment extends Fragment { private ProgressBar progLoading; private ContextMenu contextMenu; + private AdapterView.AdapterContextMenuInfo lastMenuInfo = null; private UndoBarController<FeedItemUndoToken> undoBarController; @@ -325,6 +326,7 @@ public class QueueFragment extends Fragment { } contextMenu = menu; + lastMenuInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; LongList queueIds = new LongList(queue.size()); for(FeedItem queueItem : queue) { queueIds.add(queueItem.getId()); @@ -335,6 +337,9 @@ public class QueueFragment extends Fragment { @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); + if(menuInfo == null) { + menuInfo = lastMenuInfo; + } FeedItem selectedItem = itemAccess.getItem(menuInfo.position); if (selectedItem == null) { diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java index 64ba3dca3..c33ab93b4 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java @@ -85,8 +85,19 @@ public class FeedItemMenuHandler { if (!(!isInQueue && selectedItem.getMedia() != null)) { mi.setItemVisibility(R.id.add_to_queue_item, false); } + if (!showExtendedMenu || selectedItem.getLink() == null) { + mi.setItemVisibility(R.id.visit_website_item, false); mi.setItemVisibility(R.id.share_link_item, false); + mi.setItemVisibility(R.id.share_link_with_position_item, false); + } + if (!showExtendedMenu || !hasMedia || selectedItem.getMedia().getDownload_url() == null) { + mi.setItemVisibility(R.id.share_download_url_item, false); + mi.setItemVisibility(R.id.share_download_url_with_position_item, false); + } + if(false == hasMedia || selectedItem.getMedia().getPosition() <= 0) { + mi.setItemVisibility(R.id.share_link_with_position_item, false); + mi.setItemVisibility(R.id.share_download_url_with_position_item, false); } if (!(state == FeedItem.State.UNREAD || state == FeedItem.State.IN_PROGRESS)) { @@ -109,12 +120,6 @@ public class FeedItemMenuHandler { mi.setItemVisibility(R.id.deactivate_auto_download, false); } - if (!showExtendedMenu || selectedItem.getLink() == null || - false == IntentUtils.isCallable(context, new Intent(Intent.ACTION_VIEW, Uri.parse(selectedItem.getLink())))) - { - mi.setItemVisibility(R.id.visit_website_item, false); - } - if (selectedItem.getPaymentLink() == null || !selectedItem.getFlattrStatus().flattrable()) { mi.setItemVisibility(R.id.support_item, false); } @@ -213,6 +218,15 @@ public class FeedItemMenuHandler { case R.id.share_link_item: ShareUtils.shareFeedItemLink(context, selectedItem); break; + case R.id.share_download_url_item: + ShareUtils.shareFeedItemDownloadLink(context, selectedItem); + break; + case R.id.share_link_with_position_item: + ShareUtils.shareFeedItemLink(context, selectedItem, true); + break; + case R.id.share_download_url_with_position_item: + ShareUtils.shareFeedItemDownloadLink(context, selectedItem, true); + break; default: Log.d(TAG, "Unknown menuItemId: " + menuItemId); return false; diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java index 85394d01e..30cc2c640 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java @@ -42,10 +42,11 @@ public class FeedMenuHandler { Log.d(TAG, "Preparing options menu"); menu.findItem(R.id.mark_all_read_item).setVisible(selectedFeed.hasNewItems()); - if (selectedFeed.getPaymentLink() != null && selectedFeed.getFlattrStatus().flattrable()) + if (selectedFeed.getPaymentLink() != null && selectedFeed.getFlattrStatus().flattrable()) { menu.findItem(R.id.support_item).setVisible(true); - else + } else { menu.findItem(R.id.support_item).setVisible(false); + } menu.findItem(R.id.refresh_complete_item).setVisible(selectedFeed.isPaged()); @@ -99,7 +100,7 @@ public class FeedMenuHandler { case R.id.share_link_item: ShareUtils.shareFeedlink(context, selectedFeed); break; - case R.id.share_source_item: + case R.id.share_download_url_item: ShareUtils.shareFeedDownloadLink(context, selectedFeed); break; default: diff --git a/app/src/main/res/menu/allepisodes_context.xml b/app/src/main/res/menu/allepisodes_context.xml index f89ad5065..171e509a8 100644 --- a/app/src/main/res/menu/allepisodes_context.xml +++ b/app/src/main/res/menu/allepisodes_context.xml @@ -40,13 +40,32 @@ 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/share_item" + android:menuCategory="container" + android:title="@string/share_label"> + <menu> + <item + android:id="@+id/share_link_item" + android:menuCategory="container" + android:title="@string/share_link_label" /> + <item + android:id="@+id/share_link_with_position_item" + android:menuCategory="container" + android:title="@string/share_link_with_position_label" /> + <item + android:id="@+id/share_download_url_item" + android:menuCategory="container" + android:title="@string/share_item_url_label" /> + <item + android:id="@+id/share_download_url_with_position_item" + android:menuCategory="container" + android:title="@string/share_item_url_with_position_label" /> + </menu> + </item> <item android:id="@+id/support_item" diff --git a/app/src/main/res/menu/feedinfo.xml b/app/src/main/res/menu/feedinfo.xml index be50cb87d..94f34db93 100644 --- a/app/src/main/res/menu/feedinfo.xml +++ b/app/src/main/res/menu/feedinfo.xml @@ -20,7 +20,7 @@ android:title="@string/share_link_label"> </item> <item - android:id="@+id/share_source_item" + android:id="@+id/share_download_url_item" custom:showAsAction="collapseActionView" android:title="@string/share_source_label"> </item> diff --git a/app/src/main/res/menu/feeditem_options.xml b/app/src/main/res/menu/feeditem_options.xml index f8e9b9c75..650912ea2 100644 --- a/app/src/main/res/menu/feeditem_options.xml +++ b/app/src/main/res/menu/feeditem_options.xml @@ -48,17 +48,36 @@ </item> <item - android:id="@+id/share_link_item" - custom:showAsAction="collapseActionView" - android:title="@string/share_link_label"> - </item> - <item android:id="@+id/visit_website_item" android:icon="?attr/location_web_site" custom:showAsAction="ifRoom|collapseActionView" android:title="@string/visit_website_label"> </item> <item + android:id="@+id/share_item" + android:menuCategory="container" + android:title="@string/share_label"> + <menu> + <item + android:id="@+id/share_link_item" + android:menuCategory="container" + android:title="@string/share_link_label" /> + <item + android:id="@+id/share_link_with_position_item" + android:menuCategory="container" + android:title="@string/share_link_with_position_label" /> + <item + android:id="@+id/share_download_url_item" + android:menuCategory="container" + android:title="@string/share_item_url_label" /> + <item + android:id="@+id/share_download_url_with_position_item" + android:menuCategory="container" + android:title="@string/share_item_url_with_position_label" /> + </menu> + </item> + + <item android:id="@+id/support_item" custom:showAsAction="collapseActionView" android:title="@string/support_label"> diff --git a/app/src/main/res/menu/feeditemlist_context.xml b/app/src/main/res/menu/feeditemlist_context.xml index f89ad5065..7b10e5cce 100644 --- a/app/src/main/res/menu/feeditemlist_context.xml +++ b/app/src/main/res/menu/feeditemlist_context.xml @@ -40,13 +40,33 @@ 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/share_item" + android:menuCategory="container" + android:title="@string/share_label"> + <menu> + <item + android:id="@+id/share_link_item" + android:menuCategory="container" + android:title="@string/share_link_label" /> + <item + android:id="@+id/share_link_with_position_item" + android:menuCategory="container" + android:title="@string/share_link_with_position_label" /> + <item + android:id="@+id/share_download_url_item" + android:menuCategory="container" + android:title="@string/share_item_url_label" /> + <item + android:id="@+id/share_download_url_with_position_item" + android:menuCategory="container" + android:title="@string/share_item_url_with_position_label" /> + </menu> + </item> + <item android:id="@+id/support_item" diff --git a/app/src/main/res/menu/feedlist.xml b/app/src/main/res/menu/feedlist.xml index e0da72667..e6e85093b 100644 --- a/app/src/main/res/menu/feedlist.xml +++ b/app/src/main/res/menu/feedlist.xml @@ -36,6 +36,7 @@ android:title="@string/mark_all_read_label" custom:showAsAction="collapseActionView"> </item> + <item android:id="@+id/support_item" android:menuCategory="container" @@ -43,6 +44,28 @@ android:visible="false" custom:showAsAction="collapseActionView"> </item> + + <item + android:id="@+id/visit_website_item" + android:icon="?attr/location_web_site" + android:menuCategory="container" + custom:showAsAction="collapseActionView" + android:title="@string/visit_website_label" + android:visible="true"> + </item> + <item + android:id="@+id/share_link_item" + android:menuCategory="container" + custom:showAsAction="collapseActionView" + android:title="@string/share_link_label"> + </item> + <item + android:id="@+id/share_download_url_item" + android:menuCategory="container" + custom:showAsAction="collapseActionView" + android:title="@string/share_feed_url_label"> + </item> + <item android:id="@+id/remove_item" android:icon="?attr/content_discard" diff --git a/app/src/main/res/menu/mediaplayer.xml b/app/src/main/res/menu/mediaplayer.xml index 288e44401..053e68552 100644 --- a/app/src/main/res/menu/mediaplayer.xml +++ b/app/src/main/res/menu/mediaplayer.xml @@ -13,11 +13,14 @@ custom:showAsAction="collapseActionView" android:title="@string/set_sleeptimer_label"> </item> + <item - android:id="@+id/share_link_item" + android:id="@+id/skip_episode_item" custom:showAsAction="collapseActionView" - android:title="@string/share_link_label"> + android:title="@string/skip_episode_label" + android:visible="true"> </item> + <item android:id="@+id/visit_website_item" android:icon="?attr/location_web_site" @@ -26,15 +29,33 @@ android:visible="false"> </item> <item + android:id="@+id/share_item" + android:menuCategory="container" + android:title="@string/share_label"> + <menu> + <item + android:id="@+id/share_link_item" + android:menuCategory="container" + android:title="@string/share_link_label" /> + <item + android:id="@+id/share_link_with_position_item" + android:menuCategory="container" + android:title="@string/share_link_with_position_label" /> + <item + android:id="@+id/share_download_url_item" + android:menuCategory="container" + android:title="@string/share_item_url_label" /> + <item + android:id="@+id/share_download_url_with_position_item" + android:menuCategory="container" + android:title="@string/share_item_url_with_position_label" /> + </menu> + </item> + <item android:id="@+id/support_item" custom:showAsAction="collapseActionView" android:title="@string/support_label" android:visible="false"> </item> - <item - android:id="@id/skip_episode_item" - custom:showAsAction="collapseActionView" - android:title="@string/skip_episode_label" - android:visible="true"/> </menu>
\ No newline at end of file diff --git a/app/src/main/res/menu/queue_context.xml b/app/src/main/res/menu/queue_context.xml index 6ab2daabf..d09f3c84c 100644 --- a/app/src/main/res/menu/queue_context.xml +++ b/app/src/main/res/menu/queue_context.xml @@ -36,21 +36,38 @@ 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/share_item" + android:menuCategory="container" + android:title="@string/share_label"> + <menu> + <item + android:id="@+id/share_link_item" + android:menuCategory="container" + android:title="@string/share_link_label" /> + <item + android:id="@+id/share_link_with_position_item" + android:menuCategory="container" + android:title="@string/share_link_with_position_label" /> + <item + android:id="@+id/share_download_url_item" + android:menuCategory="container" + android:title="@string/share_item_url_label" /> + <item + android:id="@+id/share_download_url_with_position_item" + android:menuCategory="container" + android:title="@string/share_item_url_with_position_label" /> + </menu> + </item> <item android:id="@+id/support_item" android:menuCategory="container" |