#22 style task entry
This commit is contained in:
		
							parent
							
								
									ffb67cd1b2
								
							
						
					
					
						commit
						b7a74a13d7
					
				
					 6 changed files with 143 additions and 3 deletions
				
			
		|  | @ -1,4 +1,4 @@ | ||||||
| package be.ugent.sel.studeez.common.composable | package be.ugent.sel.studeez.common.composable.tasks | ||||||
| 
 | 
 | ||||||
| import androidx.compose.foundation.background | import androidx.compose.foundation.background | ||||||
| import androidx.compose.foundation.layout.Arrangement | import androidx.compose.foundation.layout.Arrangement | ||||||
|  | @ -24,6 +24,7 @@ import androidx.compose.ui.text.style.TextOverflow | ||||||
| import androidx.compose.ui.tooling.preview.Preview | import androidx.compose.ui.tooling.preview.Preview | ||||||
| import androidx.compose.ui.unit.dp | import androidx.compose.ui.unit.dp | ||||||
| import be.ugent.sel.studeez.R | import be.ugent.sel.studeez.R | ||||||
|  | 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 | ||||||
| 
 | 
 | ||||||
|  | @ -100,6 +101,7 @@ fun SubjectEntryPreview() { | ||||||
|     SubjectEntry( |     SubjectEntry( | ||||||
|         subject = Subject( |         subject = Subject( | ||||||
|             name = "Test Subject", |             name = "Test Subject", | ||||||
|  | //            name = "Testttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt", | ||||||
|             argb_color = 0xFFF44336, |             argb_color = 0xFFF44336, | ||||||
|             time = 60 |             time = 60 | ||||||
|         ), |         ), | ||||||
|  | @ -0,0 +1,135 @@ | ||||||
|  | package be.ugent.sel.studeez.common.composable.tasks | ||||||
|  | 
 | ||||||
|  | import androidx.compose.foundation.layout.Arrangement | ||||||
|  | import androidx.compose.foundation.layout.Box | ||||||
|  | import androidx.compose.foundation.layout.Row | ||||||
|  | import androidx.compose.foundation.layout.fillMaxWidth | ||||||
|  | import androidx.compose.foundation.layout.padding | ||||||
|  | import androidx.compose.material.Card | ||||||
|  | import androidx.compose.material.Checkbox | ||||||
|  | import androidx.compose.material.CheckboxDefaults | ||||||
|  | import androidx.compose.material.Icon | ||||||
|  | import androidx.compose.material.IconButton | ||||||
|  | import androidx.compose.material.MaterialTheme | ||||||
|  | import androidx.compose.material.Text | ||||||
|  | import androidx.compose.material.icons.Icons | ||||||
|  | import androidx.compose.material.icons.filled.Delete | ||||||
|  | import androidx.compose.runtime.Composable | ||||||
|  | import androidx.compose.ui.Alignment | ||||||
|  | import androidx.compose.ui.Modifier | ||||||
|  | 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.task.Task | ||||||
|  | import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds | ||||||
|  | import be.ugent.sel.studeez.resources | ||||||
|  | 
 | ||||||
|  | @Composable | ||||||
|  | fun TaskEntry( | ||||||
|  |     task: Task, | ||||||
|  | ) { | ||||||
|  |     Card( | ||||||
|  |         modifier = Modifier | ||||||
|  |             .fillMaxWidth() | ||||||
|  |             .padding(horizontal = 10.dp, vertical = 5.dp), | ||||||
|  |     ) { | ||||||
|  |         val color = if (task.completed) Color.Gray else Color.Black | ||||||
|  |         Row( | ||||||
|  |             horizontalArrangement = Arrangement.SpaceBetween, | ||||||
|  |             verticalAlignment = Alignment.CenterVertically, | ||||||
|  |         ) { | ||||||
|  |             Row( | ||||||
|  |                 verticalAlignment = Alignment.CenterVertically, | ||||||
|  |                 modifier = Modifier | ||||||
|  |                     .padding(start = 10.dp) | ||||||
|  |                     .weight(22f), | ||||||
|  |             ) { | ||||||
|  |                 Checkbox( | ||||||
|  |                     checked = task.completed, | ||||||
|  |                     onCheckedChange = {}, | ||||||
|  |                     colors = CheckboxDefaults.colors( | ||||||
|  |                         checkedColor = Color.Gray, | ||||||
|  |                         uncheckedColor = MaterialTheme.colors.onSurface, | ||||||
|  |                     ) | ||||||
|  |                 ) | ||||||
|  |                 Row( | ||||||
|  |                     horizontalArrangement = Arrangement.SpaceBetween, | ||||||
|  |                     verticalAlignment = Alignment.CenterVertically, | ||||||
|  |                     modifier = Modifier.fillMaxWidth() | ||||||
|  |                 ) { | ||||||
|  |                     Text( | ||||||
|  |                         text = task.name, | ||||||
|  |                         overflow = TextOverflow.Ellipsis, | ||||||
|  |                         maxLines = 1, | ||||||
|  |                         color = color, | ||||||
|  |                         modifier = Modifier.weight(13f), | ||||||
|  |                     ) | ||||||
|  |                     Text( | ||||||
|  |                         text = "${HoursMinutesSeconds(task.time)}", | ||||||
|  |                         color = color, | ||||||
|  |                         modifier = Modifier.weight(5f) | ||||||
|  |                     ) | ||||||
|  | 
 | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             Box(modifier = Modifier.weight(7f)) { | ||||||
|  |                 if (task.completed) { | ||||||
|  |                     IconButton( | ||||||
|  |                         onClick = { /*TODO*/ }, | ||||||
|  |                         modifier = Modifier | ||||||
|  |                             .padding(start = 20.dp) | ||||||
|  |                     ) { | ||||||
|  |                         Icon( | ||||||
|  |                             imageVector = Icons.Default.Delete, | ||||||
|  |                             contentDescription = resources().getString(R.string.delete_task), | ||||||
|  |                         ) | ||||||
|  |                     } | ||||||
|  |                 } else { | ||||||
|  |                     StealthButton( | ||||||
|  |                         text = R.string.start, | ||||||
|  |                         modifier = Modifier | ||||||
|  |                             .padding(end = 5.dp), | ||||||
|  |                     ) { | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @Preview | ||||||
|  | @Composable | ||||||
|  | fun TaskEntryPreview() { | ||||||
|  |     TaskEntry( | ||||||
|  |         task = Task( | ||||||
|  |             name = "Test Task", | ||||||
|  |             completed = false, | ||||||
|  |         ), | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @Preview | ||||||
|  | @Composable | ||||||
|  | fun CompletedTaskEntryPreview() { | ||||||
|  |     TaskEntry( | ||||||
|  |         task = Task( | ||||||
|  |             name = "Test Task", | ||||||
|  |             completed = true, | ||||||
|  |         ) | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @Preview | ||||||
|  | @Composable | ||||||
|  | fun OverflowTaskEntryPreview() { | ||||||
|  |     TaskEntry( | ||||||
|  |         task = Task( | ||||||
|  |             name = "Test Taskkkkkkkkkkkkkkkkkkkkkkkkkkk", | ||||||
|  |             completed = false, | ||||||
|  |         ), | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  | @ -6,4 +6,5 @@ data class Task( | ||||||
|     @DocumentId val id: String = "", |     @DocumentId val id: String = "", | ||||||
|     val name: String = "", |     val name: String = "", | ||||||
|     val completed: Boolean = false, |     val completed: Boolean = false, | ||||||
|  |     val time: Int = 0, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | @ -19,6 +19,7 @@ import androidx.compose.ui.tooling.preview.Preview | ||||||
| import androidx.compose.ui.unit.dp | import androidx.compose.ui.unit.dp | ||||||
| import androidx.compose.ui.unit.sp | import androidx.compose.ui.unit.sp | ||||||
| import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer | import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer | ||||||
|  | import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds | ||||||
| import be.ugent.sel.studeez.navigation.StudeezDestinations | import be.ugent.sel.studeez.navigation.StudeezDestinations | ||||||
| import be.ugent.sel.studeez.screens.session.SessionActions | import be.ugent.sel.studeez.screens.session.SessionActions | ||||||
| import kotlinx.coroutines.delay | import kotlinx.coroutines.delay | ||||||
|  | @ -93,7 +94,7 @@ abstract class AbstractSessionScreen { | ||||||
|         val hms = sessionActions.getTimer().getHoursMinutesSeconds() |         val hms = sessionActions.getTimer().getHoursMinutesSeconds() | ||||||
|         Column { |         Column { | ||||||
|             Text( |             Text( | ||||||
|                 text = "${hms.hours} : ${hms.minutes} : ${hms.seconds}", |                 text = hms.toString(), | ||||||
|                 modifier = Modifier |                 modifier = Modifier | ||||||
|                     .fillMaxWidth() |                     .fillMaxWidth() | ||||||
|                     .padding(50.dp), |                     .padding(50.dp), | ||||||
|  |  | ||||||
|  | @ -12,9 +12,9 @@ import androidx.compose.ui.unit.dp | ||||||
| import be.ugent.sel.studeez.R | import be.ugent.sel.studeez.R | ||||||
| import be.ugent.sel.studeez.common.composable.NewTaskSubjectButton | import be.ugent.sel.studeez.common.composable.NewTaskSubjectButton | ||||||
| import be.ugent.sel.studeez.common.composable.PrimaryScreenTemplate | import be.ugent.sel.studeez.common.composable.PrimaryScreenTemplate | ||||||
| import be.ugent.sel.studeez.common.composable.SubjectEntry |  | ||||||
| import be.ugent.sel.studeez.common.composable.drawer.DrawerActions | 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.data.local.models.task.Subject | import be.ugent.sel.studeez.data.local.models.task.Subject | ||||||
| import be.ugent.sel.studeez.resources | import be.ugent.sel.studeez.resources | ||||||
| import kotlinx.coroutines.flow.Flow | import kotlinx.coroutines.flow.Flow | ||||||
|  |  | ||||||
|  | @ -47,6 +47,7 @@ | ||||||
|     <string name="view_task">View</string> |     <string name="view_task">View</string> | ||||||
|     <string name="edit_task">Edit Task</string> |     <string name="edit_task">Edit Task</string> | ||||||
|     <string name="delete_subject">Delete Subject</string> |     <string name="delete_subject">Delete Subject</string> | ||||||
|  |     <string name="delete_task">Delete Task</string> | ||||||
| 
 | 
 | ||||||
|     <!-- Sessions --> |     <!-- Sessions --> | ||||||
|     <string name="sessions">Sessions</string> |     <string name="sessions">Sessions</string> | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 brreynie
						brreynie