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 09:49:33 +02:00
|
|
|
CellWithPaddingAndMargin(padding = 0.dp) { content() }
|
2023-07-03 05:30:11 +02:00
|
|
|
}
|
|
|
|
@Composable
|
|
|
|
fun CellNoMargin(content: @Composable () -> Unit) {
|
2023-07-03 09:49:33 +02:00
|
|
|
CellWithPaddingAndMargin(padding = 0.dp, margin = 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)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|