Fix start conversation button padding

This commit is contained in:
Andrew 2024-06-25 20:30:12 +09:30
parent 78da9bdc67
commit 28c28dc4be
2 changed files with 53 additions and 41 deletions

View File

@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.conversation.start.home
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@ -11,18 +10,21 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Surface import androidx.compose.material.Surface
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import network.loki.messenger.R import network.loki.messenger.R
import org.thoughtcrime.securesms.conversation.start.NullStartConversationDelegate import org.thoughtcrime.securesms.conversation.start.NullStartConversationDelegate
import org.thoughtcrime.securesms.conversation.start.StartConversationDelegate import org.thoughtcrime.securesms.conversation.start.StartConversationDelegate
import org.thoughtcrime.securesms.ui.Divider 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.LocalDimensions
import org.thoughtcrime.securesms.ui.LocalItemButtonMinHeight
import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.PreviewTheme
import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider
import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.color.Colors
@ -47,47 +49,52 @@ internal fun StartConversationScreen(
Column( Column(
modifier = Modifier.verticalScroll(rememberScrollState()) 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 @Preview
@Composable @Composable
private fun PreviewStartConversationScreen( private fun PreviewStartConversationScreen(

View File

@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
@ -36,6 +37,7 @@ import androidx.compose.material.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.draw.drawWithContent
@ -108,6 +110,8 @@ fun <T> OptionsCard(card: OptionsCard<T>, callbacks: Callbacks<T>) {
} }
} }
val LocalItemButtonMinHeight = staticCompositionLocalOf { 60.dp }
@Composable @Composable
fun ItemButtonWithDrawable( fun ItemButtonWithDrawable(
@StringRes textId: Int, @StringRes textId: Int,
@ -167,7 +171,7 @@ fun ItemButton(
@Composable @Composable
fun ItemButton( fun ItemButton(
text: String, text: String,
icon: @Composable (BoxScope.() -> Unit), icon: @Composable BoxScope.() -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
colors: ButtonColors = transparentButtonColors(), colors: ButtonColors = transparentButtonColors(),
onClick: () -> Unit onClick: () -> Unit
@ -175,7 +179,7 @@ fun ItemButton(
TextButton( TextButton(
modifier = modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
.heightIn(min = 60.dp), .heightIn(min = LocalItemButtonMinHeight.current),
colors = colors, colors = colors,
onClick = onClick, onClick = onClick,
shape = RectangleShape, shape = RectangleShape,
@ -183,7 +187,7 @@ fun ItemButton(
Box( Box(
modifier = Modifier modifier = Modifier
.width(80.dp) .width(80.dp)
.height(60.dp) .height(LocalItemButtonMinHeight.current)
.align(Alignment.CenterVertically) .align(Alignment.CenterVertically)
) { ) {
icon() icon()
@ -191,6 +195,7 @@ fun ItemButton(
Text( Text(
text, text,
Modifier.fillMaxWidth() Modifier.fillMaxWidth()
.padding(vertical = LocalDimensions.current.xsItemSpacing)
.align(Alignment.CenterVertically), .align(Alignment.CenterVertically),
style = xl style = xl
) )