X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/07b82ef42fdcae37899771ea24ae5c0076853207..2117c024c4284c07fdb0a0a5673d0dd866eef5a0:/src/com/owncloud/android/utils/DisplayUtils.java diff --git a/src/com/owncloud/android/utils/DisplayUtils.java b/src/com/owncloud/android/utils/DisplayUtils.java index 680107b8..3d51f1f6 100644 --- a/src/com/owncloud/android/utils/DisplayUtils.java +++ b/src/com/owncloud/android/utils/DisplayUtils.java @@ -18,6 +18,8 @@ package com.owncloud.android.utils; +import java.sql.Time; +import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Calendar; import java.util.Date; @@ -25,7 +27,12 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Set; +import android.content.Context; +import android.text.format.DateFormat; +import android.text.format.DateUtils; + import com.owncloud.android.R; +import com.owncloud.android.lib.common.utils.Log_OC; /** * A helper class for some string operations. @@ -63,14 +70,28 @@ public class DisplayUtils { private static final String TYPE_VIDEO = "video"; private static final String SUBTYPE_PDF = "pdf"; - private static final String[] SUBTYPES_DOCUMENT = { "msword", "mspowerpoint", "msexcel", - "vnd.oasis.opendocument.presentation", - "vnd.oasis.opendocument.spreadsheet", - "vnd.oasis.opendocument.text" + private static final String[] SUBTYPES_DOCUMENT = { "msword", + "vnd.openxmlformats-officedocument.wordprocessingml.document", + "vnd.oasis.opendocument.text", + "rtf" }; private static Set SUBTYPES_DOCUMENT_SET = new HashSet(Arrays.asList(SUBTYPES_DOCUMENT)); + private static final String[] SUBTYPES_SPREADSHEET = { "msexcel", + "vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "vnd.oasis.opendocument.spreadsheet" + }; + private static Set SUBTYPES_SPREADSHEET_SET = new HashSet(Arrays.asList(SUBTYPES_SPREADSHEET)); + private static final String[] SUBTYPES_PRESENTATION = { "mspowerpoint", + "vnd.openxmlformats-officedocument.presentationml.presentation", + "vnd.oasis.opendocument.presentation" + }; + private static Set SUBTYPES_PRESENTATION_SET = new HashSet(Arrays.asList(SUBTYPES_PRESENTATION)); private static final String[] SUBTYPES_COMPRESSED = {"x-tar", "x-gzip", "zip"}; private static final Set SUBTYPES_COMPRESSED_SET = new HashSet(Arrays.asList(SUBTYPES_COMPRESSED)); + private static final String SUBTYPE_OCTET_STREAM = "octet-stream"; + private static final String EXTENSION_RAR = "rar"; + private static final String EXTENSION_RTF = "rtf"; + private static final String EXTENSION_3GP = "3gp"; /** * Converts the file size in bytes to human readable output. @@ -135,9 +156,10 @@ public class DisplayUtils { * known MIME type. * * @param mimetype MIME type string. + * @param filename name, with extension * @return Resource identifier of an image resource. */ - public static int getResourceId(String mimetype) { + public static int getResourceId(String mimetype, String filename) { if (mimetype == null || "DIR".equals(mimetype)) { return R.drawable.ic_menu_archive; @@ -167,12 +189,28 @@ public class DisplayUtils { } else if (SUBTYPES_DOCUMENT_SET.contains(subtype)) { return R.drawable.file_doc; + } else if (SUBTYPES_SPREADSHEET_SET.contains(subtype)) { + return R.drawable.file_xls; + + } else if (SUBTYPES_PRESENTATION_SET.contains(subtype)) { + return R.drawable.file_ppt; + } else if (SUBTYPES_COMPRESSED_SET.contains(subtype)) { return R.drawable.file_zip; - } - + + } else if (SUBTYPE_OCTET_STREAM.equals(subtype) ) { + if (getExtension(filename).equalsIgnoreCase(EXTENSION_RAR)) { + return R.drawable.file_zip; + + } else if (getExtension(filename).equalsIgnoreCase(EXTENSION_RTF)) { + return R.drawable.file_doc; + + } else if (getExtension(filename).equalsIgnoreCase(EXTENSION_3GP)) { + return R.drawable.file_movie; + + } + } } - // problems: RAR, RTF, 3GP are send as application/octet-stream from the server ; extension in the filename should be explicitly reviewed } // default icon @@ -180,7 +218,12 @@ public class DisplayUtils { } - + private static String getExtension(String filename) { + String extension = filename.substring(filename.lastIndexOf(".") + 1); + + return extension; + } + /** * Converts Unix time to human readable format * @param miliseconds that have passed since 01/01/1970 @@ -199,4 +242,15 @@ public class DisplayUtils { return R.drawable.icon; } } + + public static CharSequence getRelativeDateTimeString(Context c, long time, long minResolution, long transitionResolution, int flags){ + if (time > System.currentTimeMillis()){ + return DisplayUtils.unixTimeToHumanReadable(time); + } else if ((System.currentTimeMillis() - time) < 60000) { + return c.getString(R.string.file_list_seconds_ago) + ", " + + DateFormat.getTimeFormat(c).format(new Date(time)); + } else { + return DateUtils.getRelativeDateTimeString(c, time, minResolution, transitionResolution, flags); + } + } }