fix selectedSubject
This commit is contained in:
		
							parent
							
								
									e9cc4f4a0c
								
							
						
					
					
						commit
						0e4200057b
					
				
					 10 changed files with 53 additions and 38 deletions
				
			
		|  | @ -24,12 +24,12 @@ import be.ugent.sel.studeez.screens.sessions.SessionsRoute | ||||||
| import be.ugent.sel.studeez.screens.settings.SettingsRoute | import be.ugent.sel.studeez.screens.settings.SettingsRoute | ||||||
| import be.ugent.sel.studeez.screens.sign_up.SignUpRoute | import be.ugent.sel.studeez.screens.sign_up.SignUpRoute | ||||||
| import be.ugent.sel.studeez.screens.splash.SplashRoute | import be.ugent.sel.studeez.screens.splash.SplashRoute | ||||||
| import be.ugent.sel.studeez.screens.tasks.SubjectRoute | import be.ugent.sel.studeez.screens.subjects.SubjectRoute | ||||||
| import be.ugent.sel.studeez.screens.tasks.TaskRoute | import be.ugent.sel.studeez.screens.tasks.TaskRoute | ||||||
| import be.ugent.sel.studeez.screens.tasks.forms.SubjectAddRoute | import be.ugent.sel.studeez.screens.subjects.form.SubjectCreateRoute | ||||||
| import be.ugent.sel.studeez.screens.tasks.forms.SubjectEditRoute | import be.ugent.sel.studeez.screens.subjects.form.SubjectEditRoute | ||||||
| import be.ugent.sel.studeez.screens.tasks.forms.TaskAddRoute | import be.ugent.sel.studeez.screens.tasks.form.TaskAddRoute | ||||||
| import be.ugent.sel.studeez.screens.tasks.forms.TaskEditRoute | import be.ugent.sel.studeez.screens.tasks.form.TaskEditRoute | ||||||
| import be.ugent.sel.studeez.screens.timer_form.TimerAddRoute | import be.ugent.sel.studeez.screens.timer_form.TimerAddRoute | ||||||
| import be.ugent.sel.studeez.screens.timer_form.TimerEditRoute | import be.ugent.sel.studeez.screens.timer_form.TimerEditRoute | ||||||
| import be.ugent.sel.studeez.screens.timer_form.timer_type_select.TimerTypeSelectScreen | import be.ugent.sel.studeez.screens.timer_form.timer_type_select.TimerTypeSelectScreen | ||||||
|  | @ -81,7 +81,7 @@ fun StudeezNavGraph( | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         composable(StudeezDestinations.ADD_SUBJECT_FORM) { |         composable(StudeezDestinations.ADD_SUBJECT_FORM) { | ||||||
|             SubjectAddRoute( |             SubjectCreateRoute( | ||||||
|                 goBack = goBack, |                 goBack = goBack, | ||||||
|                 openAndPopUp = openAndPopUp, |                 openAndPopUp = openAndPopUp, | ||||||
|                 viewModel = hiltViewModel(), |                 viewModel = hiltViewModel(), | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package be.ugent.sel.studeez.screens.tasks | package be.ugent.sel.studeez.screens.subjects | ||||||
| 
 | 
 | ||||||
| import androidx.compose.foundation.layout.* | import androidx.compose.foundation.layout.* | ||||||
| import androidx.compose.foundation.lazy.LazyColumn | import androidx.compose.foundation.lazy.LazyColumn | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package be.ugent.sel.studeez.screens.tasks | package be.ugent.sel.studeez.screens.subjects | ||||||
| 
 | 
 | ||||||
| import be.ugent.sel.studeez.data.local.models.task.Subject | import be.ugent.sel.studeez.data.local.models.task.Subject | ||||||
| 
 | 
 | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package be.ugent.sel.studeez.screens.tasks | package be.ugent.sel.studeez.screens.subjects | ||||||
| 
 | 
 | ||||||
| import androidx.lifecycle.viewModelScope | import androidx.lifecycle.viewModelScope | ||||||
| import be.ugent.sel.studeez.data.SelectedSubject | import be.ugent.sel.studeez.data.SelectedSubject | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package be.ugent.sel.studeez.screens.tasks.forms | package be.ugent.sel.studeez.screens.subjects.form | ||||||
| 
 | 
 | ||||||
| import androidx.annotation.StringRes | import androidx.annotation.StringRes | ||||||
| import androidx.compose.foundation.layout.Column | import androidx.compose.foundation.layout.Column | ||||||
|  | @ -19,10 +19,10 @@ import be.ugent.sel.studeez.resources | ||||||
| import be.ugent.sel.studeez.R.string as AppText | import be.ugent.sel.studeez.R.string as AppText | ||||||
| 
 | 
 | ||||||
| @Composable | @Composable | ||||||
| fun SubjectAddRoute( | fun SubjectCreateRoute( | ||||||
|     goBack: () -> Unit, |     goBack: () -> Unit, | ||||||
|     openAndPopUp: (String, String) -> Unit, |     openAndPopUp: (String, String) -> Unit, | ||||||
|     viewModel: SubjectFormViewModel, |     viewModel: SubjectCreateFormViewModel, | ||||||
| ) { | ) { | ||||||
|     val uiState by viewModel.uiState |     val uiState by viewModel.uiState | ||||||
|     SubjectForm( |     SubjectForm( | ||||||
|  | @ -39,7 +39,7 @@ fun SubjectAddRoute( | ||||||
| fun SubjectEditRoute( | fun SubjectEditRoute( | ||||||
|     goBack: () -> Unit, |     goBack: () -> Unit, | ||||||
|     openAndPopUp: (String, String) -> Unit, |     openAndPopUp: (String, String) -> Unit, | ||||||
|     viewModel: SubjectFormViewModel, |     viewModel: SubjectEditFormViewModel, | ||||||
| ) { | ) { | ||||||
|     val uiState by viewModel.uiState |     val uiState by viewModel.uiState | ||||||
|     SubjectForm( |     SubjectForm( | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package be.ugent.sel.studeez.screens.tasks.forms | package be.ugent.sel.studeez.screens.subjects.form | ||||||
| 
 | 
 | ||||||
| data class SubjectFormUiState( | data class SubjectFormUiState( | ||||||
|     val name: String = "", |     val name: String = "", | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| package be.ugent.sel.studeez.screens.tasks.forms | package be.ugent.sel.studeez.screens.subjects.form | ||||||
| 
 | 
 | ||||||
|  | import androidx.compose.runtime.MutableState | ||||||
| import androidx.compose.runtime.mutableStateOf | import androidx.compose.runtime.mutableStateOf | ||||||
| import be.ugent.sel.studeez.data.SelectedSubject | import be.ugent.sel.studeez.data.SelectedSubject | ||||||
| import be.ugent.sel.studeez.data.local.models.task.Subject | import be.ugent.sel.studeez.data.local.models.task.Subject | ||||||
|  | @ -10,25 +11,17 @@ import be.ugent.sel.studeez.screens.StudeezViewModel | ||||||
| import dagger.hilt.android.lifecycle.HiltViewModel | import dagger.hilt.android.lifecycle.HiltViewModel | ||||||
| import javax.inject.Inject | import javax.inject.Inject | ||||||
| 
 | 
 | ||||||
| @HiltViewModel | abstract class SubjectFormViewModel( | ||||||
| class SubjectFormViewModel @Inject constructor( |     protected val subjectDAO: SubjectDAO, | ||||||
|     private val subjectDAO: SubjectDAO, |     protected val selectedSubject: SelectedSubject, | ||||||
|     private val selectedSubject: SelectedSubject, |  | ||||||
|     logService: LogService, |     logService: LogService, | ||||||
| ) : StudeezViewModel(logService) { | ) : StudeezViewModel(logService) { | ||||||
|     var uiState = mutableStateOf( |     abstract val uiState: MutableState<SubjectFormUiState> | ||||||
|         if (selectedSubject.isSet()) SubjectFormUiState( |  | ||||||
|             name = selectedSubject().name, |  | ||||||
|             color = selectedSubject().argb_color |  | ||||||
|         ) |  | ||||||
|         else SubjectFormUiState() |  | ||||||
|     ) |  | ||||||
|         private set |  | ||||||
| 
 | 
 | ||||||
|     private val name: String |     protected val name: String | ||||||
|         get() = uiState.value.name |         get() = uiState.value.name | ||||||
| 
 | 
 | ||||||
|     private val color: Long |     protected val color: Long | ||||||
|         get() = uiState.value.color |         get() = uiState.value.color | ||||||
| 
 | 
 | ||||||
|     fun onNameChange(newValue: String) { |     fun onNameChange(newValue: String) { | ||||||
|  | @ -38,12 +31,16 @@ class SubjectFormViewModel @Inject constructor( | ||||||
|     fun onColorChange(newValue: Long) { |     fun onColorChange(newValue: Long) { | ||||||
|         uiState.value = uiState.value.copy(color = newValue) |         uiState.value = uiState.value.copy(color = newValue) | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
|     fun onDelete(openAndPopUp: (String, String) -> Unit) { |  | ||||||
|         subjectDAO.deleteSubject(selectedSubject()) |  | ||||||
|         openAndPopUp(StudeezDestinations.SUBJECT_SCREEN, StudeezDestinations.EDIT_SUBJECT_FORM) |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @HiltViewModel | ||||||
|  | class SubjectCreateFormViewModel @Inject constructor( | ||||||
|  |     subjectDAO: SubjectDAO, | ||||||
|  |     selectedSubject: SelectedSubject, | ||||||
|  |     logService: LogService, | ||||||
|  | ) : SubjectFormViewModel(subjectDAO, selectedSubject, logService) { | ||||||
|  |     override val uiState = mutableStateOf(SubjectFormUiState()) | ||||||
|  | 
 | ||||||
|     fun onCreate(openAndPopUp: (String, String) -> Unit) { |     fun onCreate(openAndPopUp: (String, String) -> Unit) { | ||||||
|         val newSubject = Subject( |         val newSubject = Subject( | ||||||
|             name = name, |             name = name, | ||||||
|  | @ -57,6 +54,25 @@ class SubjectFormViewModel @Inject constructor( | ||||||
| //        open(StudeezDestinations.TASKS_SCREEN) | //        open(StudeezDestinations.TASKS_SCREEN) | ||||||
|         openAndPopUp(StudeezDestinations.SUBJECT_SCREEN, StudeezDestinations.ADD_SUBJECT_FORM) |         openAndPopUp(StudeezDestinations.SUBJECT_SCREEN, StudeezDestinations.ADD_SUBJECT_FORM) | ||||||
|     } |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @HiltViewModel | ||||||
|  | class SubjectEditFormViewModel @Inject constructor( | ||||||
|  |     subjectDAO: SubjectDAO, | ||||||
|  |     selectedSubject: SelectedSubject, | ||||||
|  |     logService: LogService, | ||||||
|  | ) : SubjectFormViewModel(subjectDAO, selectedSubject, logService) { | ||||||
|  |     override val uiState = mutableStateOf( | ||||||
|  |         SubjectFormUiState( | ||||||
|  |             name = selectedSubject().name, | ||||||
|  |             color = selectedSubject().argb_color | ||||||
|  |         ) | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     fun onDelete(openAndPopUp: (String, String) -> Unit) { | ||||||
|  |         subjectDAO.deleteSubject(selectedSubject()) | ||||||
|  |         openAndPopUp(StudeezDestinations.SUBJECT_SCREEN, StudeezDestinations.EDIT_SUBJECT_FORM) | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     fun onEdit(openAndPopUp: (String, String) -> Unit) { |     fun onEdit(openAndPopUp: (String, String) -> Unit) { | ||||||
|         val newSubject = selectedSubject().copy( |         val newSubject = selectedSubject().copy( | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package be.ugent.sel.studeez.screens.tasks.forms | package be.ugent.sel.studeez.screens.tasks.form | ||||||
| 
 | 
 | ||||||
| import androidx.annotation.StringRes | import androidx.annotation.StringRes | ||||||
| import androidx.compose.foundation.layout.Column | import androidx.compose.foundation.layout.Column | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package be.ugent.sel.studeez.screens.tasks.forms | package be.ugent.sel.studeez.screens.tasks.form | ||||||
| 
 | 
 | ||||||
| data class TaskFormUiState( | data class TaskFormUiState( | ||||||
|     val name: String = "", |     val name: String = "", | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package be.ugent.sel.studeez.screens.tasks.forms | package be.ugent.sel.studeez.screens.tasks.form | ||||||
| 
 | 
 | ||||||
| import androidx.compose.runtime.mutableStateOf | import androidx.compose.runtime.mutableStateOf | ||||||
| import be.ugent.sel.studeez.data.SelectedSubject | import be.ugent.sel.studeez.data.SelectedSubject | ||||||
|  | @ -11,8 +11,7 @@ import be.ugent.sel.studeez.screens.StudeezViewModel | ||||||
| import dagger.hilt.android.lifecycle.HiltViewModel | import dagger.hilt.android.lifecycle.HiltViewModel | ||||||
| import javax.inject.Inject | import javax.inject.Inject | ||||||
| 
 | 
 | ||||||
| @HiltViewModel | abstract class TaskFormViewModel( | ||||||
| class TaskFormViewModel @Inject constructor( |  | ||||||
|     private val taskDAO: TaskDAO, |     private val taskDAO: TaskDAO, | ||||||
|     private val selectedSubject: SelectedSubject, |     private val selectedSubject: SelectedSubject, | ||||||
|     private val selectedTask: SelectedTask, |     private val selectedTask: SelectedTask, | ||||||
		Reference in a new issue
	
	 brreynie
						brreynie