summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-02-06 14:05:56 +0300
committerAndrew Dolgov <[email protected]>2012-02-06 14:05:56 +0300
commit845caf8252a974d3b1155ef377de658da38f80a6 (patch)
tree945d87a587d0b71173638a7e3d386dd6c7295db9
parent36451d43b8025c005882c6baed9f0c075648dd07 (diff)
support article attachments, display image attachments inline (hello
lolcats)
-rw-r--r--src/org/fox/ttrss/Article.java7
-rw-r--r--src/org/fox/ttrss/ArticleFragment.java35
-rw-r--r--src/org/fox/ttrss/Attachment.java54
-rw-r--r--src/org/fox/ttrss/HeadlinesFragment.java1
4 files changed, 95 insertions, 2 deletions
diff --git a/src/org/fox/ttrss/Article.java b/src/org/fox/ttrss/Article.java
index 56f7adcf..c26e2cf7 100644
--- a/src/org/fox/ttrss/Article.java
+++ b/src/org/fox/ttrss/Article.java
@@ -16,7 +16,8 @@ public class Article implements Parcelable {
String title;
String link;
int feed_id;
- List<String> tags;
+ List<String> tags;
+ List<Attachment> attachments;
String content;
List<List<String>> labels;
@@ -49,6 +50,7 @@ public class Article implements Parcelable {
out.writeInt(feed_id);
out.writeStringList(tags);
out.writeString(content);
+ out.writeList(attachments);
}
public void readFromParcel(Parcel in) {
@@ -66,6 +68,9 @@ public class Article implements Parcelable {
in.readStringList(tags);
content = in.readString();
+
+ attachments = new ArrayList<Attachment>();
+ in.readList(attachments, null);
}
@SuppressWarnings("rawtypes")
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java
index fe02aa3d..272dfa34 100644
--- a/src/org/fox/ttrss/ArticleFragment.java
+++ b/src/org/fox/ttrss/ArticleFragment.java
@@ -1,5 +1,8 @@
package org.fox.ttrss;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -142,11 +145,41 @@ public class ArticleFragment extends Fragment {
//"<meta name=\"viewport\" content=\"target-densitydpi=device-dpi\" />" +
"<style type=\"text/css\">" +
cssOverride +
+ "div.attachments { font-size : 70%; margin-top : 1em; }" +
"img { max-width : 98%; height : auto; }" +
"body { text-align : justify; }" +
"</style>" +
"</head>" +
- "<body>" + articleContent + "</body></html>";
+ "<body>" + articleContent;
+
+ if (m_article.attachments.size() != 0) {
+ String attachments = "<div class=\"attachments\">Attachments: ";
+
+ for (Attachment a : m_article.attachments) {
+ if (a.content_type != null && a.content_url != null && a.content_type.indexOf("image") != -1) {
+
+ try {
+ URL url = new URL(a.content_url.trim());
+
+ String atitle = (a.title != null && a.title.length() > 0) ? a.title : new File(url.getFile()).getName();
+
+ content += "<br/><img src=\"" + url.toString().replace("\"", "\\\"") + "\">";
+
+ attachments += "<a href=\""+url.toString().replace("\"", "\\\"") + "\">" + atitle + "</a>, ";
+
+ } catch (MalformedURLException e) {
+ //
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+ }
+ content += attachments.replaceAll(", $", "");
+ content += "</div>";
+ }
+
+ content += "</body></html>";
try {
web.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
diff --git a/src/org/fox/ttrss/Attachment.java b/src/org/fox/ttrss/Attachment.java
new file mode 100644
index 00000000..38cc16d8
--- /dev/null
+++ b/src/org/fox/ttrss/Attachment.java
@@ -0,0 +1,54 @@
+package org.fox.ttrss;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class Attachment implements Parcelable {
+ int id;
+ String content_url;
+ String content_type;
+ String title;
+ String duration;
+ int post_id;
+
+ public Attachment(Parcel in) {
+ readFromParcel(in);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeInt(id);
+ out.writeString(content_url);
+ out.writeString(content_type);
+ out.writeString(title);
+ out.writeString(duration);
+ out.writeInt(post_id);
+ }
+
+ public void readFromParcel(Parcel in) {
+ id = in.readInt();
+ content_url = in.readString();
+ content_type = in.readString();
+ title = in.readString();
+ duration = in.readString();
+ post_id = in.readInt();
+ }
+
+ @SuppressWarnings("rawtypes")
+ public static final Parcelable.Creator CREATOR =
+ new Parcelable.Creator() {
+ public Attachment createFromParcel(Parcel in) {
+ return new Attachment(in);
+ }
+
+ public Attachment[] newArray(int size) {
+ return new Attachment[size];
+ }
+ };
+
+}
diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java
index b2741417..c93fd248 100644
--- a/src/org/fox/ttrss/HeadlinesFragment.java
+++ b/src/org/fox/ttrss/HeadlinesFragment.java
@@ -197,6 +197,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
put("sid", sessionId);
put("feed_id", String.valueOf(m_feed.id));
put("show_content", "true");
+ put("include_attachments", "true");
put("limit", String.valueOf(HEADLINES_REQUEST_SIZE));
put("offset", String.valueOf(0));
put("view_mode", showUnread ? "adaptive" : "all_articles");