1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.documentsui;
18 
19 import android.content.Context;
20 import android.content.pm.PackageManager;
21 import android.content.pm.ProviderInfo;
22 import android.graphics.drawable.Drawable;
23 import android.util.TypedValue;
24 
25 import com.android.documentsui.base.MimeTypes;
26 
27 public class IconUtils {
loadPackageIcon(Context context, String authority, int icon)28     public static Drawable loadPackageIcon(Context context, String authority, int icon) {
29         if (icon != 0) {
30             if (authority != null) {
31                 final PackageManager pm = context.getPackageManager();
32                 final ProviderInfo info = pm.resolveContentProvider(authority, 0);
33                 if (info != null) {
34                     return pm.getDrawable(info.packageName, icon, info.applicationInfo);
35                 }
36             } else {
37                 return context.getDrawable(icon);
38             }
39         }
40         return null;
41     }
42 
loadMimeIcon( Context context, String mimeType, String authority, String docId, int mode)43     public static Drawable loadMimeIcon(
44             Context context, String mimeType, String authority, String docId, int mode) {
45         return loadMimeIcon(context, mimeType);
46     }
47 
48     /**
49      * Load mime type drawable from system MimeIconUtils.
50      * @param context activity context to obtain resource
51      * @param mimeType specific mime type string of file
52      * @return drawable of mime type files from system default
53      */
loadMimeIcon(Context context, String mimeType)54     public static Drawable loadMimeIcon(Context context, String mimeType) {
55         if (mimeType == null) return null;
56         return context.getContentResolver().getTypeInfo(mimeType).getIcon().loadDrawable(context);
57     }
58 
applyTintColor(Context context, int drawableId, int tintColorId)59     public static Drawable applyTintColor(Context context, int drawableId, int tintColorId) {
60         final Drawable icon = context.getDrawable(drawableId);
61         return applyTintColor(context, icon, tintColorId);
62     }
63 
applyTintColor(Context context, Drawable icon, int tintColorId)64     public static Drawable applyTintColor(Context context, Drawable icon, int tintColorId) {
65         icon.mutate();
66         icon.setTintList(context.getColorStateList(tintColorId));
67         return icon;
68     }
69 
applyTintAttr(Context context, int drawableId, int tintAttrId)70     public static Drawable applyTintAttr(Context context, int drawableId, int tintAttrId) {
71         final TypedValue outValue = new TypedValue();
72         context.getTheme().resolveAttribute(tintAttrId, outValue, true);
73         return applyTintColor(context, drawableId, outValue.resourceId);
74     }
75 }
76