Skip to content
Snippets Groups Projects
Commit a7479c22 authored by Fodor Patrik's avatar Fodor Patrik :ghost:
Browse files

Add new texts to UserCard and new animation

parent 08bd1cac
No related branches found
No related tags found
No related merge requests found
package hu.bme.kszk.szobatarsch.composable package hu.bme.kszk.szobatarsch.composable
import androidx.compose.animation.Crossfade import androidx.compose.animation.*
import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons import androidx.compose.foundation.rememberScrollState
import androidx.compose.material.icons.filled.Person import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp 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.User
import hu.bme.kszk.szobatarsch.firebase.matchedUsersData import hu.bme.kszk.szobatarsch.firebase.matchedUsersData
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
...@@ -75,7 +75,9 @@ fun Matches() { ...@@ -75,7 +75,9 @@ fun Matches() {
} }
} else { } else {
Column( Column(
modifier = Modifier.fillMaxSize(), modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState()),
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
) { ) {
...@@ -86,34 +88,136 @@ fun Matches() { ...@@ -86,34 +88,136 @@ fun Matches() {
} }
} }
@OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun UserCard(user: User) { 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) } var isExpanded by remember { mutableStateOf(false) }
Column(modifier = Modifier.clickable { isExpanded = !isExpanded }) { 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(
text = user.name, text = user.name,
style = MaterialTheme.typography.headlineSmall
) )
Spacer(modifier = Modifier.height(4.dp)) 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
)
}
}
Spacer(modifier = Modifier.height(18.dp))
Surface(
shape = MaterialTheme.shapes.medium,
tonalElevation = 1.dp,
modifier = Modifier
.animateContentSize()
.padding(1.dp)
) {
Text( Text(
modifier = Modifier.fillMaxWidth(),
text = user.description, text = user.description,
modifier = Modifier.padding(all = 4.dp),
maxLines = if (isExpanded) Int.MAX_VALUE else 1, 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 = "Lefekszem kb: " + bedTimeList[user.preferences.bedTime],
style = MaterialTheme.typography.bodyMedium
)
Spacer(modifier = Modifier.height(4.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 = "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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment