@@ -76,33 +76,42 @@ fun WriteRoutineScreenContainer(
7676 if (state.showStartDatePickerBottomSheet) {
7777 DatePickerBottomSheet (
7878 modifier = Modifier .fillMaxWidth(),
79- onDateSelected = {},
80- date = state.startDate ? : Date .now(),
81- onDismiss = {},
79+ onDateSelected = viewModel::setStartDate,
80+ date = state.startDate ? : state.endDate?.let { Date .min(it, Date .now()) } ? : Date .now(),
81+ onDismiss = viewModel::hideStartDatePickerBottomSheet,
82+ availableStartDate = null ,
83+ availableEndDate = state.endDate,
8284 )
8385 }
8486
8587 if (state.showEndDatePickerBottomSheet) {
8688 DatePickerBottomSheet (
8789 modifier = Modifier .fillMaxWidth(),
88- onDateSelected = {},
89- date = state.endDate ? : Date .now(),
90- onDismiss = {},
90+ onDateSelected = viewModel::setEndDate,
91+ date = state.endDate ? : state.startDate?.let { Date .max(it, Date .now()) } ? : Date .now(),
92+ onDismiss = viewModel::hideEndDatePickerBottomSheet,
93+ availableStartDate = state.startDate,
94+ availableEndDate = null ,
9195 )
9296 }
9397
9498 WriteRoutineScreen (
9599 state = state,
96100 setRoutineName = viewModel::setRoutineName,
97101 setSubRoutineName = viewModel::setSubRoutineName,
98- addSubRoutine = viewModel::addSubRoutine ,
102+ selectNotUseSubRoutines = viewModel::selectNotUseSubRoutines ,
99103 selectRepeatTime = viewModel::selectRepeatType,
100104 selectDay = viewModel::selectDay,
101105 selectAllTime = viewModel::selectAllTime,
102106 showTimePickerBottomSheet = viewModel::showTimePickerBottomSheet,
103107 onClickRegister = viewModel::registerRoutine,
104- removeSubRoutine = viewModel::removeSubRoutine,
105108 onClickBack = navigateToBack,
109+ onClickSubRoutineExpand = viewModel::toggleSubRoutineUiExpanded,
110+ onClickRepeatDaysExpand = viewModel::toggleRepeatDaysUiExpanded,
111+ onClickStartTimeExpand = viewModel::toggleStartTimeUiExpanded,
112+ onClickPeriodExpand = viewModel::togglePeriodUiExpanded,
113+ showStartDatePickerBottomSheet = viewModel::showStartDatePickerBottomSheet,
114+ showEndDatePickerBottomSheet = viewModel::showEndDatePickerBottomSheet,
106115 )
107116}
108117
@@ -111,14 +120,19 @@ private fun WriteRoutineScreen(
111120 state : WriteRoutineState ,
112121 setRoutineName : (String ) -> Unit ,
113122 setSubRoutineName : (Int , String ) -> Unit ,
114- addSubRoutine : () -> Unit ,
123+ selectNotUseSubRoutines : () -> Unit ,
115124 selectRepeatTime : (RepeatType ) -> Unit ,
116125 selectDay : (Day ) -> Unit ,
117126 selectAllTime : () -> Unit ,
118127 showTimePickerBottomSheet : () -> Unit ,
119128 onClickRegister : () -> Unit ,
120- removeSubRoutine : (Int ) -> Unit ,
121129 onClickBack : () -> Unit ,
130+ onClickSubRoutineExpand : () -> Unit ,
131+ onClickRepeatDaysExpand : () -> Unit ,
132+ onClickStartTimeExpand : () -> Unit ,
133+ onClickPeriodExpand : () -> Unit ,
134+ showStartDatePickerBottomSheet : () -> Unit ,
135+ showEndDatePickerBottomSheet : () -> Unit ,
122136) {
123137 val scrollState = rememberScrollState()
124138
@@ -163,10 +177,8 @@ private fun WriteRoutineScreen(
163177 iconResourceId = R .drawable.img_subroutines,
164178 title = " 세부루틴" ,
165179 placeHolder = " ex) 일어나자마자 이불 개기" ,
166- valueText = " " ,
167- onClick = {
168-
169- }
180+ valueText = state.subRoutinesText,
181+ onClick = onClickSubRoutineExpand
170182 ) {
171183 Column (
172184 modifier = Modifier .fillMaxWidth().padding(horizontal = 18 .dp, vertical = 20 .dp),
@@ -178,31 +190,29 @@ private fun WriteRoutineScreen(
178190 placeHolder = getSubRoutinePlaceHolder(0 ),
179191 value = state.subRoutineNames.getOrNull(0 ) ? : " " ,
180192 onValueChange = { setSubRoutineName(0 , it) },
181- enabled = true ,
193+ enabled = ! state.selectNotUseSUbRoutines ,
182194 )
183195
184196 SubRoutineField (
185197 resourceId = R .drawable.img_circle_2,
186198 placeHolder = getSubRoutinePlaceHolder(1 ),
187199 value = state.subRoutineNames.getOrNull(1 ) ? : " " ,
188200 onValueChange = { setSubRoutineName(1 , it) },
189- enabled = true ,
201+ enabled = ! state.selectNotUseSUbRoutines ,
190202 )
191203
192204 SubRoutineField (
193205 resourceId = R .drawable.img_circle_3,
194206 placeHolder = getSubRoutinePlaceHolder(2 ),
195207 value = state.subRoutineNames.getOrNull(2 ) ? : " " ,
196208 onValueChange = { setSubRoutineName(2 , it) },
197- enabled = true ,
209+ enabled = ! state.selectNotUseSUbRoutines ,
198210 )
199211
200212 LabeledCheckBox (
201213 label = " 세부 루틴 설정 안함" ,
202- checked = true ,
203- onClick = {
204- addSubRoutine()
205- }
214+ checked = state.selectNotUseSUbRoutines,
215+ onClick = selectNotUseSubRoutines
206216 )
207217 }
208218 }
@@ -213,10 +223,8 @@ private fun WriteRoutineScreen(
213223 iconResourceId = R .drawable.img_repeat_days,
214224 title = " 반복 요일" ,
215225 placeHolder = " ex) 매주 월,화,수.목,금" ,
216- valueText = " " ,
217- onClick = {
218-
219- }
226+ valueText = state.repeatDaysText,
227+ onClick = onClickRepeatDaysExpand
220228 ) {
221229 Column (
222230 modifier = Modifier .fillMaxWidth().padding(top = 14 .dp, bottom = 18 .dp, start = 18 .dp, end = 18 .dp)
@@ -271,10 +279,8 @@ private fun WriteRoutineScreen(
271279 iconResourceId = R .drawable.img_routine_period,
272280 title = " 목표 기간" ,
273281 placeHolder = " ex) 25.08.06 - 25.08.06" ,
274- valueText = " " ,
275- onClick = {
276-
277- }
282+ valueText = state.periodText,
283+ onClick = onClickPeriodExpand
278284 ) {
279285 Column (
280286 modifier = Modifier .fillMaxWidth().padding(top = 14 .dp, bottom = 18 .dp, start = 18 .dp, end = 18 .dp),
@@ -283,15 +289,15 @@ private fun WriteRoutineScreen(
283289 RoutineDetailRow (
284290 title = " 시작일" ,
285291 placeHolder = " 눌러서 선택" ,
286- value = " " ,
287- onClick = {} ,
292+ value = state.startDate?.toFormattedString() ? : " " ,
293+ onClick = showStartDatePickerBottomSheet ,
288294 )
289295
290296 RoutineDetailRow (
291297 title = " 종료일" ,
292298 placeHolder = " 눌러서 선택" ,
293- value = " " ,
294- onClick = {} ,
299+ value = state.endDate?.toFormattedString() ? : " " ,
300+ onClick = showEndDatePickerBottomSheet ,
295301 )
296302 }
297303 }
@@ -302,10 +308,8 @@ private fun WriteRoutineScreen(
302308 iconResourceId = R .drawable.img_start_time,
303309 title = " 시간" ,
304310 placeHolder = " ex) 오전 9:40부터 시작" ,
305- valueText = " " ,
306- onClick = {
307-
308- }
311+ valueText = state.startTimeText,
312+ onClick = onClickStartTimeExpand
309313 ) {
310314 Column (
311315 modifier = Modifier .fillMaxWidth().padding(top = 14 .dp, bottom = 18 .dp, start = 18 .dp, end = 18 .dp),
@@ -314,18 +318,16 @@ private fun WriteRoutineScreen(
314318 RoutineDetailRow (
315319 title = " 시작 시간" ,
316320 placeHolder = " 눌러서 선택" ,
317- value = " " ,
318- onClick = {} ,
321+ value = state.startTime?.toAmPmFormattedString() ? : " " ,
322+ onClick = showTimePickerBottomSheet ,
319323 )
320324
321325 Spacer (modifier = Modifier .height(20 .dp))
322326
323327 LabeledCheckBox (
324328 label = " 하루 종일" ,
325329 checked = state.selectAllTime,
326- onClick = {
327-
328- }
330+ onClick = selectAllTime
329331 )
330332 }
331333
@@ -361,14 +363,19 @@ fun WriteRoutineScreenPreview() {
361363 state = WriteRoutineState .Init .copy(periodUiExpanded = true , startTimeUiExpanded = true ),
362364 setRoutineName = {},
363365 setSubRoutineName = { _, _ -> },
364- addSubRoutine = {},
365366 selectRepeatTime = {},
366367 selectDay = {},
367368 selectAllTime = {},
368369 showTimePickerBottomSheet = {},
369370 onClickRegister = {},
370- removeSubRoutine = {},
371371 onClickBack = {},
372+ onClickSubRoutineExpand = {},
373+ onClickRepeatDaysExpand = {},
374+ onClickStartTimeExpand = {},
375+ onClickPeriodExpand = {},
376+ showStartDatePickerBottomSheet = {},
377+ showEndDatePickerBottomSheet = {},
378+ selectNotUseSubRoutines = {}
372379 )
373380 }
374381}
0 commit comments