session-android/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt

97 lines
3.1 KiB
Kotlin
Raw Normal View History

2023-06-29 09:41:11 +02:00
package org.thoughtcrime.securesms.ui
import androidx.annotation.DrawableRes
2023-07-03 05:30:11 +02:00
import androidx.compose.foundation.ExperimentalFoundationApi
2023-06-29 09:41:11 +02:00
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
2023-07-03 05:30:11 +02:00
import androidx.compose.foundation.pager.PagerState
2023-06-29 09:41:11 +02:00
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.ButtonColors
2023-06-29 11:44:47 +02:00
import androidx.compose.material.Card
2023-06-29 09:41:11 +02:00
import androidx.compose.material.Icon
2023-06-29 11:44:47 +02:00
import androidx.compose.material.MaterialTheme
2023-06-29 09:41:11 +02:00
import androidx.compose.material.Text
import androidx.compose.material.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
2023-07-03 05:30:11 +02:00
import androidx.compose.ui.graphics.Color
2023-06-29 09:41:11 +02:00
import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
2023-07-03 05:30:11 +02:00
import com.google.accompanist.pager.HorizontalPagerIndicator
2023-06-29 09:41:11 +02:00
@Composable
fun ItemButton(
text: String,
@DrawableRes icon: Int,
colors: ButtonColors = transparentButtonColors(),
2023-06-30 02:18:48 +02:00
onClick: () -> Unit
2023-06-29 09:41:11 +02:00
) {
TextButton(
modifier = Modifier
.fillMaxWidth()
.height(60.dp),
colors = colors,
2023-06-30 02:18:48 +02:00
onClick = onClick,
2023-06-29 09:41:11 +02:00
shape = RectangleShape,
) {
Box(modifier = Modifier
.width(80.dp)
.fillMaxHeight()) {
Icon(
painter = painterResource(id = icon),
contentDescription = "",
modifier = Modifier.align(Alignment.Center)
)
}
Text(text, modifier = Modifier.fillMaxWidth())
}
}
@Composable
fun Cell(content: @Composable () -> Unit) {
2023-07-03 05:30:11 +02:00
CellWithPaddingAndMargin(0.dp) { content() }
}
@Composable
fun CellNoMargin(content: @Composable () -> Unit) {
CellWithPaddingAndMargin(0.dp, 0.dp) { content() }
2023-06-29 09:41:11 +02:00
}
@Composable
2023-07-03 05:30:11 +02:00
fun CellWithPaddingAndMargin(
padding: Dp = 24.dp,
margin: Dp = 32.dp,
content: @Composable () -> Unit
) {
2023-06-29 11:44:47 +02:00
Card(
2023-06-29 09:41:11 +02:00
shape = RoundedCornerShape(16.dp),
elevation = 0.dp,
modifier = Modifier
.wrapContentHeight()
.fillMaxWidth()
2023-07-03 05:30:11 +02:00
.padding(horizontal = margin),
2023-06-29 11:44:47 +02:00
backgroundColor = LocalExtraColors.current.settingsBackground,
// probably wrong
contentColor = MaterialTheme.colors.onSurface
2023-06-29 09:41:11 +02:00
) { Box(Modifier.padding(padding)) { content() } }
2023-06-29 11:44:47 +02:00
}
2023-07-03 05:30:11 +02:00
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun SessionHorizontalPagerIndicator(modifier: Modifier, pagerState: PagerState, pageCount: Int) {
Card(shape = RoundedCornerShape(50.dp),
backgroundColor = Color.Black.copy(alpha = 0.4f),
modifier = Modifier.padding(8.dp).then(modifier)) {
Box(modifier = Modifier.padding(8.dp)) {
HorizontalPagerIndicator(pagerState = pagerState, pageCount = pageCount)
}
}
}