Enable dynamic clock icons for all apps that support them

This commit is contained in:
MM20 2023-02-16 22:17:32 +01:00
parent ce71784b74
commit 26fbc3c4b3
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
3 changed files with 11 additions and 12 deletions

View File

@ -19,7 +19,7 @@ import de.mm20.launcher2.icons.providers.CalendarIconProvider
import de.mm20.launcher2.icons.providers.CompatIconProvider
import de.mm20.launcher2.icons.providers.CustomIconPackIconProvider
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.IconProvider
import de.mm20.launcher2.icons.providers.PlaceholderIconProvider
@ -109,7 +109,7 @@ class IconRepository(
if (settings.themedIcons) {
providers.add(ThemedIconProvider(iconPackManager))
}
providers.add(GoogleClockIconProvider(context, settings.themedIcons))
providers.add(DynamicClockIconProvider(context, settings.themedIcons))
providers.add(CalendarIconProvider(context, settings.themedIcons))
if (!isAtLeastApiLevel(33)) {
providers.add(CompatIconProvider(context, settings.themedIcons))

View File

@ -176,7 +176,7 @@ fun AdaptiveIconDrawableCompat.toLauncherIcon(
return StaticLauncherIcon(
foregroundLayer = TintedClockLayer(
sublayers = clockLayers,
scale = 1f,
scale = 1.5f,
),
backgroundLayer = ColorLayer(),
)

View File

@ -2,33 +2,32 @@ package de.mm20.launcher2.icons.providers
import android.content.Context
import android.content.pm.PackageManager
import android.content.res.Resources
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.LauncherIcon
import de.mm20.launcher2.icons.compat.AdaptiveIconDrawableCompat
import de.mm20.launcher2.icons.compat.ClockIconConfig
import de.mm20.launcher2.icons.compat.toLauncherIcon
import de.mm20.launcher2.search.SavableSearchable
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? {
if (searchable !is LauncherApp) return null
if (searchable.`package` != "com.google.android.deskclock") return null
val pm = context.packageManager
val appInfo = try {
pm.getApplicationInfo(
"com.google.android.deskclock",
searchable.`package`,
PackageManager.GET_META_DATA
)
} catch (e: PackageManager.NameNotFoundException) {
return null
}
if (appInfo.metaData == null) return null
val drawableId =
appInfo.metaData.getInt("com.android.launcher3.LEVEL_PER_TICK_ICON_ROUND")
if (drawableId == 0) return null
val resources = try {
pm.getResourcesForApplication(appInfo)
} catch (e: PackageManager.NameNotFoundException) {