From f96609c40b90da200280dbe0f1182dceccec69d6 Mon Sep 17 00:00:00 2001 From: MrSluffy Date: Mon, 9 Dec 2024 08:59:48 +0800 Subject: [PATCH] Revert "fixed third party themed source" This reverts commit ced2f5accb08820b4da5facccb5d745192c60b3d. --- .../app/lawnchair/icons/IconPackProvider.kt | 58 ++--- .../lawnchair/icons/LawnchairIconProvider.kt | 77 ++++--- .../destinations/IconPackPreferences.kt | 203 ++++++++++-------- .../model/data/ItemInfoWithIcon.java | 6 +- 4 files changed, 200 insertions(+), 144 deletions(-) diff --git a/lawnchair/src/app/lawnchair/icons/IconPackProvider.kt b/lawnchair/src/app/lawnchair/icons/IconPackProvider.kt index 256f0b3acc..ba78ae289e 100644 --- a/lawnchair/src/app/lawnchair/icons/IconPackProvider.kt +++ b/lawnchair/src/app/lawnchair/icons/IconPackProvider.kt @@ -10,7 +10,6 @@ import android.graphics.drawable.InsetDrawable import android.os.Build import android.os.Process import android.os.UserHandle -import app.lawnchair.util.getThemedIconPacksInstalled import com.android.launcher3.icons.ClockDrawableWrapper import com.android.launcher3.icons.ThemedIconDrawable import com.android.launcher3.util.MainThreadInitializedObject @@ -48,16 +47,14 @@ class IconPackProvider(private val context: Context) : SafeCloseable { iconPack.loadBlocking() val packageManager = context.packageManager val drawable = iconPack.getIcon(iconEntry, iconDpi) ?: return null - val themedIconPacks = packageManager.getThemedIconPacksInstalled(context) - val isThemedIconsEnabled = - context.isThemedIconsEnabled() && (iconEntry.packPackageName in themedIconPacks) + val shouldTintBackgrounds = context.shouldTintIconPackBackgrounds() val clockMetadata = if (user == Process.myUserHandle()) iconPack.getClock(iconEntry) else null try { if (clockMetadata != null) { val clockDrawable: ClockDrawableWrapper = ClockDrawableWrapper.forMeta(Build.VERSION.SDK_INT, clockMetadata) { - if (isThemedIconsEnabled) { + if (shouldTintBackgrounds) { wrapThemedData( packageManager, iconEntry, @@ -67,22 +64,20 @@ class IconPackProvider(private val context: Context) : SafeCloseable { drawable } } - if (clockDrawable != null) { - return if (isThemedIconsEnabled && context.shouldTransparentBGIcons()) { - clockDrawable.foreground - } else { - CustomAdaptiveIconDrawable( - clockDrawable.background, - clockDrawable.foreground, - ) - } + return if (shouldTintBackgrounds && context.shouldTransparentBGIcons()) { + clockDrawable.foreground + } else { + CustomAdaptiveIconDrawable( + clockDrawable.background, + clockDrawable.foreground, + ) } } - } catch (_: Throwable) { + } catch (t: Throwable) { // Ignore } - if (isThemedIconsEnabled) { + if (shouldTintBackgrounds) { return wrapThemedData(packageManager, iconEntry, drawable) } return drawable @@ -94,22 +89,27 @@ class IconPackProvider(private val context: Context) : SafeCloseable { drawable: Drawable, ): Drawable? { val themedColors: IntArray = ThemedIconDrawable.getThemedColors(context) - val res = packageManager.getResourcesForApplication(iconEntry.packPackageName) + try { + val res = packageManager.getResourcesForApplication(iconEntry.packPackageName) - @SuppressLint("DiscouragedApi") - val resId = res.getIdentifier(iconEntry.name, "drawable", iconEntry.packPackageName) - val bg: Drawable = ColorDrawable(themedColors[0]) - val td = ThemedIconDrawable.ThemeData(res, iconEntry.packPackageName, resId) - return if (drawable is AdaptiveIconDrawable) { - if (context.shouldTransparentBGIcons() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && drawable.monochrome != null) { - drawable.monochrome?.apply { setTint(themedColors[1]) } + @SuppressLint("DiscouragedApi") + val resId = res.getIdentifier(iconEntry.name, "drawable", iconEntry.packPackageName) + val bg: Drawable = ColorDrawable(themedColors[0]) + val td = ThemedIconDrawable.ThemeData(res, iconEntry.packPackageName, resId) + + return if (drawable is AdaptiveIconDrawable) { + if (context.shouldTransparentBGIcons() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && drawable.monochrome != null) { + drawable.monochrome?.apply { setTint(themedColors[1]) } + } else { + val foregroundDr = drawable.foreground.apply { setTint(themedColors[1]) } + CustomAdaptiveIconDrawable(bg, foregroundDr) + } } else { - val foregroundDr = drawable.foreground.apply { setTint(themedColors[1]) } - CustomAdaptiveIconDrawable(bg, foregroundDr) + val iconFromPack = InsetDrawable(drawable, .3f).apply { setTint(themedColors[1]) } + td.wrapDrawable(CustomAdaptiveIconDrawable(bg, iconFromPack), 0) } - } else { - val iconFromPack = InsetDrawable(drawable, .3f).apply { setTint(themedColors[1]) } - td.wrapDrawable(CustomAdaptiveIconDrawable(bg, iconFromPack), 0) + } catch (_: Exception) { + return drawable } } diff --git a/lawnchair/src/app/lawnchair/icons/LawnchairIconProvider.kt b/lawnchair/src/app/lawnchair/icons/LawnchairIconProvider.kt index b872fa2737..6ba5ef3673 100644 --- a/lawnchair/src/app/lawnchair/icons/LawnchairIconProvider.kt +++ b/lawnchair/src/app/lawnchair/icons/LawnchairIconProvider.kt @@ -19,7 +19,6 @@ import android.content.res.Resources import android.graphics.drawable.AdaptiveIconDrawable import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable -import android.os.Build import android.os.Handler import android.os.UserHandle import android.os.UserManager @@ -34,6 +33,7 @@ import app.lawnchair.util.getPackageVersionCode import app.lawnchair.util.isPackageInstalled import com.android.launcher3.BuildConfig import com.android.launcher3.R +import com.android.launcher3.Utilities import com.android.launcher3.icons.IconProvider import com.android.launcher3.icons.ThemedIconDrawable import com.android.launcher3.util.ComponentKey @@ -49,25 +49,31 @@ class LawnchairIconProvider @JvmOverloads constructor( private val prefs = PreferenceManager.getInstance(context) private val iconPackPref = prefs.iconPackPackage private val themedIconPackPref = prefs.themedIconPackPackage - private val drawerThemedIcons get() = prefs.drawerThemedIcons + private val iconPackProvider = IconPackProvider.INSTANCE.get(context) private val overrideRepo = IconOverrideRepository.INSTANCE.get(context) - private val iconPack get() = iconPackProvider.getIconPack(iconPackPref.get())?.apply { loadBlocking() } - private val themedIconPack get() = iconPackProvider.getIconPack(themedIconPackPref.get())?.apply { loadBlocking() } - private var isOlderLawnIconsInstalled = context.packageManager.getPackageVersionCode(LAWNICONS_PACKAGE_NAME) in 1..3 + + private val iconPack + get() = iconPackProvider.getIconPack(iconPackPref.get())?.apply { loadBlocking() } + private val themedIconPack + get() = iconPackProvider.getIconPack(themedIconPackPref.get())?.apply { loadBlocking() } + + private var isOlderLawniconsInstalled = context.packageManager.getPackageVersionCode(LAWNICONS_PACKAGE_NAME) in 1..3 + private var iconPackVersion = 0L + private var themeMapName: String = "" private var _themeMap: Map? = null val themeMap: Map get() { - if (drawerThemedIcons.get() && !(isOlderLawnIconsInstalled)) { + if (!context.isThemedIconsEnabled()) { _themeMap = DISABLED_MAP } if (_themeMap == null) { _themeMap = createThemedIconMap() } - if (isOlderLawnIconsInstalled && themedIconPackPref.get() == LAWNICONS_PACKAGE_NAME) { + if (isOlderLawniconsInstalled) { themeMapName = themedIconPackPref.get() _themeMap = createThemedIconMap() } @@ -83,9 +89,9 @@ class LawnchairIconProvider @JvmOverloads constructor( setIconThemeSupported(supportsIconTheme) } -// override fun setIconThemeSupported(isSupported: Boolean) { -// _themeMap = if (isSupported && isOlderLawnIconsInstalled) null else DISABLED_MAP -// } + override fun setIconThemeSupported(isSupported: Boolean) { + _themeMap = if (isSupported && isOlderLawniconsInstalled) null else DISABLED_MAP + } private fun resolveIconEntry(componentName: ComponentName, user: UserHandle): IconEntry? { val componentKey = ComponentKey(componentName, user) @@ -149,25 +155,43 @@ class LawnchairIconProvider @JvmOverloads constructor( } } val icon = resolvedEntry?.let { iconPackProvider.getDrawable(it, iconDpi, user) } - var td = themeData + val td = themeData if (icon != null) return if (td != null) td.wrapDrawable(icon, iconType) else icon + + // use default icon from system var defaultIcon = super.getIconWithOverrides(packageName, component, user, iconDpi, fallback) - if (context.isThemedIconsEnabled() && defaultIcon is AdaptiveIconDrawable && - Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && defaultIcon.monochrome != null - ) { - defaultIcon = defaultIcon.monochrome - return if (td != null) { - td.wrapDrawable(defaultIcon, iconType) - } else { - val themedColors = ThemedIconDrawable.getThemedColors(context) - if (context.shouldTransparentBGIcons()) { - return defaultIcon.apply { setTint(themedColors[1]) } + + if ((context.shouldTintIconPackBackgrounds() && defaultIcon is AdaptiveIconDrawable) || (context.isThemedIconsEnabled() && defaultIcon is AdaptiveIconDrawable)) { + if (Utilities.ATLEAST_T && defaultIcon.monochrome != null) { + defaultIcon = defaultIcon.monochrome + return if (td != null) { + td.wrapDrawable(defaultIcon, iconType) + } else { + val themedColors = ThemedIconDrawable.getThemedColors(context) + if (context.shouldTransparentBGIcons()) { + return defaultIcon.apply { setTint(themedColors[1]) } + } + CustomAdaptiveIconDrawable( + ColorDrawable(themedColors[0]), + defaultIcon.apply { setTint(themedColors[1]) }, + ) + } + } else { + val iconCompat = ThemedIconCompat.getThemedIcon(context, componentName) ?: return defaultIcon + + return if (td != null) { + td.wrapDrawable(iconCompat, iconType) + } else { + val themedColors = ThemedIconDrawable.getThemedColors(context) + if (context.shouldTransparentBGIcons()) { + return iconCompat.apply { setTint(themedColors[1]) } + } + CustomAdaptiveIconDrawable( + ColorDrawable(themedColors[0]), + iconCompat.apply { setTint(themedColors[1]) }, + ) } - CustomAdaptiveIconDrawable( - ColorDrawable(themedColors[0]), - defaultIcon.apply { setTint(themedColors[1]) }, - ) } } return defaultIcon @@ -367,7 +391,6 @@ class LawnchairIconProvider @JvmOverloads constructor( Log.e(TAG, "Unable to parse icon map.", e) } } - updateMapFromResources( resources = context.resources, packageName = context.packageName, @@ -378,7 +401,7 @@ class LawnchairIconProvider @JvmOverloads constructor( resources = context.packageManager.getResourcesForApplication(themeMapName), packageName = themeMapName, ) - if (isOlderLawnIconsInstalled) { + if (isOlderLawniconsInstalled) { updateMapWithDynamicIcons(context, map) } } diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/IconPackPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/IconPackPreferences.kt index aa886a15da..4feb566a09 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/IconPackPreferences.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/IconPackPreferences.kt @@ -19,20 +19,26 @@ package app.lawnchair.ui.preferences.destinations import android.content.res.Configuration import android.graphics.drawable.Drawable import androidx.annotation.StringRes +import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.rememberScrollState import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -41,9 +47,11 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.key +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource @@ -60,8 +68,9 @@ import app.lawnchair.ui.preferences.components.DummyLauncherLayout import app.lawnchair.ui.preferences.components.WallpaperPreview import app.lawnchair.ui.preferences.components.controls.ListPreference import app.lawnchair.ui.preferences.components.controls.ListPreferenceEntry +import app.lawnchair.ui.preferences.components.controls.SwitchPreference import app.lawnchair.ui.preferences.components.invariantDeviceProfile -import app.lawnchair.ui.preferences.components.layout.ExpandAndShrink +import app.lawnchair.ui.preferences.components.layout.Chip import app.lawnchair.ui.preferences.components.layout.NestedScrollStretch import app.lawnchair.ui.preferences.components.layout.PreferenceGroup import app.lawnchair.ui.preferences.components.layout.PreferenceLayout @@ -70,6 +79,7 @@ import app.lawnchair.util.getThemedIconPacksInstalled import app.lawnchair.util.isPackageInstalled import com.android.launcher3.R import com.google.accompanist.drawablepainter.rememberDrawablePainter +import kotlinx.coroutines.launch data class IconPackInfo( val name: String, @@ -105,6 +115,8 @@ fun IconPackPreferences( modifier: Modifier = Modifier, ) { val prefs = preferenceManager() + val context = LocalContext.current + val iconPackAdapter = prefs.iconPackPackage.getAdapter() val themedIconPackAdapter = prefs.themedIconPackPackage.getAdapter() val themedIconsAdapter = prefs.themedIcons.getAdapter() @@ -112,6 +124,7 @@ fun IconPackPreferences( val isPortrait = LocalConfiguration.current.orientation == Configuration.ORIENTATION_PORTRAIT val scrollState = rememberScrollState() val drawerThemedIconsEnabled = drawerThemedIconsAdapter.state.value + val tintIconpack = prefs.tintIconPackBackgrounds.getAdapter() PreferenceLayout( label = stringResource(id = R.string.icon_style_label), @@ -133,7 +146,7 @@ fun IconPackPreferences( .clip(MaterialTheme.shapes.large), ) { WallpaperPreview(modifier = Modifier.fillMaxSize()) - key(iconPackAdapter.state.value, themedIconPackAdapter.state.value, themedIconsAdapter.state.value) { + key(iconPackAdapter.state.value, themedIconPackAdapter.state.value, themedIconsAdapter.state.value, tintIconpack.state.value) { DummyLauncherLayout( idp = invariantDeviceProfile(), modifier = Modifier.fillMaxSize(), @@ -143,74 +156,98 @@ fun IconPackPreferences( } } Column { - ExpandAndShrink(visible = !drawerThemedIconsEnabled) { - PreferenceGroup( - heading = stringResource(id = R.string.icon_pack), - ) { - IconPackGrid( - adapter = iconPackAdapter, - themedIconsAdapter.state.value, - false, - ) - } - } - ExpandAndShrink(visible = themedIconsAdapter.state.value && !drawerThemedIconsEnabled) { - PreferenceGroup( - heading = stringResource(id = R.string.themed_icon_pack), - ) { - IconPackGrid( - adapter = themedIconPackAdapter, - drawerThemedIconsEnabled, - true, - ) - } - } - ExpandAndShrink(visible = drawerThemedIconsEnabled) { - PreferenceGroup( - heading = stringResource(id = R.string.themed_icon_pack), - ) { - IconPackGrid( - adapter = iconPackAdapter, - drawerThemedIconsEnabled, - true, - ) - } - } - PreferenceGroup { - val themedIconsAvailable = LocalContext.current.packageManager - .getThemedIconPacksInstalled(LocalContext.current) - .any { LocalContext.current.packageManager.isPackageInstalled(it) } || - LocalContext.current.packageManager - .isPackageInstalled(Constants.LAWNICONS_PACKAGE_NAME) - ListPreference( - enabled = themedIconsAvailable, - label = stringResource(id = R.string.themed_icon_title), - entries = ThemedIconsState.entries.map { - ListPreferenceEntry( - value = it, - label = { stringResource(id = it.labelResourceId) }, - ) - }.toMutableList(), - value = ThemedIconsState.getForSettings( - themedIcons = themedIconsAdapter.state.value, - drawerThemedIcons = drawerThemedIconsEnabled, - ), - onValueChange = { - themedIconsAdapter.onChange(newValue = it.themedIcons) - drawerThemedIconsAdapter.onChange(newValue = it.drawerThemedIcons) - iconPackAdapter.onChange(newValue = iconPackAdapter.state.value) - if (it.themedIcons && !it.drawerThemedIcons) { - themedIconPackAdapter.onChange(newValue = themedIconPackAdapter.state.value) - } else { - themedIconPackAdapter.onChange(newValue = "") - } - }, - description = if (themedIconsAvailable.not()) { - stringResource(id = R.string.lawnicons_not_installed_description) - } else { - null - }, + val pagerState = rememberPagerState( + initialPage = 0, + pageCount = { 2 }, + ) + + val scope = rememberCoroutineScope() + val scrollToPage = + { page: Int -> scope.launch { pagerState.animateScrollToPage(page) } } + + Row( + horizontalArrangement = Arrangement.spacedBy(space = 8.dp), + modifier = Modifier.padding(horizontal = 16.dp), + ) { + Chip( + label = stringResource(id = R.string.icon_pack), + onClick = { scrollToPage(0) }, + currentOffset = pagerState.currentPage + pagerState.currentPageOffsetFraction, + page = 0, ) + Chip( + label = stringResource(id = R.string.themed_icon_pack), + onClick = { scrollToPage(1) }, + currentOffset = pagerState.currentPage + pagerState.currentPageOffsetFraction, + page = 1, + ) + } + + Spacer(Modifier.height(16.dp)) + + HorizontalPager( + state = pagerState, + verticalAlignment = Alignment.Top, + modifier = Modifier.animateContentSize(), + ) { page -> + when (page) { + 0 -> { + PreferenceGroup { + IconPackGrid( + adapter = iconPackAdapter, + false, + ) + SwitchPreference( + adapter = prefs.tintIconPackBackgrounds.getAdapter(), + label = stringResource(id = R.string.themed_icon_pack_tint), + ) + } + } + 1 -> { + val packageManager = context.packageManager + + PreferenceGroup { + val themedIconsAvailable = packageManager + .getThemedIconPacksInstalled(LocalContext.current) + .any { packageManager.isPackageInstalled(it) } || + packageManager + .isPackageInstalled(Constants.LAWNICONS_PACKAGE_NAME) + + if (themedIconsAvailable && themedIconsAdapter.state.value) { + IconPackGrid( + adapter = themedIconPackAdapter, + true, + ) + } + ListPreference( + enabled = themedIconsAvailable, + label = stringResource(id = R.string.themed_icon_title), + entries = ThemedIconsState.entries.map { + ListPreferenceEntry( + value = it, + label = { stringResource(id = it.labelResourceId) }, + ) + }, + value = ThemedIconsState.getForSettings( + themedIcons = themedIconsAdapter.state.value, + drawerThemedIcons = drawerThemedIconsEnabled, + ), + onValueChange = { + themedIconsAdapter.onChange(newValue = it.themedIcons) + drawerThemedIconsAdapter.onChange(newValue = it.drawerThemedIcons) + + iconPackAdapter.onChange(newValue = iconPackAdapter.state.value) + themedIconPackAdapter.onChange(newValue = themedIconPackAdapter.state.value) + }, + description = if (themedIconsAvailable.not()) { + stringResource(id = R.string.lawnicons_not_installed_description) + } else { + null + }, + ) + } + } + } } } } @@ -219,25 +256,21 @@ fun IconPackPreferences( @Composable fun IconPackGrid( adapter: PreferenceAdapter, - drawerThemedIcons: Boolean, isThemedIconPack: Boolean, modifier: Modifier = Modifier, ) { - val iconPacks by LocalPreferenceInteractor.current.iconPacks.collectAsStateWithLifecycle() - val themedIconPacks by LocalPreferenceInteractor.current.themedIconPacks.collectAsStateWithLifecycle() + val preferenceInteractor = LocalPreferenceInteractor.current + + val iconPacks by preferenceInteractor.iconPacks.collectAsStateWithLifecycle() + val themedIconPacks by preferenceInteractor.themedIconPacks.collectAsStateWithLifecycle() + val lazyListState = rememberLazyListState() val padding = 12.dp - var iconPacksLocal = iconPacks - val themedIconPacksName = themedIconPacks.map { it.name } - if (isThemedIconPack) { - iconPacksLocal = if (drawerThemedIcons) { - themedIconPacks - } else { - themedIconPacks.filter { it.packageName != "" } - } - } else if (drawerThemedIcons) { - iconPacksLocal = iconPacks.filter { it.packageName == "" || !themedIconPacksName.contains(it.name) } + val iconPacksLocal = if (isThemedIconPack) { + themedIconPacks.filter { it.packageName != "" } + } else { + iconPacks } val selectedPack = adapter.state.value @@ -259,7 +292,9 @@ fun IconPackGrid( state = lazyListState, horizontalArrangement = Arrangement.spacedBy(space = padding), contentPadding = PaddingValues(horizontal = padding), - modifier = Modifier.padding(bottom = 6.dp, top = 6.dp).fillMaxWidth(), + modifier = Modifier + .padding(bottom = 6.dp, top = 6.dp) + .fillMaxWidth(), ) { itemsIndexed(iconPacksLocal, { _, item -> item.packageName }) { index, item -> IconPackItem( @@ -306,7 +341,7 @@ fun IconPackItem( Surface( onClick = onClick, shape = MaterialTheme.shapes.large, - tonalElevation = if (selected) 2.dp else 0.dp, + color = if (selected) MaterialTheme.colorScheme.surfaceContainerHighest else Color.Transparent, modifier = modifier, ) { Column( diff --git a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java index 2c60485457..cfc0b2be19 100644 --- a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java +++ b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java @@ -314,16 +314,14 @@ public abstract class ItemInfoWithIcon extends ItemInfo { * Returns a FastBitmapDrawable with the icon. */ public FastBitmapDrawable newIcon(Context context) { - return bitmap.newIcon(context); + return newIcon(context, PreferenceManager.getInstance(context).getThemedIcons().get()); } /** * Returns a FastBitmapDrawable with the icon and context theme applied */ public FastBitmapDrawable newIcon(Context context, boolean applyTheme) { - var prefs = PreferenceManager.getInstance(context); - var isThemed = applyTheme && prefs.getThemedIcons().get(); - return newIcon(context, isThemed ? BitmapInfo.FLAG_THEMED : BitmapInfo.FLAG_NO_BADGE); + return newIcon(context, applyTheme ? BitmapInfo.FLAG_THEMED : BitmapInfo.FLAG_NO_BADGE); } /**