[tx-robot] updated from transifex
[pub/Android/ownCloud.git] / src / com / owncloud / android / utils / DisplayUtils.java
index 3ae36e4..a30595c 100644 (file)
 \r
 package com.owncloud.android.utils;\r
 \r
-import java.net.IDN;\r
-import java.text.DateFormat;\r
-import java.util.Arrays;\r
-import java.util.Calendar;\r
-import java.util.Date;\r
-import java.util.HashMap;\r
-import java.util.HashSet;\r
-import java.util.Set;\r
-import java.util.Vector;\r
-\r
 import android.annotation.TargetApi;\r
 import android.app.Activity;\r
 import android.content.Context;\r
-import android.graphics.Color;\r
 import android.graphics.Point;\r
 import android.graphics.PorterDuff;\r
 import android.os.Build;\r
 import android.text.format.DateUtils;\r
 import android.view.Display;\r
-import android.webkit.MimeTypeMap;\r
 import android.widget.ProgressBar;\r
 import android.widget.SeekBar;\r
 \r
@@ -49,73 +37,39 @@ import com.owncloud.android.MainApp;
 import com.owncloud.android.R;\r
 import com.owncloud.android.datamodel.OCFile;\r
 \r
+import java.net.IDN;\r
+import java.text.DateFormat;\r
+import java.util.Calendar;\r
+import java.util.Date;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
 /**\r
  * A helper class for some string operations.\r
  */\r
 public class DisplayUtils {\r
     \r
     private static final String OWNCLOUD_APP_NAME = "ownCloud";\r
-\r
-    //private static String TAG = DisplayUtils.class.getSimpleName(); \r
     \r
     private static final String[] sizeSuffixes = { "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };\r
 \r
-    private static HashMap<String, String> mimeType2HUmanReadable;\r
+    private static Map<String, String> mimeType2HumanReadable;\r
+\r
     static {\r
-        mimeType2HUmanReadable = new HashMap<String, String>();\r
+        mimeType2HumanReadable = new HashMap<String, String>();\r
         // images\r
-        mimeType2HUmanReadable.put("image/jpeg", "JPEG image");\r
-        mimeType2HUmanReadable.put("image/jpg", "JPEG image");\r
-        mimeType2HUmanReadable.put("image/png", "PNG image");\r
-        mimeType2HUmanReadable.put("image/bmp", "Bitmap image");\r
-        mimeType2HUmanReadable.put("image/gif", "GIF image");\r
-        mimeType2HUmanReadable.put("image/svg+xml", "JPEG image");\r
-        mimeType2HUmanReadable.put("image/tiff", "TIFF image");\r
+        mimeType2HumanReadable.put("image/jpeg", "JPEG image");\r
+        mimeType2HumanReadable.put("image/jpg", "JPEG image");\r
+        mimeType2HumanReadable.put("image/png", "PNG image");\r
+        mimeType2HumanReadable.put("image/bmp", "Bitmap image");\r
+        mimeType2HumanReadable.put("image/gif", "GIF image");\r
+        mimeType2HumanReadable.put("image/svg+xml", "JPEG image");\r
+        mimeType2HumanReadable.put("image/tiff", "TIFF image");\r
         // music\r
-        mimeType2HUmanReadable.put("audio/mpeg", "MP3 music file");\r
-        mimeType2HUmanReadable.put("application/ogg", "OGG music file");\r
-\r
+        mimeType2HumanReadable.put("audio/mpeg", "MP3 music file");\r
+        mimeType2HumanReadable.put("application/ogg", "OGG music file");\r
     }\r
 \r
-    private static final String TYPE_APPLICATION = "application";\r
-    private static final String TYPE_AUDIO = "audio";\r
-    private static final String TYPE_IMAGE = "image";\r
-    private static final String TYPE_TXT = "text";\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 = { \r
-        "msword",\r
-        "vnd.openxmlformats-officedocument.wordprocessingml.document",\r
-        "vnd.oasis.opendocument.text",\r
-        "rtf",\r
-        "javascript"\r
-    };\r
-    private static Set<String> SUBTYPES_DOCUMENT_SET = new HashSet<String>(Arrays.asList(SUBTYPES_DOCUMENT));\r
-    private static final String[] SUBTYPES_SPREADSHEET = {\r
-        "msexcel",\r
-        "vnd.ms-excel",\r
-        "vnd.openxmlformats-officedocument.spreadsheetml.sheet",\r
-        "vnd.oasis.opendocument.spreadsheet"\r
-    };\r
-    private static Set<String> SUBTYPES_SPREADSHEET_SET = new HashSet<String>(Arrays.asList(SUBTYPES_SPREADSHEET));\r
-    private static final String[] SUBTYPES_PRESENTATION = { \r
-        "mspowerpoint",\r
-        "vnd.ms-powerpoint",\r
-        "vnd.openxmlformats-officedocument.presentationml.presentation",\r
-        "vnd.oasis.opendocument.presentation"\r
-    };\r
-    private static Set<String> SUBTYPES_PRESENTATION_SET = new HashSet<String>(Arrays.asList(SUBTYPES_PRESENTATION));\r
-    private static final String[] SUBTYPES_COMPRESSED = {"x-tar", "x-gzip", "zip"};\r
-    private static final Set<String> SUBTYPES_COMPRESSED_SET = new HashSet<String>(Arrays.asList(SUBTYPES_COMPRESSED));\r
-    private static final String SUBTYPE_OCTET_STREAM = "octet-stream";\r
-    private static final String EXTENSION_RAR = "rar";\r
-    private static final String EXTENSION_RTF = "rtf";\r
-    private static final String EXTENSION_3GP = "3gp";\r
-    private static final String EXTENSION_PY = "py";\r
-    private static final String EXTENSION_JS = "js";\r
-    \r
     /**\r
      * Converts the file size in bytes to human readable output.\r
      * \r
@@ -141,100 +95,14 @@ public class DisplayUtils {
      * @return A human friendly version of the MIME type\r
      */\r
     public static String convertMIMEtoPrettyPrint(String mimetype) {\r
-        if (mimeType2HUmanReadable.containsKey(mimetype)) {\r
-            return mimeType2HUmanReadable.get(mimetype);\r
+        if (mimeType2HumanReadable.containsKey(mimetype)) {\r
+            return mimeType2HumanReadable.get(mimetype);\r
         }\r
         if (mimetype.split("/").length >= 2)\r
             return mimetype.split("/")[1].toUpperCase() + " file";\r
         return "Unknown type";\r
     }\r
-    \r
-    \r
-    /**\r
-     * Returns the resource identifier of an image to use as icon associated to a known MIME type.\r
-     * \r
-     * @param mimetype      MIME type string; if NULL, the method tries to guess it from the extension in filename\r
-     * @param filename      Name, with extension.\r
-     * @return              Identifier of an image resource.\r
-     */\r
-    public static int getFileTypeIconId(String mimetype, String filename) {\r
 \r
-        if (mimetype == null) {\r
-            String fileExtension = getExtension(filename);\r
-            mimetype = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);\r
-            if (mimetype == null) {\r
-                mimetype = TYPE_APPLICATION + "/" + SUBTYPE_OCTET_STREAM;\r
-            }\r
-        } \r
-            \r
-        if ("DIR".equals(mimetype)) {\r
-            return R.drawable.ic_menu_archive;\r
-\r
-        } else {\r
-            String [] parts = mimetype.split("/");\r
-            String type = parts[0];\r
-            String subtype = (parts.length > 1) ? parts[1] : "";\r
-            \r
-            if(TYPE_TXT.equals(type)) {\r
-                return R.drawable.file_doc;\r
-    \r
-            } else if(TYPE_IMAGE.equals(type)) {\r
-                return R.drawable.file_image;\r
-                \r
-            } else if(TYPE_VIDEO.equals(type)) {\r
-                return R.drawable.file_movie;\r
-                \r
-            } else if(TYPE_AUDIO.equals(type)) {  \r
-                return R.drawable.file_sound;\r
-                \r
-            } else if(TYPE_APPLICATION.equals(type)) {\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_SPREADSHEET_SET.contains(subtype)) {\r
-                    return R.drawable.file_xls;\r
-\r
-                } else if (SUBTYPES_PRESENTATION_SET.contains(subtype)) {\r
-                    return R.drawable.file_ppt;\r
-\r
-                } else if (SUBTYPES_COMPRESSED_SET.contains(subtype)) {\r
-                    return R.drawable.file_zip;\r
-\r
-                } else if (SUBTYPE_OCTET_STREAM.equals(subtype) ) {\r
-                    if (getExtension(filename).equalsIgnoreCase(EXTENSION_RAR)) {\r
-                        return R.drawable.file_zip;\r
-                        \r
-                    } else if (getExtension(filename).equalsIgnoreCase(EXTENSION_RTF)) {\r
-                        return R.drawable.file_doc;\r
-                        \r
-                    } else if (getExtension(filename).equalsIgnoreCase(EXTENSION_3GP)) {\r
-                        return R.drawable.file_movie;\r
-                     \r
-                    } else if ( getExtension(filename).equalsIgnoreCase(EXTENSION_PY) ||\r
-                                getExtension(filename).equalsIgnoreCase(EXTENSION_JS)) {\r
-                        return R.drawable.file_doc;\r
-                    } \r
-                } \r
-            }\r
-        }\r
-\r
-        // default icon\r
-        return R.drawable.file;\r
-    }\r
-\r
-    \r
-    private static String getExtension(String filename) {\r
-        String extension = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();\r
-        return extension;\r
-    }\r
-    \r
     /**\r
      * Converts Unix time to human readable format\r
      * @param milliseconds that have passed since 01/01/1970\r
@@ -246,7 +114,6 @@ public class DisplayUtils {
         return df.format(date);\r
     }\r
     \r
-    \r
     public static int getSeasonalIconId() {\r
         if (Calendar.getInstance().get(Calendar.DAY_OF_YEAR) >= 354 &&\r
                 MainApp.getAppContext().getString(R.string.app_name).equals(OWNCLOUD_APP_NAME)) {\r
@@ -326,22 +193,19 @@ public class DisplayUtils {
         else if ((System.currentTimeMillis() - time) < 60 * 1000) {\r
             return c.getString(R.string.file_list_seconds_ago);\r
         } else {\r
-            // Workaround 2.x bug (see https://github.com/owncloud/android/issues/716)\r
-            if (    Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB && \r
-                    (System.currentTimeMillis() - time) > 24 * 60 * 60 * 1000   ) {\r
-                Date date = new Date(time);\r
-                date.setHours(0);\r
-                date.setMinutes(0);\r
-                date.setSeconds(0);\r
-                dateString = DateUtils.getRelativeDateTimeString(\r
-                        c, date.getTime(), minResolution, transitionResolution, flags\r
-                );\r
-            } else {\r
-                dateString = DateUtils.getRelativeDateTimeString(c, time, minResolution, transitionResolution, flags);\r
+            dateString = DateUtils.getRelativeDateTimeString(c, time, minResolution, transitionResolution, flags);\r
+        }\r
+\r
+        String[] parts = dateString.toString().split(",");\r
+        if (parts.length == 2) {\r
+            if (parts[1].contains(":") && !parts[0].contains(":")) {\r
+                return parts[0];\r
+            } else if (parts[0].contains(":") && !parts[1].contains(":")) {\r
+                return parts[1];\r
             }\r
         }\r
-        \r
-        return dateString.toString().split(",")[0];\r
+        //dateString contains unexpected format. fallback: use relative date time string from android api as is.\r
+        return dateString.toString();\r
     }\r
 \r
     /**\r