summaryrefslogtreecommitdiff
path: root/src/de
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-06-26 18:39:02 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-06-26 18:39:02 +0200
commit0d6a7580de4bef2128468457b1b12958de63a08d (patch)
tree57895683f71949ce911b29083609bbbc1d02f40f /src/de
parent7ef8a7021c91f73d746929453e43c4765dc9b90f (diff)
downloadAntennaPod-0d6a7580de4bef2128468457b1b12958de63a08d.zip
Added support for flattr-paymentlinks
Diffstat (limited to 'src/de')
-rw-r--r--src/de/podfetcher/activity/FeedItemlistActivity.java2
-rw-r--r--src/de/podfetcher/feed/Feed.java9
-rw-r--r--src/de/podfetcher/feed/FeedItem.java10
-rw-r--r--src/de/podfetcher/feed/FeedManager.java13
-rw-r--r--src/de/podfetcher/fragment/FeedlistFragment.java2
-rw-r--r--src/de/podfetcher/storage/PodDBAdapter.java9
-rw-r--r--src/de/podfetcher/syndication/namespace/atom/NSAtom.java18
-rw-r--r--src/de/podfetcher/util/FeedItemMenuHandler.java10
-rw-r--r--src/de/podfetcher/util/FeedMenuHandler.java9
9 files changed, 70 insertions, 12 deletions
diff --git a/src/de/podfetcher/activity/FeedItemlistActivity.java b/src/de/podfetcher/activity/FeedItemlistActivity.java
index 253ebae33..cd3276673 100644
--- a/src/de/podfetcher/activity/FeedItemlistActivity.java
+++ b/src/de/podfetcher/activity/FeedItemlistActivity.java
@@ -61,7 +61,7 @@ public class FeedItemlistActivity extends SherlockFragmentActivity {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- return FeedMenuHandler.onPrepareOptionsMenu(menu);
+ return FeedMenuHandler.onPrepareOptionsMenu(menu, feed);
}
@Override
diff --git a/src/de/podfetcher/feed/Feed.java b/src/de/podfetcher/feed/Feed.java
index bcec1e55b..59eaf7046 100644
--- a/src/de/podfetcher/feed/Feed.java
+++ b/src/de/podfetcher/feed/Feed.java
@@ -19,6 +19,7 @@ public class Feed extends FeedFile {
private ArrayList<FeedItem> items;
/** Date of last refresh. */
private Date lastUpdate;
+ private String paymentLink;
public Feed(Date lastUpdate) {
super();
@@ -97,5 +98,13 @@ public class Feed extends FeedFile {
public void setLastUpdate(Date lastUpdate) {
this.lastUpdate = lastUpdate;
}
+
+ public String getPaymentLink() {
+ return paymentLink;
+ }
+
+ public void setPaymentLink(String paymentLink) {
+ this.paymentLink = paymentLink;
+ }
}
diff --git a/src/de/podfetcher/feed/FeedItem.java b/src/de/podfetcher/feed/FeedItem.java
index 9806fbb77..0ad35d6e3 100644
--- a/src/de/podfetcher/feed/FeedItem.java
+++ b/src/de/podfetcher/feed/FeedItem.java
@@ -9,6 +9,7 @@ import java.util.Date;
*
*/
public class FeedItem extends FeedComponent{
+
private String title;
private String description;
private String contentEncoded;
@@ -17,6 +18,7 @@ public class FeedItem extends FeedComponent{
private FeedMedia media;
private Feed feed;
protected boolean read;
+ private String paymentLink;
public FeedItem() {
this.read = true;
@@ -93,6 +95,14 @@ public class FeedItem extends FeedComponent{
public void setContentEncoded(String contentEncoded) {
this.contentEncoded = contentEncoded;
}
+
+ public String getPaymentLink() {
+ return paymentLink;
+ }
+
+ public void setPaymentLink(String paymentLink) {
+ this.paymentLink = paymentLink;
+ }
}
diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java
index 36588dcfd..3533c676f 100644
--- a/src/de/podfetcher/feed/FeedManager.java
+++ b/src/de/podfetcher/feed/FeedManager.java
@@ -335,7 +335,8 @@ public class FeedManager {
}
}
Log.e(TAG, "Couldn't find FeedMedia with id " + id);
- if (feed == null) Log.e(TAG, "Feed was null");
+ if (feed == null)
+ Log.e(TAG, "Feed was null");
return null;
}
@@ -395,6 +396,8 @@ public class FeedManager {
.getColumnIndex(PodDBAdapter.KEY_LINK)));
feed.setDescription(feedlistCursor.getString(feedlistCursor
.getColumnIndex(PodDBAdapter.KEY_DESCRIPTION)));
+ feed.setPaymentLink(feedlistCursor.getString(feedlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_PAYMENT_LINK)));
feed.setImage(adapter.getFeedImage(feedlistCursor
.getLong(feedlistCursor
.getColumnIndex(PodDBAdapter.KEY_IMAGE))));
@@ -438,6 +441,8 @@ public class FeedManager {
.getColumnIndex(PodDBAdapter.KEY_CONTENT_ENCODED)));
item.setPubDate(new Date(itemlistCursor.getLong(itemlistCursor
.getColumnIndex(PodDBAdapter.KEY_PUBDATE))));
+ item.setPaymentLink(itemlistCursor.getString(itemlistCursor
+ .getColumnIndex(PodDBAdapter.KEY_PAYMENT_LINK)));
long mediaId = itemlistCursor.getLong(itemlistCursor
.getColumnIndex(PodDBAdapter.KEY_MEDIA));
if (mediaId != 0) {
@@ -505,13 +510,13 @@ public class FeedManager {
.getColumnIndex(PodDBAdapter.KEY_FEED)));
if (feed != null) {
FeedItem item = getFeedItem(
- cursor.getColumnIndex(PodDBAdapter.KEY_FEEDITEM), feed);
+ cursor.getColumnIndex(PodDBAdapter.KEY_FEEDITEM),
+ feed);
if (item != null) {
queue.add(index, item);
}
}
-
-
+
} while (cursor.moveToNext());
}
cursor.close();
diff --git a/src/de/podfetcher/fragment/FeedlistFragment.java b/src/de/podfetcher/fragment/FeedlistFragment.java
index f1e160295..c76e3c051 100644
--- a/src/de/podfetcher/fragment/FeedlistFragment.java
+++ b/src/de/podfetcher/fragment/FeedlistFragment.java
@@ -143,7 +143,7 @@ public class FeedlistFragment extends SherlockListFragment {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return false;
+ return FeedMenuHandler.onPrepareOptionsMenu(menu, selectedFeed);
}
@Override
diff --git a/src/de/podfetcher/storage/PodDBAdapter.java b/src/de/podfetcher/storage/PodDBAdapter.java
index 4169d4570..37db7759a 100644
--- a/src/de/podfetcher/storage/PodDBAdapter.java
+++ b/src/de/podfetcher/storage/PodDBAdapter.java
@@ -52,6 +52,7 @@ public class PodDBAdapter {
public static final String KEY_COMPLETION_DATE = "completion_date";
public static final String KEY_FEEDITEM = "feeditem";
public static final String KEY_CONTENT_ENCODED = "content_encoded";
+ public static final String KEY_PAYMENT_LINK = "payment_link";
// Table names
public static final String TABLE_NAME_FEEDS = "Feeds";
@@ -70,14 +71,16 @@ public class PodDBAdapter {
+ " TEXT," + KEY_LINK + " TEXT," + KEY_DESCRIPTION + " TEXT,"
+ KEY_IMAGE + " INTEGER," + KEY_CATEGORY + " INTEGER,"
+ KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT,"
- + KEY_DOWNLOADED + " INTEGER," + KEY_LASTUPDATE + " TEXT)";
+ + KEY_DOWNLOADED + " INTEGER," + KEY_LASTUPDATE + " TEXT,"
+ + KEY_PAYMENT_LINK + " TEXT)";
private static final String CREATE_TABLE_FEED_ITEMS = "CREATE TABLE "
+ TABLE_NAME_FEED_ITEMS + " (" + TABLE_PRIMARY_KEY + KEY_TITLE
+ " TEXT," + KEY_LINK + " TEXT," + KEY_DESCRIPTION + " TEXT,"
+ KEY_CONTENT_ENCODED + " TEXT,"
+ KEY_PUBDATE + " INTEGER," + KEY_MEDIA + " INTEGER," + KEY_FEED
- + " INTEGER," + KEY_READ + " INTEGER)";
+ + " INTEGER," + KEY_READ + " INTEGER,"
+ + KEY_PAYMENT_LINK + " TEXT)";
private static final String CREATE_TABLE_FEED_CATEGORIES = "CREATE TABLE "
+ TABLE_NAME_FEED_CATEGORIES + " (" + TABLE_PRIMARY_KEY + KEY_NAME
@@ -150,6 +153,7 @@ public class PodDBAdapter {
values.put(KEY_TITLE, feed.getTitle());
values.put(KEY_LINK, feed.getLink());
values.put(KEY_DESCRIPTION, feed.getDescription());
+ values.put(KEY_PAYMENT_LINK, feed.getPaymentLink());
if (feed.getImage() != null) {
if (feed.getImage().getId() == 0) {
setImage(feed.getImage());
@@ -259,6 +263,7 @@ public class PodDBAdapter {
values.put(KEY_DESCRIPTION, item.getDescription());
values.put(KEY_CONTENT_ENCODED, item.getContentEncoded());
values.put(KEY_PUBDATE, item.getPubDate().getTime());
+ values.put(KEY_PAYMENT_LINK, item.getPaymentLink());
if (item.getMedia() != null) {
if (item.getMedia().getId() == 0) {
setMedia(item.getMedia());
diff --git a/src/de/podfetcher/syndication/namespace/atom/NSAtom.java b/src/de/podfetcher/syndication/namespace/atom/NSAtom.java
index 3005e8a6d..979f3a86a 100644
--- a/src/de/podfetcher/syndication/namespace/atom/NSAtom.java
+++ b/src/de/podfetcher/syndication/namespace/atom/NSAtom.java
@@ -2,6 +2,8 @@ package de.podfetcher.syndication.namespace.atom;
import org.xml.sax.Attributes;
+import android.util.Log;
+
import de.podfetcher.feed.Feed;
import de.podfetcher.feed.FeedImage;
import de.podfetcher.feed.FeedItem;
@@ -9,9 +11,11 @@ import de.podfetcher.feed.FeedMedia;
import de.podfetcher.syndication.handler.HandlerState;
import de.podfetcher.syndication.namespace.Namespace;
import de.podfetcher.syndication.namespace.SyndElement;
+import de.podfetcher.syndication.namespace.rss20.NSRSS20;
import de.podfetcher.syndication.util.SyndDateUtils;
public class NSAtom extends Namespace {
+ private static final String TAG = "NSAtom";
public static final String NSTAG = "atom";
public static final String NSURI = "http://www.w3.org/2005/Atom";
@@ -36,6 +40,7 @@ public class NSAtom extends Namespace {
// rel-values
private static final String LINK_REL_ALTERNATE = "alternate";
private static final String LINK_REL_ENCLOSURE = "enclosure";
+ private static final String LINK_REL_PAYMENT = "payment";
private static final String LINK_REL_RELATED = "related";
private static final String LINK_REL_SELF = "self";
@@ -43,6 +48,9 @@ public class NSAtom extends Namespace {
private static final String isText = TITLE + "|" + CONTENT + "|" + "|"
+ SUBTITLE;
+ public static final String isFeed = FEED + "|" + NSRSS20.CHANNEL;
+ public static final String isFeedItem = ENTRY + "|" + NSRSS20.ITEM;
+
@Override
public SyndElement handleElementStart(String localName, HandlerState state,
Attributes attributes) {
@@ -57,7 +65,7 @@ public class NSAtom extends Namespace {
String href = attributes.getValue(LINK_HREF);
String rel = attributes.getValue(LINK_REL);
SyndElement parent = state.getTagstack().peek();
- if (parent.getName().equals(ENTRY)) {
+ if (parent.getName().matches(isFeedItem)) {
if (rel == null || rel.equals(LINK_REL_ALTERNATE)) {
state.getCurrentItem().setLink(href);
} else if (rel.equals(LINK_REL_ENCLOSURE)) {
@@ -71,10 +79,16 @@ public class NSAtom extends Namespace {
state.getCurrentItem().setMedia(
new FeedMedia(state.getCurrentItem(), download_url,
size, type));
+ } else if (rel.equals(LINK_REL_PAYMENT)) {
+ Log.d(TAG, "Found payment item link");
+ state.getCurrentItem().setPaymentLink(href);
}
- } else if (parent.getName().equals(FEED)) {
+ } else if (parent.getName().matches(isFeed)) {
if (rel == null || rel.equals(LINK_REL_ALTERNATE)) {
state.getFeed().setLink(href);
+ } else if (rel.equals(LINK_REL_PAYMENT)) {
+ Log.d(TAG, "Found payment link");
+ state.getFeed().setPaymentLink(href);
}
}
}
diff --git a/src/de/podfetcher/util/FeedItemMenuHandler.java b/src/de/podfetcher/util/FeedItemMenuHandler.java
index 503c454eb..59d46de0f 100644
--- a/src/de/podfetcher/util/FeedItemMenuHandler.java
+++ b/src/de/podfetcher/util/FeedItemMenuHandler.java
@@ -49,7 +49,11 @@ public class FeedItemMenuHandler {
if (selectedItem.getLink() != null) {
menu.findItem(R.id.visit_website_item).setVisible(true);
}
-
+
+ if (selectedItem.getPaymentLink() != null) {
+ menu.findItem(R.id.support_item).setVisible(true);
+ }
+
return true;
}
@@ -92,6 +96,10 @@ public class FeedItemMenuHandler {
Uri uri = Uri.parse(selectedItem.getLink());
context.startActivity(new Intent(Intent.ACTION_VIEW, uri));
break;
+ case R.id.support_item:
+ Uri supportUri = Uri.parse(selectedItem.getPaymentLink());
+ context.startActivity(new Intent(Intent.ACTION_VIEW, supportUri));
+ break;
default:
return false;
}
diff --git a/src/de/podfetcher/util/FeedMenuHandler.java b/src/de/podfetcher/util/FeedMenuHandler.java
index bf258078d..3a62215b9 100644
--- a/src/de/podfetcher/util/FeedMenuHandler.java
+++ b/src/de/podfetcher/util/FeedMenuHandler.java
@@ -22,7 +22,10 @@ public class FeedMenuHandler {
return true;
}
- public static boolean onPrepareOptionsMenu(Menu menu) {
+ public static boolean onPrepareOptionsMenu(Menu menu, Feed selectedFeed) {
+ if (selectedFeed.getPaymentLink() != null) {
+ menu.findItem(R.id.support_item).setVisible(true);
+ }
return true;
}
@@ -38,6 +41,10 @@ public class FeedMenuHandler {
Uri uri = Uri.parse(selectedFeed.getLink());
context.startActivity(new Intent(Intent.ACTION_VIEW, uri));
break;
+ case R.id.support_item:
+ Uri supportUri = Uri.parse(selectedFeed.getPaymentLink());
+ context.startActivity(new Intent(Intent.ACTION_VIEW, supportUri));
+ break;
default:
return false;
}