show studytime
This commit is contained in:
		
							parent
							
								
									ec31e116b4
								
							
						
					
					
						commit
						e9cc4f4a0c
					
				
					 3 changed files with 25 additions and 6 deletions
				
			
		|  | @ -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() } | ||||||
|  |     ) | ||||||
| } | } | ||||||
|  | @ -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 | ||||||
|     ) |     ) | ||||||
| } | } | ||||||
|  | @ -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) | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 brreynie
						brreynie