From 6e411e9555b7545dc204cb2ee1f4b30727aafeca Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Fri, 2 Sep 2022 19:10:55 +0200 Subject: [PATCH] Wrap icon and badge parameters of ShapedLauncherIcon in lambda --- .../ui/component/ShapedLauncherIcon.kt | 34 ++++++++++++------- .../ui/launcher/search/apps/AppItem.kt | 4 +-- .../customattrs/CustomizeSearchableSheet.kt | 12 ++++--- .../launcher/search/common/grid/GridItem.kt | 4 +-- .../launcher/search/contacts/ContactItem.kt | 2 +- .../ui/launcher/search/files/FileItem.kt | 4 +-- .../launcher/search/shortcut/ShortcutItem.kt | 4 +-- .../appearance/AppearanceSettingsScreen.kt | 27 ++++++++------- .../hiddenitems/HiddenItemsSettingsScreen.kt | 2 +- 9 files changed, 54 insertions(+), 39 deletions(-) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt b/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt index bc0c6685..6600b1dd 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt @@ -54,27 +54,29 @@ import kotlin.math.roundToInt fun ShapedLauncherIcon( modifier: Modifier = Modifier, size: Dp, - icon: LauncherIcon? = null, - badge: Badge? = null, + icon: () -> LauncherIcon? = { null }, + badge: () -> Badge? = { null }, onClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null, shape: Shape = LocalIconShape.current ) { - var currentIcon by remember(icon) { + val _icon = icon() + + var currentIcon by remember(_icon) { mutableStateOf( - when (icon) { + when (_icon) { is DynamicLauncherIcon -> null - is StaticLauncherIcon -> icon + is StaticLauncherIcon -> _icon else -> null } ) } - if (icon is DynamicLauncherIcon) { + if (_icon is DynamicLauncherIcon) { val time = LocalTime.current LaunchedEffect(time) { - currentIcon = icon.getIcon(time) + currentIcon = _icon.getIcon(time) } } @@ -113,7 +115,8 @@ fun ShapedLauncherIcon( ) } } - if (badge != null) { + val _badge = badge() + if (_badge != null) { Surface( shadowElevation = 1.dp, tonalElevation = 1.dp, @@ -134,7 +137,7 @@ fun ShapedLauncherIcon( contentAlignment = Alignment.Center ) { - badge.progress?.let { + _badge.progress?.let { val progress by animateFloatAsState(it) CircularProgressIndicator( modifier = Modifier.fillMaxSize(), @@ -143,10 +146,10 @@ fun ShapedLauncherIcon( color = MaterialTheme.colorScheme.secondaryContainer ) } - val badgeIconRes = badge.iconRes - val badgeIcon = badge.icon + val badgeIconRes = _badge.iconRes + val badgeIcon = _badge.icon - val number = badge.number + val number = _badge.number if (badgeIconRes != null) { Image( modifier = Modifier @@ -188,6 +191,13 @@ fun ShapedLauncherIcon( } } +@Composable +private fun Badge( + badge: () -> Badge? +) { + +} + @Composable private fun IconLayer( layer: LauncherIconLayer, diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt index 2550fa18..e26cc8f7 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt @@ -169,8 +169,8 @@ fun AppItem( size = 84.dp, modifier = Modifier .padding(16.dp), - badge = badge, - icon = icon, + badge = { badge }, + icon = { icon }, ) } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/customattrs/CustomizeSearchableSheet.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/customattrs/CustomizeSearchableSheet.kt index f362e6e1..a7692568 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/customattrs/CustomizeSearchableSheet.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/customattrs/CustomizeSearchableSheet.kt @@ -87,10 +87,12 @@ fun CustomizeSearchableSheet( ShapedLauncherIcon( size = iconSize, - icon = icon, - badge = Badge( - icon = badgeDrawable - ), + icon = { icon }, + badge = { + Badge( + icon = badgeDrawable + ) + }, onClick = { viewModel.openIconPicker() } @@ -239,7 +241,7 @@ fun IconPreview( ) { ShapedLauncherIcon( size = iconSize, - icon = item?.preview, + icon = { item?.preview }, onClick = onClick ) } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt index 161e9397..d02ba4d8 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt @@ -82,8 +82,8 @@ fun GridItem(modifier: Modifier = Modifier, item: Searchable, showLabels: Boolea bounds = it.boundsInWindow() }, size = LocalGridIconSize.current, - badge = badge, - icon = icon, + badge = { badge }, + icon = { icon }, onClick = { if (!launchOnPress || !viewModel.launch(context, bounds)) { showPopup = true diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt index d08331f6..a30fd98b 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt @@ -70,7 +70,7 @@ fun ContactItem( size = 48.dp, modifier = Modifier .padding(start = padding, top = padding, bottom = padding), - icon = icon, + icon = { icon }, ) Column( modifier = Modifier.padding(horizontal = 16.dp) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt index 5cf39efe..3bed2ebc 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt @@ -132,8 +132,8 @@ fun FileItem( size = 48.dp, modifier = Modifier .padding(end = padding, top = padding, bottom = padding), - icon = icon, - badge = badge + icon = { icon }, + badge = { badge } ) } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt index 8502aab0..e10c1802 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt @@ -93,8 +93,8 @@ fun AppShortcutItem( size = size, modifier = Modifier .padding(padding), - badge = badge, - icon = icon, + badge = { badge }, + icon = { icon }, ) } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/appearance/AppearanceSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/appearance/AppearanceSettingsScreen.kt index dce62a55..f1bf8217 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/appearance/AppearanceSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/appearance/AppearanceSettingsScreen.kt @@ -408,22 +408,25 @@ fun IconShapePreference( .padding(8.dp), horizontalAlignment = Alignment.CenterHorizontally ) { + val context = LocalContext.current ShapedLauncherIcon( size = 48.dp, - icon = StaticLauncherIcon( - foregroundLayer = StaticIconLayer( - icon = ContextCompat.getDrawable( - LocalContext.current, - R.mipmap.ic_launcher_foreground - )!!, - scale = 1.5f, - ), - backgroundLayer = StaticIconLayer( - icon = ColorDrawable( - LocalContext.current.getColor(R.color.ic_launcher_background) + icon = { + StaticLauncherIcon( + foregroundLayer = StaticIconLayer( + icon = ContextCompat.getDrawable( + context, + R.mipmap.ic_launcher_foreground + )!!, + scale = 1.5f, + ), + backgroundLayer = StaticIconLayer( + icon = ColorDrawable( + context.getColor(R.color.ic_launcher_background) + ) ) ) - ), + }, onClick = { onValueChanged(it) showDialog = false diff --git a/ui/src/main/java/de/mm20/launcher2/ui/settings/hiddenitems/HiddenItemsSettingsScreen.kt b/ui/src/main/java/de/mm20/launcher2/ui/settings/hiddenitems/HiddenItemsSettingsScreen.kt index 9bc1b4e7..6be6eb20 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/settings/hiddenitems/HiddenItemsSettingsScreen.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/settings/hiddenitems/HiddenItemsSettingsScreen.kt @@ -186,7 +186,7 @@ fun HiddenItem( ) { ShapedLauncherIcon( size = 32.dp, - icon = icon, + icon = { icon }, modifier = Modifier.padding(end = 16.dp) ) Text(