Pārlūkot izejas kodu

Move all file type (as in mime type) checks to MimeTypeUtil

AndyScherzinger 8 gadi atpakaļ
vecāks
revīzija
1a2a3e4173
23 mainītis faili ar 187 papildinājumiem un 195 dzēšanām
  1. 8 8
      src/com/owncloud/android/datamodel/FileDataStorageManager.java
  2. 0 48
      src/com/owncloud/android/datamodel/OCFile.java
  3. 4 14
      src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java
  4. 2 2
      src/com/owncloud/android/db/OCUpload.java
  5. 2 1
      src/com/owncloud/android/operations/RefreshFolderOperation.java
  6. 8 9
      src/com/owncloud/android/operations/SynchronizeFolderOperation.java
  7. 2 2
      src/com/owncloud/android/operations/UploadFileOperation.java
  8. 2 2
      src/com/owncloud/android/ui/activity/UploadListActivity.java
  9. 6 7
      src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java
  10. 7 7
      src/com/owncloud/android/ui/adapter/FileListListAdapter.java
  11. 6 7
      src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java
  12. 4 4
      src/com/owncloud/android/ui/adapter/UploaderAdapter.java
  13. 3 3
      src/com/owncloud/android/ui/fragment/FileDetailFragment.java
  14. 3 3
      src/com/owncloud/android/ui/fragment/ShareFileFragment.java
  15. 2 1
      src/com/owncloud/android/ui/preview/PreviewImageActivity.java
  16. 4 3
      src/com/owncloud/android/ui/preview/PreviewImageFragment.java
  17. 9 9
      src/com/owncloud/android/ui/preview/PreviewMediaFragment.java
  18. 3 2
      src/com/owncloud/android/ui/preview/PreviewTextFragment.java
  19. 7 7
      src/com/owncloud/android/ui/preview/PreviewVideoActivity.java
  20. 4 33
      src/com/owncloud/android/utils/BitmapUtils.java
  21. 95 17
      src/com/owncloud/android/utils/MimetypeUtil.java
  22. 3 3
      src/com/owncloud/android/utils/UriUtils.java
  23. 3 3
      src/org/nextcloud/providers/cursors/FileCursor.java

+ 8 - 8
src/com/owncloud/android/datamodel/FileDataStorageManager.java

