From 508d265b9dc2615c650677257cdb0317e6452496 Mon Sep 17 00:00:00 2001 From: "dima.avdeev" <99798741+dima-avdeev-jb@users.noreply.github.com> Date: Fri, 7 Apr 2023 18:07:07 +0300 Subject: [PATCH] ImageViewer edit description onLongClick (#3009) --- .../example/imageviewer/view/MemoryScreen.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/examples/imageviewer/shared/src/commonMain/kotlin/example/imageviewer/view/MemoryScreen.kt b/examples/imageviewer/shared/src/commonMain/kotlin/example/imageviewer/view/MemoryScreen.kt index 4c52590935..7623a60f60 100644 --- a/examples/imageviewer/shared/src/commonMain/kotlin/example/imageviewer/view/MemoryScreen.kt +++ b/examples/imageviewer/shared/src/commonMain/kotlin/example/imageviewer/view/MemoryScreen.kt @@ -84,7 +84,7 @@ fun MemoryScreen( Box(modifier = Modifier.background(MaterialTheme.colors.background)) { Column(horizontalAlignment = Alignment.CenterHorizontally) { Headliner("Note") - Collapsible(picture.description) + Collapsible(picture.description, onEdit = { edit = true }) Headliner("Related memories") RelatedMemoriesVisualizer( pictures = remember { (pictures - picture).shuffled().take(8) }, @@ -227,8 +227,9 @@ fun BoxScope.MemoryTextOverlay(picture: PictureData) { } } +@OptIn(ExperimentalFoundationApi::class) @Composable -fun Collapsible(s: String) { +fun Collapsible(s: String, onEdit: () -> Unit) { val interctionSource = remember { MutableInteractionSource() } var isCollapsed by remember { mutableStateOf(true) } val text = if (isCollapsed) s.lines().first() + "... (see more)" else s @@ -245,10 +246,15 @@ fun Collapsible(s: String) { dampingRatio = Spring.DampingRatioLowBouncy, stiffness = Spring.StiffnessLow ) + ).combinedClickable( + interactionSource = interctionSource, indication = null, + onClick = { + isCollapsed = !isCollapsed + }, + onLongClick = { + onEdit() + } ) - .clickable(interactionSource = interctionSource, indication = null) { - isCollapsed = !isCollapsed - } .fillMaxWidth(), ) }