Quiztable/src/main/kotlin/components/TopicRow.kt

63 lines
1.8 KiB
Kotlin

package components
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.em
import data.Player
import data.Topic
import data.toColor
@Composable
@Suppress("FunctionName")
fun TopicRow(
topic: Topic,
doublePoints: Boolean,
users: List<Player>,
columnFraction: Float,
onPointsChange: (Player, Long) -> Unit,
onResolveQuestion: () -> Unit
) {
val topicColor = topic.color.toColor()
Column(
modifier = Modifier.fillMaxHeight()
.fillMaxWidth(columnFraction)
) {
val numberOfButtons = topic.questions.size
Box(
modifier = Modifier.fillMaxWidth()
.fillMaxHeight(0.1f),
contentAlignment = Alignment.Center
) {
Text(
text = topic.topic,
fontSize = (2.5).em
)
}
Column(
modifier = Modifier.fillMaxWidth()
.fillMaxHeight(1f)
) {
for ((index, question) in topic.questions.withIndex()) {
val buttonHeightFraction = 1f / (numberOfButtons - index)
Question(
questionData = question,
topic = topic,
doublePoints = doublePoints,
players = users,
heightFraction = buttonHeightFraction,
color = topicColor,
onPointsChange = onPointsChange,
onResolve = onResolveQuestion
)
}
}
}
}