diff --git a/app/src/main/java/be/ugent/sel/studeez/common/composable/TextComposable.kt b/app/src/main/java/be/ugent/sel/studeez/common/composable/TextComposable.kt index 1b921a9..25fa3c4 100644 --- a/app/src/main/java/be/ugent/sel/studeez/common/composable/TextComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/common/composable/TextComposable.kt @@ -3,10 +3,13 @@ package be.ugent.sel.studeez.common.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable @@ -23,4 +26,14 @@ fun Headline( fontSize = 34.sp ) } +} + +@Composable +fun DateText(date: String) { + Text( + text = date, + fontWeight = FontWeight.Bold, + fontSize = 20.sp, + modifier = Modifier.padding(horizontal = 10.dp) + ) } \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/home/Feed.kt b/app/src/main/java/be/ugent/sel/studeez/screens/home/Feed.kt index 7847ceb..af42203 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/home/Feed.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/home/Feed.kt @@ -1,26 +1,19 @@ package be.ugent.sel.studeez.screens.home -import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.Card import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel -import be.ugent.sel.studeez.R -import be.ugent.sel.studeez.common.composable.StealthButton -import be.ugent.sel.studeez.data.local.models.FeedEntry +import be.ugent.sel.studeez.common.composable.DateText import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds @Composable @@ -29,10 +22,10 @@ fun Feed( viewModel: FeedViewModel = hiltViewModel() ) { val feedEntries = viewModel.getFeedEntries().collectAsState(initial = emptyMap()) - + LazyColumn { - items(feedEntries.value.toList()) {(date, feedEntries) -> + items(feedEntries.value.toList()) { (date, feedEntries) -> Row( horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier @@ -49,7 +42,7 @@ fun Feed( ) } feedEntries.forEach { feedEntry -> - FeedEntryCard(feedEntry = feedEntry) { + FeedEntry(feedEntry = feedEntry) { viewModel.continueWithTask(open, feedEntry.subjectId, feedEntry.taskId) } } @@ -58,70 +51,11 @@ fun Feed( } } +@Preview @Composable -fun DateText(date: String) { - Text( - text = date, - fontWeight = FontWeight.Bold, - fontSize = 20.sp, - modifier = Modifier.padding(horizontal = 10.dp) +fun FeedPreview() { + Feed( + open = {}, + viewModel = hiltViewModel(), ) -} - -@Composable -fun FeedEntryCard( - feedEntry: FeedEntry, - continueWithTask: () -> Unit, -) { - Card( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 10.dp, vertical = 5.dp), - ) { - Row( - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically, - ) { - Row( - horizontalArrangement = Arrangement.spacedBy(8.dp), - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .padding(start = 10.dp) - .weight(3f) - ) { - Box( - modifier = Modifier - .size(20.dp) - .clip(CircleShape) - .background(Color(feedEntry.argb_color)), - ) - Column( - verticalArrangement = Arrangement.spacedBy(0.dp) - ) { - Text( - text = feedEntry.subJectName, - fontWeight = FontWeight.Bold, - overflow = TextOverflow.Ellipsis, - maxLines = 1, - ) - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically, - ) { - Text(text = feedEntry.taskName) - Text(text = HoursMinutesSeconds(feedEntry.totalStudyTime).toString()) - } - } - } - StealthButton( - text = R.string.start, - modifier = Modifier - .padding(start = 10.dp, end = 5.dp) - .weight(1f) - ) { - continueWithTask() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/home/FeedEntry.kt b/app/src/main/java/be/ugent/sel/studeez/screens/home/FeedEntry.kt new file mode 100644 index 0000000..a7d1fc1 --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/screens/home/FeedEntry.kt @@ -0,0 +1,96 @@ +package be.ugent.sel.studeez.screens.home + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.Card +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import be.ugent.sel.studeez.R +import be.ugent.sel.studeez.common.composable.StealthButton +import be.ugent.sel.studeez.data.local.models.FeedEntry +import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds + +@Composable +fun FeedEntry( + feedEntry: FeedEntry, + continueWithTask: () -> Unit, +) { + Card( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 10.dp, vertical = 5.dp), + ) { + Row( + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Row( + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .padding(start = 10.dp) + .weight(11f) + ) { + Box( + modifier = Modifier + .size(20.dp) + .clip(CircleShape) + .background(Color(feedEntry.argb_color)), + ) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + verticalArrangement = Arrangement.spacedBy(0.dp) + ) { + Text( + text = feedEntry.subJectName, + fontWeight = FontWeight.Bold, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + Text( + text = feedEntry.taskName, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + ) + } + Text(text = HoursMinutesSeconds(feedEntry.totalStudyTime).toString()) + } + } + StealthButton( + text = R.string.continue_task, + modifier = Modifier + .padding(start = 10.dp, end = 5.dp) + .weight(6f) + ) { + continueWithTask() + } + } + } +} + +@Preview +@Composable +fun FeedEntryPreview() { + FeedEntry( + continueWithTask = {}, + feedEntry = FeedEntry( + argb_color = 0xFFFFD200, + subJectName = "Test Subject", + taskName = "Test Taskkkkkkkkkkkkkkkkkkkkkkkkk", + totalStudyTime = 20, + ) + ) +} \ No newline at end of file