diff --git a/scripts/lint/lint-results.txt b/scripts/lint/lint-results.txt
index eaf517cb66cb..d551712f07d4 100644
--- a/scripts/lint/lint-results.txt
+++ b/scripts/lint/lint-results.txt
@@ -1,2 +1,2 @@
DO NOT TOUCH; GENERATED BY DRONE
- Lint Report: 1 error and 520 warnings
+ Lint Report: 1 error and 515 warnings
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 5066ca09d69f..94c28dcd2cec 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -84,8 +84,9 @@
-
+
+
+
+
-
+
diff --git a/src/main/java/com/owncloud/android/authentication/AccountUtils.java b/src/main/java/com/owncloud/android/authentication/AccountUtils.java
index 2dd094be02d9..ab0b1a41632e 100644
--- a/src/main/java/com/owncloud/android/authentication/AccountUtils.java
+++ b/src/main/java/com/owncloud/android/authentication/AccountUtils.java
@@ -88,7 +88,7 @@ public static Account getCurrentOwnCloudAccount(Context context) {
if (defaultAccount == null && ocAccounts.length > 0) {
// take first which is not pending for removal account as fallback
- for (Account account: ocAccounts) {
+ for (Account account : ocAccounts) {
boolean pendingForRemoval = arbitraryDataProvider.getBooleanValue(account,
ManageAccountsActivity.PENDING_FOR_REMOVAL);
diff --git a/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java
index 8ece8d30eef4..f1056e266846 100644
--- a/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java
+++ b/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java
@@ -372,7 +372,7 @@ private void initWebViewLogin(String baseURL) {
mLoginWebView.getSettings().setSaveFormData(false);
mLoginWebView.getSettings().setSavePassword(false);
- if (baseURL != null && !baseURL.isEmpty()){
+ if (baseURL != null && !baseURL.isEmpty()) {
Map headers = new HashMap<>();
headers.put(RemoteOperation.OCS_API_HEADER, RemoteOperation.OCS_API_HEADER_VALUE);
mLoginWebView.loadUrl(baseURL + WEB_LOGIN, headers);
diff --git a/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java
index 507e10f56b5d..32f59158d51a 100644
--- a/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java
+++ b/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java
@@ -1,4 +1,4 @@
-/**
+/*
* ownCloud Android client application
*
* @author Tobias Kaminsky
@@ -22,19 +22,23 @@
package com.owncloud.android.datamodel;
import android.accounts.Account;
+import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
+import android.graphics.Point;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.media.MediaMetadataRetriever;
import android.media.ThumbnailUtils;
import android.net.Uri;
import android.os.AsyncTask;
+import android.view.Display;
import android.view.MenuItem;
+import android.view.WindowManager;
import android.widget.ImageView;
import com.owncloud.android.MainApp;
@@ -47,7 +51,9 @@
import com.owncloud.android.lib.common.utils.Log_OC;
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
import com.owncloud.android.ui.adapter.DiskLruImageCache;
+import com.owncloud.android.ui.preview.PreviewImageFragment;
import com.owncloud.android.utils.BitmapUtils;
+import com.owncloud.android.utils.ConnectivityUtils;
import com.owncloud.android.utils.DisplayUtils.AvatarGenerationListener;
import com.owncloud.android.utils.FileStorageUtils;
import com.owncloud.android.utils.MimeTypeUtil;
@@ -56,6 +62,7 @@
import org.apache.commons.httpclient.methods.GetMethod;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -66,16 +73,16 @@
* Manager for concurrent access to thumbnails cache.
*/
public class ThumbnailsCacheManager {
-
+
private static final String TAG = ThumbnailsCacheManager.class.getSimpleName();
-
+
private static final String CACHE_FOLDER = "thumbnailCache";
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 int DISK_CACHE_SIZE = 1024 * 1024 * 200; // 200MB
private static final CompressFormat mCompressFormat = CompressFormat.JPEG;
private static final int mCompressQuality = 70;
private static OwnCloudClient mClient = null;
@@ -92,7 +99,7 @@ public class ThumbnailsCacheManager {
R.drawable.file_movie
);
-
+
public static class InitDiskCacheTask extends AsyncTask {
@Override
@@ -104,19 +111,19 @@ protected Void doInBackground(File... params) {
try {
// 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 =
- MainApp.getAppContext().getExternalCacheDir().getPath() +
- File.separator + CACHE_FOLDER;
- Log_OC.d(TAG, "create dir: " + cachePath);
- final File diskCacheDir = new File(cachePath);
- mThumbnailCache = new DiskLruImageCache(
- diskCacheDir,
- DISK_CACHE_SIZE,
- mCompressFormat,
- mCompressQuality
- );
- } catch (Exception e) {
- Log_OC.d(TAG, "Thumbnail cache could not be opened ", e);
+ File cacheDir = MainApp.getAppContext().getExternalCacheDir();
+
+ if (cacheDir != null) {
+ String cachePath = cacheDir.getPath() + File.separator + CACHE_FOLDER;
+ Log_OC.d(TAG, "create dir: " + cachePath);
+ File diskCacheDir = new File(cachePath);
+ mThumbnailCache = new DiskLruImageCache(diskCacheDir, DISK_CACHE_SIZE, mCompressFormat,
+ mCompressQuality);
+ } else {
+ throw new FileNotFoundException("Thumbnail cache could not be opened");
+ }
+ } catch (java.io.IOException e) {
+ Log_OC.d(TAG, e.getMessage());
mThumbnailCache = null;
}
}
@@ -129,36 +136,53 @@ protected Void doInBackground(File... params) {
/**
* Converts size of file icon from dp to pixel
+ *
* @return int
*/
- private static int getThumbnailDimension(){
+ private static int getThumbnailDimension() {
// Converts dp to pixel
Resources r = MainApp.getAppContext().getResources();
return Math.round(r.getDimension(R.dimen.file_icon_size_grid));
}
+ /**
+ * Converts dimension of screen as point
+ *
+ * @return Point
+ */
+ private static Point getScreenDimension() {
+ WindowManager wm = (WindowManager) MainApp.getAppContext().
+ getSystemService(Context.WINDOW_SERVICE);
+ Display display = wm.getDefaultDisplay();
+ Point point = new Point();
+ display.getSize(point);
+ return point;
+ }
+
/**
* Add thumbnail to cache
+ *
* @param imageKey: thumb key
* @param bitmap: image for extracting thumbnail
* @param path: image path
- * @param px: thumbnail dp
+ * @param pxW: thumbnail width in pixel
+ * @param pxH: thumbnail height in pixel
* @return Bitmap
*/
- private static Bitmap addThumbnailToCache(String imageKey, Bitmap bitmap, String path, int px){
+ private static Bitmap addThumbnailToCache(String imageKey, Bitmap bitmap, String path, int pxW, int pxH) {
- Bitmap thumbnail = ThumbnailUtils.extractThumbnail(bitmap, px, px);
+ Bitmap thumbnail = ThumbnailUtils.extractThumbnail(bitmap, pxW, pxH);
// Rotate image, obeying exif tag
- thumbnail = BitmapUtils.rotateImage(thumbnail,path);
+ thumbnail = BitmapUtils.rotateImage(thumbnail, path);
// Add thumbnail to cache
addBitmapToCache(imageKey, thumbnail);
return thumbnail;
}
-
- public static void addBitmapToCache(String key, Bitmap bitmap) {
+
+ private static void addBitmapToCache(String key, Bitmap bitmap) {
synchronized (mThumbnailsDiskCacheLock) {
if (mThumbnailCache != null) {
mThumbnailCache.put(key, bitmap);
@@ -183,7 +207,180 @@ public static Bitmap getBitmapFromDiskCache(String key) {
return null;
}
- public static class ThumbnailGenerationTask extends AsyncTask