From: tobiasKaminsky Date: Sun, 22 Nov 2015 09:13:40 +0000 (+0100) Subject: fix wrong cast of cache size X-Git-Tag: beta-20151129~5^2 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/5c9c34f1d2554034bd7cd839121446b7d6f6c9f0 fix wrong cast of cache size --- diff --git a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index ded69926..dd0a2cdc 100644 --- a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -29,6 +29,7 @@ import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import android.accounts.Account; +import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; @@ -40,6 +41,7 @@ import android.graphics.drawable.Drawable; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.AsyncTask; +import android.preference.PreferenceManager; import android.widget.ImageView; import com.owncloud.android.MainApp; @@ -62,12 +64,12 @@ public class ThumbnailsCacheManager { private static final String TAG = ThumbnailsCacheManager.class.getSimpleName(); private static final String CACHE_FOLDER = "thumbnailCache"; + private static final Integer CACHE_SIZE_MB = 10; private static final Object mThumbnailsDiskCacheLock = new Object(); private static DiskLruImageCache mThumbnailCache = null; private static boolean mThumbnailCacheStarting = true; - private static final int DISK_CACHE_SIZE = 1024 * 1024 * 10; // 10MB private static final CompressFormat mCompressFormat = CompressFormat.JPEG; private static final int mCompressQuality = 70; private static OwnCloudClient mClient = null; @@ -88,6 +90,18 @@ public class ThumbnailsCacheManager { if (mThumbnailCache == null) { try { + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(MainApp.getAppContext()); + // due to backward compatibility + Integer cacheSize = CACHE_SIZE_MB * 1024 * 1024; + try { + cacheSize = appPrefs.getInt("pref_cache_size", cacheSize); + } catch (ClassCastException e) { + String temp = appPrefs.getString("pref_cache_size", + cacheSize.toString()); + cacheSize = Integer.decode(temp) * 1024 * 1024; + } + // Check if media is mounted or storage is built-in, if so, // try and use external cache dir; otherwise use internal cache dir final String cachePath = @@ -97,7 +111,7 @@ public class ThumbnailsCacheManager { final File diskCacheDir = new File(cachePath); mThumbnailCache = new DiskLruImageCache( diskCacheDir, - DISK_CACHE_SIZE, + cacheSize, mCompressFormat, mCompressQuality ); @@ -159,11 +173,10 @@ public class ThumbnailsCacheManager { * @return max cache size in MB. */ public static long getMaxSize(){ - if (mThumbnailCache != null) { - return mThumbnailCache.getMaxSize() / 1024 / 1024; - } else { - return -1l; + if (mThumbnailCache == null) { + new ThumbnailsCacheManager.InitDiskCacheTask().execute(); } + return mThumbnailCache.getMaxSize() / 1024 / 1024; } public static class ThumbnailGenerationTask extends AsyncTask { diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index bb4a3282..8bb51646 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -247,9 +247,9 @@ public class Preferences extends PreferenceActivity pCacheSize.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { - Long size = Long.decode((String) newValue); + int size = Integer.decode((String) newValue); if (ThumbnailsCacheManager.setMaxSize(size)){ - appPrefs.edit().putString("pref_cache_size", size.toString()); + appPrefs.edit().putInt("pref_cache_size", size); pCacheSize.setSummary(size + " MB"); return true; } else {