show studytime

This commit is contained in:
brreynie 2023-05-09 21:37:26 +02:00
parent ec31e116b4
commit e9cc4f4a0c
3 changed files with 25 additions and 6 deletions

View file

@ -9,6 +9,8 @@ import androidx.compose.material.Text
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.List import androidx.compose.material.icons.filled.List
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
@ -21,13 +23,17 @@ import androidx.compose.ui.unit.dp
import be.ugent.sel.studeez.common.composable.StealthButton import be.ugent.sel.studeez.common.composable.StealthButton
import be.ugent.sel.studeez.data.local.models.task.Subject import be.ugent.sel.studeez.data.local.models.task.Subject
import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf
import be.ugent.sel.studeez.R.string as AppText import be.ugent.sel.studeez.R.string as AppText
@Composable @Composable
fun SubjectEntry( fun SubjectEntry(
subject: Subject, subject: Subject,
onViewSubject: () -> Unit, onViewSubject: () -> Unit,
getStudyTime: () -> Flow<Int>,
) { ) {
val studytime by getStudyTime().collectAsState(initial = 0)
Card( Card(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
@ -64,7 +70,7 @@ fun SubjectEntry(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Text( Text(
text = HoursMinutesSeconds(subject.time).toString(), text = HoursMinutesSeconds(studytime).toString(),
) )
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
@ -74,7 +80,7 @@ fun SubjectEntry(
imageVector = Icons.Default.List, imageVector = Icons.Default.List,
contentDescription = stringResource(id = AppText.tasks) contentDescription = stringResource(id = AppText.tasks)
) )
Text(text = "${subject.taskCompletedCount}/${subject.taskCount}") // TODO Text(text = "${subject.taskCompletedCount}/${subject.taskCount}")
} }
} }
} }
@ -98,11 +104,12 @@ fun SubjectEntryPreview() {
subject = Subject( subject = Subject(
name = "Test Subject", name = "Test Subject",
argb_color = 0xFFFFD200, argb_color = 0xFFFFD200,
time = 60,
taskCount = 5, taskCount = 5,
taskCompletedCount = 2, taskCompletedCount = 2,
), ),
) {} onViewSubject = {},
getStudyTime = { flowOf() }
)
} }
@Preview @Preview
@ -112,7 +119,8 @@ fun OverflowSubjectEntryPreview() {
subject = Subject( subject = Subject(
name = "Testttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt", name = "Testttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt",
argb_color = 0xFFFFD200, argb_color = 0xFFFFD200,
time = 60,
), ),
) {} onViewSubject = {},
getStudyTime = { flowOf() }
)
} }

View file

@ -19,6 +19,8 @@ import be.ugent.sel.studeez.common.composable.drawer.DrawerActions
import be.ugent.sel.studeez.common.composable.navbar.NavigationBarActions import be.ugent.sel.studeez.common.composable.navbar.NavigationBarActions
import be.ugent.sel.studeez.common.composable.tasks.SubjectEntry import be.ugent.sel.studeez.common.composable.tasks.SubjectEntry
import be.ugent.sel.studeez.data.local.models.task.Subject import be.ugent.sel.studeez.data.local.models.task.Subject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf
import be.ugent.sel.studeez.R.string as AppText import be.ugent.sel.studeez.R.string as AppText
@Composable @Composable
@ -34,6 +36,7 @@ fun SubjectRoute(
navigationBarActions = navigationBarActions, navigationBarActions = navigationBarActions,
onAddSubject = { viewModel.onAddSubject(open) }, onAddSubject = { viewModel.onAddSubject(open) },
onViewSubject = { viewModel.onViewSubject(it, open) }, onViewSubject = { viewModel.onViewSubject(it, open) },
getStudyTime = viewModel::getStudyTime,
uiState, uiState,
) )
} }
@ -44,6 +47,7 @@ fun SubjectScreen(
navigationBarActions: NavigationBarActions, navigationBarActions: NavigationBarActions,
onAddSubject: () -> Unit, onAddSubject: () -> Unit,
onViewSubject: (Subject) -> Unit, onViewSubject: (Subject) -> Unit,
getStudyTime: (Subject) -> Flow<Int>,
uiState: SubjectUiState, uiState: SubjectUiState,
) { ) {
PrimaryScreenTemplate( PrimaryScreenTemplate(
@ -72,6 +76,7 @@ fun SubjectScreen(
SubjectEntry( SubjectEntry(
subject = it, subject = it,
onViewSubject = { onViewSubject(it) }, onViewSubject = { onViewSubject(it) },
getStudyTime = { getStudyTime(it) },
) )
} }
} }
@ -89,6 +94,7 @@ fun SubjectScreenPreview() {
navigationBarActions = NavigationBarActions({ false }, {}, {}, {}, {}, {}, {}, {}), navigationBarActions = NavigationBarActions({ false }, {}, {}, {}, {}, {}, {}, {}),
onAddSubject = {}, onAddSubject = {},
onViewSubject = {}, onViewSubject = {},
getStudyTime = { flowOf() },
uiState = SubjectUiState.Succes( uiState = SubjectUiState.Succes(
listOf( listOf(
Subject( Subject(
@ -109,6 +115,7 @@ fun SubjectScreenLoadingPreview() {
navigationBarActions = NavigationBarActions({ false }, {}, {}, {}, {}, {}, {}, {}), navigationBarActions = NavigationBarActions({ false }, {}, {}, {}, {}, {}, {}, {}),
onAddSubject = {}, onAddSubject = {},
onViewSubject = {}, onViewSubject = {},
getStudyTime = { flowOf() },
uiState = SubjectUiState.Loading uiState = SubjectUiState.Loading
) )
} }

View file

@ -30,6 +30,10 @@ class SubjectViewModel @Inject constructor(
open(StudeezDestinations.ADD_SUBJECT_FORM) open(StudeezDestinations.ADD_SUBJECT_FORM)
} }
fun getStudyTime(subject: Subject): Flow<Int> {
return subjectDAO.getStudyTime(subject)
}
fun onViewSubject(subject: Subject, open: (String) -> Unit) { fun onViewSubject(subject: Subject, open: (String) -> Unit) {
selectedSubject.set(subject) selectedSubject.set(subject)
open(StudeezDestinations.TASKS_SCREEN) open(StudeezDestinations.TASKS_SCREEN)