From accfa1c6727caf5a68331fdde267d126d6d06111 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 29 Nov 2014 11:18:43 +0300 Subject: [PATCH] make headlines listview a bit faster --- org.fox.ttrss/src/main/AndroidManifest.xml | 4 +- .../fox/ttrss/ArticleImagesPagerActivity.java | 28 +++++++++- .../java/org/fox/ttrss/CommonActivity.java | 1 + .../java/org/fox/ttrss/HeadlinesFragment.java | 54 +++++++++++++------ .../offline/OfflineHeadlinesFragment.java | 11 ++-- 5 files changed, 73 insertions(+), 25 deletions(-) diff --git a/org.fox.ttrss/src/main/AndroidManifest.xml b/org.fox.ttrss/src/main/AndroidManifest.xml index 39c8a890..0e72c0d5 100644 --- a/org.fox.ttrss/src/main/AndroidManifest.xml +++ b/org.fox.ttrss/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="290" + android:versionName="1.81" > (); + + Document doc = Jsoup.parse(m_content); + Elements imgs = doc.select("img"); + + boolean firstFound = false; + + for (Element img : imgs) { + String imgSrc = img.attr("src"); + + if (imgSrcFirst.equals(imgSrc)) + firstFound = true; + + if (firstFound) { + if (imgSrc.indexOf("//") == 0) + imgSrc = "http:" + imgSrc; + + m_urls.add(imgSrc); + } + } + } else { m_urls = savedInstanceState.getStringArrayList("urls"); m_title = savedInstanceState.getString("title"); m_content = savedInstanceState.getString("content"); } - if (m_urls.size() > 1) { m_checkedUrls = new ArrayList(); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java index 80dacea1..56704bf5 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java @@ -30,6 +30,7 @@ public class CommonActivity extends ActionBarActivity { public final static String THEME_DEFAULT = CommonActivity.THEME_LIGHT; public static final int EXCERPT_MAX_LENGTH = 256; + public static final int EXCERPT_MAX_QUERY_LENGTH = 1024; private SQLiteDatabase m_readableDb; private SQLiteDatabase m_writableDb; diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index d78732cc..6a90865a 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -828,16 +828,30 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, }); } - String articleContent = article.content != null ? article.content : ""; + boolean showFlavorImage = "HL_DEFAULT".equals(m_prefs.getString("headline_mode", "HL_DEFAULT")); - if (holder.excerptView != null) { + String articleContent = article.content != null ? article.content : ""; + + + String articleContentReduced = articleContent.length() > CommonActivity.EXCERPT_MAX_QUERY_LENGTH ? + articleContent.substring(0, CommonActivity.EXCERPT_MAX_QUERY_LENGTH) : articleContent; + + /* if (m_compactLayoutMode || !showFlavorImage) { + if (articleContent.length() > CommonActivity.EXCERPT_MAX_QUERY_LENGTH) { + articleContent = articleContent.substring(0, CommonActivity.EXCERPT_MAX_QUERY_LENGTH); + } + } */ + + Document articleDoc = Jsoup.parse(articleContentReduced); + + if (holder.excerptView != null) { if (!m_prefs.getBoolean("headlines_show_content", true)) { holder.excerptView.setVisibility(View.GONE); - } else { - String tmp = articleContent.length() > CommonActivity.EXCERPT_MAX_LENGTH ? - articleContent.substring(0, CommonActivity.EXCERPT_MAX_LENGTH) + "…" : articleContent; + } else if (articleDoc != null) { + String excerpt = articleDoc.text(); - String excerpt = Jsoup.parse(tmp).text(); + if (excerpt.length() > CommonActivity.EXCERPT_MAX_LENGTH) + excerpt = excerpt.substring(0, CommonActivity.EXCERPT_MAX_LENGTH) + "…"; holder.excerptView.setTextSize(TypedValue.COMPLEX_UNIT_SP, headlineFontSize); holder.excerptView.setText(excerpt); @@ -845,19 +859,18 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, } if (!m_compactLayoutMode) { - boolean showFlavorImage = "HL_DEFAULT".equals(m_prefs.getString("headline_mode", "HL_DEFAULT")); if (holder.flavorImageView != null && showFlavorImage) { holder.flavorImageArrow.setVisibility(View.GONE); - Document doc = Jsoup.parse(articleContent); + //Document doc = Jsoup.parse(articleContent); boolean loadableImageFound = false; - if (doc != null) { + if (articleDoc != null) { //Element img = doc.select("img").first(); - final Elements imgs = doc.select("img"); + final Elements imgs = articleDoc.select("img"); Element img = null; for (Element tmp : imgs) { @@ -876,6 +889,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, if (img != null) { String imgSrc = img.attr("src"); + final String imgSrcFirst = imgSrc; // retarded schema-less urls if (imgSrc.indexOf("//") == 0) @@ -890,19 +904,27 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, holder.flavorImageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { - ArrayList imgsList = new ArrayList(); + /* ArrayList imgsList = new ArrayList(); + + boolean firstFound = false; for (Element img : imgs) { String imgSrc = img.attr("src"); - if (imgSrc.indexOf("//") == 0) - imgSrc = "http:" + imgSrc; + if (imgSrcFirst.equals(imgSrc)) + firstFound = true; - imgsList.add(imgSrc); - } + if (firstFound) { + if (imgSrc.indexOf("//") == 0) + imgSrc = "http:" + imgSrc; + + imgsList.add(imgSrc); + } + } */ Intent intent = new Intent(m_activity, ArticleImagesPagerActivity.class); - intent.putExtra("urls", imgsList); + //intent.putExtra("urls", imgsList); + intent.putExtra("firstSrc", imgSrcFirst); intent.putExtra("title", article.title); intent.putExtra("content", article.content); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index 3918f966..edcaa1fd 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -694,18 +694,19 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis }); } - String articleContent = article.getString(article.getColumnIndex("content")); - if (articleContent == null) articleContent = ""; - if (holder.excerptView != null) { if (!m_prefs.getBoolean("headlines_show_content", true)) { holder.excerptView.setVisibility(View.GONE); } else { - String tmp = articleContent.length() > CommonActivity.EXCERPT_MAX_LENGTH ? - articleContent.substring(0, CommonActivity.EXCERPT_MAX_LENGTH) + "…" : articleContent; + String articleContent = article.getString(article.getColumnIndex("content")); + + String tmp = articleContent.length() > CommonActivity.EXCERPT_MAX_QUERY_LENGTH ? + articleContent.substring(0, CommonActivity.EXCERPT_MAX_QUERY_LENGTH) : articleContent; String excerpt = Jsoup.parse(tmp).text(); + if (excerpt.length() > CommonActivity.EXCERPT_MAX_LENGTH) excerpt = excerpt.substring(0, CommonActivity.EXCERPT_MAX_LENGTH) + "…"; + holder.excerptView.setTextSize(TypedValue.COMPLEX_UNIT_SP, headlineFontSize); holder.excerptView.setText(excerpt); }