Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ private fun CalendarScreen(
.fillMaxSize()
.background(color = CherrishTheme.colors.gray100)
.padding(paddingValues)
.padding(top = 40.dp),
.padding(top = 40.dp, bottom = 10.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(20.dp)
) {
Expand All @@ -95,7 +95,9 @@ private fun CalendarScreen(
procedureInfo = uiState.procedureInfoList,
onProcedureClick = onEventClick,
onAddProcedureClick = onAddButtonClick,
modifier = Modifier.padding(horizontal = 17.dp)
modifier = Modifier
.padding(horizontal = 17.dp)
.weight(1f)
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,7 @@ fun ProcedureScheduleCard(
EmptyCardView(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 24.dp)
.padding(top = 50.dp, bottom = 24.dp),
.padding(horizontal = 24.dp),
onClick = onAddProcedureClick
)
} else {
Expand Down Expand Up @@ -99,7 +98,8 @@ fun ProcedureScheduleCard(

LazyColumn(
state = listState,
verticalArrangement = Arrangement.spacedBy(8.dp)
verticalArrangement = Arrangement.spacedBy(8.dp),
modifier = Modifier.weight(1f)
) {
items(
items = procedureInfo,
Expand Down Expand Up @@ -252,23 +252,28 @@ private fun EmptyCardView(
modifier = modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Spacer(modifier = Modifier.weight(50f))

Image(
painter = painterResource(id = R.drawable.img_calendar_empty_view),
contentDescription = null,
modifier = Modifier.padding(8.dp)
)
Spacer(modifier = Modifier.weight(8f))

Text(
text = "오늘 예정된 일정이 없어요.",
color = CherrishTheme.colors.gray600,
style = CherrishTheme.typography.body1R14
)

Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.weight(40f))

AddProcedureButton(
onClick = onClick
)

Spacer(modifier = Modifier.weight(24f))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,18 @@ package com.cherrish.android.presentation.calendar.procedure
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Scaffold
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
Expand Down Expand Up @@ -143,127 +149,157 @@ fun ProcedureScreen(

BackHandler { onBackClick() }

Column(
Scaffold(
modifier = modifier
.fillMaxSize()
.background(CherrishTheme.colors.gray0)
.navigationBarsPadding()
.padding(top = 44.dp, bottom = 20.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
BackAndCloseTopAppBar(
title = uiState.title,
onBackClick = onBackClick,
onCloseClick = onCloseClick
)

if (uiState.showStepProgressBar) {
StepProgressBar(
totalStep = uiState.totalSteps,
currentStep = uiState.currentStepIndex,
.padding(top = 44.dp),
containerColor = CherrishTheme.colors.gray0,
bottomBar = {
CherrishButton(
text = if (uiState.step == ProcedureStep.Downtime) "완료" else "다음",
onClick = onNextClick,
enabled = uiState.isNextEnabled,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 26.dp)
.padding(top = 20.dp)
.padding(horizontal = 24.dp)
.padding(vertical = 20.dp)
.background(CherrishTheme.colors.gray0)
)
}

) { innerPadding ->
Column(
modifier = Modifier
.fillMaxWidth()
.padding(top = uiState.contentTopPadding)
.weight(1f)
.fillMaxSize()
.imePadding(),
horizontalAlignment = Alignment.CenterHorizontally
) {
when (uiState.flow) {
ProcedureFlow.Entry -> {
ExistenceContent(
selectedIndex = uiState.existenceSelectedIndex,
onItemClick = onExistenceClick,
BackAndCloseTopAppBar(
title = uiState.title,
onBackClick = onBackClick,
onCloseClick = onCloseClick
)

Column(
modifier = Modifier
.weight(1f)
.fillMaxWidth()
) {
if (uiState.showStepProgressBar) {
StepProgressBar(
totalStep = uiState.totalSteps,
currentStep = uiState.currentStepIndex,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 26.dp)
.padding(bottom = 10.dp)
.padding(top = 20.dp)
)
}

ProcedureFlow.NoTreat, ProcedureFlow.Treat -> {
when (uiState.step) {
ProcedureStep.Category -> {
CategoryContent(
worries = uiState.worries,
selectedWorryId = uiState.selectedWorryId,
onWorryClick = onWorryClick,
Column(
modifier = Modifier.fillMaxWidth()
) {
when (uiState.flow) {
ProcedureFlow.Entry -> {
ExistenceContent(
selectedIndex = uiState.existenceSelectedIndex,
onItemClick = onExistenceClick,
modifier = Modifier
.padding(top = uiState.contentTopPadding)
.padding(horizontal = 26.dp)
.padding(bottom = 10.dp)
)
}

ProcedureStep.RecoverySchedule -> {
RecoveryScheduleContent(
selectedIndex = uiState.recoverySelectedIndex,
onItemClick = onRecoveryOptionClick,
year = uiState.year,
month = uiState.month,
day = uiState.day,
onYearChange = onYearChange,
onMonthChange = onMonthChange,
onDayChange = onDayChange,
errorMessage = uiState.dateErrorMessage,
modifier = Modifier.padding(horizontal = 26.dp)
)
}
ProcedureFlow.NoTreat, ProcedureFlow.Treat -> {
when (uiState.step) {
ProcedureStep.Category -> {
CategoryContent(
worries = uiState.worries,
selectedWorryId = uiState.selectedWorryId,
onWorryClick = onWorryClick,
modifier = Modifier
.padding(top = uiState.contentTopPadding)
.padding(horizontal = 26.dp)
.padding(bottom = 10.dp)
)
}

ProcedureStep.Filtering -> {
FilteringContent(
name = uiState.selectedWorryName,
cardItems = uiState.procedureItems,
selectedCardIds = uiState.selectedProcedureCardIds,
onCardClick = onProcedureCardClick,
bottomPadding = uiState.lazyColumnBottomPadding,
modifier = Modifier.fillMaxWidth()
)
}
ProcedureStep.RecoverySchedule -> {
Column(
modifier = Modifier
.fillMaxWidth()
.verticalScroll(rememberScrollState())
) {
RecoveryScheduleContent(
selectedIndex = uiState.recoverySelectedIndex,
onItemClick = onRecoveryOptionClick,
year = uiState.year,
month = uiState.month,
day = uiState.day,
onYearChange = onYearChange,
onMonthChange = onMonthChange,
onDayChange = onDayChange,
errorMessage = uiState.dateErrorMessage,
modifier = Modifier
.padding(top = uiState.contentTopPadding)
.padding(horizontal = 26.dp)
)
}
}

ProcedureStep.FilteringWithSearch -> {
FilteringWithSearchContent(
cardItems = uiState.procedureItems,
selectedCardIds = uiState.selectedProcedureCardIds,
onCardClick = onProcedureCardClick,
onSearchAction = onSearchAction,
query = uiState.searchQuery,
searchedQuery = uiState.searchedQuery,
onQueryChange = onSearchableQueryChange,
bottomContentPadding = uiState.lazyColumnBottomPadding,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 24.dp)
)
}
ProcedureStep.Filtering -> {
FilteringContent(
name = uiState.selectedWorryName,
cardItems = uiState.procedureItems,
selectedCardIds = uiState.selectedProcedureCardIds,
onCardClick = onProcedureCardClick,
bottomPadding = uiState.lazyColumnBottomPadding,
modifier = Modifier.fillMaxWidth()
.padding(top = uiState.contentTopPadding)
)
}

ProcedureStep.Downtime -> {
DowntimeContent(
cardItems = uiState.selectedProcedureCardItems,
selectedCardIds =
uiState.procedureDowntimeMap.keys.toImmutableList(),
onCardClick = onDowntimeClick,
activeCardId = uiState.selectedProcedureForDowntime?.id,
isDowntimeBottomSheetVisible = uiState.showDowntimeBottomSheet,
modifier = Modifier.fillMaxWidth()
)
ProcedureStep.FilteringWithSearch -> {
FilteringWithSearchContent(
cardItems = uiState.procedureItems,
selectedCardIds = uiState.selectedProcedureCardIds,
onCardClick = onProcedureCardClick,
onSearchAction = onSearchAction,
query = uiState.searchQuery,
searchedQuery = uiState.searchedQuery,
onQueryChange = onSearchableQueryChange,
bottomContentPadding = uiState.lazyColumnBottomPadding,
modifier = Modifier
.fillMaxWidth()
.padding(top = uiState.contentTopPadding)
.padding(horizontal = 24.dp)
)
}

ProcedureStep.Downtime -> {
DowntimeContent(
cardItems = uiState.selectedProcedureCardItems,
selectedCardIds = uiState.procedureDowntimeMap.keys
.toImmutableList(),
onCardClick = onDowntimeClick,
activeCardId = uiState.selectedProcedureForDowntime?.id,
isDowntimeBottomSheetVisible = uiState
.showDowntimeBottomSheet,
modifier = Modifier
.fillMaxWidth()
.padding(top = uiState.contentTopPadding)
)
}
}
}
}
}
}

Spacer(modifier = Modifier.height(innerPadding.calculateBottomPadding()))
}
CherrishButton(
text = "다음",
onClick = onNextClick,
enabled = uiState.isNextEnabled,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 24.dp)
.padding(top = 24.dp)
)
}

SelectedProcedureBottomSheet(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,11 @@ private fun DowntimeDayPicker(
)

Text(
text = "보통 $minDowntimeDays-${maxDowntimeDays}일",
text = if (minDowntimeDays == 0 && maxDowntimeDays == 0) {
"보통 다운타임 0일"
} else {
"보통 $minDowntimeDays-${maxDowntimeDays}일"
},
color = CherrishTheme.colors.gray600,
style = CherrishTheme.typography.title2M16
)
Expand Down
Loading