From 40a93c7df72b93460345c8adfa5fa97e74b18a8c Mon Sep 17 00:00:00 2001 From: Size43 Date: Wed, 10 Jun 2015 22:53:13 +0200 Subject: Removing [OBJ] from summaries / descriptions --- .../java/org/rssin/android/ArticleActivity.java | 26 +++++++++++++++++++++- .../java/org/rssin/android/FeedItemAdapter.java | 9 +++++++- .../org/rssin/android/SortedFeedItemContainer.java | 2 +- app/src/main/java/org/rssin/rssin/Feed.java | 5 ++++- .../java/org/rssin/rssin/FeedLoaderAndSorter.java | 4 +++- 5 files changed, 41 insertions(+), 5 deletions(-) mode change 100644 => 100755 app/src/main/java/org/rssin/android/ArticleActivity.java mode change 100644 => 100755 app/src/main/java/org/rssin/android/FeedItemAdapter.java mode change 100644 => 100755 app/src/main/java/org/rssin/android/SortedFeedItemContainer.java mode change 100644 => 100755 app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java (limited to 'app/src/main/java') diff --git a/app/src/main/java/org/rssin/android/ArticleActivity.java b/app/src/main/java/org/rssin/android/ArticleActivity.java old mode 100644 new mode 100755 index 6c80fb6..0951a48 --- a/app/src/main/java/org/rssin/android/ArticleActivity.java +++ b/app/src/main/java/org/rssin/android/ArticleActivity.java @@ -22,6 +22,7 @@ import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.text.Html; +import android.text.method.LinkMovementMethod; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; @@ -32,6 +33,9 @@ import org.rssin.rss.FeedSorterProvider; import org.rssin.rss.FeedSorterTrainer; import org.rssin.rssin.R; +import java.net.MalformedURLException; +import java.net.URL; + import static org.rssin.neurons.Feedback.Dislike; import static org.rssin.neurons.Feedback.Like; @@ -55,8 +59,28 @@ public class ArticleActivity extends ActionBarActivity { title.setText(item.getTitle()); setTitle(item.getTitle()); + String descriptionStr = item.getDescription(); + + try + { + // Transform tags into absolute URLs. + // This may add a double slash after the domain name, but most - if not all - webservers will still + // parse the URL the same way. + URL url = new URL(item.getLink()); + descriptionStr = descriptionStr.replaceAll("href=\"(((?!http).)*)\"", "href=\"http://" + url.getHost() + "/$1\""); + }catch(MalformedURLException e) + { + e.printStackTrace(); + } + + // Remove & tags + descriptionStr = descriptionStr.replaceAll("(|<\\/img>|)", ""); + descriptionStr = descriptionStr.replaceAll("(|<\\/media>)", ""); + TextView description = (TextView) findViewById(R.id.article_description); - description.setText(Html.fromHtml(item.getDescription())); + description.setText(Html.fromHtml(descriptionStr)); + description.setLinksClickable(true); + description.setMovementMethod(LinkMovementMethod.getInstance()); TextView author = (TextView) findViewById(R.id.article_author); if (item.getAuthor() != null) { diff --git a/app/src/main/java/org/rssin/android/FeedItemAdapter.java b/app/src/main/java/org/rssin/android/FeedItemAdapter.java old mode 100644 new mode 100755 index 2d2e582..8124861 --- a/app/src/main/java/org/rssin/android/FeedItemAdapter.java +++ b/app/src/main/java/org/rssin/android/FeedItemAdapter.java @@ -20,6 +20,7 @@ package org.rssin.android; import android.content.Intent; import android.support.v7.widget.RecyclerView; +import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -71,7 +72,13 @@ class FeedItemAdapter extends RecyclerView.Adapter|<\\/img>|)", ""); + summaryText = summaryText.replaceAll("(|<\\/media>)", ""); + summaryText = summaryText.replace((char) 160, (char) 32).replace((char) 65532, (char) 32).trim(); + + holder.summary.setText(Html.fromHtml(summaryText)); holder.date.setText(item.getFeeditem().getPubDate().toString()); holder.item = item; } diff --git a/app/src/main/java/org/rssin/android/SortedFeedItemContainer.java b/app/src/main/java/org/rssin/android/SortedFeedItemContainer.java old mode 100644 new mode 100755 index fd2777c..8a5a576 --- a/app/src/main/java/org/rssin/android/SortedFeedItemContainer.java +++ b/app/src/main/java/org/rssin/android/SortedFeedItemContainer.java @@ -46,7 +46,7 @@ public class SortedFeedItemContainer implements Comparable, Jsonable { @Override public void onReceive(Object data) { title = loader.getFeed().getTitle(); - titlehasChanged.onReceive(title); + if(titlehasChanged != null) + { + titlehasChanged.onReceive(title); + } try { store(storageProvider); } catch (Exception e) { diff --git a/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java b/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java old mode 100644 new mode 100755 index 6244d2e..9c4ad2f --- a/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java +++ b/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java @@ -108,7 +108,9 @@ public class FeedLoaderAndSorter { List feedItems = loader.getFeed().getPosts(); synchronized (resultingItems) { for (FeedItem item : feedItems) { - resultingItems.add(new SortedFeedItemContainer(item)); + if(item != null) { + resultingItems.add(new SortedFeedItemContainer(item)); + } } feedSorter.sortItems(resultingItems); } -- cgit v1.2.3