Enable dynamic clock icons for all apps that support them
This commit is contained in:
parent
ce71784b74
commit
26fbc3c4b3
@ -19,7 +19,7 @@ import de.mm20.launcher2.icons.providers.CalendarIconProvider
|
|||||||
import de.mm20.launcher2.icons.providers.CompatIconProvider
|
import de.mm20.launcher2.icons.providers.CompatIconProvider
|
||||||
import de.mm20.launcher2.icons.providers.CustomIconPackIconProvider
|
import de.mm20.launcher2.icons.providers.CustomIconPackIconProvider
|
||||||
import de.mm20.launcher2.icons.providers.CustomThemedIconProvider
|
import de.mm20.launcher2.icons.providers.CustomThemedIconProvider
|
||||||
import de.mm20.launcher2.icons.providers.GoogleClockIconProvider
|
import de.mm20.launcher2.icons.providers.DynamicClockIconProvider
|
||||||
import de.mm20.launcher2.icons.providers.IconPackIconProvider
|
import de.mm20.launcher2.icons.providers.IconPackIconProvider
|
||||||
import de.mm20.launcher2.icons.providers.IconProvider
|
import de.mm20.launcher2.icons.providers.IconProvider
|
||||||
import de.mm20.launcher2.icons.providers.PlaceholderIconProvider
|
import de.mm20.launcher2.icons.providers.PlaceholderIconProvider
|
||||||
@ -109,7 +109,7 @@ class IconRepository(
|
|||||||
if (settings.themedIcons) {
|
if (settings.themedIcons) {
|
||||||
providers.add(ThemedIconProvider(iconPackManager))
|
providers.add(ThemedIconProvider(iconPackManager))
|
||||||
}
|
}
|
||||||
providers.add(GoogleClockIconProvider(context, settings.themedIcons))
|
providers.add(DynamicClockIconProvider(context, settings.themedIcons))
|
||||||
providers.add(CalendarIconProvider(context, settings.themedIcons))
|
providers.add(CalendarIconProvider(context, settings.themedIcons))
|
||||||
if (!isAtLeastApiLevel(33)) {
|
if (!isAtLeastApiLevel(33)) {
|
||||||
providers.add(CompatIconProvider(context, settings.themedIcons))
|
providers.add(CompatIconProvider(context, settings.themedIcons))
|
||||||
|
|||||||
@ -176,7 +176,7 @@ fun AdaptiveIconDrawableCompat.toLauncherIcon(
|
|||||||
return StaticLauncherIcon(
|
return StaticLauncherIcon(
|
||||||
foregroundLayer = TintedClockLayer(
|
foregroundLayer = TintedClockLayer(
|
||||||
sublayers = clockLayers,
|
sublayers = clockLayers,
|
||||||
scale = 1f,
|
scale = 1.5f,
|
||||||
),
|
),
|
||||||
backgroundLayer = ColorLayer(),
|
backgroundLayer = ColorLayer(),
|
||||||
)
|
)
|
||||||
|
|||||||
@ -2,33 +2,32 @@ package de.mm20.launcher2.icons.providers
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.content.res.Resources
|
import de.mm20.launcher2.icons.LauncherIcon
|
||||||
import android.graphics.drawable.AdaptiveIconDrawable
|
|
||||||
import android.graphics.drawable.LayerDrawable
|
|
||||||
import android.graphics.drawable.RotateDrawable
|
|
||||||
import androidx.core.content.res.ResourcesCompat
|
|
||||||
import de.mm20.launcher2.icons.*
|
|
||||||
import de.mm20.launcher2.icons.compat.AdaptiveIconDrawableCompat
|
import de.mm20.launcher2.icons.compat.AdaptiveIconDrawableCompat
|
||||||
import de.mm20.launcher2.icons.compat.ClockIconConfig
|
import de.mm20.launcher2.icons.compat.ClockIconConfig
|
||||||
import de.mm20.launcher2.icons.compat.toLauncherIcon
|
import de.mm20.launcher2.icons.compat.toLauncherIcon
|
||||||
import de.mm20.launcher2.search.SavableSearchable
|
import de.mm20.launcher2.search.SavableSearchable
|
||||||
import de.mm20.launcher2.search.data.LauncherApp
|
import de.mm20.launcher2.search.data.LauncherApp
|
||||||
|
|
||||||
class GoogleClockIconProvider(val context: Context, private val themed: Boolean) : IconProvider {
|
class DynamicClockIconProvider(val context: Context, private val themed: Boolean) : IconProvider {
|
||||||
override suspend fun getIcon(searchable: SavableSearchable, size: Int): LauncherIcon? {
|
override suspend fun getIcon(searchable: SavableSearchable, size: Int): LauncherIcon? {
|
||||||
if (searchable !is LauncherApp) return null
|
if (searchable !is LauncherApp) return null
|
||||||
if (searchable.`package` != "com.google.android.deskclock") return null
|
|
||||||
val pm = context.packageManager
|
val pm = context.packageManager
|
||||||
val appInfo = try {
|
val appInfo = try {
|
||||||
pm.getApplicationInfo(
|
pm.getApplicationInfo(
|
||||||
"com.google.android.deskclock",
|
searchable.`package`,
|
||||||
PackageManager.GET_META_DATA
|
PackageManager.GET_META_DATA
|
||||||
)
|
)
|
||||||
} catch (e: PackageManager.NameNotFoundException) {
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (appInfo.metaData == null) return null
|
||||||
|
|
||||||
val drawableId =
|
val drawableId =
|
||||||
appInfo.metaData.getInt("com.android.launcher3.LEVEL_PER_TICK_ICON_ROUND")
|
appInfo.metaData.getInt("com.android.launcher3.LEVEL_PER_TICK_ICON_ROUND")
|
||||||
|
|
||||||
|
if (drawableId == 0) return null
|
||||||
val resources = try {
|
val resources = try {
|
||||||
pm.getResourcesForApplication(appInfo)
|
pm.getResourcesForApplication(appInfo)
|
||||||
} catch (e: PackageManager.NameNotFoundException) {
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
Loading…
x
Reference in New Issue
Block a user