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.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(

View File

@ -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 <T> OptionsCard(card: OptionsCard<T>, callbacks: Callbacks<T>) {
}
}
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
)