diff options
5 files changed, 50 insertions, 39 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ac16b64ee..2faeedd2b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.danoeh.antennapod" - android:versionCode="1030202" - android:versionName="1.3.2 RC2"> + android:versionCode="1030203" + android:versionName="1.3.2"> <!-- Version code schema: "1.2.3-SNAPSHOT" -> 1020300 diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java index 294acd427..b975d482a 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java @@ -75,6 +75,7 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc private DrawerLayout drawerLayout; private NavListAdapter navAdapter; private ListView navList; + private AdapterView.AdapterContextMenuInfo lastMenuInfo = null; private View navDrawer; private ActionBarDrawerToggle drawerToggle; @@ -663,11 +664,19 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc Feed feed = navDrawerData.feeds.get(position - navAdapter.getSubscriptionOffset()); menu.setHeaderTitle(feed.getTitle()); // episodes are not loaded, so we cannot check if the podcast has new or unplayed ones! + + // we may need to reference this elsewhere... + lastMenuInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); + + if(menuInfo == null) { + menuInfo = lastMenuInfo; + } + if(menuInfo.targetView.getParent() instanceof ListView == false || ((ListView)menuInfo.targetView.getParent()).getId() != R.id.nav_list) { return false; diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 7eee1558b..e10e8041e 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -96,6 +96,7 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity private View navDrawer; private ListView navList; private NavListAdapter navAdapter; + private AdapterView.AdapterContextMenuInfo lastMenuInfo = null; private ActionBarDrawerToggle drawerToggle; @@ -505,11 +506,19 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity Feed feed = navDrawerData.feeds.get(position - navAdapter.getSubscriptionOffset()); menu.setHeaderTitle(feed.getTitle()); // episodes are not loaded, so we cannot check if the podcast has new or unplayed ones! + + // we may need to reference this elsewhere... + lastMenuInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); + + if(menuInfo == null) { + menuInfo = lastMenuInfo; + } + if(menuInfo.targetView.getParent() instanceof ListView == false || ((ListView)menuInfo.targetView.getParent()).getId() != R.id.nav_list) { return false; 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 b83e9bc15..40a0d1801 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -255,10 +255,20 @@ public abstract class MediaplayerActivity extends ActionBarActivity (media instanceof FeedMedia) && ((FeedMedia) media).getItem().getFlattrStatus().flattrable() ); - menu.findItem(R.id.share_link_item).setVisible( - media != null && media.getWebsiteLink() != null); - menu.findItem(R.id.visit_website_item).setVisible( - media != null && media.getWebsiteLink() != null); + + boolean hasWebsiteLink = media != null && media.getWebsiteLink() != null; + menu.findItem(R.id.visit_website_item).setVisible(hasWebsiteLink); + + boolean isItemAndHasLink = media != null && (media instanceof FeedMedia) && ((FeedMedia) media).getItem().getLink() != null; + menu.findItem(R.id.share_link_item).setVisible(isItemAndHasLink); + menu.findItem(R.id.share_link_with_position_item).setVisible(isItemAndHasLink); + + boolean isItemHasDownloadLink = media != null && (media instanceof FeedMedia) && ((FeedMedia) media).getDownload_url() != null; + menu.findItem(R.id.share_download_url_item).setVisible(isItemHasDownloadLink); + menu.findItem(R.id.share_download_url_with_position_item).setVisible(isItemHasDownloadLink); + + menu.findItem(R.id.share_item).setVisible(hasWebsiteLink || isItemAndHasLink || isItemHasDownloadLink); + menu.findItem(R.id.skip_episode_item).setVisible(media != null); boolean sleepTimerSet = controller.sleepTimerActive(); boolean sleepTimerNotSet = controller.sleepTimerNotActive(); @@ -278,7 +288,6 @@ 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()) { @@ -334,20 +343,28 @@ public abstract class MediaplayerActivity extends ActionBarActivity break; case R.id.support_item: if (media instanceof FeedMedia) { - DBTasks.flattrItemIfLoggedIn(this, feedItem); + DBTasks.flattrItemIfLoggedIn(this, ((FeedMedia) media).getItem()); } break; case R.id.share_link_item: - ShareUtils.shareFeedItemLink(this, feedItem); + if (media instanceof FeedMedia) { + ShareUtils.shareFeedItemLink(this, ((FeedMedia) media).getItem()); + } break; case R.id.share_download_url_item: - ShareUtils.shareFeedItemDownloadLink(this, feedItem); + if (media instanceof FeedMedia) { + ShareUtils.shareFeedItemDownloadLink(this, ((FeedMedia) media).getItem()); + } break; case R.id.share_link_with_position_item: - ShareUtils.shareFeedItemLink(this, feedItem, true); + if (media instanceof FeedMedia) { + ShareUtils.shareFeedItemLink(this, ((FeedMedia) media).getItem(), true); + } break; case R.id.share_download_url_with_position_item: - ShareUtils.shareFeedItemDownloadLink(this, feedItem, true); + if (media instanceof FeedMedia) { + ShareUtils.shareFeedItemDownloadLink(this, ((FeedMedia) media).getItem(), true); + } break; case R.id.skip_episode_item: sendBroadcast(new Intent( diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java index 4fdaf6843..04ba77cda 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java @@ -114,11 +114,6 @@ public class DownloadService extends Service { public static final String EXTRA_REQUEST = "request"; /** - * Stores new media files that will be queued for auto-download if possible. - */ - private List<Long> newMediaFiles; - - /** * Contains all completed downloads that have not been included in the report yet. */ private List<DownloadStatus> reportQueue; @@ -171,7 +166,7 @@ public class DownloadService extends Service { } private Thread downloadCompletionThread = new Thread() { - private static final String TAG = "downloadCompletionThread"; + private static final String TAG = "downloadCompletionThd"; @Override public void run() { @@ -241,7 +236,6 @@ public class DownloadService extends Service { Log.d(TAG, "Service started"); isRunning = true; handler = new Handler(); - newMediaFiles = Collections.synchronizedList(new ArrayList<Long>()); reportQueue = Collections.synchronizedList(new ArrayList<DownloadStatus>()); downloads = Collections.synchronizedList(new ArrayList<Downloader>()); numberOfDownloads = new AtomicInteger(0); @@ -325,16 +319,8 @@ public class DownloadService extends Service { cancelNotificationUpdater(); unregisterReceiver(cancelDownloadReceiver); - // TODO: I'm not sure this is actually needed. - // We could just invoke the autodownloadUndownloadeditems method - // and it would get everything it's supposed to. By sending it the - // items in newMediaFiles we're overriding the download algorithm, - // which is not something we should probably do. - if (!newMediaFiles.isEmpty()) { - Log.d(TAG, "newMediaFiles exist, autodownload them"); - DBTasks.autodownloadUndownloadedItems(getApplicationContext(), - ArrayUtils.toPrimitive(newMediaFiles.toArray(new Long[newMediaFiles.size()]))); - } + // start auto download in case anything new has shown up + DBTasks.autodownloadUndownloadedItems(getApplicationContext()); } @SuppressLint("NewApi") @@ -783,16 +769,6 @@ public class DownloadService extends Service { for (int i = 0; i < savedFeeds.length; i++) { Feed savedFeed = savedFeeds[i]; - // queue new media files for automatic download - for (FeedItem item : savedFeed.getItems()) { - if(item.getPubDate() == null) { - Log.d(TAG, item.toString()); - } - if (item.isNew() && item.hasMedia() && !item.getMedia().isDownloaded()) { - newMediaFiles.add(item.getMedia().getId()); - } - } - // If loadAllPages=true, check if another page is available and queue it for download final boolean loadAllPages = results.get(i).first.getArguments().getBoolean(DownloadRequester.REQUEST_ARG_LOAD_ALL_PAGES); final Feed feed = results.get(i).second.feed; |