Add highlight to single result

This commit is contained in:
MM20 2023-02-20 14:39:12 +01:00
parent 238a01c15e
commit df49cff350
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
3 changed files with 28 additions and 13 deletions

View File

@ -63,10 +63,14 @@ fun InnerCard(
val bgColor by transition.animateColor(label = "bgColor", transitionSpec = { val bgColor by transition.animateColor(label = "bgColor", transitionSpec = {
tween(250, if (targetState == InnerCardStyle.Raised) 0 else 250) tween(250, if (targetState == InnerCardStyle.Raised) 0 else 250)
}) { }) {
if (it == InnerCardStyle.Highlighted) { when (it) {
MaterialTheme.colorScheme.secondaryContainer InnerCardStyle.Highlighted -> {
} else { MaterialTheme.colorScheme.secondaryContainer
MaterialTheme.colorScheme.surfaceColorAtElevation(absoluteTonalElevation + elevation) }
InnerCardStyle.Default -> Color.Transparent
else -> {
MaterialTheme.colorScheme.surfaceColorAtElevation(absoluteTonalElevation + elevation)
}
} }
} }

View File

@ -15,6 +15,7 @@ import androidx.compose.ui.draw.drawBehind
import androidx.compose.ui.draw.drawWithCache import androidx.compose.ui.draw.drawWithCache
import androidx.compose.ui.draw.shadow import androidx.compose.ui.draw.shadow
import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.graphics.drawOutline import androidx.compose.ui.graphics.drawOutline
@ -31,16 +32,18 @@ fun LauncherCard(
elevation: Dp = 2.dp, elevation: Dp = 2.dp,
backgroundOpacity: Float = LocalCardStyle.current.opacity, backgroundOpacity: Float = LocalCardStyle.current.opacity,
shape: Shape = MaterialTheme.shapes.medium, shape: Shape = MaterialTheme.shapes.medium,
color: Color = MaterialTheme.colorScheme.surface.copy(alpha = backgroundOpacity.coerceIn(0f, 1f)),
border: BorderStroke? = LocalCardStyle.current.borderWidth.takeIf { it > 0 }
?.let { BorderStroke(it.dp, MaterialTheme.colorScheme.surface) },
content: @Composable () -> Unit = {} content: @Composable () -> Unit = {}
) { ) {
Surface( Surface(
modifier = modifier, modifier = modifier,
shape = shape, shape = shape,
border = LocalCardStyle.current.borderWidth.takeIf { it > 0 } border = border,
?.let { BorderStroke(it.dp, MaterialTheme.colorScheme.surface) },
content = content, content = content,
contentColor = MaterialTheme.colorScheme.onSurface, contentColor = MaterialTheme.colorScheme.onSurface,
color = MaterialTheme.colorScheme.surface.copy(alpha = backgroundOpacity.coerceIn(0f, 1f)), color = color,
shadowElevation = if (backgroundOpacity == 1f) elevation else 0.dp, shadowElevation = if (backgroundOpacity == 1f) elevation else 0.dp,
tonalElevation = elevation, tonalElevation = elevation,
) )

View File

@ -24,13 +24,13 @@ import androidx.compose.material.icons.rounded.Work
import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChip
import androidx.compose.material3.FloatingActionButtonDefaults import androidx.compose.material3.FloatingActionButtonDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.SmallFloatingActionButton import androidx.compose.material3.SmallFloatingActionButton
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
@ -57,6 +57,7 @@ import de.mm20.launcher2.ui.launcher.search.website.WebsiteItem
import de.mm20.launcher2.ui.launcher.search.wikipedia.WikipediaItem import de.mm20.launcher2.ui.launcher.search.wikipedia.WikipediaItem
import de.mm20.launcher2.ui.launcher.sheets.HiddenItemsSheet import de.mm20.launcher2.ui.launcher.sheets.HiddenItemsSheet
import de.mm20.launcher2.ui.launcher.sheets.LocalBottomSheetManager import de.mm20.launcher2.ui.launcher.sheets.LocalBottomSheetManager
import de.mm20.launcher2.ui.locals.LocalCardStyle
import de.mm20.launcher2.ui.locals.LocalGridSettings import de.mm20.launcher2.ui.locals.LocalGridSettings
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableList
@ -333,12 +334,12 @@ fun SearchColumn(
highlightedItem = bestMatch as? SavableSearchable highlightedItem = bestMatch as? SavableSearchable
) )
for (wiki in wikipedia) { for (wiki in wikipedia) {
SingleResult { SingleResult(highlight = bestMatch == wiki) {
WikipediaItem(wikipedia = wiki) WikipediaItem(wikipedia = wiki)
} }
} }
for (ws in website) { for (ws in website) {
SingleResult { SingleResult(highlight = bestMatch == ws) {
WebsiteItem(website = ws) WebsiteItem(website = ws)
} }
} }
@ -370,7 +371,9 @@ fun SearchColumn(
val sheetManager = LocalBottomSheetManager.current val sheetManager = LocalBottomSheetManager.current
if (sheetManager.hiddenItemsSheetShown.value) { if (sheetManager.hiddenItemsSheetShown.value) {
HiddenItemsSheet(items = hiddenResults, onDismiss = { sheetManager.dismissHiddenItemsSheet() }) HiddenItemsSheet(
items = hiddenResults,
onDismiss = { sheetManager.dismissHiddenItemsSheet() })
} }
} }
@ -539,7 +542,10 @@ fun ListRow(
} }
} }
fun LazyListScope.SingleResult(content: @Composable (() -> Unit)?) { fun LazyListScope.SingleResult(
highlight: Boolean = false,
content: @Composable (() -> Unit)?
) {
if (content == null) return if (content == null) return
item { item {
LauncherCard( LauncherCard(
@ -548,7 +554,9 @@ fun LazyListScope.SingleResult(content: @Composable (() -> Unit)?) {
horizontal = 8.dp, horizontal = 8.dp,
vertical = 4.dp, vertical = 4.dp,
) )
.animateItemPlacement() .animateItemPlacement(),
color = if (highlight) MaterialTheme.colorScheme.secondaryContainer
else MaterialTheme.colorScheme.surface.copy(LocalCardStyle.current.opacity)
) { ) {
content() content()
} }