From ea51e68b5b3845a206df1d95d10769ea3740f611 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 4 Dec 2011 10:50:49 +0300 Subject: [PATCH] rework combined mode to use textviews to prevent graphical glitches --- AndroidManifest.xml | 2 +- res/layout-port/headlines_row.xml | 2 +- res/layout-port/headlines_row_selected.xml | 3 +- res/layout-port/headlines_row_unread.xml | 2 +- res/layout-xlarge/headlines_row.xml | 4 +- res/layout-xlarge/headlines_row_selected.xml | 4 +- res/layout-xlarge/headlines_row_unread.xml | 4 +- res/layout/headlines_row.xml | 4 +- res/layout/headlines_row_selected.xml | 4 +- res/layout/headlines_row_unread.xml | 4 +- res/values/strings.xml | 2 +- src/org/fox/ttrss/ArticleFragment.java | 1 - src/org/fox/ttrss/HeadlinesFragment.java | 67 ++++++++------------ 13 files changed, 45 insertions(+), 58 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index d630da5b..b02cb212 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -9,7 +9,7 @@ - + diff --git a/res/layout-port/headlines_row.xml b/res/layout-port/headlines_row.xml index cb58bb26..833a1397 100644 --- a/res/layout-port/headlines_row.xml +++ b/res/layout-port/headlines_row.xml @@ -95,7 +95,7 @@ - - diff --git a/res/layout-port/headlines_row_unread.xml b/res/layout-port/headlines_row_unread.xml index 28eb47ed..6510535c 100644 --- a/res/layout-port/headlines_row_unread.xml +++ b/res/layout-port/headlines_row_unread.xml @@ -98,7 +98,7 @@ - - - + \ No newline at end of file diff --git a/res/layout-xlarge/headlines_row_selected.xml b/res/layout-xlarge/headlines_row_selected.xml index a8d8d8bd..916e2634 100644 --- a/res/layout-xlarge/headlines_row_selected.xml +++ b/res/layout-xlarge/headlines_row_selected.xml @@ -98,12 +98,12 @@ - - + \ No newline at end of file diff --git a/res/layout-xlarge/headlines_row_unread.xml b/res/layout-xlarge/headlines_row_unread.xml index 65f4a5f4..84fcd33f 100644 --- a/res/layout-xlarge/headlines_row_unread.xml +++ b/res/layout-xlarge/headlines_row_unread.xml @@ -98,12 +98,12 @@ - - + \ No newline at end of file diff --git a/res/layout/headlines_row.xml b/res/layout/headlines_row.xml index 8b51030d..9b5832c9 100644 --- a/res/layout/headlines_row.xml +++ b/res/layout/headlines_row.xml @@ -100,12 +100,12 @@ - - + \ No newline at end of file diff --git a/res/layout/headlines_row_selected.xml b/res/layout/headlines_row_selected.xml index a8d8d8bd..916e2634 100644 --- a/res/layout/headlines_row_selected.xml +++ b/res/layout/headlines_row_selected.xml @@ -98,12 +98,12 @@ - - + \ No newline at end of file diff --git a/res/layout/headlines_row_unread.xml b/res/layout/headlines_row_unread.xml index 65f4a5f4..84fcd33f 100644 --- a/res/layout/headlines_row_unread.xml +++ b/res/layout/headlines_row_unread.xml @@ -98,12 +98,12 @@ - - + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index a7fb96a9..af36a5c1 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -88,6 +88,6 @@ Error: unknown API error (see log) Error: username or password incorrect Error: invalid API URL - Displays articles inline, instead of a separate panel + Displays full article text inline, instead of a separate panel Combined mode \ No newline at end of file diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java index a57821ab..1b6debf9 100644 --- a/src/org/fox/ttrss/ArticleFragment.java +++ b/src/org/fox/ttrss/ArticleFragment.java @@ -19,7 +19,6 @@ import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; -import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.ImageView; import android.widget.TextView; diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java index 8035e191..95ba1f9a 100644 --- a/src/org/fox/ttrss/HeadlinesFragment.java +++ b/src/org/fox/ttrss/HeadlinesFragment.java @@ -1,6 +1,9 @@ package org.fox.ttrss; +import java.io.IOException; +import java.io.InputStream; import java.lang.reflect.Type; +import java.net.MalformedURLException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -9,26 +12,31 @@ import java.util.HashMap; import java.util.List; import java.util.TimeZone; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.DefaultHttpClient; import org.jsoup.Jsoup; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.text.Html; +import android.text.Html.ImageGetter; +import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.util.Log; -import android.util.TypedValue; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; -import android.webkit.WebSettings; -import android.webkit.WebView; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; @@ -67,6 +75,15 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, private ArticleOps m_articleOps; + private ImageGetter m_dummyGetter = new ImageGetter() { + + @Override + public Drawable getDrawable(String source) { + return new BitmapDrawable(); + } + + }; + public ArticleList getSelectedArticles() { return m_selectedArticles; } @@ -330,7 +347,6 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, View v = convertView; final Article article = items.get(position); - int webBgResource = R.attr.headlineNormalBackground; if (v == null) { int layoutId = R.layout.headlines_row; @@ -341,11 +357,9 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, break; case VIEW_UNREAD: layoutId = R.layout.headlines_row_unread; - webBgResource = R.attr.headlineUnreadBackground; break; case VIEW_SELECTED: layoutId = R.layout.headlines_row_selected; - webBgResource = R.attr.headlineSelectedBackground; break; } @@ -416,46 +430,19 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, } } - WebView web = (WebView)v.findViewById(R.id.content); + TextView content = (TextView)v.findViewById(R.id.content); - if (web != null) { + if (content != null) { if (m_combinedMode) { - String content; - String cssOverride = ""; - - TypedValue tv = new TypedValue(); - getActivity().getTheme().resolveAttribute(webBgResource, tv, true); - int webColor = tv.data; - - web.setBackgroundColor(webColor); - - //WebSettings ws = web.getSettings(); - //ws.setBlockNetworkLoads(true); + content.setMovementMethod(LinkMovementMethod.getInstance()); - if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) { - cssOverride = "body { background : transparent; color : #e0e0e0}\n"; - } else { - cssOverride = "body { background : transparent; }\n"; - } + //content.setText(Html.fromHtml(article.content, new URLImageGetter(content, getActivity()), null)); + content.setText(Html.fromHtml(article.content, m_dummyGetter, null)); - content = - "" + - "" + - "" + - "" + - "" + - "" + - "" + article.content + ""; - - web.loadDataWithBaseURL(null, content, "text/html", "utf-8", null); - //web.setOnTouchListener(new WebViewClickListener(web, parent, position)); } else { - web.setVisibility(View.GONE); + content.setVisibility(View.GONE); } + } TextView dv = (TextView) v.findViewById(R.id.date);