FeedItem Visit Website tweak: use feed website as a fallback,
analogous to how share FeedItem link work. Applicable to both feed playback screen and feed information screen.
This commit is contained in:
parent
36507eb506
commit
345fcc17d0
|
@ -42,6 +42,7 @@ import de.danoeh.antennapod.core.storage.DBReader;
|
||||||
import de.danoeh.antennapod.core.storage.DBTasks;
|
import de.danoeh.antennapod.core.storage.DBTasks;
|
||||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||||
import de.danoeh.antennapod.core.util.Converter;
|
import de.danoeh.antennapod.core.util.Converter;
|
||||||
|
import de.danoeh.antennapod.core.util.FeedItemUtil;
|
||||||
import de.danoeh.antennapod.core.util.Flavors;
|
import de.danoeh.antennapod.core.util.Flavors;
|
||||||
import de.danoeh.antennapod.core.util.ShareUtils;
|
import de.danoeh.antennapod.core.util.ShareUtils;
|
||||||
import de.danoeh.antennapod.core.util.StorageUtils;
|
import de.danoeh.antennapod.core.util.StorageUtils;
|
||||||
|
@ -320,7 +321,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
|
||||||
((FeedMedia) media).getItem().getFlattrStatus().flattrable()
|
((FeedMedia) media).getItem().getFlattrStatus().flattrable()
|
||||||
);
|
);
|
||||||
|
|
||||||
boolean hasWebsiteLink = media != null && media.getWebsiteLink() != null;
|
boolean hasWebsiteLink = ( getWebsiteLinkWithFallback(media) != null );
|
||||||
menu.findItem(R.id.visit_website_item).setVisible(hasWebsiteLink);
|
menu.findItem(R.id.visit_website_item).setVisible(hasWebsiteLink);
|
||||||
|
|
||||||
boolean isItemAndHasLink = isFeedMedia &&
|
boolean isItemAndHasLink = isFeedMedia &&
|
||||||
|
@ -560,7 +561,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case R.id.visit_website_item:
|
case R.id.visit_website_item:
|
||||||
Uri uri = Uri.parse(media.getWebsiteLink());
|
Uri uri = Uri.parse(getWebsiteLinkWithFallback(media));
|
||||||
startActivity(new Intent(Intent.ACTION_VIEW, uri));
|
startActivity(new Intent(Intent.ACTION_VIEW, uri));
|
||||||
break;
|
break;
|
||||||
case R.id.support_item:
|
case R.id.support_item:
|
||||||
|
@ -603,6 +604,19 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String getWebsiteLinkWithFallback(Playable media) {
|
||||||
|
String link = null;
|
||||||
|
if (media != null) {
|
||||||
|
link = media.getWebsiteLink();
|
||||||
|
if (link == null) {
|
||||||
|
if (media instanceof FeedMedia) {
|
||||||
|
link = FeedItemUtil.getLinkWithFallback(((FeedMedia)media).getItem());
|
||||||
|
} // else case not a FeedMedia, return null
|
||||||
|
}
|
||||||
|
} // else no media, return null
|
||||||
|
return link;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
|
@ -17,6 +17,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||||
import de.danoeh.antennapod.core.storage.DBTasks;
|
import de.danoeh.antennapod.core.storage.DBTasks;
|
||||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||||
|
import de.danoeh.antennapod.core.util.FeedItemUtil;
|
||||||
import de.danoeh.antennapod.core.util.IntentUtils;
|
import de.danoeh.antennapod.core.util.IntentUtils;
|
||||||
import de.danoeh.antennapod.core.util.LongList;
|
import de.danoeh.antennapod.core.util.LongList;
|
||||||
import de.danoeh.antennapod.core.util.ShareUtils;
|
import de.danoeh.antennapod.core.util.ShareUtils;
|
||||||
|
@ -216,7 +217,7 @@ public class FeedItemMenuHandler {
|
||||||
DBWriter.setFeedItemAutoDownload(selectedItem, false);
|
DBWriter.setFeedItemAutoDownload(selectedItem, false);
|
||||||
break;
|
break;
|
||||||
case R.id.visit_website_item:
|
case R.id.visit_website_item:
|
||||||
Uri uri = Uri.parse(selectedItem.getLink());
|
Uri uri = Uri.parse(FeedItemUtil.getLinkWithFallback(selectedItem));
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||||
if(IntentUtils.isCallable(context, intent)) {
|
if(IntentUtils.isCallable(context, intent)) {
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
|
|
|
@ -2,6 +2,7 @@ package de.danoeh.antennapod.core.util;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import de.danoeh.antennapod.core.feed.Feed;
|
||||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||||
|
|
||||||
public class FeedItemUtil {
|
public class FeedItemUtil {
|
||||||
|
@ -75,4 +76,18 @@ public class FeedItemUtil {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the link for the feed item for the purpose of Share. It fallbacks to
|
||||||
|
* use the feed's link if the named feed item has no link.
|
||||||
|
*/
|
||||||
|
public static String getLinkWithFallback(FeedItem item) {
|
||||||
|
String link = item.getLink();
|
||||||
|
if (link == null) {
|
||||||
|
Feed feed = item.getFeed();
|
||||||
|
if (feed != null) {
|
||||||
|
link = feed.getLink();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return link;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,27 +50,12 @@ public class ShareUtils {
|
||||||
return item.getFeed().getTitle() + ": " + item.getTitle();
|
return item.getFeed().getTitle() + ": " + item.getTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the link for the feed item for the purpose of Share. It fallbacks to
|
|
||||||
* use the feed's link if the named feed item has no link.
|
|
||||||
*/
|
|
||||||
private static String getItemShareLink(FeedItem item) {
|
|
||||||
String link = item.getLink();
|
|
||||||
if (link == null) {
|
|
||||||
Feed feed = item.getFeed();
|
|
||||||
if (feed != null) {
|
|
||||||
link = feed.getLink();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return link;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean hasLinkToShare(FeedItem item) {
|
public static boolean hasLinkToShare(FeedItem item) {
|
||||||
return ( item != null && getItemShareLink(item) != null );
|
return ( item != null && FeedItemUtil.getLinkWithFallback(item) != null );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void shareFeedItemLink(Context context, FeedItem item, boolean withPosition) {
|
public static void shareFeedItemLink(Context context, FeedItem item, boolean withPosition) {
|
||||||
String text = getItemShareText(item) + " " + getItemShareLink(item);
|
String text = getItemShareText(item) + " " + FeedItemUtil.getLinkWithFallback(item);
|
||||||
if(withPosition) {
|
if(withPosition) {
|
||||||
int pos = item.getMedia().getPosition();
|
int pos = item.getMedia().getPosition();
|
||||||
text += " [" + Converter.getDurationStringLong(pos) + "]";
|
text += " [" + Converter.getDurationStringLong(pos) + "]";
|
||||||
|
|
Loading…
Reference in New Issue