@@ -43,6 +43,7 @@ import com.owncloud.android.lib.resources.status.CapabilityBooleanType;
 import com.owncloud.android.lib.resources.status.OCCapability;
 import com.owncloud.android.utils.FileStorageUtils;
 import com.owncloud.android.utils.MimeType;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -161,7 +162,7 @@ public class FileDataStorageManager {
             OCFile current = null;
             for (int i=0; i<tmp.size(); i++) {
                 current = tmp.get(i);
-                if (current.isImage()) {
+                if (MimeTypeUtil.isImage(current)) {
                     ret.add(current);
                 }
             }
@@ -1689,15 +1690,15 @@ public class FileDataStorageManager {
         ContentResolver contentResolver = getContentResolver();
 
         if (contentResolver != null) {
-            if (mimetypeString.startsWith("image/")) {
+            if (MimeTypeUtil.isImage(mimetypeString)) {
                 // Images
                 contentResolver.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                         MediaStore.Images.Media.DATA + "=?", new String[]{path});
-            } else if (mimetypeString.startsWith("audio/")) {
+            } else if (MimeTypeUtil.isAudio(mimetypeString)) {
                 // Audio
                 contentResolver.delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                         MediaStore.Audio.Media.DATA + "=?", new String[]{path});
-            } else if (mimetypeString.startsWith("video/")) {
+            } else if (MimeTypeUtil.isVideo(mimetypeString)) {
                 // Video
                 contentResolver.delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                         MediaStore.Video.Media.DATA + "=?", new String[]{path});
@@ -1705,15 +1706,15 @@ public class FileDataStorageManager {
         } else {
             ContentProviderClient contentProviderClient = getContentProviderClient();
             try {
-                if (mimetypeString.startsWith("image/")) {
+                if (MimeTypeUtil.isImage(mimetypeString)) {
                     // Images
                     contentProviderClient.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                             MediaStore.Images.Media.DATA + "=?", new String[]{path});
-                } else if (mimetypeString.startsWith("audio/")) {
+                } else if (MimeTypeUtil.isAudio(mimetypeString)) {
                     // Audio
                     contentProviderClient.delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                             MediaStore.Audio.Media.DATA + "=?", new String[]{path});
-                } else if (mimetypeString.startsWith("video/")) {
+                } else if (MimeTypeUtil.isVideo(mimetypeString)) {
                     // Video
                     contentProviderClient.delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                             MediaStore.Video.Media.DATA + "=?", new String[]{path});
@@ -1722,7 +1723,6 @@ public class FileDataStorageManager {
                 Log_OC.e(TAG, "Exception deleting media file in MediaStore " + e.getMessage());
             }
         }
-
     }
 
     public void saveConflict(OCFile file, String etagInConflict) {

+ 0 - 48
src/com/owncloud/android/datamodel/OCFile.java

@@ -27,7 +27,6 @@ import android.content.ContentResolver;
 import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.webkit.MimeTypeMap;
 
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.utils.MimeType;
@@ -562,53 +561,6 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         return 0;
     }
 
-    /**
-     * @return 'True' if the file contains audio
-     */
-    public boolean isAudio() {
-        return (mMimeType != null && mMimeType.startsWith("audio/"));
-    }
-
-    /**
-     * @return 'True' if the file contains video
-     */
-    public boolean isVideo() {
-        return (mMimeType != null && mMimeType.startsWith("video/"));
-    }
-
-    /**
-     * @return 'True' if the file contains an image
-     */
-    public boolean isImage() {
-        String mimeType;
-        if (mMimeType != null) {
-            mimeType = mMimeType;
-        } else {
-            mimeType = getMimeTypeFromName();
-        }
-
-        return (mimeType.startsWith("image/") && !mimeType.contains("djvu"));
-    }
-
-    /**
-     * @return 'True' if the file is simple text (e.g. not application-dependent, like .doc or .docx)
-     */
-    public boolean isText() {
-        return ((mMimeType != null && mMimeType.startsWith("text/")) ||
-                getMimeTypeFromName().startsWith("text/"));
-    }
-
-    public String getMimeTypeFromName() {
-        String extension = "";
-        int pos = mRemotePath.lastIndexOf('.');
-        if (pos >= 0) {
-            extension = mRemotePath.substring(pos + 1);
-        }
-        String result = MimeTypeMap.getSingleton().
-                getMimeTypeFromExtension(extension.toLowerCase());
-        return (result != null) ? result : "";
-    }
-
     /**
      * @return 'True' if the file is hidden
      */

+ 4 - 14
src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java

@@ -21,15 +21,6 @@
 
 package com.owncloud.android.datamodel;
 
-import java.io.File;
-import java.io.InputStream;
-import java.lang.ref.WeakReference;
-import java.net.FileNameMap;
-import java.net.URLConnection;
-
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.methods.GetMethod;
-
 import android.accounts.Account;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
@@ -39,7 +30,6 @@ import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
-import android.media.Image;
 import android.media.ThumbnailUtils;
 import android.net.Uri;
 import android.os.AsyncTask;
@@ -56,8 +46,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.utils.BitmapUtils;
-import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.DisplayUtils.AvatarGenerationListener;
+import com.owncloud.android.utils.FileStorageUtils;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import org.apache.commons.httpclient.HttpStatus;
 import org.apache.commons.httpclient.methods.GetMethod;
@@ -65,7 +56,6 @@ import org.apache.commons.httpclient.methods.GetMethod;
 import java.io.File;
 import java.io.InputStream;
 import java.lang.ref.WeakReference;
-import com.owncloud.android.utils.FileStorageUtils;
 
 /**
  * Manager for concurrent access to thumbnails cache.
@@ -212,7 +202,7 @@ public class ThumbnailsCacheManager {
                 if (mFile instanceof OCFile) {
                     thumbnail = doOCFileInBackground();
 
-                    if (((OCFile) mFile).isVideo() && thumbnail != null){
+                    if (MimeTypeUtil.isVideo((OCFile) mFile) && thumbnail != null) {
                         thumbnail = addVideoOverlay(thumbnail);
                     }
                 }  else if (mFile instanceof File) {
@@ -221,7 +211,7 @@ public class ThumbnailsCacheManager {
                     String url = ((File) mFile).getAbsolutePath();
                     String mMimeType = FileStorageUtils.getMimeTypeFromName(url);
 
-                    if (mMimeType != null && mMimeType.startsWith("video/") && thumbnail != null){
+                    if (MimeTypeUtil.isVideo(mMimeType) && thumbnail != null) {
                         thumbnail = addVideoOverlay(thumbnail);
                     }
                 //} else {  do nothing

+ 2 - 2
src/com/owncloud/android/db/OCUpload.java

@@ -34,7 +34,7 @@ import com.owncloud.android.datamodel.UploadsStorageManager.UploadStatus;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.operations.UploadFileOperation;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.io.File;
 
@@ -235,7 +235,7 @@ public class OCUpload implements Parcelable {
      * @return the mimeType
      */
     public String getMimeType() {
-        return MimetypeIconUtil.getBestMimeTypeByFilename(mLocalPath);
+        return MimeTypeUtil.getBestMimeTypeByFilename(mLocalPath);
     }
 
     /**

+ 2 - 1
src/com/owncloud/android/operations/RefreshFolderOperation.java

@@ -39,6 +39,7 @@ import com.owncloud.android.lib.resources.shares.GetRemoteSharesForFileOperation
 import com.owncloud.android.lib.resources.shares.OCShare;
 import com.owncloud.android.syncadapter.FileSyncAdapter;
 import com.owncloud.android.utils.FileStorageUtils;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -404,7 +405,7 @@ public class RefreshFolderOperation extends RemoteOperation {
                 updatedFile.setEtag(localFile.getEtag());
                 if (updatedFile.isFolder()) {
                     updatedFile.setFileLength(remoteFile.getFileLength());
-                } else if (mRemoteFolderChanged && remoteFile.isImage() &&
+                } else if (mRemoteFolderChanged && MimeTypeUtil.isImage(remoteFile) &&
                         remoteFile.getModificationTimestamp() !=
                                 localFile.getModificationTimestamp()) {
                     updatedFile.setNeedsUpdateThumbnail(true);

+ 8 - 9
src/com/owncloud/android/operations/SynchronizeFolderOperation.java

@@ -20,19 +20,11 @@
 
 package com.owncloud.android.operations;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
 import android.accounts.Account;
 import android.content.Context;
 import android.content.Intent;
 import android.util.Log;
 
-
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
@@ -47,7 +39,14 @@ import com.owncloud.android.lib.resources.files.RemoteFile;
 import com.owncloud.android.operations.common.SyncOperation;
 import com.owncloud.android.services.OperationsService;
 import com.owncloud.android.utils.FileStorageUtils;
+import com.owncloud.android.utils.MimeTypeUtil;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 
@@ -329,7 +328,7 @@ public class SynchronizeFolderOperation extends SyncOperation {
                 if (updatedFile.isFolder()) {
                     updatedFile.setFileLength(localFile.getFileLength());
                         // TODO move operations about size of folders to FileContentProvider
-                } else if (mRemoteFolderChanged && remoteFile.isImage() &&
+                } else if (mRemoteFolderChanged && MimeTypeUtil.isImage(remoteFile) &&
                         remoteFile.getModificationTimestamp() !=
                                 localFile.getModificationTimestamp()) {
                     updatedFile.setNeedsUpdateThumbnail(true);

+ 2 - 2
src/com/owncloud/android/operations/UploadFileOperation.java

@@ -47,7 +47,7 @@ import com.owncloud.android.operations.common.SyncOperation;
 import com.owncloud.android.utils.ConnectivityUtils;
 import com.owncloud.android.utils.FileStorageUtils;
 import com.owncloud.android.utils.MimeType;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 import com.owncloud.android.utils.UriUtils;
 
 import org.apache.commons.httpclient.HttpStatus;
@@ -80,7 +80,7 @@ public class UploadFileOperation extends SyncOperation {
 
         // MIME type
         if (mimeType == null || mimeType.length() <= 0) {
-            mimeType = MimetypeIconUtil.getBestMimeTypeByFilename(localPath);
+            mimeType = MimeTypeUtil.getBestMimeTypeByFilename(localPath);
         }
 
         OCFile newFile = new OCFile(remotePath);

+ 2 - 2
src/com/owncloud/android/ui/activity/UploadListActivity.java

@@ -52,7 +52,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.operations.CheckCurrentCredentialsOperation;
 import com.owncloud.android.ui.fragment.UploadListFragment;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.io.File;
 
@@ -161,7 +161,7 @@ public class UploadListActivity extends FileActivity implements UploadListFragme
     private void openFileWithDefault(String localPath) {
         Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
         File file = new File(localPath);
-        String mimetype = MimetypeIconUtil.getBestMimeTypeByFilename(localPath);
+        String mimetype = MimeTypeUtil.getBestMimeTypeByFilename(localPath);
         if ("application/octet-stream".equals(mimetype)) {
             mimetype = "*/*";
         }

+ 6 - 7
src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java

@@ -48,9 +48,8 @@ import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.FileActivity;
-import com.owncloud.android.utils.BitmapUtils;
 import com.owncloud.android.utils.DisplayUtils;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.io.File;
 import java.lang.ref.WeakReference;
@@ -408,7 +407,7 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
             );
 
             // TODO this code is duplicated; refactor to a common place
