IconUtils.java revision 563ee0fbe99c234f3364044cb762a75abbbaa797
10b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey/*
20b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * Copyright (C) 2013 The Android Open Source Project
30b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey *
40b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License");
50b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * you may not use this file except in compliance with the License.
60b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * You may obtain a copy of the License at
70b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey *
80b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey *      http://www.apache.org/licenses/LICENSE-2.0
90b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey *
100b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * Unless required by applicable law or agreed to in writing, software
110b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS,
120b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * See the License for the specific language governing permissions and
140b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey * limitations under the License.
150b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey */
160b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
170b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeypackage com.android.documentsui;
180b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
190b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.content.Context;
200b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.content.pm.PackageManager;
210b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.content.pm.ProviderInfo;
220b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.content.res.Resources;
230b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.graphics.drawable.Drawable;
240b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport android.provider.DocumentsContract.Document;
25563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkeyimport android.util.Log;
260b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
270b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport com.google.android.collect.Maps;
280b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
290b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeyimport java.util.HashMap;
300b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
310b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkeypublic class IconUtils {
320b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
330b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    private static HashMap<String, Integer> sMimeIcons = Maps.newHashMap();
340b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
350b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    private static void add(String mimeType, int resId) {
360b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (sMimeIcons.put(mimeType, resId) != null) {
370b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            throw new RuntimeException(mimeType + " already registered!");
380b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
390b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    }
400b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
410b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    static {
420b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        int icon;
430b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
440b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Package
450b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_apk;
460b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.android.package-archive", icon);
470b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
480b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Audio
490b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_audio;
500b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/ogg", icon);
510b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-flac", icon);
520b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
530b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Certificate
540b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_certificate;
550b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/pgp-keys", icon);
560b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/pgp-signature", icon);
570b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs12", icon);
580b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-certreqresp", icon);
590b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-crl", icon);
600b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-x509-ca-cert", icon);
610b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-x509-user-cert", icon);
620b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-certificates", icon);
630b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-mime", icon);
640b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-pkcs7-signature", icon);
650b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
660b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Source code
670b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_codes;
680b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/rdf+xml", icon);
690b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/rss+xml", icon);
700b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-object", icon);
710b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/xhtml+xml", icon);
720b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/css", icon);
730b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/html", icon);
740b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/xml", icon);
750b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-c++hdr", icon);
760b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-c++src", icon);
770b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-chdr", icon);
780b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-csrc", icon);
790b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-dsrc", icon);
800b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-csh", icon);
810b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-haskell", icon);
820b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-java", icon);
830b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-literate-haskell", icon);
840b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-pascal", icon);
850b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-tcl", icon);
860b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-tex", icon);
870b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-latex", icon);
880b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-texinfo", icon);
890b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/atom+xml", icon);
900b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/ecmascript", icon);
910b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/json", icon);
920b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/javascript", icon);
930b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/xml", icon);
940b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/javascript", icon);
950b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-javascript", icon);
960b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
970b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Compressed
980b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_compressed;
990b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/mac-binhex40", icon);
1000b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/rar", icon);
1010b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/zip", icon);
1020b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-apple-diskimage", icon);
1030b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-debian-package", icon);
1040b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-gtar", icon);
1050b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-iso9660-image", icon);
1060b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-lha", icon);
1070b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-lzh", icon);
1080b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-lzx", icon);
1090b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-stuffit", icon);
1100b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-tar", icon);
1110b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-webarchive", icon);
1120b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-webarchive-xml", icon);
1130b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/gzip", icon);
1140b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-7z-compressed", icon);
1150b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-deb", icon);
1160b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-rar-compressed", icon);
1170b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1180b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Contact
1190b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_contact;
1200b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-vcard", icon);
1210b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/vcard", icon);
1220b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1230b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Event
1240b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_event;
1250b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/calendar", icon);
1260b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("text/x-vcalendar", icon);
1270b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1280b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Font
1290b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_font;
1300b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-font", icon);
1310b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/font-woff", icon);
1320b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-font-woff", icon);
1330b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-font-ttf", icon);
1340b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1350b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Image
1360b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_image;
1370b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.graphics", icon);
1380b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.graphics-template", icon);
1390b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.image", icon);
1400b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.draw", icon);
1410b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.draw", icon);
1420b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.draw.template", icon);
1430b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1440b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // PDF
1450b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_pdf;
1460b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/pdf", icon);
1470b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1480b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Presentation
1490b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_presentation;
1500b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.ms-powerpoint", icon);
1510b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.presentationml.presentation", icon);
1520b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.presentationml.template", icon);
1530b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.presentationml.slideshow", icon);
1540b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.impress", icon);
1550b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.impress", icon);
1560b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.impress.template", icon);
1570b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-kpresenter", icon);
1580b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.presentation", icon);
1590b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1600b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Spreadsheet
1610b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_spreadsheet;
1620b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.spreadsheet", icon);
1630b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.spreadsheet-template", icon);
1640b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.ms-excel", icon);
1650b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", icon);
1660b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.spreadsheetml.template", icon);
1670b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.calc", icon);
1680b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.calc", icon);
1690b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.calc.template", icon);
1700b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-kspread", icon);
1710b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1720b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Text
1730b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_text;
1740b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.text", icon);
1750b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.text-master", icon);
1760b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.text-template", icon);
1770b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.oasis.opendocument.text-web", icon);
1780b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/msword", icon);
1790b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.wordprocessingml.document", icon);
1800b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.openxmlformats-officedocument.wordprocessingml.template", icon);
1810b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.writer", icon);
1820b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.stardivision.writer-global", icon);
1830b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.writer", icon);
1840b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.writer.global", icon);
1850b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/vnd.sun.xml.writer.template", icon);
1860b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-abiword", icon);
1870b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-kword", icon);
1880b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1890b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Video
1900b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        icon = R.drawable.ic_doc_video;
1910b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-quicktimeplayer", icon);
1920b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        add("application/x-shockwave-flash", icon);
1930b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    }
1940b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
1950b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    public static Drawable loadPackageIcon(Context context, String authority, int icon) {
1960b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (icon != 0) {
1970b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            if (authority != null) {
1980b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                final PackageManager pm = context.getPackageManager();
1990b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                final ProviderInfo info = pm.resolveContentProvider(authority, 0);
2000b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                if (info != null) {
2010b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                    return pm.getDrawable(info.packageName, icon, info.applicationInfo);
2020b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                }
2030b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            } else {
2040b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey                return context.getResources().getDrawable(icon);
2050b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            }
2060b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2070b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        return null;
2080b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    }
2090b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
210563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey    public static Drawable loadMimeIcon(
211563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey            Context context, String mimeType, String authority, String docId, int mode) {
212563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey        final Resources res = context.getResources();
213563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey
214563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey        if (Document.MIME_TYPE_DIR.equals(mimeType)) {
215563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey            // TODO: eventually move these hacky assets into that package
216563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey            if ("com.android.providers.media.documents".equals(authority)
217563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey                    && docId.startsWith("album")) {
218563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey                return res.getDrawable(R.drawable.ic_doc_album);
219563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey            }
220563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey
221563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey            if (mode == DocumentsActivity.State.MODE_GRID) {
222563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey                return res.getDrawable(R.drawable.ic_grid_folder);
223563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey            } else {
224563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey                return res.getDrawable(R.drawable.ic_root_folder);
225563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey            }
226563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey        }
227563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey
228563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey        return loadMimeIcon(context, mimeType);
229563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey    }
230563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey
2310b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    public static Drawable loadMimeIcon(Context context, String mimeType) {
2320b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        final Resources res = context.getResources();
2330b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
2340b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (Document.MIME_TYPE_DIR.equals(mimeType)) {
2356d97d3c1a2ebac4e3f32c7e5bc134864ace1c17fJeff Sharkey            // TODO: return a mipmap, since this is used for grid
2366d97d3c1a2ebac4e3f32c7e5bc134864ace1c17fJeff Sharkey            return res.getDrawable(R.drawable.ic_root_folder);
2370b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2380b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
2390b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Look for exact match first
2400b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        Integer resId = sMimeIcons.get(mimeType);
2410b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (resId != null) {
2420b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(resId);
2430b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2440b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
2450b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if (mimeType == null) {
2460b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            // TODO: generic icon?
2470b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return null;
2480b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2490b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey
2500b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        // Otherwise look for partial match
2510b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        final String typeOnly = mimeType.split("/")[0];
2520b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        if ("audio".equals(typeOnly)) {
2530b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(R.drawable.ic_doc_audio);
2540b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        } else if ("image".equals(typeOnly)) {
2550b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(R.drawable.ic_doc_image);
2560b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        } else if ("text".equals(typeOnly)) {
2570b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(R.drawable.ic_doc_text);
2580b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        } else if ("video".equals(typeOnly)) {
2590b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey            return res.getDrawable(R.drawable.ic_doc_video);
2600b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        } else {
261563ee0fbe99c234f3364044cb762a75abbbaa797Jeff Sharkey            return res.getDrawable(R.drawable.ic_doc_generic);
2620b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey        }
2630b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey    }
2640b14db3cf5eac43736462999337c9a3efdc1ac81Jeff Sharkey}
265