Merge "Only add icons to settings items with icons" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-05-10 20:16:13 +00:00
committed by Android (Google) Code Review
5 changed files with 51 additions and 34 deletions

View File

@@ -33,6 +33,7 @@ import android.os.Build;
import android.provider.SearchIndexableData;
import android.provider.SearchIndexableResource;
import android.provider.SearchIndexablesContract;
import android.support.annotation.DrawableRes;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.AttributeSet;
@@ -525,8 +526,6 @@ public class DatabaseIndexingManager {
final int count = cursor.getCount();
if (count > 0) {
while (cursor.moveToNext()) {
final int providerRank = cursor.getInt(COLUMN_INDEX_XML_RES_RANK);
// TODO remove provider rank
final int xmlResId = cursor.getInt(COLUMN_INDEX_XML_RES_RESID);
final String className = cursor.getString(COLUMN_INDEX_XML_RES_CLASS_NAME);
@@ -720,7 +719,6 @@ public class DatabaseIndexingManager {
final AttributeSet attrs = Xml.asAttributeSet(parser);
final String screenTitle = XmlParserUtils.getDataTitle(context, attrs);
String key = XmlParserUtils.getDataKey(context, attrs);
String title;
@@ -730,10 +728,11 @@ public class DatabaseIndexingManager {
String keywords;
String headerKeywords;
String childFragment;
@DrawableRes
int iconResId;
ResultPayload payload;
boolean enabled;
final String fragmentName = sir.className;
final int iconResId = sir.iconResId;
final int rank = sir.rank;
final String intentAction = sir.intentAction;
final String intentTargetPackage = sir.intentTargetPackage;
@@ -784,6 +783,7 @@ public class DatabaseIndexingManager {
key = XmlParserUtils.getDataKey(context, attrs);
enabled = ! nonIndexableKeys.contains(key);
keywords = XmlParserUtils.getDataKeywords(context, attrs);
iconResId = XmlParserUtils.getDataIcon(context, attrs);
if (isHeaderUnique && TextUtils.equals(headerTitle, title)) {
isHeaderUnique = false;
@@ -853,7 +853,6 @@ public class DatabaseIndexingManager {
List<String> nonIndexableKeys) {
final String className = sir.className;
final int iconResId = sir.iconResId;
final int rank = sir.rank;
if (provider == null) {
@@ -881,7 +880,7 @@ public class DatabaseIndexingManager {
.setEntries(raw.entries)
.setClassName(className)
.setScreenTitle(raw.screenTitle)
.setIconResId(iconResId)
.setIconResId(raw.iconResId)
.setRank(rank)
.setIntentAction(raw.intentAction)
.setIntentTargetPackage(raw.intentTargetPackage)
@@ -907,7 +906,6 @@ public class DatabaseIndexingManager {
continue;
}
item.iconResId = (item.iconResId == 0) ? iconResId : item.iconResId;
item.className = (TextUtils.isEmpty(item.className)) ? className : item.className;
indexFromResource(database, localeStr, item, nonIndexableKeys);

View File

@@ -69,11 +69,9 @@ public abstract class SearchViewHolder extends RecyclerView.ViewHolder {
AppSearchResult appResult = (AppSearchResult) result;
PackageManager pm = fragment.getActivity().getPackageManager();
iconView.setImageDrawable(appResult.info.loadIcon(pm));
} else if (result.icon != null) {
iconView.setImageDrawable(result.icon);
// TODO set color of icon
} else {
iconView.setBackgroundResource(R.drawable.empty_icon);
// Valid even when result.icon is null.
iconView.setImageDrawable(result.icon);
}
bindBreadcrumbView(result);

View File

@@ -71,6 +71,14 @@ public class XmlParserUtils {
return getData(context, attrs, R.styleable.Preference, R.styleable.Preference_keywords);
}
public static int getDataIcon(Context context, AttributeSet attrs) {
final TypedArray ta = context.obtainStyledAttributes(attrs,
com.android.internal.R.styleable.Preference);
final int dataIcon = ta.getResourceId(com.android.internal.R.styleable.Icon_icon, 0);
ta.recycle();
return dataIcon;
}
/**
* Returns the fragment name if this preference launches a child fragment.
*/
@@ -80,17 +88,9 @@ public class XmlParserUtils {
}
private static String getData(Context context, AttributeSet set, int[] attrs, int resId) {
final TypedArray sa = context.obtainStyledAttributes(set, attrs);
final TypedValue tv = sa.peekValue(resId);
CharSequence data = null;
if (tv != null && tv.type == TypedValue.TYPE_STRING) {
if (tv.resourceId != 0) {
data = context.getText(tv.resourceId);
} else {
data = tv.string;
}
}
final TypedArray ta = context.obtainStyledAttributes(set, attrs);
String data = ta.getString(resId);
ta.recycle();
return (data != null) ? data.toString() : null;
}