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.sign_up.SignUpRoute
|
||||
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.forms.SubjectAddRoute
|
||||
import be.ugent.sel.studeez.screens.tasks.forms.SubjectEditRoute
|
||||
import be.ugent.sel.studeez.screens.tasks.forms.TaskAddRoute
|
||||
import be.ugent.sel.studeez.screens.tasks.forms.TaskEditRoute
|
||||
import be.ugent.sel.studeez.screens.subjects.form.SubjectCreateRoute
|
||||
import be.ugent.sel.studeez.screens.subjects.form.SubjectEditRoute
|
||||
import be.ugent.sel.studeez.screens.tasks.form.TaskAddRoute
|
||||
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.TimerEditRoute
|
||||
import be.ugent.sel.studeez.screens.timer_form.timer_type_select.TimerTypeSelectScreen
|
||||
|
@ -81,7 +81,7 @@ fun StudeezNavGraph(
|
|||
}
|
||||
|
||||
composable(StudeezDestinations.ADD_SUBJECT_FORM) {
|
||||
SubjectAddRoute(
|
||||
SubjectCreateRoute(
|
||||
goBack = goBack,
|
||||
openAndPopUp = openAndPopUp,
|
||||
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.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
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package be.ugent.sel.studeez.screens.tasks
|
||||
package be.ugent.sel.studeez.screens.subjects
|
||||
|
||||
import androidx.lifecycle.viewModelScope
|
||||
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.compose.foundation.layout.Column
|
||||
|
@ -19,10 +19,10 @@ import be.ugent.sel.studeez.resources
|
|||
import be.ugent.sel.studeez.R.string as AppText
|
||||
|
||||
@Composable
|
||||
fun SubjectAddRoute(
|
||||
fun SubjectCreateRoute(
|
||||
goBack: () -> Unit,
|
||||
openAndPopUp: (String, String) -> Unit,
|
||||
viewModel: SubjectFormViewModel,
|
||||
viewModel: SubjectCreateFormViewModel,
|
||||
) {
|
||||
val uiState by viewModel.uiState
|
||||
SubjectForm(
|
||||
|
@ -39,7 +39,7 @@ fun SubjectAddRoute(
|
|||
fun SubjectEditRoute(
|
||||
goBack: () -> Unit,
|
||||
openAndPopUp: (String, String) -> Unit,
|
||||
viewModel: SubjectFormViewModel,
|
||||
viewModel: SubjectEditFormViewModel,
|
||||
) {
|
||||
val uiState by viewModel.uiState
|
||||
SubjectForm(
|
|
@ -1,4 +1,4 @@
|
|||
package be.ugent.sel.studeez.screens.tasks.forms
|
||||
package be.ugent.sel.studeez.screens.subjects.form
|
||||
|
||||
data class SubjectFormUiState(
|
||||
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 be.ugent.sel.studeez.data.SelectedSubject
|
||||
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 javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class SubjectFormViewModel @Inject constructor(
|
||||
private val subjectDAO: SubjectDAO,
|
||||
private val selectedSubject: SelectedSubject,
|
||||
abstract class SubjectFormViewModel(
|
||||
protected val subjectDAO: SubjectDAO,
|
||||
protected val selectedSubject: SelectedSubject,
|
||||
logService: LogService,
|
||||
) : StudeezViewModel(logService) {
|
||||
var uiState = mutableStateOf(
|
||||
if (selectedSubject.isSet()) SubjectFormUiState(
|
||||
name = selectedSubject().name,
|
||||
color = selectedSubject().argb_color
|
||||
)
|
||||
else SubjectFormUiState()
|
||||
)
|
||||
private set
|
||||
abstract val uiState: MutableState<SubjectFormUiState>
|
||||
|
||||
private val name: String
|
||||
protected val name: String
|
||||
get() = uiState.value.name
|
||||
|
||||
private val color: Long
|
||||
protected val color: Long
|
||||
get() = uiState.value.color
|
||||
|
||||
fun onNameChange(newValue: String) {
|
||||
|
@ -38,11 +31,15 @@ class SubjectFormViewModel @Inject constructor(
|
|||
fun onColorChange(newValue: Long) {
|
||||
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) {
|
||||
val newSubject = Subject(
|
||||
|
@ -57,6 +54,25 @@ class SubjectFormViewModel @Inject constructor(
|
|||
// open(StudeezDestinations.TASKS_SCREEN)
|
||||
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) {
|
||||
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.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(
|
||||
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 be.ugent.sel.studeez.data.SelectedSubject
|
||||
|
@ -11,8 +11,7 @@ import be.ugent.sel.studeez.screens.StudeezViewModel
|
|||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class TaskFormViewModel @Inject constructor(
|
||||
abstract class TaskFormViewModel(
|
||||
private val taskDAO: TaskDAO,
|
||||
private val selectedSubject: SelectedSubject,
|
||||
private val selectedTask: SelectedTask,
|
Reference in a new issue