summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/dialog/FeedItemDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/danoeh/antennapod/dialog/FeedItemDialog.java')
-rw-r--r--src/de/danoeh/antennapod/dialog/FeedItemDialog.java84
1 files changed, 55 insertions, 29 deletions
diff --git a/src/de/danoeh/antennapod/dialog/FeedItemDialog.java b/src/de/danoeh/antennapod/dialog/FeedItemDialog.java
index 4a130af6e..7384463de 100644
--- a/src/de/danoeh/antennapod/dialog/FeedItemDialog.java
+++ b/src/de/danoeh/antennapod/dialog/FeedItemDialog.java
@@ -1,5 +1,6 @@
package de.danoeh.antennapod.dialog;
+import android.annotation.TargetApi;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
@@ -21,6 +22,14 @@ import android.webkit.WebViewClient;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
+
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.Validate;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+
import de.danoeh.antennapod.BuildConfig;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
@@ -34,11 +43,6 @@ import de.danoeh.antennapod.storage.DownloadRequester;
import de.danoeh.antennapod.util.QueueAccess;
import de.danoeh.antennapod.util.ShownotesProvider;
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
-import org.apache.commons.lang3.StringEscapeUtils;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.Callable;
/**
* Shows information about a specific FeedItem and provides actions like playing, downloading, etc.
@@ -58,7 +62,7 @@ public class FeedItemDialog extends Dialog {
private PopupMenu popupMenu;
public static FeedItemDialog newInstance(Context context, FeedItemDialogSavedInstance savedInstance) {
- if (savedInstance == null) throw new IllegalArgumentException("savedInstance = null");
+ Validate.notNull(savedInstance);
FeedItemDialog dialog = newInstance(context, savedInstance.item, savedInstance.queueAccess);
if (savedInstance.isShowing) {
dialog.show();
@@ -76,8 +80,8 @@ public class FeedItemDialog extends Dialog {
public FeedItemDialog(Context context, int theme, FeedItem item, QueueAccess queue) {
super(context, theme);
- if (item == null) throw new IllegalArgumentException("item = null");
- if (queue == null) throw new IllegalArgumentException("queue = null");
+ Validate.notNull(item);
+ Validate.notNull(queue);
this.item = item;
this.queue = queue;
}
@@ -95,6 +99,7 @@ public class FeedItemDialog extends Dialog {
&& UserPreferences.getTheme() != R.style.Theme_AntennaPod_Dark;
}
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -147,12 +152,9 @@ public class FeedItemDialog extends Dialog {
@Override
public void onClick(View v) {
- FeedMedia media = item.getMedia();
- if (media == null) {
- return;
- }
actionButtonCallback.onActionButtonPressed(item);
- if (media.isDownloaded()) {
+ FeedMedia media = item.getMedia();
+ if (media != null && media.isDownloaded()) {
// playback was started, dialog should close itself
dismiss();
}
@@ -166,16 +168,17 @@ public class FeedItemDialog extends Dialog {
{
@Override
public void onClick(View v) {
- FeedMedia media = item.getMedia();
- if (media == null) {
- return;
- }
-
- if (!media.isDownloaded()) {
- DBTasks.playMedia(getContext(), media, true, true, true);
- dismiss();
- } else {
- DBWriter.deleteFeedMediaOfItem(getContext(), media.getId());
+ if (item.hasMedia()) {
+ FeedMedia media = item.getMedia();
+ if (!media.isDownloaded()) {
+ DBTasks.playMedia(getContext(), media, true, true, true);
+ dismiss();
+ } else {
+ DBWriter.deleteFeedMediaOfItem(getContext(), media.getId());
+ }
+ } else if (item.getLink() != null) {
+ Uri uri = Uri.parse(item.getLink());
+ getContext().startActivity(new Intent(Intent.ACTION_VIEW, uri));
}
}
}
@@ -186,7 +189,13 @@ public class FeedItemDialog extends Dialog {
public void onClick(View v) {
popupMenu.getMenu().clear();
popupMenu.inflate(R.menu.feeditem_dialog);
- FeedItemMenuHandler.onPrepareMenu(popupMenuInterface, item, true, queue);
+ if (item.hasMedia()) {
+ FeedItemMenuHandler.onPrepareMenu(popupMenuInterface, item, true, queue);
+ } else {
+ // these are already available via button1 and button2
+ FeedItemMenuHandler.onPrepareMenu(popupMenuInterface, item, true, queue,
+ R.id.mark_read_item, R.id.visit_website_item);
+ }
popupMenu.show();
}
}
@@ -228,9 +237,26 @@ public class FeedItemDialog extends Dialog {
}
FeedMedia media = item.getMedia();
if (media == null) {
- header.setVisibility(View.GONE);
+ TypedArray drawables = getContext().obtainStyledAttributes(new int[]{R.attr.navigation_accept,
+ R.attr.location_web_site});
+
+ if (!item.isRead()) {
+ butAction1.setImageDrawable(drawables.getDrawable(0));
+ butAction1.setContentDescription(getContext().getString(R.string.mark_read_label));
+ butAction1.setVisibility(View.VISIBLE);
+ } else {
+ butAction1.setVisibility(View.INVISIBLE);
+ }
+
+ if (item.getLink() != null) {
+ butAction2.setImageDrawable(drawables.getDrawable(1));
+ butAction2.setContentDescription(getContext().getString(R.string.visit_website_label));
+ } else {
+ butAction2.setEnabled(false);
+ }
+
+ drawables.recycle();
} else {
- header.setVisibility(View.VISIBLE);
boolean isDownloading = DownloadRequester.getInstance().isDownloadingFile(media);
TypedArray drawables = getContext().obtainStyledAttributes(new int[]{R.attr.av_play,
R.attr.av_download, R.attr.action_stream, R.attr.content_discard, R.attr.navigation_cancel});
@@ -348,7 +374,7 @@ public class FeedItemDialog extends Dialog {
public void setItem(FeedItem item) {
- if (item == null) throw new IllegalArgumentException("item = null");
+ Validate.notNull(item);
this.item = item;
}
@@ -369,7 +395,7 @@ public class FeedItemDialog extends Dialog {
}
public void setQueue(QueueAccess queue) {
- if (queue == null) throw new IllegalArgumentException("queue = null");
+ Validate.notNull(queue);
this.queue = queue;
}
@@ -387,7 +413,7 @@ public class FeedItemDialog extends Dialog {
/**
* Used to save the FeedItemDialog's state across configuration changes
- * */
+ */
public static class FeedItemDialogSavedInstance {
final FeedItem item;
final QueueAccess queueAccess;