fix selectedSubject

This commit is contained in:
brreynie 2023-05-09 21:56:25 +02:00
parent e9cc4f4a0c
commit 0e4200057b
10 changed files with 53 additions and 38 deletions

View file

@ -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(),

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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(

View file

@ -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 = "",

View file

@ -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(

View file

@ -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

View file

@ -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 = "",

View file

@ -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,