From 28c28dc4bec81111b3ffd9139933cd276dc98031 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 25 Jun 2024 20:30:12 +0930 Subject: [PATCH] Fix start conversation button padding --- .../start/home/StartConversation.kt | 83 ++++++++++--------- .../thoughtcrime/securesms/ui/Components.kt | 11 ++- 2 files changed, 53 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/home/StartConversation.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/home/StartConversation.kt index cac26163f2..91847d0f88 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/home/StartConversation.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/home/StartConversation.kt @@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.conversation.start.home import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -11,18 +10,21 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.rememberNestedScrollInteropConnection import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.unit.dp import network.loki.messenger.R import org.thoughtcrime.securesms.conversation.start.NullStartConversationDelegate import org.thoughtcrime.securesms.conversation.start.StartConversationDelegate import org.thoughtcrime.securesms.ui.Divider -import org.thoughtcrime.securesms.ui.SmallItemButton +import org.thoughtcrime.securesms.ui.ItemButton import org.thoughtcrime.securesms.ui.LocalDimensions +import org.thoughtcrime.securesms.ui.LocalItemButtonMinHeight import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider import org.thoughtcrime.securesms.ui.color.Colors @@ -47,47 +49,52 @@ internal fun StartConversationScreen( Column( modifier = Modifier.verticalScroll(rememberScrollState()) ) { - Items(accountId, delegate) + CompositionLocalProvider(LocalItemButtonMinHeight provides 40.dp) { + ItemButton( + textId = R.string.messageNew, + icon = R.drawable.ic_message, + onClick = delegate::onNewMessageSelected) + Divider(startIndent = LocalDimensions.current.dividerIndent) + ItemButton( + textId = R.string.activity_create_group_title, + icon = R.drawable.ic_group, + onClick = delegate::onCreateGroupSelected + ) + Divider(startIndent = LocalDimensions.current.dividerIndent) + ItemButton( + textId = R.string.dialog_join_community_title, + icon = R.drawable.ic_globe, + onClick = delegate::onJoinCommunitySelected + ) + Divider(startIndent = LocalDimensions.current.dividerIndent) + ItemButton( + textId = R.string.activity_settings_invite_button_title, + icon = R.drawable.ic_invite_friend, + Modifier.contentDescription(R.string.AccessibilityId_invite_friend_button), + onClick = delegate::onInviteFriend + ) + } + Column( + modifier = Modifier + .padding(horizontal = LocalDimensions.current.margin) + .padding(top = LocalDimensions.current.itemSpacing) + .padding(bottom = LocalDimensions.current.margin) + ) { + Text(stringResource(R.string.accountIdYours), style = xl) + Spacer(modifier = Modifier.height(LocalDimensions.current.xxxsItemSpacing)) + Text( + text = stringResource(R.string.qrYoursDescription), + color = LocalColors.current.textSecondary, + style = small + ) + Spacer(modifier = Modifier.height(LocalDimensions.current.smallItemSpacing)) + QrImage(string = accountId, Modifier.contentDescription(R.string.AccessibilityId_qr_code)) + } } } } } -/** - * Items of the StartConversationHome screen. Use in a [Column] - */ -@Suppress("UnusedReceiverParameter") -@Composable -private fun ColumnScope.Items( - accountId: String, - delegate: StartConversationDelegate -) { - SmallItemButton(textId = R.string.messageNew, icon = R.drawable.ic_message, onClick = delegate::onNewMessageSelected) - Divider(startIndent = LocalDimensions.current.dividerIndent) - SmallItemButton(textId = R.string.activity_create_group_title, icon = R.drawable.ic_group, onClick = delegate::onCreateGroupSelected) - Divider(startIndent = LocalDimensions.current.dividerIndent) - SmallItemButton(textId = R.string.dialog_join_community_title, icon = R.drawable.ic_globe, onClick = delegate::onJoinCommunitySelected) - Divider(startIndent = LocalDimensions.current.dividerIndent) - SmallItemButton(textId = R.string.activity_settings_invite_button_title, icon = R.drawable.ic_invite_friend, Modifier.contentDescription( - R.string.AccessibilityId_invite_friend_button), onClick = delegate::onInviteFriend) - Column( - modifier = Modifier - .padding(horizontal = LocalDimensions.current.margin) - .padding(top = LocalDimensions.current.itemSpacing) - .padding(bottom = LocalDimensions.current.margin) - ) { - Text(stringResource(R.string.accountIdYours), style = xl) - Spacer(modifier = Modifier.height(LocalDimensions.current.xxxsItemSpacing)) - Text( - text = stringResource(R.string.qrYoursDescription), - color = LocalColors.current.textSecondary, - style = small - ) - Spacer(modifier = Modifier.height(LocalDimensions.current.smallItemSpacing)) - QrImage(string = accountId, Modifier.contentDescription(R.string.AccessibilityId_qr_code)) - } -} - @Preview @Composable private fun PreviewStartConversationScreen( diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt index de66f0b3a7..c3970314a0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt @@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.fillMaxWidth @@ -36,6 +37,7 @@ import androidx.compose.material.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawWithContent @@ -108,6 +110,8 @@ fun OptionsCard(card: OptionsCard, callbacks: Callbacks) { } } +val LocalItemButtonMinHeight = staticCompositionLocalOf { 60.dp } + @Composable fun ItemButtonWithDrawable( @StringRes textId: Int, @@ -167,7 +171,7 @@ fun ItemButton( @Composable fun ItemButton( text: String, - icon: @Composable (BoxScope.() -> Unit), + icon: @Composable BoxScope.() -> Unit, modifier: Modifier = Modifier, colors: ButtonColors = transparentButtonColors(), onClick: () -> Unit @@ -175,7 +179,7 @@ fun ItemButton( TextButton( modifier = modifier .fillMaxWidth() - .heightIn(min = 60.dp), + .heightIn(min = LocalItemButtonMinHeight.current), colors = colors, onClick = onClick, shape = RectangleShape, @@ -183,7 +187,7 @@ fun ItemButton( Box( modifier = Modifier .width(80.dp) - .height(60.dp) + .height(LocalItemButtonMinHeight.current) .align(Alignment.CenterVertically) ) { icon() @@ -191,6 +195,7 @@ fun ItemButton( Text( text, Modifier.fillMaxWidth() + .padding(vertical = LocalDimensions.current.xsItemSpacing) .align(Alignment.CenterVertically), style = xl )