*EditScreen -> *FormScreen
This commit is contained in:
		
							parent
							
								
									165fe4ca86
								
							
						
					
					
						commit
						86c7a0e6a8
					
				
					 11 changed files with 90 additions and 125 deletions
				
			
		| 
						 | 
				
			
			@ -1,40 +0,0 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_add
 | 
			
		||||
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import be.ugent.sel.studeez.R
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.SecondaryScreenTemplate
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_edit.GetTimerEditScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_edit.TimerEditViewModel
 | 
			
		||||
 | 
			
		||||
data class TimerEditActions(
 | 
			
		||||
    val getTimerInfo: () -> TimerInfo,
 | 
			
		||||
    val saveTimer: (TimerInfo) -> Unit
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
fun getTimerAddActions(
 | 
			
		||||
    viewModel: TimerEditViewModel,
 | 
			
		||||
    goBack: () -> Unit
 | 
			
		||||
): TimerEditActions {
 | 
			
		||||
    return TimerEditActions(
 | 
			
		||||
        getTimerInfo = viewModel::getTimerInfo,
 | 
			
		||||
        saveTimer = { timerInfo -> viewModel.saveTimer(timerInfo, goBack) }
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun TimerAddRoute(
 | 
			
		||||
    open: (String) -> Unit,
 | 
			
		||||
    popUp: () -> Unit,
 | 
			
		||||
    viewModel: TimerEditViewModel,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    val timerEditActions = getTimerAddActions(viewModel, goBack = popUp)
 | 
			
		||||
 | 
			
		||||
    SecondaryScreenTemplate(title = stringResource(id = R.string.edit_timer), popUp = popUp) {
 | 
			
		||||
 | 
			
		||||
        val timerEditScreen = timerEditActions.getTimerInfo().accept(GetTimerEditScreen())
 | 
			
		||||
        timerEditScreen { timerEditActions.saveTimer(it) }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,63 +0,0 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_edit
 | 
			
		||||
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.SecondaryScreenTemplate
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
 | 
			
		||||
import be.ugent.sel.studeez.R.string as AppText
 | 
			
		||||
 | 
			
		||||
data class TimerEditActions(
 | 
			
		||||
    val getTimerInfo: () -> TimerInfo,
 | 
			
		||||
    val editTimer: (TimerInfo, () -> Unit) -> Unit
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
fun getTimerEditActions(
 | 
			
		||||
    viewModel: TimerEditViewModel,
 | 
			
		||||
    open: (String) -> Unit
 | 
			
		||||
): TimerEditActions {
 | 
			
		||||
    return TimerEditActions(
 | 
			
		||||
        getTimerInfo = viewModel::getTimerInfo,
 | 
			
		||||
        editTimer = viewModel::editTimer
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun TimerEditRoute(
 | 
			
		||||
    open: (String) -> Unit,
 | 
			
		||||
    popUp: () -> Unit,
 | 
			
		||||
    viewModel: TimerEditViewModel,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    val timerEditActions = getTimerEditActions(viewModel, open)
 | 
			
		||||
 | 
			
		||||
    SecondaryScreenTemplate(title = stringResource(id = AppText.edit_timer), popUp = popUp) {
 | 
			
		||||
 | 
			
		||||
        val timerEditScreen = timerEditActions.getTimerInfo().accept(GetTimerEditScreen())
 | 
			
		||||
        timerEditScreen { timerInfo ->
 | 
			
		||||
            timerEditActions.editTimer(timerInfo, popUp)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,13 +1,13 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_edit
 | 
			
		||||
package be.ugent.sel.studeez.screens.timer_form.timer_edit
 | 
			
		||||
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.CustomTimerInfo
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.EndlessTimerInfo
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.PomodoroTimerInfo
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfoVisitor
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_edit.editScreens.AbstractTimerEditScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_edit.editScreens.BreakTimerEditScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_edit.editScreens.CustomTimerEditScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_edit.editScreens.EndlessTimerEditScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_form.form_screens.AbstractTimerEditScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_form.form_screens.BreakTimerEditScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_form.form_screens.CustomTimerEditScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_form.form_screens.EndlessTimerEditScreen
 | 
			
		||||
 | 
			
		||||
class GetTimerEditScreen: TimerInfoVisitor<AbstractTimerEditScreen> {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,68 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_form.timer_edit
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.StringRes
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.SecondaryScreenTemplate
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_form.GetTimerFormScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_form.TimerFormViewModel
 | 
			
		||||
import java.util.Timer
 | 
			
		||||
import be.ugent.sel.studeez.R.string as AppText
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun TimerAddRoute(
 | 
			
		||||
    popUp: () -> Unit,
 | 
			
		||||
    viewModel: TimerFormViewModel
 | 
			
		||||
) {
 | 
			
		||||
    TimerFormScreen(popUp = popUp, getTimerInfo = viewModel::getTimerInfo, AppText.add_timer) {
 | 
			
		||||
        viewModel.saveTimer(it, goBack = popUp)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun TimerEditRoute(
 | 
			
		||||
    popUp: () -> Unit,
 | 
			
		||||
    viewModel: TimerFormViewModel
 | 
			
		||||
) {
 | 
			
		||||
    TimerFormScreen(popUp = popUp, getTimerInfo = viewModel::getTimerInfo, AppText.edit_timer) {
 | 
			
		||||
        viewModel.editTimer(it, goBack = popUp)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun TimerFormScreen(
 | 
			
		||||
    popUp: () -> Unit,
 | 
			
		||||
    getTimerInfo: () -> TimerInfo,
 | 
			
		||||
    @StringRes label: Int,
 | 
			
		||||
    onConfirmClick: (TimerInfo) -> Unit
 | 
			
		||||
) {
 | 
			
		||||
    val timerEditScreen = getTimerInfo().accept(GetTimerFormScreen())
 | 
			
		||||
 | 
			
		||||
    SecondaryScreenTemplate(title = stringResource(id = label), popUp = popUp) {
 | 
			
		||||
        timerEditScreen(onConfirmClick)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_edit
 | 
			
		||||
package be.ugent.sel.studeez.screens.timer_form.timer_edit
 | 
			
		||||
 | 
			
		||||
import be.ugent.sel.studeez.data.EditTimerState
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_edit.editScreens
 | 
			
		||||
package be.ugent.sel.studeez.screens.timer_form.form_screens
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.layout.Arrangement
 | 
			
		||||
import androidx.compose.foundation.layout.Column
 | 
			
		||||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ import be.ugent.sel.studeez.common.ext.basicButton
 | 
			
		|||
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
 | 
			
		||||
import be.ugent.sel.studeez.R.string as AppText
 | 
			
		||||
 | 
			
		||||
abstract class AbstractTimerEditScreen(private val timerInfo: TimerInfo) {
 | 
			
		||||
abstract class AbstractTimerFormScreen(private val timerInfo: TimerInfo) {
 | 
			
		||||
 | 
			
		||||
    @Composable
 | 
			
		||||
    operator fun invoke(onSaveClick: (TimerInfo) -> Unit) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_edit.editScreens
 | 
			
		||||
package be.ugent.sel.studeez.screens.timer_form.form_screens
 | 
			
		||||
 | 
			
		||||
import androidx.compose.runtime.*
 | 
			
		||||
import androidx.compose.ui.text.input.KeyboardType
 | 
			
		||||
| 
						 | 
				
			
			@ -11,9 +11,9 @@ import be.ugent.sel.studeez.ui.theme.StudeezTheme
 | 
			
		|||
import be.ugent.sel.studeez.R.string as AppText
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BreakTimerEditScreen(
 | 
			
		||||
class BreakTimerFormScreen(
 | 
			
		||||
    private val breakTimerInfo: PomodoroTimerInfo
 | 
			
		||||
): AbstractTimerEditScreen(breakTimerInfo) {
 | 
			
		||||
): AbstractTimerFormScreen(breakTimerInfo) {
 | 
			
		||||
 | 
			
		||||
    @Composable
 | 
			
		||||
    override fun ExtraFields() {
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +50,6 @@ fun BreakEditScreenPreview() {
 | 
			
		|||
        5
 | 
			
		||||
    )
 | 
			
		||||
    StudeezTheme {
 | 
			
		||||
        BreakTimerEditScreen(pomodoroTimerInfo).invoke(onSaveClick = {})
 | 
			
		||||
        BreakTimerFormScreen(pomodoroTimerInfo).invoke(onSaveClick = {})
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_edit.editScreens
 | 
			
		||||
package be.ugent.sel.studeez.screens.timer_form.form_screens
 | 
			
		||||
 | 
			
		||||
import androidx.compose.runtime.*
 | 
			
		||||
import androidx.compose.ui.tooling.preview.Preview
 | 
			
		||||
| 
						 | 
				
			
			@ -7,9 +7,9 @@ import be.ugent.sel.studeez.data.local.models.timer_info.CustomTimerInfo
 | 
			
		|||
import be.ugent.sel.studeez.ui.theme.StudeezTheme
 | 
			
		||||
import be.ugent.sel.studeez.R.string as AppText
 | 
			
		||||
 | 
			
		||||
class CustomTimerEditScreen(
 | 
			
		||||
class CustomTimerFormScreen(
 | 
			
		||||
    private val customTimerInfo: CustomTimerInfo
 | 
			
		||||
    ): AbstractTimerEditScreen(customTimerInfo) {
 | 
			
		||||
    ): AbstractTimerFormScreen(customTimerInfo) {
 | 
			
		||||
 | 
			
		||||
    @Composable
 | 
			
		||||
    override fun ExtraFields() {
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +29,6 @@ class CustomTimerEditScreen(
 | 
			
		|||
fun CustomEditScreenPreview() {
 | 
			
		||||
    val customTimerInfo = CustomTimerInfo("custom", "my description", 25)
 | 
			
		||||
    StudeezTheme {
 | 
			
		||||
        CustomTimerEditScreen(customTimerInfo).invoke(onSaveClick = {})
 | 
			
		||||
        CustomTimerFormScreen(customTimerInfo).invoke(onSaveClick = {})
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,13 +1,13 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_edit.editScreens
 | 
			
		||||
package be.ugent.sel.studeez.screens.timer_form.form_screens
 | 
			
		||||
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.ui.tooling.preview.Preview
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.EndlessTimerInfo
 | 
			
		||||
import be.ugent.sel.studeez.ui.theme.StudeezTheme
 | 
			
		||||
 | 
			
		||||
class EndlessTimerEditScreen(
 | 
			
		||||
class EndlessTimerFormScreen(
 | 
			
		||||
    endlessTimerInfo: EndlessTimerInfo
 | 
			
		||||
): AbstractTimerEditScreen(endlessTimerInfo) {
 | 
			
		||||
): AbstractTimerFormScreen(endlessTimerInfo) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Preview
 | 
			
		||||
| 
						 | 
				
			
			@ -18,6 +18,6 @@ fun EndlessEditScreenPreview() {
 | 
			
		|||
        "My endless timer description",
 | 
			
		||||
    )
 | 
			
		||||
    StudeezTheme {
 | 
			
		||||
        EndlessTimerEditScreen(endlessTimerInfo).invoke(onSaveClick = {})
 | 
			
		||||
        EndlessTimerFormScreen(endlessTimerInfo).invoke(onSaveClick = {})
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_add
 | 
			
		||||
package be.ugent.sel.studeez.screens.timer_form.timer_add
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.layout.Column
 | 
			
		||||
import androidx.compose.foundation.layout.fillMaxWidth
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package be.ugent.sel.studeez.screens.timer_add
 | 
			
		||||
package be.ugent.sel.studeez.screens.timer_form.timer_add
 | 
			
		||||
 | 
			
		||||
import be.ugent.sel.studeez.data.EditTimerState
 | 
			
		||||
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
 | 
			
		||||
		Reference in a new issue