Consider application/xml for XML files
[pub/Android/ownCloud.git] / src / com / owncloud / android / utils / DisplayUtils.java
index 544a923..beb08c7 100644 (file)
@@ -29,11 +29,11 @@ import java.util.Set;
 import android.annotation.TargetApi;\r
 import android.content.Context;\r
 import android.os.Build;\r
 import android.annotation.TargetApi;\r
 import android.content.Context;\r
 import android.os.Build;\r
-import android.text.format.DateFormat;\r
 import android.text.format.DateUtils;\r
 \r
 import com.owncloud.android.MainApp;\r
 import com.owncloud.android.R;\r
 import android.text.format.DateUtils;\r
 \r
 import com.owncloud.android.MainApp;\r
 import com.owncloud.android.R;\r
+import com.owncloud.android.datamodel.OCFile;\r
 \r
 /**\r
  * A helper class for some string operations.\r
 \r
 /**\r
  * A helper class for some string operations.\r
@@ -73,6 +73,7 @@ public class DisplayUtils {
     private static final String TYPE_VIDEO = "video";\r
     \r
     private static final String SUBTYPE_PDF = "pdf";\r
     private static final String TYPE_VIDEO = "video";\r
     \r
     private static final String SUBTYPE_PDF = "pdf";\r
+    private static final String SUBTYPE_XML = "xml";\r
     private static final String[] SUBTYPES_DOCUMENT = { "msword",\r
                                                         "vnd.openxmlformats-officedocument.wordprocessingml.document",\r
                                                         "vnd.oasis.opendocument.text",\r
     private static final String[] SUBTYPES_DOCUMENT = { "msword",\r
                                                         "vnd.openxmlformats-officedocument.wordprocessingml.document",\r
                                                         "vnd.oasis.opendocument.text",\r
@@ -164,9 +165,12 @@ public class DisplayUtils {
      */\r
     public static int getResourceId(String mimetype, String filename) {\r
 \r
      */\r
     public static int getResourceId(String mimetype, String filename) {\r
 \r
-        if (mimetype == null || "DIR".equals(mimetype)) {\r
+        if (mimetype == null) {\r
+            return R.drawable.file;\r
+\r
+        } else if ("DIR".equals(mimetype)) {\r
             return R.drawable.ic_menu_archive;\r
             return R.drawable.ic_menu_archive;\r
-            \r
+\r
         } else {\r
             String [] parts = mimetype.split("/");\r
             String type = parts[0];\r
         } else {\r
             String [] parts = mimetype.split("/");\r
             String type = parts[0];\r
@@ -189,6 +193,9 @@ public class DisplayUtils {
                 if (SUBTYPE_PDF.equals(subtype)) {\r
                     return R.drawable.file_pdf;\r
                     \r
                 if (SUBTYPE_PDF.equals(subtype)) {\r
                     return R.drawable.file_pdf;\r
                     \r
+                } else if (SUBTYPE_XML.equals(subtype)) {\r
+                    return R.drawable.file_doc;\r
+\r
                 } else if (SUBTYPES_DOCUMENT_SET.contains(subtype)) {\r
                     return R.drawable.file_doc;\r
 \r
                 } else if (SUBTYPES_DOCUMENT_SET.contains(subtype)) {\r
                     return R.drawable.file_doc;\r
 \r
@@ -200,7 +207,7 @@ public class DisplayUtils {
 \r
                 } else if (SUBTYPES_COMPRESSED_SET.contains(subtype)) {\r
                     return R.drawable.file_zip;\r
 \r
                 } else if (SUBTYPES_COMPRESSED_SET.contains(subtype)) {\r
                     return R.drawable.file_zip;\r
-                    \r
+\r
                 } else if (SUBTYPE_OCTET_STREAM.equals(subtype) ) {\r
                     if (getExtension(filename).equalsIgnoreCase(EXTENSION_RAR)) {\r
                         return R.drawable.file_zip;\r
                 } else if (SUBTYPE_OCTET_STREAM.equals(subtype) ) {\r
                     if (getExtension(filename).equalsIgnoreCase(EXTENSION_RAR)) {\r
                         return R.drawable.file_zip;\r
@@ -277,7 +284,24 @@ public class DisplayUtils {
             return url;\r
         }\r
     }\r
             return url;\r
         }\r
     }\r
-    \r
+\r
+    /**\r
+     * Get the file extension if it is on path as type "content://.../DocInfo.doc"\r
+     * @param filepath: Content Uri converted to string format\r
+     * @return String: fileExtension (type '.pdf'). Empty if no extension\r
+     */\r
+    public static String getComposedFileExtension(String filepath) {\r
+        String fileExtension = "";\r
+        String fileNameInContentUri = filepath.substring(filepath.lastIndexOf("/"));\r
+\r
+        // Check if extension is included in uri\r
+        int pos = fileNameInContentUri.lastIndexOf('.');\r
+        if (pos >= 0) {\r
+            fileExtension = fileNameInContentUri.substring(pos);\r
+        }\r
+        return fileExtension;\r
+    }\r
+\r
     public static CharSequence getRelativeDateTimeString(Context c, long time, long minResolution, long transitionResolution, int flags){\r
         CharSequence dateString = "";\r
         \r
     public static CharSequence getRelativeDateTimeString(Context c, long time, long minResolution, long transitionResolution, int flags){\r
         CharSequence dateString = "";\r
         \r
@@ -289,7 +313,7 @@ public class DisplayUtils {
         else if ((System.currentTimeMillis() - time) < 60 * 1000) {\r
             return c.getString(R.string.file_list_seconds_ago);\r
         } else {\r
         else if ((System.currentTimeMillis() - time) < 60 * 1000) {\r
             return c.getString(R.string.file_list_seconds_ago);\r
         } else {\r
-            // Workaround 2.x bug\r
+            // Workaround 2.x bug (see https://github.com/owncloud/android/issues/716)\r
             if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB && (System.currentTimeMillis() - time) > 24 * 60 * 60 * 1000){\r
                 Date date = new Date(time);\r
                 date.setHours(0);\r
             if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB && (System.currentTimeMillis() - time) > 24 * 60 * 60 * 1000){\r
                 Date date = new Date(time);\r
                 date.setHours(0);\r
@@ -303,4 +327,17 @@ public class DisplayUtils {
         \r
         return dateString.toString().split(",")[0];\r
     }\r
         \r
         return dateString.toString().split(",")[0];\r
     }\r
+\r
+    /**\r
+     * Update the passed path removing the last "/" if it is not the root folder\r
+     * @param path\r
+     */\r
+    public static String getPathWithoutLastSlash(String path) {\r
+\r
+        // Remove last slash from path\r
+        if (path.length() > 1 && path.charAt(path.length()-1) == OCFile.PATH_SEPARATOR.charAt(0)) {\r
+            path = path.substring(0, path.length()-1);\r
+        }\r
+        return path;\r
+    }\r
 }\r
 }\r