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,11 +31,15 @@ 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) {
|
@HiltViewModel
|
||||||
subjectDAO.deleteSubject(selectedSubject())
|
class SubjectCreateFormViewModel @Inject constructor(
|
||||||
openAndPopUp(StudeezDestinations.SUBJECT_SCREEN, StudeezDestinations.EDIT_SUBJECT_FORM)
|
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(
|
||||||
|
@ -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