From 1bfc708bc0ba129c1e77ad7034e715e28ac50d12 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 29 Oct 2014 08:59:33 +0300 Subject: [PATCH] UIL: use time-limited disk cache instead of flushing it on startup flavor images: show X more label if more than one image fix crash on loadmore row --- .../java/org/fox/ttrss/HeadlinesFragment.java | 21 ++++++-- .../java/org/fox/ttrss/OnlineActivity.java | 49 +++++++++++-------- .../src/main/res/layout/headlines_row.xml | 8 +++ .../res/layout/headlines_row_selected.xml | 8 +++ .../layout/headlines_row_selected_unread.xml | 8 +++ .../main/res/layout/headlines_row_unread.xml | 8 +++ org.fox.ttrss/src/main/res/values/strings.xml | 2 +- 7 files changed, 80 insertions(+), 24 deletions(-) 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 928f82f7..f63af9c6 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 @@ -54,6 +54,7 @@ import org.fox.ttrss.util.TypefaceCache; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -669,6 +670,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, public ImageView menuButtonView; public ViewGroup flavorImageHolder; public ProgressBar flavorImageLoadingBar; + public TextView flavorImageMore; } private class ArticleListAdapter extends ArrayAdapter
{ @@ -762,6 +764,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, holder.menuButtonView = (ImageView) v.findViewById(R.id.article_menu_button); holder.flavorImageHolder = (ViewGroup) v.findViewById(R.id.flavorImageHolder); holder.flavorImageLoadingBar = (ProgressBar) v.findViewById(R.id.flavorImageLoadingBar); + holder.flavorImageMore = (TextView) v.findViewById(R.id.flavorImageMore); v.setTag(holder); @@ -857,13 +860,20 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, } } + if (holder.flavorImageMore != null) { + holder.flavorImageMore.setVisibility(View.GONE); + } + if (holder.flavorImageView != null && m_prefs.getBoolean("headlines_show_flavor_image", true)) { Document doc = Jsoup.parse(articleContent); boolean loadableImageFound = false; if (doc != null) { - Element img = doc.select("img").first(); + //Element img = doc.select("img").first(); + + Elements imgs = doc.select("img"); + Element img = imgs.first(); if (img != null) { String imgSrc = img.attr("src"); @@ -886,6 +896,11 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, flavorImageHolder.setVisibility(View.VISIBLE); + if (imgs.size() > 1 && holder.flavorImageMore != null) { + holder.flavorImageMore.setVisibility(View.VISIBLE); + holder.flavorImageMore.setText(getString(R.string.flavor_image_more, imgs.size()-1)); + } + final boolean weNeedAnimation = MemoryCacheUtils.findCachedBitmapsForImageUri(imgSrc, ImageLoader.getInstance().getMemoryCache()).size() == 0; loadableImageFound = true; @@ -939,10 +954,10 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, } } - if (!loadableImageFound) { + if (!loadableImageFound && holder.flavorImageHolder != null) { holder.flavorImageHolder.setVisibility(View.GONE); } - } else { + } else if (holder.flavorImageHolder != null) { holder.flavorImageHolder.setVisibility(View.GONE); } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java index e5e35ebf..7cf496d4 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java @@ -1,22 +1,5 @@ package org.fox.ttrss; -import java.lang.reflect.Type; -import java.util.HashMap; -import java.util.List; - -import org.fox.ttrss.offline.OfflineActivity; -import org.fox.ttrss.offline.OfflineDownloadService; -import org.fox.ttrss.offline.OfflineUploadService; -import org.fox.ttrss.share.SubscribeActivity; -import org.fox.ttrss.types.Article; -import org.fox.ttrss.types.ArticleList; -import org.fox.ttrss.types.Feed; -import org.fox.ttrss.types.Label; -import org.fox.ttrss.widget.SmallWidgetProvider; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.select.Elements; - import android.annotation.TargetApi; import android.app.AlertDialog; import android.app.Dialog; @@ -51,8 +34,28 @@ import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiscCache; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; +import com.nostra13.universalimageloader.utils.StorageUtils; + +import org.fox.ttrss.offline.OfflineActivity; +import org.fox.ttrss.offline.OfflineDownloadService; +import org.fox.ttrss.offline.OfflineUploadService; +import org.fox.ttrss.share.SubscribeActivity; +import org.fox.ttrss.types.Article; +import org.fox.ttrss.types.ArticleList; +import org.fox.ttrss.types.Feed; +import org.fox.ttrss.types.Label; +import org.fox.ttrss.widget.SmallWidgetProvider; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.select.Elements; + +import java.io.File; +import java.lang.reflect.Type; +import java.util.HashMap; +import java.util.List; public class OnlineActivity extends CommonActivity { private final String TAG = this.getClass().getSimpleName(); @@ -175,10 +178,16 @@ public class OnlineActivity extends CommonActivity { setStatusBarTint(); - ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()).build(); + ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) + .diskCache( + new LimitedAgeDiscCache(new File(StorageUtils.getCacheDirectory(getApplicationContext()), "article-images"), + 2*24*60*60)) // 2 days + .build(); ImageLoader.getInstance().init(config); - ImageLoader.getInstance().clearDiskCache(); - + //ImageLoader.getInstance().clearDiskCache(); + + + //m_pullToRefreshAttacher = PullToRefreshAttacher.get(this); if (isOffline) { diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row.xml b/org.fox.ttrss/src/main/res/layout/headlines_row.xml index 40eb4914..8b2107c1 100644 --- a/org.fox.ttrss/src/main/res/layout/headlines_row.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row.xml @@ -93,6 +93,14 @@ android:scaleType="fitCenter" android:cropToPadding="true" android:visibility="visible" /> + + diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_selected.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_selected.xml index dcdedc9a..6d8a68ab 100644 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_selected.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_selected.xml @@ -93,6 +93,14 @@ android:scaleType="fitCenter" android:cropToPadding="true" android:visibility="visible" /> + + diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread.xml index 8d9734c4..47e24ab7 100644 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread.xml @@ -94,6 +94,14 @@ android:scaleType="fitCenter" android:cropToPadding="true" android:visibility="visible" /> + + diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml index d3c1aa72..83e60fbb 100644 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml @@ -94,6 +94,14 @@ android:scaleType="fitCenter" android:cropToPadding="true" android:visibility="visible" /> + + diff --git a/org.fox.ttrss/src/main/res/values/strings.xml b/org.fox.ttrss/src/main/res/values/strings.xml index 784c8dc2..f452ca05 100644 --- a/org.fox.ttrss/src/main/res/values/strings.xml +++ b/org.fox.ttrss/src/main/res/values/strings.xml @@ -232,5 +232,5 @@ Show full article content in headlines. Resource intensive, can cause UI lag on some devices. Show full content Show article image - + (%1$d more)