-            if ((fakeFileToCheatThumbnailsCacheManagerInterface.isImage()
+            if ((MimeTypeUtil.isImage(fakeFileToCheatThumbnailsCacheManagerInterface)
                     && fakeFileToCheatThumbnailsCacheManagerInterface.getRemoteId() != null &&
                     upload.getUploadStatus() == UploadStatus.UPLOAD_SUCCEEDED)) {
                 // Thumbnail in Cache?
@@ -425,7 +424,7 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
                                         fileIcon, mParentActivity.getStorageManager(), mParentActivity.getAccount()
                                 );
                         if (thumbnail == null) {
-                            if (fakeFileToCheatThumbnailsCacheManagerInterface.isVideo()) {
+                            if (MimeTypeUtil.isVideo(fakeFileToCheatThumbnailsCacheManagerInterface)) {
                                 thumbnail = ThumbnailsCacheManager.mDefaultVideo;
                             } else {
                                 thumbnail = ThumbnailsCacheManager.mDefaultImg;
@@ -448,7 +447,7 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
                 }
 
 
-            } else if (fakeFileToCheatThumbnailsCacheManagerInterface.isImage()) {
+            } else if (MimeTypeUtil.isImage(fakeFileToCheatThumbnailsCacheManagerInterface)) {
                 File file = new File(upload.getLocalPath());
                 // Thumbnail in Cache?
                 Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(
@@ -461,7 +460,7 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
                         final ThumbnailsCacheManager.ThumbnailGenerationTask task =
                                 new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon);
                         if (thumbnail == null) {
-                            if (BitmapUtils.isVideo(file)) {
+                            if (MimeTypeUtil.isVideo(file)) {
                                 thumbnail = ThumbnailsCacheManager.mDefaultVideo;
                             } else {
                                 thumbnail = ThumbnailsCacheManager.mDefaultImg;
@@ -484,7 +483,7 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
                             .getColor(R.color.background_color));
                 }
             } else {
-                fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(
+                fileIcon.setImageResource(MimeTypeUtil.getFileTypeIconId(
                         upload.getMimeType(),
                         fileName
                 ));

+ 7 - 7
src/com/owncloud/android/ui/adapter/FileListListAdapter.java

@@ -50,7 +50,7 @@ import com.owncloud.android.services.OperationsService.OperationsServiceBinder;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.util.ArrayList;
 import java.util.Vector;
@@ -144,7 +144,7 @@ public class FileListListAdapter extends BaseAdapter implements FilterableListAd
         // Find out which layout should be displayed
         ViewType viewType;
         if (parent instanceof GridView) {
-            if (file != null && (file.isImage() || file.isVideo())) {
+            if (file != null && (MimeTypeUtil.isImage(file) || MimeTypeUtil.isVideo(file))) {
                 viewType = ViewType.GRID_IMAGE;
             } else {
                 viewType = ViewType.GRID_ITEM;
@@ -296,14 +296,14 @@ public class FileListListAdapter extends BaseAdapter implements FilterableListAd
 
             // No Folder
             if (!file.isFolder()) {
-                if ((file.isImage() || file.isVideo()) && file.getRemoteId() != null) {
+                if ((MimeTypeUtil.isImage(file) || MimeTypeUtil.isVideo(file)) && file.getRemoteId() != null) {
                     // Thumbnail in Cache?
                     Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(
                             String.valueOf(file.getRemoteId())
                     );
                     if (thumbnail != null && !file.needsUpdateThumbnail()) {
 
-                        if (file.isVideo()) {
+                        if (MimeTypeUtil.isVideo(file)) {
                             Bitmap withOverlay = ThumbnailsCacheManager.addVideoOverlay(thumbnail);
                             fileIcon.setImageBitmap(withOverlay);
                         } else {
@@ -317,7 +317,7 @@ public class FileListListAdapter extends BaseAdapter implements FilterableListAd
                                             fileIcon, mStorageManager, mAccount
                                     );
                             if (thumbnail == null) {
-                                if (file.isVideo()) {
+                                if (MimeTypeUtil.isVideo(file)) {
                                     thumbnail = ThumbnailsCacheManager.mDefaultVideo;
                                 } else {
                                     thumbnail = ThumbnailsCacheManager.mDefaultImg;
@@ -341,7 +341,7 @@ public class FileListListAdapter extends BaseAdapter implements FilterableListAd
 
 
                 } else {
-                    fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(file.getMimetype(),
+                    fileIcon.setImageResource(MimeTypeUtil.getFileTypeIconId(file.getMimetype(),
                             file.getFileName()));
                 }
 
@@ -349,7 +349,7 @@ public class FileListListAdapter extends BaseAdapter implements FilterableListAd
             } else {
                 // Folder
                 fileIcon.setImageResource(
-                        MimetypeIconUtil.getFolderTypeIconId(
+                        MimeTypeUtil.getFolderTypeIconId(
                                 file.isSharedWithMe() || file.isSharedWithSharee(),
                                 file.isSharedViaLink()
                         )

+ 6 - 7
src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java

@@ -36,10 +36,9 @@ import com.owncloud.android.R;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.db.PreferenceManager;
 import com.owncloud.android.lib.common.utils.Log_OC;
-import com.owncloud.android.utils.BitmapUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -119,8 +118,8 @@ public class LocalFileListAdapter extends BaseAdapter implements FilterableListA
             // Find out which layout should be displayed
             ViewType viewType;
             if (parent instanceof GridView) {
-                String mimeType = MimetypeIconUtil.getBestMimeTypeByFilename(file.getName());
-                if (MimetypeIconUtil.isImage(mimeType) || MimetypeIconUtil.isVideo(mimeType)) {
+                String mimeType = MimeTypeUtil.getBestMimeTypeByFilename(file.getName());
+                if (MimeTypeUtil.isImage(mimeType) || MimeTypeUtil.isVideo(mimeType)) {
                     viewType = ViewType.GRID_IMAGE;
                 } else {
                     viewType = ViewType.GRID_ITEM;
@@ -197,7 +196,7 @@ public class LocalFileListAdapter extends BaseAdapter implements FilterableListA
                 }
                 
              // get Thumbnail if file is image
-                if (BitmapUtils.isImage(file)){
+                if (MimeTypeUtil.isImage(file)){
                 // Thumbnail in Cache?
                     Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(
                             String.valueOf(file.hashCode())
@@ -210,7 +209,7 @@ public class LocalFileListAdapter extends BaseAdapter implements FilterableListA
                         if (allowedToCreateNewThumbnail) {
                             final ThumbnailsCacheManager.ThumbnailGenerationTask task =
                                     new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon);
-                            if (BitmapUtils.isVideo(file)) {
+                            if (MimeTypeUtil.isVideo(file)) {
                                 thumbnail = ThumbnailsCacheManager.mDefaultVideo;
                             } else {
                                 thumbnail = ThumbnailsCacheManager.mDefaultImg;
@@ -228,7 +227,7 @@ public class LocalFileListAdapter extends BaseAdapter implements FilterableListA
                         } // else, already being generated, don't restart it
                     }
                 } else {
-                    fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(null, file.getName()));
+                    fileIcon.setImageResource(MimeTypeUtil.getFileTypeIconId(null, file.getName()));
                 }  
 
             } else {

+ 4 - 4
src/com/owncloud/android/ui/adapter/UploaderAdapter.java

@@ -36,7 +36,7 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncThumbnailDrawable;
 import com.owncloud.android.utils.DisplayUtils;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.util.HashMap;
 import java.util.List;
@@ -91,7 +91,7 @@ public class UploaderAdapter extends SimpleAdapter {
         }
         
         // get Thumbnail if file is image
-        if (file.isImage() && file.getRemoteId() != null){
+        if (MimeTypeUtil.isImage(file) && file.getRemoteId() != null) {
              // Thumbnail in Cache?
             Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(
                     String.valueOf(file.getRemoteId())
@@ -105,7 +105,7 @@ public class UploaderAdapter extends SimpleAdapter {
                             new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon, mStorageManager, 
                                     mAccount);
                     if (thumbnail == null) {
-                        if (file.isVideo()) {
+                        if (MimeTypeUtil.isVideo(file)) {
                             thumbnail = ThumbnailsCacheManager.mDefaultVideo;
                         } else {
                             thumbnail = ThumbnailsCacheManager.mDefaultImg;
@@ -122,7 +122,7 @@ public class UploaderAdapter extends SimpleAdapter {
             }
         } else {
             fileIcon.setImageResource(
-                    MimetypeIconUtil.getFileTypeIconId(file.getMimetype(), file.getFileName())
+                    MimeTypeUtil.getFileTypeIconId(file.getMimetype(), file.getFileName())
             );
         }
         return vi;

+ 3 - 3
src/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -51,7 +51,7 @@ import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment;
 import com.owncloud.android.ui.dialog.RenameFileDialogFragment;
 import com.owncloud.android.utils.DisplayUtils;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.lang.ref.WeakReference;
 
@@ -426,7 +426,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
             Bitmap thumbnail;
             iv.setTag(file.getFileId());
 
-            if (file.isImage()) {
+            if (MimeTypeUtil.isImage(file)) {
                 String tagId = String.valueOf(file.getRemoteId());
                 thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(tagId);
 
@@ -455,7 +455,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
             } else {
 				// Name of the file, to deduce the icon to use in case the MIME type is not precise enough
 				String filename = file.getFileName();
-                iv.setImageResource(MimetypeIconUtil.getFileTypeIconId(mimetype, filename));
+                iv.setImageResource(MimeTypeUtil.getFileTypeIconId(mimetype, filename));
 			}
         }
     }

+ 3 - 3
src/com/owncloud/android/ui/fragment/ShareFileFragment.java

@@ -57,7 +57,7 @@ import com.owncloud.android.ui.adapter.ShareUserListAdapter;
 import com.owncloud.android.ui.dialog.ExpirationDatePickerDialogFragment;
 import com.owncloud.android.ui.dialog.SharePasswordDialogFragment;
 import com.owncloud.android.utils.DisplayUtils;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -193,9 +193,9 @@ public class ShareFileFragment extends Fragment
         // Setup layout
         // Image
         ImageView icon = (ImageView) view.findViewById(R.id.shareFileIcon);
-        icon.setImageResource(MimetypeIconUtil.getFileTypeIconId(mFile.getMimetype(),
+        icon.setImageResource(MimeTypeUtil.getFileTypeIconId(mFile.getMimetype(),
                 mFile.getFileName()));
-        if (mFile.isImage()) {
+        if (MimeTypeUtil.isImage(mFile)) {
             String remoteId = String.valueOf(mFile.getRemoteId());
             Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(remoteId);
             if (thumbnail != null) {

+ 2 - 1
src/com/owncloud/android/ui/preview/PreviewImageActivity.java

@@ -57,6 +57,7 @@ import com.owncloud.android.operations.SynchronizeFileOperation;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.fragment.FileFragment;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 
 /**
@@ -514,7 +515,7 @@ public class PreviewImageActivity extends FileActivity implements
             if (file == null) {
                 throw new IllegalStateException("Instanced with a NULL OCFile");
             }
-            if (!file.isImage()) {
+            if (!MimeTypeUtil.isImage(file)) {
                 throw new IllegalArgumentException("Non-image file passed as argument");
             }
             

+ 4 - 3
src/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -19,8 +19,6 @@
  */
 package com.owncloud.android.ui.preview;
 
-import java.lang.ref.WeakReference;
-
 import android.accounts.Account;
 import android.annotation.SuppressLint;
 import android.app.Activity;
@@ -50,6 +48,9 @@ import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.utils.BitmapUtils;
 import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.MimeTypeUtil;
+
+import java.lang.ref.WeakReference;
 
 import third_parties.michaelOrtiz.TouchImageViewCustom;
 
@@ -551,7 +552,7 @@ public class PreviewImageFragment extends FileFragment {
      * @return          'True' if the file can be handled by the fragment.
      */
     public static boolean canBePreviewed(OCFile file) {
-        return (file != null && file.isImage());
+        return (file != null && MimeTypeUtil.isImage(file));
     }
 
 

+ 9 - 9
src/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -61,6 +61,7 @@ import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
 import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 
 /**
@@ -116,7 +117,6 @@ public class PreviewMediaFragment extends FileFragment implements
         mAutoplay = autoplay;
     }
 
-
     /**
      * Creates an empty fragment for previews.
      * <p/>
@@ -197,7 +197,7 @@ public class PreviewMediaFragment extends FileFragment implements
 
         }
         if (file != null && file.isDown()) {
-            if (file.isVideo()) {
+            if (MimeTypeUtil.isVideo(file)) {
                 mVideoPreview.setVisibility(View.VISIBLE);
                 mImagePreview.setVisibility(View.GONE);
                 prepareVideo();
@@ -218,7 +218,7 @@ public class PreviewMediaFragment extends FileFragment implements
      * @param file audio file with potential cover art
      */
     private void extractAndSetCoverArt(OCFile file) {
-        if (file.isAudio()) {
+        if (MimeTypeUtil.isAudio(file)) {
             try {
                 MediaMetadataRetriever mmr = new MediaMetadataRetriever();
                 mmr.setDataSource(file.getStoragePath());
@@ -247,7 +247,7 @@ public class PreviewMediaFragment extends FileFragment implements
         outState.putParcelable(PreviewMediaFragment.EXTRA_FILE, getFile());
         outState.putParcelable(PreviewMediaFragment.EXTRA_ACCOUNT, mAccount);
 
-        if (getFile().isVideo()) {
+        if (MimeTypeUtil.isVideo(getFile())) {
             if (mVideoPreview != null) {
                 mSavedPlaybackPosition = mVideoPreview.getCurrentPosition();
                 mAutoplay = mVideoPreview.isPlaying();
@@ -274,12 +274,12 @@ public class PreviewMediaFragment extends FileFragment implements
 
         OCFile file = getFile();
         if (file != null && file.isDown()) {
-            if (file.isAudio()) {
+            if (MimeTypeUtil.isAudio(file)) {
                 bindMediaService();
 
             }
             else {
-                if (file.isVideo()) {
+                if (MimeTypeUtil.isVideo(file)) {
                     stopAudio();
                     playVideo();
                 }
@@ -679,18 +679,18 @@ public class PreviewMediaFragment extends FileFragment implements
      * @return 'True' if the file can be handled by the fragment.
      */
     public static boolean canBePreviewed(OCFile file) {
-        return (file != null && (file.isAudio() || file.isVideo()));
+        return (file != null && (MimeTypeUtil.isAudio(file) || MimeTypeUtil.isVideo(file)));
     }
 
 
     public void stopPreview(boolean stopAudio) {
         OCFile file = getFile();
-        if (file.isAudio() && stopAudio) {
+        if (MimeTypeUtil.isAudio(file) && stopAudio) {
             mMediaServiceBinder.pause();
 
         }
         else {
-            if (file.isVideo()) {
+            if (MimeTypeUtil.isVideo(file)) {
                 mVideoPreview.stopPlayback();
             }
         }

+ 3 - 2
src/com/owncloud/android/ui/preview/PreviewTextFragment.java

@@ -42,6 +42,7 @@ import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
 import com.owncloud.android.ui.dialog.LoadingDialog;
 import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.io.BufferedWriter;
 import java.io.FileInputStream;
@@ -430,9 +431,9 @@ public class PreviewTextFragment extends FileFragment {
         unsupportedTypes.add("text/vnd.rn-realtext");
         unsupportedTypes.add("text/vnd.wap.wml");
         unsupportedTypes.add("text/vnd.wap.wmlscript");
-        return (file != null && file.isDown() && file.isText() &&
+        return (file != null && file.isDown() && MimeTypeUtil.isText(file) &&
                 !unsupportedTypes.contains(file.getMimetype()) &&
-                !unsupportedTypes.contains(file.getMimeTypeFromName())
+                !unsupportedTypes.contains(MimeTypeUtil.getMimeTypeFromPath(file.getRemotePath()))
         );
     }
 

+ 7 - 7
src/com/owncloud/android/ui/preview/PreviewVideoActivity.java

@@ -20,13 +20,7 @@
 
 package com.owncloud.android.ui.preview;
 
-import com.owncloud.android.R;
-import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.media.MediaService;
-import com.owncloud.android.ui.activity.FileActivity;
-
 import android.accounts.Account;
-import android.support.v7.app.AlertDialog;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.media.MediaPlayer;
@@ -35,12 +29,18 @@ import android.media.MediaPlayer.OnErrorListener;
 import android.media.MediaPlayer.OnPreparedListener;
 import android.net.Uri;
 import android.os.Bundle;
+import android.support.v7.app.AlertDialog;
 import android.widget.MediaController;
 import android.widget.VideoView;
 
+import com.owncloud.android.R;
+import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.accounts.AccountUtils;
 import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException;
 import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.media.MediaService;
+import com.owncloud.android.ui.activity.FileActivity;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 /**
  *  Activity implementing a basic video player.
@@ -197,7 +197,7 @@ public class PreviewVideoActivity extends FileActivity implements OnCompletionLi
             if (file == null) {
                 throw new IllegalStateException("Instanced with a NULL OCFile");
             }
-            if (!file.isVideo()) {
+            if (!MimeTypeUtil.isVideo(file)) {
                 throw new IllegalArgumentException("Non-video file passed as argument");
             }
             file = getStorageManager().getFileById(file.getFileId()); 

+ 4 - 33
src/com/owncloud/android/utils/BitmapUtils.java

@@ -19,21 +19,18 @@
  */
 package com.owncloud.android.utils;
 
-import com.owncloud.android.authentication.AccountUtils;
-import com.owncloud.android.lib.common.utils.Log_OC;
-
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
-import android.graphics.Matrix;
 import android.graphics.BitmapFactory.Options;
+import android.graphics.Matrix;
 import android.media.ExifInterface;
-import android.net.Uri;
 import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
 import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
-import android.webkit.MimeTypeMap;
 
-import java.io.File;
+import com.owncloud.android.authentication.AccountUtils;
+import com.owncloud.android.lib.common.utils.Log_OC;
+
 import java.io.UnsupportedEncodingException;
 import java.math.BigInteger;
 import java.security.MessageDigest;
@@ -262,32 +259,6 @@ public class BitmapUtils {
    		return p;
 	}
 
-    /**
-     * Checks if file passed is an image
-     * @param file
-     * @return true/false
-     */
-    public static boolean isImage(File file) {
-        Uri selectedUri = Uri.fromFile(file);
-        String fileExtension = MimeTypeMap.getFileExtensionFromUrl(selectedUri.toString().toLowerCase());
-        String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);
-
-        return (mimeType != null && mimeType.startsWith("image/"));
-    }
-
-    /**
-     * Checks if file passed is a video
-     * @param file
-     * @return true/false
-     */
-    public static boolean isVideo(File file) {
-        Uri selectedUri = Uri.fromFile(file);
-        String fileExtension = MimeTypeMap.getFileExtensionFromUrl(selectedUri.toString().toLowerCase());
-        String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);
-
-        return (mimeType != null && mimeType.startsWith("video/"));
-    }
-
     /**
      * calculates the RGB value based on a given account name.
      *

+ 95 - 17
src/com/owncloud/android/utils/MimetypeIconUtil.java → src/com/owncloud/android/utils/MimetypeUtil.java

@@ -19,10 +19,13 @@
 
 package com.owncloud.android.utils;
 
+import android.net.Uri;
 import android.webkit.MimeTypeMap;
 
 import com.owncloud.android.R;
+import com.owncloud.android.datamodel.OCFile;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -38,28 +41,27 @@ import java.util.Map;
  * In order to add further mappings, there are up to three look up maps that need further values:
  * <ol>
  *     <li>
- *         {@link MimetypeIconUtil#FILE_EXTENSION_TO_MIMETYPE_MAPPING}<br/>
+ *         {@link MimeTypeUtil#FILE_EXTENSION_TO_MIMETYPE_MAPPING}<br/>
  *         to add a new file extension to mime type mapping
  *     </li>
  *     <li>
- *         {@link MimetypeIconUtil#MIMETYPE_TO_ICON_MAPPING}<br/>
+ *         {@link MimeTypeUtil#MIMETYPE_TO_ICON_MAPPING}<br/>
  *         to add a new mapping of a mime type to an icon mapping
  *     </li>
  *     <li>
- *         {@link MimetypeIconUtil#MAINMIMETYPE_TO_ICON_MAPPING}<br/>
+ *         {@link MimeTypeUtil#MAINMIMETYPE_TO_ICON_MAPPING}<br/>
  *         to add a new mapping for the main part of a mime type.
  *         This is a list of fallback mappings in case there is no mapping for the complete mime type
  *     </li>
  * </ol>
  */
-public class MimetypeIconUtil {
+public class MimeTypeUtil {
     /** Mapping: icon for mime type */
-    private static final Map<String, Integer> MIMETYPE_TO_ICON_MAPPING = new HashMap<String, Integer>();
+    private static final Map<String, Integer> MIMETYPE_TO_ICON_MAPPING = new HashMap<>();
     /** Mapping: icon for main mime type (first part of a mime type declaration). */
-    private static final Map<String, Integer> MAINMIMETYPE_TO_ICON_MAPPING = new HashMap<String, Integer>();
+    private static final Map<String, Integer> MAINMIMETYPE_TO_ICON_MAPPING = new HashMap<>();
     /** Mapping: mime type for file extension. */
-    private static final Map<String, List<String>> FILE_EXTENSION_TO_MIMETYPE_MAPPING =
-            new HashMap<String, List<String>>();
+    private static final Map<String, List<String>> FILE_EXTENSION_TO_MIMETYPE_MAPPING = new HashMap<>();
 
     static {
         populateFileExtensionMimeTypeMapping();
@@ -121,28 +123,95 @@ public class MimetypeIconUtil {
      * @return 'True' if the mime type defines image
      */
     public static boolean isImage(String mimeType) {
-        return (mimeType.startsWith("image/") && !mimeType.contains("djvu"));
+        return (mimeType!=null && mimeType.toLowerCase().startsWith("image/") && !mimeType.toLowerCase().contains
+                ("djvu"));
     }
 
     /**
      * @return 'True' the mime type defines video
      */
     public static boolean isVideo(String mimeType) {
-        return (mimeType != null && mimeType.startsWith("video/"));
+        return (mimeType != null && mimeType.toLowerCase().startsWith("video/"));
     }
 
     /**
      * @return 'True' the mime type defines audio
      */
-    public boolean isAudio(String mimeType) {
-        return (mimeType != null && mimeType.startsWith("audio/"));
+    public static boolean isAudio(String mimeType) {
+        return (mimeType != null && mimeType.toLowerCase().startsWith("audio/"));
     }
 
     /**
      * @return 'True' if mime type defines text
      */
-    public boolean isText(String mimeType) {
-        return (mimeType != null && mimeType.startsWith("text/"));
+    public static boolean isText(String mimeType) {
+        return (mimeType != null && mimeType.toLowerCase().startsWith("text/"));
+    }
+
+    /**
+     * Checks if file passed is a video.
+     *
+     * @param file the file to be checked
+     * @return 'True' the mime type defines video
+     */
+    public static boolean isVideo(File file) {
+        return isVideo(extractMimeType(file));
+    }
+
+    /**
+     * Checks if file passed is an image.
+     *
+     * @param file the file to be checked
+     * @return 'True' the mime type defines video
+     */
+    public static boolean isImage(File file) {
+        return isImage(extractMimeType(file));
+    }
+
+    /**
+     * @param file the file to be analyzed
+     * @return 'True' if the file contains audio
+     */
+    public static boolean isAudio(OCFile file) {
+        return MimeTypeUtil.isAudio(file.getMimetype());
+    }
+
+    /**
+     * @param file the file to be analyzed
+     * @return 'True' if the file contains video
+     */
+    public static boolean isVideo(OCFile file) {
+        return MimeTypeUtil.isVideo(file.getMimetype());
+    }
+
+    /**
+     * @param file the file to be analyzed
+     * @return 'True' if the file contains an image
+     */
+    public static boolean isImage(OCFile file) {
+        return (MimeTypeUtil.isImage(file.getMimetype())
+                || MimeTypeUtil.isImage(getMimeTypeFromPath(file.getRemotePath())));
+    }
+
+    /**
+     * @param file the file to be analyzed
+     * @return 'True' if the file is simple text (e.g. not application-dependent, like .doc or .docx)
+     */
+    public static boolean isText(OCFile file) {
+        return (MimeTypeUtil.isText(file.getMimetype())
+                || MimeTypeUtil.isText(getMimeTypeFromPath(file.getRemotePath())));
+    }
+
+    /**
+     * Extracts the mime type for the given file.
+     *
+     * @param file the file to be analyzed
+     * @return the file's mime type
+     */
+    private static String extractMimeType(File file) {
+        Uri selectedUri = Uri.fromFile(file);
+        String fileExtension = MimeTypeMap.getFileExtensionFromUrl(selectedUri.toString().toLowerCase());
+        return MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);
     }
 
     /**
@@ -200,11 +269,21 @@ public class MimetypeIconUtil {
             if (mimeType != null) {
                 return Collections.singletonList(mimeType);
             } else {
-                return new ArrayList<String>();
+                return new ArrayList<>();
             }
         }
     }
 
+    public static String getMimeTypeFromPath(String path) {
+        String extension = "";
+        int pos = path.lastIndexOf('.');
+        if (pos >= 0) {
+            extension = path.substring(pos + 1);
+        }
+        String result = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase());
+        return (result != null) ? result : "";
+    }
+
     /**
      * provides the file extension of a given filename.
      *
@@ -212,8 +291,7 @@ public class MimetypeIconUtil {
      * @return the file extension
      */
     private static String getExtension(String filename) {
-        String extension = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
-        return extension;
+        return filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
     }
 
     /**

+ 3 - 3
src/com/owncloud/android/utils/UriUtils.java

@@ -238,13 +238,13 @@ public class UriUtils {
         String mimeType = context.getContentResolver().getType(uri);
         if (mimeType != null) {
             String displayNameColumn;
-            if (mimeType.toLowerCase().startsWith("image/")) {
+            if (MimeTypeUtil.isImage(mimeType)) {
                 displayNameColumn = MediaStore.Images.ImageColumns.DISPLAY_NAME;
 
-            } else if (mimeType.toLowerCase().startsWith("video/")) {
+            } else if (MimeTypeUtil.isVideo(mimeType)) {
                 displayNameColumn = MediaStore.Video.VideoColumns.DISPLAY_NAME;
 
-            } else if (mimeType.toLowerCase().startsWith("audio/")) {
+            } else if (MimeTypeUtil.isAudio(mimeType)) {
                 displayNameColumn = MediaStore.Audio.AudioColumns.DISPLAY_NAME;
 
             } else {

+ 3 - 3
src/org/nextcloud/providers/cursors/FileCursor.java

@@ -26,7 +26,7 @@ import android.os.Build;
 import android.provider.DocumentsContract.Document;
 
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.utils.MimetypeIconUtil;
+import com.owncloud.android.utils.MimeTypeUtil;
 
 @TargetApi(Build.VERSION_CODES.KITKAT)
 public class FileCursor extends MatrixCursor {
@@ -44,9 +44,9 @@ public class FileCursor extends MatrixCursor {
     public void addFile(OCFile file) {
         if (file == null) return;
 
-        final int iconRes = MimetypeIconUtil.getFileTypeIconId(file.getMimetype(), file.getFileName());
+        final int iconRes = MimeTypeUtil.getFileTypeIconId(file.getMimetype(), file.getFileName());
         final String mimeType = file.isFolder() ? Document.MIME_TYPE_DIR : file.getMimetype();
-        final String imagePath = file.isImage() && file.isDown() ? file.getStoragePath() : null;
+        final String imagePath = MimeTypeUtil.isImage(file) && file.isDown() ? file.getStoragePath() : null;
         int flags = imagePath != null ? Document.FLAG_SUPPORTS_THUMBNAIL : 0;
 
         newRow().add(Document.COLUMN_DOCUMENT_ID, Long.toString(file.getFileId()))