blob: 52f3e73c3d2d0d866dadd40d4fea807cecfeae5d [file] [log] [blame]
Jeff Sharkey5629ec52013-09-04 18:03:18 -07001/*
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
17package com.android.documentsui;
18
19import android.content.Context;
20import android.content.pm.PackageManager;
21import android.content.pm.ProviderInfo;
Jeff Sharkey5629ec52013-09-04 18:03:18 -070022import android.graphics.drawable.Drawable;
23import android.provider.DocumentsContract.Document;
Jeff Sharkey34c54092014-08-08 13:08:56 -070024import android.util.TypedValue;
Jeff Sharkey5629ec52013-09-04 18:03:18 -070025
Steve McKayd9caa6a2016-09-15 16:36:45 -070026import com.android.documentsui.base.State;
27
Jeff Sharkey5629ec52013-09-04 18:03:18 -070028public class IconUtils {
Jeff Sharkey5629ec52013-09-04 18:03:18 -070029 public static Drawable loadPackageIcon(Context context, String authority, int icon) {
30 if (icon != 0) {
31 if (authority != null) {
32 final PackageManager pm = context.getPackageManager();
33 final ProviderInfo info = pm.resolveContentProvider(authority, 0);
34 if (info != null) {
35 return pm.getDrawable(info.packageName, icon, info.applicationInfo);
36 }
37 } else {
Alan Viverette61791442014-08-14 12:59:10 -070038 return context.getDrawable(icon);
Jeff Sharkey5629ec52013-09-04 18:03:18 -070039 }
40 }
41 return null;
42 }
43
Jeff Sharkey2ceff512013-09-18 18:03:49 -070044 public static Drawable loadMimeIcon(
45 Context context, String mimeType, String authority, String docId, int mode) {
Jeff Sharkey2ceff512013-09-18 18:03:49 -070046 if (Document.MIME_TYPE_DIR.equals(mimeType)) {
47 // TODO: eventually move these hacky assets into that package
48 if ("com.android.providers.media.documents".equals(authority)
49 && docId.startsWith("album")) {
Alan Viverette61791442014-08-14 12:59:10 -070050 return context.getDrawable(R.drawable.ic_doc_album);
Jeff Sharkey2ceff512013-09-18 18:03:49 -070051 }
52
Steve McKayf8a5e082015-09-23 17:21:40 -070053 if (mode == State.MODE_GRID) {
Alan Viverette61791442014-08-14 12:59:10 -070054 return context.getDrawable(R.drawable.ic_grid_folder);
Jeff Sharkey2ceff512013-09-18 18:03:49 -070055 } else {
Daniel Nishif8ed15b2016-06-30 12:20:41 -070056 return context.getDrawable(com.android.internal.R.drawable.ic_doc_folder);
Jeff Sharkey2ceff512013-09-18 18:03:49 -070057 }
58 }
59
60 return loadMimeIcon(context, mimeType);
61 }
62
Jeff Sharkey5629ec52013-09-04 18:03:18 -070063 public static Drawable loadMimeIcon(Context context, String mimeType) {
Daniel Nishif8ed15b2016-06-30 12:20:41 -070064 return context.getContentResolver().getTypeDrawable(mimeType);
Jeff Sharkey5629ec52013-09-04 18:03:18 -070065 }
Jeff Sharkey34c54092014-08-08 13:08:56 -070066
Jeff Sharkey7e544612014-08-29 15:38:27 -070067 public static Drawable applyTintColor(Context context, int drawableId, int tintColorId) {
Alan Viverette61791442014-08-14 12:59:10 -070068 final Drawable icon = context.getDrawable(drawableId);
Jeff Sharkey34c54092014-08-08 13:08:56 -070069 icon.mutate();
Alan Viverette09195012015-03-18 18:37:18 -070070 icon.setTintList(context.getColorStateList(tintColorId));
Jeff Sharkey34c54092014-08-08 13:08:56 -070071 return icon;
72 }
Jeff Sharkey7e544612014-08-29 15:38:27 -070073
74 public static Drawable applyTintAttr(Context context, int drawableId, int tintAttrId) {
75 final TypedValue outValue = new TypedValue();
76 context.getTheme().resolveAttribute(tintAttrId, outValue, true);
77 return applyTintColor(context, drawableId, outValue.resourceId);
78 }
Jeff Sharkey5629ec52013-09-04 18:03:18 -070079}