diff --git a/app/src/main/java/hu/bme/kszk/szobatarsch/composable/Matches.kt b/app/src/main/java/hu/bme/kszk/szobatarsch/composable/Matches.kt index cc304f6c8a9f1978d2d65bb789144bb778f7929c..ffdbf7f90acc689169e522baa023f40812e1fe51 100644 --- a/app/src/main/java/hu/bme/kszk/szobatarsch/composable/Matches.kt +++ b/app/src/main/java/hu/bme/kszk/szobatarsch/composable/Matches.kt @@ -1,18 +1,18 @@ package hu.bme.kszk.szobatarsch.composable -import androidx.compose.animation.Crossfade -import androidx.compose.animation.animateContentSize +import androidx.compose.animation.* import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Person +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp +import hu.bme.kszk.szobatarsch.data.* import hu.bme.kszk.szobatarsch.firebase.User import hu.bme.kszk.szobatarsch.firebase.matchedUsersData import kotlinx.coroutines.Dispatchers @@ -75,7 +75,9 @@ fun Matches() { } } else { Column( - modifier = Modifier.fillMaxSize(), + modifier = Modifier + .fillMaxSize() + .verticalScroll(rememberScrollState()), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ) { @@ -86,34 +88,136 @@ fun Matches() { } } +@OptIn(ExperimentalMaterial3Api::class) @Composable fun UserCard(user: User) { - Row(modifier = Modifier.padding(all = 8.dp)) { - Icon(Icons.Default.Person, contentDescription = null) - Spacer(modifier = Modifier.width(8.dp)) + var isExpanded by remember { mutableStateOf(false) } + + Card(modifier = Modifier + .padding(all = 4.dp) + .fillMaxWidth() + .clickable { isExpanded = !isExpanded }) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(8.dp) + ) { + UserDataCard(user, isExpanded) + } + } +} + +@Composable +fun UserDataCard(user: User, isExpanded: Boolean) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = user.name, + style = MaterialTheme.typography.headlineSmall + ) + + Column { + Text( + text = MajorDropDownItems.DropDownItems[user.preferences.major].title, + style = MaterialTheme.typography.bodyMedium + ) + Text( + text = "Félév: " + user.preferences.semester.toString(), + style = MaterialTheme.typography.bodyMedium + ) + Text( + text = "Életkor: " + user.preferences.age.toString(), + style = MaterialTheme.typography.bodyMedium + ) + } + } - var isExpanded by remember { mutableStateOf(false) } + Spacer(modifier = Modifier.height(18.dp)) - Column(modifier = Modifier.clickable { isExpanded = !isExpanded }) { + Text( + modifier = Modifier.fillMaxWidth(), + text = user.description, + maxLines = if (isExpanded) Int.MAX_VALUE else 1, + style = MaterialTheme.typography.bodyLarge + ) + + Spacer(modifier = Modifier.height(18.dp)) + + AnimatedVisibility( + visible = isExpanded, + enter = expandVertically(expandFrom = Alignment.Top), + exit = shrinkVertically(shrinkTowards = Alignment.Top) + ) { + Column() { + Text(text = "Egyebek:") Text( - text = user.name, + text = "Lefekszem kb: " + bedTimeList[user.preferences.bedTime], + style = MaterialTheme.typography.bodyMedium ) Spacer(modifier = Modifier.height(4.dp)) - Surface( - shape = MaterialTheme.shapes.medium, - tonalElevation = 1.dp, - modifier = Modifier - .animateContentSize() - .padding(1.dp) - ) { + + Text( + text = "Felkelek kb: " + wakeUpList[user.preferences.wakeUpTime], + style = MaterialTheme.typography.bodyMedium + ) + + + Spacer(modifier = Modifier.height(4.dp)) + + Text( + text = "Átlagos hangerő: " + loudnessList[user.preferences.loudness], + style = MaterialTheme.typography.bodyMedium + ) + + Spacer(modifier = Modifier.height(4.dp)) + + Text( + text = "Ennyi cuccom van: " + storageSpaceList[user.preferences.storageSpace], + style = MaterialTheme.typography.bodyMedium + ) + + Spacer(modifier = Modifier.height(4.dp)) + + + Text( + text = "Takarítás gyakorisága: " + cleaningList[user.preferences.frequencyOfCleaning], + style = MaterialTheme.typography.bodyMedium + ) + + Spacer(modifier = Modifier.height(4.dp)) + + if (user.preferences.morningShower) Text( - text = user.description, - modifier = Modifier.padding(all = 4.dp), - maxLines = if (isExpanded) Int.MAX_VALUE else 1, + text = "Reggel zuhanyzom", + style = MaterialTheme.typography.bodyMedium ) - } + if (user.preferences.eveningShower) + Text( + text = "Este zuhanyzom", + style = MaterialTheme.typography.bodyMedium + ) + if (user.preferences.frequentNightTimeGuest) + Text( + text = "Gyakran fogadok éjszakai vendéget", + style = MaterialTheme.typography.bodyMedium + ) + if (user.preferences.ghost) + Text( + text = "Szellem akarok lenni", + style = MaterialTheme.typography.bodyMedium + ) + + Spacer(modifier = Modifier.height(4.dp)) + + Text( + text = "Elérhetőségek: ", + ) + Text(text = user.contacts.ifEmpty { "???" }) } + } } \ No newline at end of file