#40 basic timer overview screen (to be extended)
This commit is contained in:
		
							parent
							
								
									79dcede47b
								
							
						
					
					
						commit
						049138bbc5
					
				
					 1 changed files with 100 additions and 0 deletions
				
			
		|  | @ -1,2 +1,102 @@ | |||
| package be.ugent.sel.studeez.screens.timer_overview | ||||
| 
 | ||||
| import androidx.compose.foundation.layout.Arrangement | ||||
| import androidx.compose.foundation.layout.Column | ||||
| import androidx.compose.foundation.layout.Row | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.lazy.LazyColumn | ||||
| import androidx.compose.foundation.lazy.items | ||||
| 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.text.font.FontWeight | ||||
| 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.BasicButton | ||||
| import be.ugent.sel.studeez.common.composable.PrimaryScreenTemplate | ||||
| import be.ugent.sel.studeez.common.ext.basicButton | ||||
| import be.ugent.sel.studeez.common.ext.card | ||||
| import be.ugent.sel.studeez.data.local.models.timer_info.CustomTimerInfo | ||||
| import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo | ||||
| import be.ugent.sel.studeez.resources | ||||
| 
 | ||||
| @Composable | ||||
| fun TimerOverviewScreen( | ||||
|     openAndPopUp: (String, String) -> Unit, | ||||
|     viewModel: TimerOverviewViewModel = hiltViewModel() | ||||
| ) { | ||||
| 
 | ||||
|     val timers = viewModel.getUserTimers().collectAsState(initial = emptyList()) | ||||
| 
 | ||||
|     PrimaryScreenTemplate( | ||||
|         title = resources().getString(R.string.timers), | ||||
|         openAndPopUp = openAndPopUp | ||||
|     ) { | ||||
| 
 | ||||
|         Column { | ||||
|             LazyColumn( | ||||
|                 verticalArrangement = Arrangement.spacedBy(7.dp) | ||||
|             ) { | ||||
|                 // Default Timers, cannot be edited | ||||
|                 items(viewModel.getDefaultTimers()) { | ||||
|                     TimerEntry(timerInfo = it, canEdit = false) | ||||
|                 } | ||||
| 
 | ||||
|                 // User timers, can be edited | ||||
|                 items(timers.value) { | ||||
|                     TimerEntry(timerInfo = it, true) { timerInfo -> | ||||
|                         viewModel.update(timerInfo) | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             BasicButton(R.string.add_timer, Modifier.basicButton()) { | ||||
|                 // TODO | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @Composable | ||||
| fun TimerEntry(timerInfo: TimerInfo, canEdit: Boolean, update: (TimerInfo) -> Unit = {}) { | ||||
|     Row( | ||||
|         verticalAlignment = Alignment.CenterVertically, | ||||
|         modifier = Modifier.fillMaxWidth(), | ||||
|         horizontalArrangement = Arrangement.SpaceBetween | ||||
|     ) { | ||||
|         Column { | ||||
|             Text( | ||||
|                 text = timerInfo.name, | ||||
|                 fontWeight = FontWeight.Bold, | ||||
|                 fontSize = 20.sp | ||||
|             ) | ||||
|             Text( | ||||
|                 text = timerInfo.description, | ||||
|                 fontWeight = FontWeight.Light, | ||||
|                 fontSize = 15.sp | ||||
|             ) | ||||
|         } | ||||
|         if (canEdit) { | ||||
|             BasicButton(R.string.edit, Modifier.card()) { | ||||
|                 // TODO | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @Preview | ||||
| @Composable | ||||
| fun TimerEntryPreview() { | ||||
|     val timerInfo = CustomTimerInfo( | ||||
|         "my preview timer", | ||||
|         "This is the description of the timer", | ||||
|         60 | ||||
|     ) | ||||
|     TimerEntry(timerInfo = timerInfo, true) { } | ||||
| } | ||||
		Reference in a new issue
	
	 lbarraga
						lbarraga