Loading aconfig/settings_flag_declarations.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -42,3 +42,10 @@ flag { description: "Feature flag to remove relevant slices dependencies." bug: "297367302" } flag { name: "support_raw_dynamic_icons" namespace: "android_settings" description: "Flag to gate support of injected preference icons containing raw data" bug: "351884562" } src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +23 −4 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import android.util.Log; import android.util.Pair; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; Loading @@ -63,6 +64,7 @@ import com.android.settings.Utils; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.dashboard.profileselector.ProfileSelectDialog; import com.android.settings.flags.Flags; import com.android.settings.homepage.TopLevelHighlightMixin; import com.android.settings.homepage.TopLevelSettings; import com.android.settings.overlay.FeatureFactory; Loading Loading @@ -413,13 +415,23 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { METHOD_GET_PROVIDER_ICON); final Pair<String, Integer> iconInfo = TileUtils.getIconFromUri( mContext, packageName, uri, providerMap); if (iconInfo == null) { final Icon icon; if (iconInfo != null) { icon = Icon.createWithResource(iconInfo.first, iconInfo.second); } else if (Flags.supportRawDynamicIcons()) { icon = TileUtils.getRawIconFromUri(mContext, uri, providerMap); } else { icon = null; } if (icon == null) { Log.w(TAG, "Failed to get icon from uri " + uri); return; } final Icon icon = Icon.createWithResource(iconInfo.first, iconInfo.second); final String iconPackage = (iconInfo != null) ? iconInfo.first : null; ThreadUtils.postOnMainThread(() -> { setPreferenceIcon(preference, tile, forceRoundedIcon, iconInfo.first, icon); setPreferenceIcon(preference, tile, forceRoundedIcon, iconPackage, icon); }); }); return; Loading @@ -435,14 +447,21 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } private void setPreferenceIcon(Preference preference, Tile tile, boolean forceRoundedIcon, String iconPackage, Icon icon) { @Nullable String iconPackage, Icon icon) { Drawable iconDrawable = icon.loadDrawable(preference.getContext()); if (iconDrawable == null) { Log.w(TAG, "Set null preference icon for: " + iconPackage); preference.setIcon(null); return; } // Tint homepage icons if (TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) { // Skip tinting and Adaptive Icon transformation for homepage account type raw icons if (TextUtils.equals(tile.getGroupKey(), "top_level_account_category") && iconPackage == null) { preference.setIcon(iconDrawable); return; } iconDrawable.setTint(Utils.getHomepageIconColor(preference.getContext())); } Loading Loading
aconfig/settings_flag_declarations.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -42,3 +42,10 @@ flag { description: "Feature flag to remove relevant slices dependencies." bug: "297367302" } flag { name: "support_raw_dynamic_icons" namespace: "android_settings" description: "Flag to gate support of injected preference icons containing raw data" bug: "351884562" }
src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +23 −4 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import android.util.Log; import android.util.Pair; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; Loading @@ -63,6 +64,7 @@ import com.android.settings.Utils; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.dashboard.profileselector.ProfileSelectDialog; import com.android.settings.flags.Flags; import com.android.settings.homepage.TopLevelHighlightMixin; import com.android.settings.homepage.TopLevelSettings; import com.android.settings.overlay.FeatureFactory; Loading Loading @@ -413,13 +415,23 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { METHOD_GET_PROVIDER_ICON); final Pair<String, Integer> iconInfo = TileUtils.getIconFromUri( mContext, packageName, uri, providerMap); if (iconInfo == null) { final Icon icon; if (iconInfo != null) { icon = Icon.createWithResource(iconInfo.first, iconInfo.second); } else if (Flags.supportRawDynamicIcons()) { icon = TileUtils.getRawIconFromUri(mContext, uri, providerMap); } else { icon = null; } if (icon == null) { Log.w(TAG, "Failed to get icon from uri " + uri); return; } final Icon icon = Icon.createWithResource(iconInfo.first, iconInfo.second); final String iconPackage = (iconInfo != null) ? iconInfo.first : null; ThreadUtils.postOnMainThread(() -> { setPreferenceIcon(preference, tile, forceRoundedIcon, iconInfo.first, icon); setPreferenceIcon(preference, tile, forceRoundedIcon, iconPackage, icon); }); }); return; Loading @@ -435,14 +447,21 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } private void setPreferenceIcon(Preference preference, Tile tile, boolean forceRoundedIcon, String iconPackage, Icon icon) { @Nullable String iconPackage, Icon icon) { Drawable iconDrawable = icon.loadDrawable(preference.getContext()); if (iconDrawable == null) { Log.w(TAG, "Set null preference icon for: " + iconPackage); preference.setIcon(null); return; } // Tint homepage icons if (TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) { // Skip tinting and Adaptive Icon transformation for homepage account type raw icons if (TextUtils.equals(tile.getGroupKey(), "top_level_account_category") && iconPackage == null) { preference.setIcon(iconDrawable); return; } iconDrawable.setTint(Utils.getHomepageIconColor(preference.getContext())); } Loading