Move the MIME type icon detection into the platform.
This allows the MIME type icons to be used in other system apps. In this instance, the StorageManager app needs to show file icons for a given file. By moving the icon mapping into a static library, we can avoid duplicating the mapping and resources. Bug: 29826961 Change-Id: Ic2dc7970cc5a5ca430e33425eb9f1ecbd733fe9a
This commit is contained in:
@@ -34,6 +34,7 @@ import android.database.CrossProcessCursorWrapper;
|
||||
import android.database.Cursor;
|
||||
import android.database.IContentObserver;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.CancellationSignal;
|
||||
@@ -51,6 +52,7 @@ import android.util.EventLog;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.util.ArrayUtils;
|
||||
import com.android.internal.util.MimeIconUtils;
|
||||
import com.android.internal.util.Preconditions;
|
||||
|
||||
import dalvik.system.CloseGuard;
|
||||
@@ -2693,4 +2695,9 @@ public abstract class ContentResolver {
|
||||
public int resolveUserId(Uri uri) {
|
||||
return ContentProvider.getUserIdFromUri(uri, mContext.getUserId());
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public Drawable getTypeDrawable(String mimeType) {
|
||||
return MimeIconUtils.loadMimeIcon(mContext, mimeType);
|
||||
}
|
||||
}
|
||||
|
||||
230
core/java/com/android/internal/util/MimeIconUtils.java
Normal file
230
core/java/com/android/internal/util/MimeIconUtils.java
Normal file
@@ -0,0 +1,230 @@
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.internal.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.provider.DocumentsContract;
|
||||
|
||||
import com.android.internal.R;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class MimeIconUtils {
|
||||
|
||||
private static HashMap<String, Integer> sMimeIcons = new HashMap<>();
|
||||
|
||||
private static void add(String mimeType, int resId) {
|
||||
if (sMimeIcons.put(mimeType, resId) != null) {
|
||||
throw new RuntimeException(mimeType + " already registered!");
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
int icon;
|
||||
|
||||
// Package
|
||||
icon = R.drawable.ic_doc_apk;
|
||||
add("application/vnd.android.package-archive", icon);
|
||||
|
||||
// Audio
|
||||
icon = R.drawable.ic_doc_audio;
|
||||
add("application/ogg", icon);
|
||||
add("application/x-flac", icon);
|
||||
|
||||
// Certificate
|
||||
icon = R.drawable.ic_doc_certificate;
|
||||
add("application/pgp-keys", icon);
|
||||
add("application/pgp-signature", icon);
|
||||
add("application/x-pkcs12", icon);
|
||||
add("application/x-pkcs7-certreqresp", icon);
|
||||
add("application/x-pkcs7-crl", icon);
|
||||
add("application/x-x509-ca-cert", icon);
|
||||
add("application/x-x509-user-cert", icon);
|
||||
add("application/x-pkcs7-certificates", icon);
|
||||
add("application/x-pkcs7-mime", icon);
|
||||
add("application/x-pkcs7-signature", icon);
|
||||
|
||||
// Source code
|
||||
icon = R.drawable.ic_doc_codes;
|
||||
add("application/rdf+xml", icon);
|
||||
add("application/rss+xml", icon);
|
||||
add("application/x-object", icon);
|
||||
add("application/xhtml+xml", icon);
|
||||
add("text/css", icon);
|
||||
add("text/html", icon);
|
||||
add("text/xml", icon);
|
||||
add("text/x-c++hdr", icon);
|
||||
add("text/x-c++src", icon);
|
||||
add("text/x-chdr", icon);
|
||||
add("text/x-csrc", icon);
|
||||
add("text/x-dsrc", icon);
|
||||
add("text/x-csh", icon);
|
||||
add("text/x-haskell", icon);
|
||||
add("text/x-java", icon);
|
||||
add("text/x-literate-haskell", icon);
|
||||
add("text/x-pascal", icon);
|
||||
add("text/x-tcl", icon);
|
||||
add("text/x-tex", icon);
|
||||
add("application/x-latex", icon);
|
||||
add("application/x-texinfo", icon);
|
||||
add("application/atom+xml", icon);
|
||||
add("application/ecmascript", icon);
|
||||
add("application/json", icon);
|
||||
add("application/javascript", icon);
|
||||
add("application/xml", icon);
|
||||
add("text/javascript", icon);
|
||||
add("application/x-javascript", icon);
|
||||
|
||||
// Compressed
|
||||
icon = R.drawable.ic_doc_compressed;
|
||||
add("application/mac-binhex40", icon);
|
||||
add("application/rar", icon);
|
||||
add("application/zip", icon);
|
||||
add("application/x-apple-diskimage", icon);
|
||||
add("application/x-debian-package", icon);
|
||||
add("application/x-gtar", icon);
|
||||
add("application/x-iso9660-image", icon);
|
||||
add("application/x-lha", icon);
|
||||
add("application/x-lzh", icon);
|
||||
add("application/x-lzx", icon);
|
||||
add("application/x-stuffit", icon);
|
||||
add("application/x-tar", icon);
|
||||
add("application/x-webarchive", icon);
|
||||
add("application/x-webarchive-xml", icon);
|
||||
add("application/gzip", icon);
|
||||
add("application/x-7z-compressed", icon);
|
||||
add("application/x-deb", icon);
|
||||
add("application/x-rar-compressed", icon);
|
||||
|
||||
// Contact
|
||||
icon = R.drawable.ic_doc_contact;
|
||||
add("text/x-vcard", icon);
|
||||
add("text/vcard", icon);
|
||||
|
||||
// Event
|
||||
icon = R.drawable.ic_doc_event;
|
||||
add("text/calendar", icon);
|
||||
add("text/x-vcalendar", icon);
|
||||
|
||||
// Font
|
||||
icon = R.drawable.ic_doc_font;
|
||||
add("application/x-font", icon);
|
||||
add("application/font-woff", icon);
|
||||
add("application/x-font-woff", icon);
|
||||
add("application/x-font-ttf", icon);
|
||||
|
||||
// Image
|
||||
icon = R.drawable.ic_doc_image;
|
||||
add("application/vnd.oasis.opendocument.graphics", icon);
|
||||
add("application/vnd.oasis.opendocument.graphics-template", icon);
|
||||
add("application/vnd.oasis.opendocument.image", icon);
|
||||
add("application/vnd.stardivision.draw", icon);
|
||||
add("application/vnd.sun.xml.draw", icon);
|
||||
add("application/vnd.sun.xml.draw.template", icon);
|
||||
|
||||
// PDF
|
||||
icon = R.drawable.ic_doc_pdf;
|
||||
add("application/pdf", icon);
|
||||
|
||||
// Presentation
|
||||
icon = R.drawable.ic_doc_presentation;
|
||||
add("application/vnd.stardivision.impress", icon);
|
||||
add("application/vnd.sun.xml.impress", icon);
|
||||
add("application/vnd.sun.xml.impress.template", icon);
|
||||
add("application/x-kpresenter", icon);
|
||||
add("application/vnd.oasis.opendocument.presentation", icon);
|
||||
|
||||
// Spreadsheet
|
||||
icon = R.drawable.ic_doc_spreadsheet;
|
||||
add("application/vnd.oasis.opendocument.spreadsheet", icon);
|
||||
add("application/vnd.oasis.opendocument.spreadsheet-template", icon);
|
||||
add("application/vnd.stardivision.calc", icon);
|
||||
add("application/vnd.sun.xml.calc", icon);
|
||||
add("application/vnd.sun.xml.calc.template", icon);
|
||||
add("application/x-kspread", icon);
|
||||
|
||||
// Document
|
||||
icon = R.drawable.ic_doc_document;
|
||||
add("application/vnd.oasis.opendocument.text", icon);
|
||||
add("application/vnd.oasis.opendocument.text-master", icon);
|
||||
add("application/vnd.oasis.opendocument.text-template", icon);
|
||||
add("application/vnd.oasis.opendocument.text-web", icon);
|
||||
add("application/vnd.stardivision.writer", icon);
|
||||
add("application/vnd.stardivision.writer-global", icon);
|
||||
add("application/vnd.sun.xml.writer", icon);
|
||||
add("application/vnd.sun.xml.writer.global", icon);
|
||||
add("application/vnd.sun.xml.writer.template", icon);
|
||||
add("application/x-abiword", icon);
|
||||
add("application/x-kword", icon);
|
||||
|
||||
// Video
|
||||
icon = R.drawable.ic_doc_video;
|
||||
add("application/x-quicktimeplayer", icon);
|
||||
add("application/x-shockwave-flash", icon);
|
||||
|
||||
// Word
|
||||
icon = R.drawable.ic_doc_word;
|
||||
add("application/msword", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.wordprocessingml.document", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.wordprocessingml.template", icon);
|
||||
|
||||
// Excel
|
||||
icon = R.drawable.ic_doc_excel;
|
||||
add("application/vnd.ms-excel", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.spreadsheetml.template", icon);
|
||||
|
||||
// Powerpoint
|
||||
icon = R.drawable.ic_doc_powerpoint;
|
||||
add("application/vnd.ms-powerpoint", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.presentationml.presentation", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.presentationml.template", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.presentationml.slideshow", icon);
|
||||
}
|
||||
|
||||
public static Drawable loadMimeIcon(Context context, String mimeType) {
|
||||
if (DocumentsContract.Document.MIME_TYPE_DIR.equals(mimeType)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_folder);
|
||||
}
|
||||
|
||||
// Look for exact match first
|
||||
Integer resId = sMimeIcons.get(mimeType);
|
||||
if (resId != null) {
|
||||
return context.getDrawable(resId);
|
||||
}
|
||||
|
||||
if (mimeType == null) {
|
||||
// TODO: generic icon?
|
||||
return null;
|
||||
}
|
||||
|
||||
// Otherwise look for partial match
|
||||
final String typeOnly = mimeType.split("/")[0];
|
||||
if ("audio".equals(typeOnly)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_audio);
|
||||
} else if ("image".equals(typeOnly)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_image);
|
||||
} else if ("text".equals(typeOnly)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_text);
|
||||
} else if ("video".equals(typeOnly)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_video);
|
||||
} else {
|
||||
return context.getDrawable(R.drawable.ic_doc_generic);
|
||||
}
|
||||
}
|
||||
}
|
||||
24
core/res/res/drawable/ic_doc_folder.xml
Normal file
24
core/res/res/drawable/ic_doc_folder.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<!--
|
||||
Copyright (C) 2015 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF737373"
|
||||
android:pathData="M10 4H4c-1.1 0,-1.99.9,-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2,-.9 2,-2V8c0,-1.1,-.9,-2,-2,-2h-8l-2,-2z"/>
|
||||
</vector>
|
||||
24
core/res/res/drawable/ic_doc_text.xml
Normal file
24
core/res/res/drawable/ic_doc_text.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<!--
|
||||
Copyright (C) 2015 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF737373"
|
||||
android:pathData="M14 2H6c-1.1 0,-1.99.9,-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2,-.9 2,-2V8l-6,-6zm2 16H8v-2h8v2zm0,-4H8v-2h8v2zm-3,-5V3.5L18.5 9H13z"/>
|
||||
</vector>
|
||||
@@ -2638,4 +2638,30 @@
|
||||
|
||||
<!-- Package name for the device provisioning package -->
|
||||
<java-symbol type="string" name="config_deviceProvisioningPackage" />
|
||||
|
||||
<!-- Used for MimeIconUtils. -->
|
||||
<java-symbol type="drawable" name="ic_doc_apk" />
|
||||
<java-symbol type="drawable" name="ic_doc_audio" />
|
||||
<java-symbol type="drawable" name="ic_doc_certificate" />
|
||||
<java-symbol type="drawable" name="ic_doc_codes" />
|
||||
<java-symbol type="drawable" name="ic_doc_compressed" />
|
||||
<java-symbol type="drawable" name="ic_doc_contact" />
|
||||
<java-symbol type="drawable" name="ic_doc_event" />
|
||||
<java-symbol type="drawable" name="ic_doc_font" />
|
||||
<java-symbol type="drawable" name="ic_doc_image" />
|
||||
<java-symbol type="drawable" name="ic_doc_pdf" />
|
||||
<java-symbol type="drawable" name="ic_doc_presentation" />
|
||||
<java-symbol type="drawable" name="ic_doc_spreadsheet" />
|
||||
<java-symbol type="drawable" name="ic_doc_document" />
|
||||
<java-symbol type="drawable" name="ic_doc_video" />
|
||||
<java-symbol type="drawable" name="ic_doc_word" />
|
||||
<java-symbol type="drawable" name="ic_doc_excel" />
|
||||
<java-symbol type="drawable" name="ic_doc_powerpoint" />
|
||||
<java-symbol type="drawable" name="ic_doc_folder" />
|
||||
<java-symbol type="drawable" name="ic_doc_audio" />
|
||||
<java-symbol type="drawable" name="ic_doc_image" />
|
||||
<java-symbol type="drawable" name="ic_doc_text" />
|
||||
<java-symbol type="drawable" name="ic_doc_video" />
|
||||
<java-symbol type="drawable" name="ic_doc_generic" />
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -23,181 +23,7 @@ import android.graphics.drawable.Drawable;
|
||||
import android.provider.DocumentsContract.Document;
|
||||
import android.util.TypedValue;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class IconUtils {
|
||||
|
||||
private static HashMap<String, Integer> sMimeIcons = new HashMap<>();
|
||||
|
||||
private static void add(String mimeType, int resId) {
|
||||
if (sMimeIcons.put(mimeType, resId) != null) {
|
||||
throw new RuntimeException(mimeType + " already registered!");
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
int icon;
|
||||
|
||||
// Package
|
||||
icon = R.drawable.ic_doc_apk;
|
||||
add("application/vnd.android.package-archive", icon);
|
||||
|
||||
// Audio
|
||||
icon = R.drawable.ic_doc_audio;
|
||||
add("application/ogg", icon);
|
||||
add("application/x-flac", icon);
|
||||
|
||||
// Certificate
|
||||
icon = R.drawable.ic_doc_certificate;
|
||||
add("application/pgp-keys", icon);
|
||||
add("application/pgp-signature", icon);
|
||||
add("application/x-pkcs12", icon);
|
||||
add("application/x-pkcs7-certreqresp", icon);
|
||||
add("application/x-pkcs7-crl", icon);
|
||||
add("application/x-x509-ca-cert", icon);
|
||||
add("application/x-x509-user-cert", icon);
|
||||
add("application/x-pkcs7-certificates", icon);
|
||||
add("application/x-pkcs7-mime", icon);
|
||||
add("application/x-pkcs7-signature", icon);
|
||||
|
||||
// Source code
|
||||
icon = R.drawable.ic_doc_codes;
|
||||
add("application/rdf+xml", icon);
|
||||
add("application/rss+xml", icon);
|
||||
add("application/x-object", icon);
|
||||
add("application/xhtml+xml", icon);
|
||||
add("text/css", icon);
|
||||
add("text/html", icon);
|
||||
add("text/xml", icon);
|
||||
add("text/x-c++hdr", icon);
|
||||
add("text/x-c++src", icon);
|
||||
add("text/x-chdr", icon);
|
||||
add("text/x-csrc", icon);
|
||||
add("text/x-dsrc", icon);
|
||||
add("text/x-csh", icon);
|
||||
add("text/x-haskell", icon);
|
||||
add("text/x-java", icon);
|
||||
add("text/x-literate-haskell", icon);
|
||||
add("text/x-pascal", icon);
|
||||
add("text/x-tcl", icon);
|
||||
add("text/x-tex", icon);
|
||||
add("application/x-latex", icon);
|
||||
add("application/x-texinfo", icon);
|
||||
add("application/atom+xml", icon);
|
||||
add("application/ecmascript", icon);
|
||||
add("application/json", icon);
|
||||
add("application/javascript", icon);
|
||||
add("application/xml", icon);
|
||||
add("text/javascript", icon);
|
||||
add("application/x-javascript", icon);
|
||||
|
||||
// Compressed
|
||||
icon = R.drawable.ic_doc_compressed;
|
||||
add("application/mac-binhex40", icon);
|
||||
add("application/rar", icon);
|
||||
add("application/zip", icon);
|
||||
add("application/x-apple-diskimage", icon);
|
||||
add("application/x-debian-package", icon);
|
||||
add("application/x-gtar", icon);
|
||||
add("application/x-iso9660-image", icon);
|
||||
add("application/x-lha", icon);
|
||||
add("application/x-lzh", icon);
|
||||
add("application/x-lzx", icon);
|
||||
add("application/x-stuffit", icon);
|
||||
add("application/x-tar", icon);
|
||||
add("application/x-webarchive", icon);
|
||||
add("application/x-webarchive-xml", icon);
|
||||
add("application/gzip", icon);
|
||||
add("application/x-7z-compressed", icon);
|
||||
add("application/x-deb", icon);
|
||||
add("application/x-rar-compressed", icon);
|
||||
|
||||
// Contact
|
||||
icon = R.drawable.ic_doc_contact;
|
||||
add("text/x-vcard", icon);
|
||||
add("text/vcard", icon);
|
||||
|
||||
// Event
|
||||
icon = R.drawable.ic_doc_event;
|
||||
add("text/calendar", icon);
|
||||
add("text/x-vcalendar", icon);
|
||||
|
||||
// Font
|
||||
icon = R.drawable.ic_doc_font;
|
||||
add("application/x-font", icon);
|
||||
add("application/font-woff", icon);
|
||||
add("application/x-font-woff", icon);
|
||||
add("application/x-font-ttf", icon);
|
||||
|
||||
// Image
|
||||
icon = R.drawable.ic_doc_image;
|
||||
add("application/vnd.oasis.opendocument.graphics", icon);
|
||||
add("application/vnd.oasis.opendocument.graphics-template", icon);
|
||||
add("application/vnd.oasis.opendocument.image", icon);
|
||||
add("application/vnd.stardivision.draw", icon);
|
||||
add("application/vnd.sun.xml.draw", icon);
|
||||
add("application/vnd.sun.xml.draw.template", icon);
|
||||
|
||||
// PDF
|
||||
icon = R.drawable.ic_doc_pdf;
|
||||
add("application/pdf", icon);
|
||||
|
||||
// Presentation
|
||||
icon = R.drawable.ic_doc_presentation;
|
||||
add("application/vnd.stardivision.impress", icon);
|
||||
add("application/vnd.sun.xml.impress", icon);
|
||||
add("application/vnd.sun.xml.impress.template", icon);
|
||||
add("application/x-kpresenter", icon);
|
||||
add("application/vnd.oasis.opendocument.presentation", icon);
|
||||
|
||||
// Spreadsheet
|
||||
icon = R.drawable.ic_doc_spreadsheet;
|
||||
add("application/vnd.oasis.opendocument.spreadsheet", icon);
|
||||
add("application/vnd.oasis.opendocument.spreadsheet-template", icon);
|
||||
add("application/vnd.stardivision.calc", icon);
|
||||
add("application/vnd.sun.xml.calc", icon);
|
||||
add("application/vnd.sun.xml.calc.template", icon);
|
||||
add("application/x-kspread", icon);
|
||||
|
||||
// Document
|
||||
icon = R.drawable.ic_doc_document;
|
||||
add("application/vnd.oasis.opendocument.text", icon);
|
||||
add("application/vnd.oasis.opendocument.text-master", icon);
|
||||
add("application/vnd.oasis.opendocument.text-template", icon);
|
||||
add("application/vnd.oasis.opendocument.text-web", icon);
|
||||
add("application/vnd.stardivision.writer", icon);
|
||||
add("application/vnd.stardivision.writer-global", icon);
|
||||
add("application/vnd.sun.xml.writer", icon);
|
||||
add("application/vnd.sun.xml.writer.global", icon);
|
||||
add("application/vnd.sun.xml.writer.template", icon);
|
||||
add("application/x-abiword", icon);
|
||||
add("application/x-kword", icon);
|
||||
|
||||
// Video
|
||||
icon = R.drawable.ic_doc_video;
|
||||
add("application/x-quicktimeplayer", icon);
|
||||
add("application/x-shockwave-flash", icon);
|
||||
|
||||
// Word
|
||||
icon = R.drawable.ic_doc_word;
|
||||
add("application/msword", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.wordprocessingml.document", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.wordprocessingml.template", icon);
|
||||
|
||||
// Excel
|
||||
icon = R.drawable.ic_doc_excel;
|
||||
add("application/vnd.ms-excel", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.spreadsheetml.template", icon);
|
||||
|
||||
// Powerpoint
|
||||
icon = R.drawable.ic_doc_powerpoint;
|
||||
add("application/vnd.ms-powerpoint", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.presentationml.presentation", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.presentationml.template", icon);
|
||||
add("application/vnd.openxmlformats-officedocument.presentationml.slideshow", icon);
|
||||
}
|
||||
|
||||
public static Drawable loadPackageIcon(Context context, String authority, int icon) {
|
||||
if (icon != 0) {
|
||||
if (authority != null) {
|
||||
@@ -225,7 +51,7 @@ public class IconUtils {
|
||||
if (mode == State.MODE_GRID) {
|
||||
return context.getDrawable(R.drawable.ic_grid_folder);
|
||||
} else {
|
||||
return context.getDrawable(R.drawable.ic_doc_folder);
|
||||
return context.getDrawable(com.android.internal.R.drawable.ic_doc_folder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,34 +59,7 @@ public class IconUtils {
|
||||
}
|
||||
|
||||
public static Drawable loadMimeIcon(Context context, String mimeType) {
|
||||
if (Document.MIME_TYPE_DIR.equals(mimeType)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_folder);
|
||||
}
|
||||
|
||||
// Look for exact match first
|
||||
Integer resId = sMimeIcons.get(mimeType);
|
||||
if (resId != null) {
|
||||
return context.getDrawable(resId);
|
||||
}
|
||||
|
||||
if (mimeType == null) {
|
||||
// TODO: generic icon?
|
||||
return null;
|
||||
}
|
||||
|
||||
// Otherwise look for partial match
|
||||
final String typeOnly = mimeType.split("/")[0];
|
||||
if ("audio".equals(typeOnly)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_audio);
|
||||
} else if ("image".equals(typeOnly)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_image);
|
||||
} else if ("text".equals(typeOnly)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_text);
|
||||
} else if ("video".equals(typeOnly)) {
|
||||
return context.getDrawable(R.drawable.ic_doc_video);
|
||||
} else {
|
||||
return context.getDrawable(R.drawable.ic_doc_generic);
|
||||
}
|
||||
return context.getContentResolver().getTypeDrawable(mimeType);
|
||||
}
|
||||
|
||||
public static Drawable applyTintColor(Context context, int drawableId, int tintColorId) {
|
||||
|
||||
@@ -1391,7 +1391,7 @@ public class DirectoryFragment extends Fragment
|
||||
return mIconHelper.getDocumentIcon(mContext, doc.authority, doc.documentId,
|
||||
doc.mimeType, doc.icon);
|
||||
}
|
||||
return mContext.getDrawable(R.drawable.ic_doc_generic);
|
||||
return mContext.getDrawable(com.android.internal.R.drawable.ic_doc_generic);
|
||||
}
|
||||
|
||||
private String getTitle(List<DocumentInfo> docs) {
|
||||
|
||||
@@ -213,13 +213,13 @@ public class RootInfo implements Durable, Parcelable, Comparable<RootInfo> {
|
||||
derivedIcon = R.drawable.ic_root_download;
|
||||
} else if (isImages()) {
|
||||
derivedType = TYPE_IMAGES;
|
||||
derivedIcon = R.drawable.ic_doc_image;
|
||||
derivedIcon = com.android.internal.R.drawable.ic_doc_image;
|
||||
} else if (isVideos()) {
|
||||
derivedType = TYPE_VIDEO;
|
||||
derivedIcon = R.drawable.ic_doc_video;
|
||||
derivedIcon = com.android.internal.R.drawable.ic_doc_video;
|
||||
} else if (isAudio()) {
|
||||
derivedType = TYPE_AUDIO;
|
||||
derivedIcon = R.drawable.ic_doc_audio;
|
||||
derivedIcon = com.android.internal.R.drawable.ic_doc_audio;
|
||||
} else if (isRecents()) {
|
||||
derivedType = TYPE_RECENTS;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user