fix wrong cast of cache size
authortobiasKaminsky <tobias@kaminsky.me>
Sun, 22 Nov 2015 09:13:40 +0000 (10:13 +0100)
committertobiasKaminsky <tobias@kaminsky.me>
Sun, 22 Nov 2015 09:13:40 +0000 (10:13 +0100)
src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java
src/com/owncloud/android/ui/activity/Preferences.java

index ded6992..dd0a2cd 100644 (file)
@@ -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<Object, Void, Bitmap> {
index bb4a328..8bb5164 100644 (file)
@@ -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 {