From 221f08cd7d57454fe476582453199c71b914c737 Mon Sep 17 00:00:00 2001 From: Yu Jin Date: Thu, 5 Mar 2026 17:16:20 +0900 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=90=9C=ED=9B=84=20=EC=9A=B0=EC=B8=A1=20?= =?UTF-8?q?=EC=83=81=EB=8B=A8=EC=97=90=20-=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/write/WriteReviewScreen.kt | 36 ++++++++++++++----- app/src/main/res/drawable/ic_minus.xml | 16 +++++++++ 2 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 app/src/main/res/drawable/ic_minus.xml diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt index 26be0ba1..47b1b3ab 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt @@ -270,15 +270,35 @@ internal fun WriteReviewScreen( if (selectedImageUri != null) { Column( modifier = Modifier - .size(120.dp) - .clip(RoundedCornerShape(8.dp)) - .clickable(enabled = !isPosting) { onImageDelete() } + .size(150.dp) +// .clickable(enabled = !isPosting) { onImageDelete() } ) { - AsyncImage( - model = selectedImageUri, - contentDescription = "Selected image", - modifier = Modifier.fillMaxSize() - ) + Box( + modifier = Modifier.size(92.dp) + ) { + AsyncImage( + model = selectedImageUri, + contentDescription = "Selected image", + modifier = Modifier + .size(80.dp) + .clip(RoundedCornerShape(4.dp)) + ) + + IconButton( + onClick = { onImageDelete() }, + modifier = Modifier + .size(24.dp) // 터치 영역 + .align(Alignment.TopEnd) + .offset(x = 5.dp, y = (-5).dp) // 이미지 위에 살짝 겹치게 + ) { + Icon( + painter = painterResource(R.drawable.ic_minus), + contentDescription = "remove photo", + tint = Color.Unspecified, + modifier = Modifier.size(20.dp) // 실제 아이콘 + ) + } + } } Text( modifier = Modifier.padding(top = 8.dp), diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml new file mode 100644 index 00000000..d127dd2a --- /dev/null +++ b/app/src/main/res/drawable/ic_minus.xml @@ -0,0 +1,16 @@ + + + + From 5602730399c9a65eae480052d29f5af3e9d9dcc7 Mon Sep 17 00:00:00 2001 From: Yu Jin Date: Thu, 5 Mar 2026 17:16:34 +0900 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20=EC=82=AC=EC=A7=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=84=ED=8A=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/write/WriteReviewScreen.kt | 71 +++++++++++++------ app/src/main/res/drawable/ic_camera_24.xml | 13 ++++ app/src/main/res/values/strings.xml | 2 +- 3 files changed, 65 insertions(+), 21 deletions(-) create mode 100644 app/src/main/res/drawable/ic_camera_24.xml diff --git a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt index 47b1b3ab..9aeb6e23 100644 --- a/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt +++ b/app/src/main/java/com/eatssu/android/presentation/cafeteria/review/write/WriteReviewScreen.kt @@ -7,17 +7,23 @@ import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row 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.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -27,6 +33,7 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -53,7 +60,9 @@ import com.eatssu.design_system.theme.Gray200 import com.eatssu.design_system.theme.Gray300 import com.eatssu.design_system.theme.Gray400 import com.eatssu.design_system.theme.Gray500 +import com.eatssu.design_system.theme.Gray700 import com.eatssu.design_system.theme.Primary +import androidx.core.net.toUri const val MAX_TEXT_COUNT = 300 @@ -242,10 +251,10 @@ internal fun WriteReviewScreen( }, shape = RoundedCornerShape(10.dp), colors = androidx.compose.material3.OutlinedTextFieldDefaults.colors( - focusedContainerColor = Gray100, - unfocusedContainerColor = Gray100, - unfocusedBorderColor = Gray200, - focusedBorderColor = Gray200, + focusedContainerColor = Gray100, //fill + unfocusedContainerColor = Gray100, //fill + unfocusedBorderColor = Gray200, //stroke + focusedBorderColor = Gray200, //storke unfocusedLabelColor = Gray400, focusedLabelColor = Gray400, cursorColor = Primary @@ -300,32 +309,28 @@ internal fun WriteReviewScreen( } } } - Text( - modifier = Modifier.padding(top = 8.dp), - text = stringResource(R.string.review_photo_delete_hint), - color = Gray500, - style = EatssuTheme.typography.caption3 - ) } else { - Column( + Row ( modifier = Modifier - .size(60.dp) + .fillMaxWidth() + .height(60.dp) .clip(RoundedCornerShape(5.dp)) - .background(Gray100) - .border(1.dp, Gray200, RoundedCornerShape(5.dp)) +// .background(White) + .border(1.dp, Gray200, RoundedCornerShape(12.dp)) .clickable(enabled = !isPosting) { onImageSelect() }, - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center, + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically, ) { Icon( - painter = painterResource(R.drawable.ic_camera_light), + painter = painterResource(R.drawable.ic_camera_24), contentDescription = "add photo", - tint = Gray300 + tint = Gray700 ) + Spacer(Modifier.width(8.dp)) Text( stringResource(R.string.review_photo_count, 0, 1), - color = Gray400, - style = EatssuTheme.typography.caption3 + color = Gray700, + style = EatssuTheme.typography.body1 ) } } @@ -361,3 +366,29 @@ private fun ReviewWritePreview() { ) } } + + +@Preview(showBackground = true) +@Composable +private fun ReviewWritePreviewPhoto() { + EatssuTheme { + WriteReviewScreen( + title = "리뷰 작성하기", + menuList = listOf( + MenuMini(1, "김치"), MenuMini(2, "계란말이"), MenuMini(3, "닭볶음탕") + ), + rating = 3, + content = "맛있었습니다!", + likedMenuIds = setOf(1L), + selectedImageUri = "https://static.wtable.co.kr/image-resize/production/service/recipe/2167/4x3/c9d9173f-d3e1-43cd-871d-339614b0dbac.jpg".toUri(), + isPosting = false, + onBack = {}, + onRatingChanged = {}, + onContentChanged = {}, + onToggleLike = {}, + onImageSelect = {}, + onImageDelete = {}, + onSubmit = {} + ) + } +} diff --git a/app/src/main/res/drawable/ic_camera_24.xml b/app/src/main/res/drawable/ic_camera_24.xml new file mode 100644 index 00000000..4b6dc6f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera_24.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5391246c..1f02c00c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -141,7 +141,7 @@ 작성 중... 수정 중... 사진 클릭 시, 삭제됩니다. - 사진 %1$d/%2$d + 사진 추가(%1$d/%2$d) 리뷰 설정 에러가 발생했습니다. 리뷰 작성하기 From 25970deefbf55474524a45881a97d7d459f440c8 Mon Sep 17 00:00:00 2001 From: Yu Jin Date: Thu, 5 Mar 2026 17:41:07 +0900 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=EB=A6=AC=EB=B7=B0=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=ED=86=A0=EC=8A=A4=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1f02c00c..ee920264 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -69,11 +69,11 @@ - 리뷰가 작성되었습니다. + 리뷰가 등록되었어요. 리뷰 작성에 실패하였습니다. 리뷰를 수정했습니다. 리뷰 수정이 실패했습니다. - 리뷰를 삭제했습니다. + 리뷰가 삭제되었어요. 리뷰 삭제에 실패했습니다. 리뷰를 불러오지 못했습니다. @@ -88,7 +88,7 @@ - 신고가 완료되었습니다. + 신고가 성공적으로 접수되었어요! 신고가 실패하였습니다.