From 04c0954cc1655a00e2df96d92675e87f65f26138 Mon Sep 17 00:00:00 2001 From: casperjr Date: Sun, 2 Feb 2025 14:37:27 +0900 Subject: [PATCH 1/6] =?UTF-8?q?[feat]:=20=EB=A9=94=EB=89=B4,=20=EA=B0=80?= =?UTF-8?q?=EA=B2=8C=20=EC=A0=95=EB=B3=B4=20=EC=9E=85=EB=A0=A5=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=ED=8C=8C=EB=9D=BC=EB=AF=B8?= =?UTF-8?q?=ED=84=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../addmenu/component/item/AddMenuInfoAddressFieldItem.kt | 2 ++ .../ui/addmenu/component/item/AddMenuInfoTextFieldItem.kt | 5 ++++- .../kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt | 8 ++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoAddressFieldItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoAddressFieldItem.kt index 1e43a96c..1f248eea 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoAddressFieldItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoAddressFieldItem.kt @@ -31,6 +31,7 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun AddMenuInfoAddressFieldItem( + autoInput: Boolean, mainAddressText: String, detailedAddressText: String, onMainAddressChange: (String) -> Unit, @@ -107,6 +108,7 @@ private fun AddMenuInfoAddressFieldItemPreview() { var mainAddressText by rememberSaveable { mutableStateOf("") } var detailedAddressText by rememberSaveable { mutableStateOf("") } AddMenuInfoAddressFieldItem( + autoInput = true, mainAddressText = mainAddressText, detailedAddressText = detailedAddressText, onMainAddressChange = { mainAddressText = it }, diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoTextFieldItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoTextFieldItem.kt index 100cadfa..4f71c364 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoTextFieldItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoTextFieldItem.kt @@ -35,6 +35,7 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun AddMenuInfoTextFieldItem( fieldName: String, + autoInput: Boolean, text: String, onTextChange: (String) -> Unit, placeholder: String, @@ -69,7 +70,7 @@ fun AddMenuInfoTextFieldItem( text = text, onTextChange = onTextChange, shape = RoundedCornerShape(8.dp), - paddingValues = PaddingValues(start = 28.dp, top = 12.dp, bottom = 12.dp), + paddingValues = PaddingValues(start = 28.dp, end = 28.dp, top = 12.dp, bottom = 12.dp), containerColor = Neutral100, placeHolder = { Text( @@ -104,6 +105,7 @@ private fun AddMenuInfoTextFieldItemPreview() { ) { AddMenuInfoTextFieldItem( fieldName = stringResource(R.string.menu_price), + autoInput = false, text = priceText, onTextChange = { priceText = it }, placeholder = stringResource(R.string.type_menu_price), @@ -111,6 +113,7 @@ private fun AddMenuInfoTextFieldItemPreview() { ) AddMenuInfoTextFieldItem( fieldName = stringResource(R.string.store_name), + autoInput = true, text = storeNameText, onTextChange = { storeNameText = it }, placeholder = stringResource(R.string.type_store_name) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt index 728cea57..e5a26b23 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt @@ -122,12 +122,14 @@ fun AddMenuInfoScreen(autoInput: Boolean = true) { AddMenuInfoTextFieldItem( fieldName = stringResource(R.string.menu_name), + autoInput = autoInput, text = menuNameText, onTextChange = { menuNameText = it }, placeholder = stringResource(R.string.type_menu_name) ) AddMenuInfoTextFieldItem( fieldName = stringResource(R.string.menu_price), + autoInput = autoInput, text = priceText, onTextChange = { priceText = it }, placeholder = stringResource(R.string.type_menu_price), @@ -136,11 +138,13 @@ fun AddMenuInfoScreen(autoInput: Boolean = true) { AddMenuInfoTextFieldItem( fieldName = stringResource(R.string.store_name), text = storeNameText, + autoInput = autoInput, onTextChange = { storeNameText = it }, placeholder = stringResource(R.string.type_store_name) ) AddMenuInfoAddressFieldItem( + autoInput = autoInput, mainAddressText = mainAddressText, onMainAddressChange = { mainAddressText = it }, detailedAddressText = detailedAddressText, @@ -156,6 +160,6 @@ fun AddMenuInfoScreen(autoInput: Boolean = true) { @Composable private fun AddMenuInfoScreenPreview() { //가게와 메뉴 직접 추가하기를 통해 해당 화면으로 오는 경우에는 인자로 false를 넘겨준다 - AddMenuInfoScreen(true) -// AddMenuInfoScreen(false) +// AddMenuInfoScreen(true) + AddMenuInfoScreen(false) } \ No newline at end of file From 797588401d8a0867e3ab51dec81d7910cb307ce7 Mon Sep 17 00:00:00 2001 From: casperjr Date: Sun, 2 Feb 2025 23:21:46 +0900 Subject: [PATCH 2/6] =?UTF-8?q?[ui]:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=EC=97=90=EC=84=9C=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=EB=90=9C=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=ED=85=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/AddMenuAddImageComponent.kt | 77 ++++++++++++++++ .../component/item/AddMenuAddedImageItem.kt | 91 +++++++++++++++++++ app/src/main/res/drawable/ic_addmenu_x.xml | 18 ++++ 3 files changed, 186 insertions(+) create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuAddedImageItem.kt create mode 100644 app/src/main/res/drawable/ic_addmenu_x.xml diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt new file mode 100644 index 00000000..ab7c4ebf --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt @@ -0,0 +1,77 @@ +package com.kuit.ourmenu.ui.addmenu.component + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.kuit.ourmenu.R +import com.kuit.ourmenu.ui.theme.Neutral300 +import com.kuit.ourmenu.ui.theme.Neutral500 +import com.kuit.ourmenu.ui.theme.ourMenuTypography + +@Composable +fun AddMenuAddImageComponent(modifier: Modifier = Modifier, imgList: List) { + Row(modifier = modifier + .fillMaxWidth() + ) { + Button( + onClick = { /*TODO*/ }, + modifier = modifier.size(88.dp, 72.dp), + shape = RoundedCornerShape(12.dp), + contentPadding = PaddingValues(0.dp), + colors = ButtonDefaults.buttonColors( + containerColor = Neutral300 + ) + ) { + Column( + modifier = modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Icon( + painter = painterResource(R.drawable.ic_addmenu_add_photo), + contentDescription = "add photo", + tint = Color.Unspecified + ) + Text( + text = "0/5", + style = ourMenuTypography().pretendard_500_12, + color = Neutral500 + ) + } + } + //메뉴 이미지 LazyRow 작성 예정 + LazyRow(modifier = modifier.fillMaxWidth()) { + + } + + } +} + +@Preview(showBackground = true) +@Composable +private fun AddMenuAddImageComponentPreview() { + val imgList = listOf( + R.drawable.img_dummy_pizza, + R.drawable.img_dummy_pizza, + R.drawable.img_dummy_pizza, + R.drawable.img_dummy_pizza, + R.drawable.img_dummy_pizza, + ) + AddMenuAddImageComponent(imgList = imgList) +} \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuAddedImageItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuAddedImageItem.kt new file mode 100644 index 00000000..41364937 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuAddedImageItem.kt @@ -0,0 +1,91 @@ +package com.kuit.ourmenu.ui.addmenu.component.item + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Card +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.kuit.ourmenu.R +import com.kuit.ourmenu.ui.theme.NeutralWhite +import com.kuit.ourmenu.ui.theme.Primary500Main +import com.kuit.ourmenu.ui.theme.ourMenuTypography + +@Composable +fun AddMenuAddedImageItem( + modifier: Modifier = Modifier, + img: Int, + isFirstItem: Boolean, + onDelete: () -> Unit +) { + Card( + modifier = modifier + .size(88.dp, 72.dp), + shape = RoundedCornerShape(12.dp) + ) { + Box(modifier = modifier.fillMaxSize()) { + Image( + modifier = modifier + .fillMaxSize() + .clip(RoundedCornerShape(12.dp)), + painter = painterResource(img), + contentDescription = "menu image", + contentScale = ContentScale.Crop + ) + + if (isFirstItem){ + Surface( + modifier = modifier + .align(Alignment.TopStart) + .padding(top = 4.dp, start = 6.dp) + .size(40.dp, 24.dp), + shape = RoundedCornerShape(8.dp), + color = NeutralWhite, + ) { + Box(modifier = modifier.fillMaxSize()) { + Text( + text = "대표", + color = Primary500Main, + style = ourMenuTypography().pretendard_600_14, + modifier = modifier.align(Alignment.Center) + ) + } + } + } + + Image( + modifier = modifier + .align(Alignment.TopEnd) + .padding(top = 7.dp, end = 6.dp), + painter = painterResource(R.drawable.ic_addmenu_x), + contentDescription = "menu image", + contentScale = ContentScale.Crop + ) + } + } +} + +@Preview(showBackground = true) +@Composable +private fun AddMenuAddedImageItemPreview() { + Column { + AddMenuAddedImageItem(img = R.drawable.img_dummy_pizza, isFirstItem = true) { + + } + AddMenuAddedImageItem(img = R.drawable.img_dummy_pizza, isFirstItem = false) { + + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_addmenu_x.xml b/app/src/main/res/drawable/ic_addmenu_x.xml new file mode 100644 index 00000000..edd82a02 --- /dev/null +++ b/app/src/main/res/drawable/ic_addmenu_x.xml @@ -0,0 +1,18 @@ + + + + From 7632d51f6d57e8106833b8be48f7f9789bc7c926 Mon Sep 17 00:00:00 2001 From: casperjr Date: Mon, 3 Feb 2025 01:54:29 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[feat]:=20AddMenuImageComponent=20LazyRow?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/AddMenuAddImageComponent.kt | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt index ab7c4ebf..c0f3058a 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt @@ -4,9 +4,11 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults @@ -20,12 +22,13 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.kuit.ourmenu.R +import com.kuit.ourmenu.ui.addmenu.component.item.AddMenuAddedImageItem import com.kuit.ourmenu.ui.theme.Neutral300 import com.kuit.ourmenu.ui.theme.Neutral500 import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable -fun AddMenuAddImageComponent(modifier: Modifier = Modifier, imgList: List) { +fun AddMenuAddImageComponent(modifier: Modifier = Modifier, imgList: List, onDelete: () -> Unit) { Row(modifier = modifier .fillMaxWidth() ) { @@ -55,8 +58,20 @@ fun AddMenuAddImageComponent(modifier: Modifier = Modifier, imgList: List) ) } } - //메뉴 이미지 LazyRow 작성 예정 + Spacer(modifier = modifier.size(8.dp)) LazyRow(modifier = modifier.fillMaxWidth()) { + itemsIndexed(imgList) { index, item -> + if (index == 0){ + AddMenuAddedImageItem(img = item, isFirstItem = true) { + //onDelete + } + }else{ + AddMenuAddedImageItem(img = item, isFirstItem = false) { + //onDelete + } + } + Spacer(modifier = modifier.size(8.dp)) + } } @@ -73,5 +88,7 @@ private fun AddMenuAddImageComponentPreview() { R.drawable.img_dummy_pizza, R.drawable.img_dummy_pizza, ) - AddMenuAddImageComponent(imgList = imgList) + AddMenuAddImageComponent(imgList = imgList){ + //onDelete + } } \ No newline at end of file From c58dc7826cddc4dc3318dda6366b03b653920e8f Mon Sep 17 00:00:00 2001 From: casperjr Date: Mon, 3 Feb 2025 02:13:35 +0900 Subject: [PATCH 4/6] =?UTF-8?q?[feat]:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/AddMenuAddImageComponent.kt | 28 +++++---- .../component/item/AddMenuAddedImageItem.kt | 8 ++- .../ui/addmenu/screen/AddMenuInfoScreen.kt | 59 ++++++------------- 3 files changed, 39 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt index c0f3058a..0f0825b7 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/AddMenuAddImageComponent.kt @@ -28,12 +28,17 @@ import com.kuit.ourmenu.ui.theme.Neutral500 import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable -fun AddMenuAddImageComponent(modifier: Modifier = Modifier, imgList: List, onDelete: () -> Unit) { - Row(modifier = modifier - .fillMaxWidth() +fun AddMenuAddImageComponent( + modifier: Modifier = Modifier, + imgList: List, + onDelete: (Int) -> Unit +) { + Row( + modifier = modifier + .fillMaxWidth() ) { Button( - onClick = { /*TODO*/ }, + onClick = { /*TODO: 이미지 추가*/ }, modifier = modifier.size(88.dp, 72.dp), shape = RoundedCornerShape(12.dp), contentPadding = PaddingValues(0.dp), @@ -52,7 +57,7 @@ fun AddMenuAddImageComponent(modifier: Modifier = Modifier, imgList: List, tint = Color.Unspecified ) Text( - text = "0/5", + text = "${imgList.size}/5", style = ourMenuTypography().pretendard_500_12, color = Neutral500 ) @@ -61,20 +66,18 @@ fun AddMenuAddImageComponent(modifier: Modifier = Modifier, imgList: List, Spacer(modifier = modifier.size(8.dp)) LazyRow(modifier = modifier.fillMaxWidth()) { itemsIndexed(imgList) { index, item -> - if (index == 0){ + if (index == 0) { AddMenuAddedImageItem(img = item, isFirstItem = true) { - //onDelete + onDelete(index) } - }else{ + } else { AddMenuAddedImageItem(img = item, isFirstItem = false) { - //onDelete + onDelete(index) } } Spacer(modifier = modifier.size(8.dp)) } - } - } } @@ -86,9 +89,8 @@ private fun AddMenuAddImageComponentPreview() { R.drawable.img_dummy_pizza, R.drawable.img_dummy_pizza, R.drawable.img_dummy_pizza, - R.drawable.img_dummy_pizza, ) - AddMenuAddImageComponent(imgList = imgList){ + AddMenuAddImageComponent(imgList = imgList) { //onDelete } } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuAddedImageItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuAddedImageItem.kt index 41364937..2f757b5a 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuAddedImageItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuAddedImageItem.kt @@ -1,6 +1,7 @@ package com.kuit.ourmenu.ui.addmenu.component.item import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize @@ -45,7 +46,7 @@ fun AddMenuAddedImageItem( contentScale = ContentScale.Crop ) - if (isFirstItem){ + if (isFirstItem) { Surface( modifier = modifier .align(Alignment.TopStart) @@ -68,7 +69,10 @@ fun AddMenuAddedImageItem( Image( modifier = modifier .align(Alignment.TopEnd) - .padding(top = 7.dp, end = 6.dp), + .padding(top = 7.dp, end = 6.dp) + .clickable { + onDelete() + }, painter = painterResource(R.drawable.ic_addmenu_x), contentDescription = "menu image", contentScale = ContentScale.Crop diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt index e5a26b23..90fc47a2 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt @@ -1,17 +1,10 @@ package com.kuit.ourmenu.ui.addmenu.screen -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -19,22 +12,18 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.kuit.ourmenu.R +import com.kuit.ourmenu.ui.addmenu.component.AddMenuAddImageComponent import com.kuit.ourmenu.ui.addmenu.component.item.AddMenuInfoAddressFieldItem import com.kuit.ourmenu.ui.addmenu.component.item.AddMenuInfoMenuBoardFieldItem import com.kuit.ourmenu.ui.addmenu.component.item.AddMenuInfoTextFieldItem import com.kuit.ourmenu.ui.common.BottomFullWidthButton import com.kuit.ourmenu.ui.common.topappbar.OurMenuBackButtonTopAppBar -import com.kuit.ourmenu.ui.theme.Neutral300 import com.kuit.ourmenu.ui.theme.Neutral400 -import com.kuit.ourmenu.ui.theme.Neutral500 import com.kuit.ourmenu.ui.theme.NeutralWhite import com.kuit.ourmenu.ui.theme.ourMenuTypography @@ -47,6 +36,16 @@ fun AddMenuInfoScreen(autoInput: Boolean = true) { var storeNameText by rememberSaveable { mutableStateOf("") } var mainAddressText by rememberSaveable { mutableStateOf("") } var detailedAddressText by rememberSaveable { mutableStateOf("") } + var imgList by rememberSaveable { + mutableStateOf( + listOf( + R.drawable.img_dummy_pizza, + R.drawable.img_dummy_pizza, + R.drawable.img_dummy_pizza, + R.drawable.img_dummy_pizza, + ) + ) + } Scaffold( modifier = Modifier.fillMaxSize(), @@ -80,38 +79,16 @@ fun AddMenuInfoScreen(autoInput: Boolean = true) { .padding(start = 20.dp, end = 20.dp) .fillMaxWidth() ) { - Row(modifier = Modifier - .fillMaxWidth() - .padding(vertical = 20.dp) + Row( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 20.dp) ) { - Button( - onClick = { /*TODO*/ }, - modifier = Modifier.size(88.dp, 72.dp), - shape = RoundedCornerShape(12.dp), - contentPadding = PaddingValues(0.dp), - colors = ButtonDefaults.buttonColors( - containerColor = Neutral300 - ) - ) { - Column( - modifier = Modifier.fillMaxWidth(), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center - ) { - Icon( - painter = painterResource(R.drawable.ic_addmenu_add_photo), - contentDescription = "add photo", - tint = Color.Unspecified - ) - Text( - text = "0/5", - style = ourMenuTypography().pretendard_500_12, - color = Neutral500 - ) + AddMenuAddImageComponent(imgList = imgList) { index -> + imgList = imgList.toMutableList().apply { + removeAt(index) } } - //메뉴 이미지 LazyRow 작성 예정 - } Column(modifier = Modifier.fillMaxWidth()) { From de8e0f8ebde53d14df803e51f998cbc481b464f7 Mon Sep 17 00:00:00 2001 From: casperjr Date: Mon, 3 Feb 2025 15:13:18 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[feat]:=20=EB=93=9C=EB=A1=AD=EB=8B=A4?= =?UTF-8?q?=EC=9A=B4=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../item/AddMenuInfoMenuBoardFieldItem.kt | 148 +++++++++++++----- .../ui/addmenu/screen/AddMenuInfoScreen.kt | 10 +- .../main/res/drawable/ic_dropdown_checked.xml | 16 ++ .../res/drawable/ic_dropdown_unchecked.xml | 11 ++ 4 files changed, 146 insertions(+), 39 deletions(-) create mode 100644 app/src/main/res/drawable/ic_dropdown_checked.xml create mode 100644 app/src/main/res/drawable/ic_dropdown_unchecked.xml diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoMenuBoardFieldItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoMenuBoardFieldItem.kt index 552d19e6..631ede49 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoMenuBoardFieldItem.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoMenuBoardFieldItem.kt @@ -1,19 +1,29 @@ package com.kuit.ourmenu.ui.addmenu.component.item +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.PaddingValues import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier @@ -26,24 +36,30 @@ import com.kuit.ourmenu.R import com.kuit.ourmenu.ui.common.CustomTextField import com.kuit.ourmenu.ui.theme.Neutral100 import com.kuit.ourmenu.ui.theme.Neutral300 +import com.kuit.ourmenu.ui.theme.Neutral400 import com.kuit.ourmenu.ui.theme.Neutral500 import com.kuit.ourmenu.ui.theme.Neutral700 +import com.kuit.ourmenu.ui.theme.NeutralWhite import com.kuit.ourmenu.ui.theme.Primary500Main import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun AddMenuInfoMenuBoardFieldItem( - text: String, - onTextChange: (String) -> Unit, + modifier: Modifier = Modifier, + options: List, + selectedOption: String, + onSelectedOptionChange: (String) -> Unit ) { + var expanded by remember { mutableStateOf(false) } + Column( - modifier = Modifier + modifier = modifier .fillMaxWidth() .padding(bottom = 20.dp), verticalArrangement = Arrangement.Center, ) { Row( - modifier = Modifier + modifier = modifier .fillMaxWidth() .padding(bottom = 4.dp) ) { @@ -57,43 +73,103 @@ fun AddMenuInfoMenuBoardFieldItem( color = Primary500Main ) } - //드롭다운으로 수정할 예정 - CustomTextField( - modifier = Modifier - .fillMaxWidth() - .height(44.dp) - .border(1.dp, Neutral300, RoundedCornerShape(8.dp)), - text = text, - onTextChange = onTextChange, - shape = RoundedCornerShape(8.dp), - paddingValues = PaddingValues(start = 28.dp, top = 12.dp, bottom = 12.dp), - containerColor = Neutral100, - placeHolder = { - Text( - text = stringResource(R.string.save_menuboard), - style = ourMenuTypography().pretendard_500_14, - color = Neutral500 - ) - }, - textStyle = ourMenuTypography().pretendard_700_14.copy(color = Neutral700), - trailingIcon = { - Icon( - painter = painterResource(R.drawable.ic_searchbar_search), - contentDescription = "search icon", - tint = Color.Unspecified - ) - } - ) + Box(modifier = modifier.fillMaxWidth()) { + CustomTextField( + modifier = Modifier + .fillMaxWidth() + .height(44.dp) + .border(1.dp, Neutral300, RoundedCornerShape(8.dp)) + .padding(end = 6.dp) + .clickable { + expanded = true + }, + text = selectedOption, + onTextChange = {}, + shape = RoundedCornerShape(8.dp), + paddingValues = PaddingValues(start = 28.dp, top = 12.dp, bottom = 12.dp), + containerColor = Neutral100, + placeHolder = { + Text( + text = stringResource(R.string.save_menuboard), + style = ourMenuTypography().pretendard_500_14, + color = Neutral500 + ) + }, + enabled = false, + textStyle = ourMenuTypography().pretendard_700_14.copy(color = Neutral700), + trailingIcon = { + Button( + modifier = modifier.size(44.dp, 32.dp), + onClick = { + if(expanded) expanded = false + }, + shape = RoundedCornerShape(8.dp), + colors = ButtonDefaults.buttonColors(if (selectedOption.isBlank()) Neutral400 else Primary500Main), + contentPadding = PaddingValues(0.dp) + ) { + Text( + text = "확인", + style = ourMenuTypography().pretendard_700_12.copy( + color = NeutralWhite + ) + ) + } + } + ) + DropdownMenu( + modifier = modifier + .fillMaxWidth() + .background(color = NeutralWhite, shape = RoundedCornerShape(8.dp)), + expanded = expanded, + onDismissRequest = { expanded = false } + ) { + options.forEach { option -> + val isSelected = option == selectedOption + DropdownMenuItem( + modifier = modifier + .fillMaxWidth() + .background( + color = if (isSelected) Neutral300 else NeutralWhite, + shape = RoundedCornerShape(8.dp) + ), + text = { + Row(modifier = modifier.fillMaxWidth()) { + Icon( + painter = painterResource(if (isSelected) R.drawable.ic_dropdown_checked else R.drawable.ic_dropdown_unchecked), + contentDescription = "check icon", + tint = Color.Unspecified + ) + + Text( + text = option, + style = ourMenuTypography().pretendard_700_14.copy( + color = if (isSelected) Neutral700 else Neutral500 + ) + ) + } + }, + onClick = { + onSelectedOptionChange(option) + } + ) + } + } + } } } @Preview(showBackground = true) @Composable private fun AddMenuInfoMenuBoardFieldItemPreview() { - var text by rememberSaveable { mutableStateOf("") } - AddMenuInfoMenuBoardFieldItem( - text = text, - onTextChange = { text = it } - ) + var options = listOf("옵션1", "옵션2", "옵션3") + var selectedOption by rememberSaveable { mutableStateOf("") } + Column(modifier = Modifier.fillMaxSize()) { + AddMenuInfoMenuBoardFieldItem( + options = options, + selectedOption = selectedOption + ){ + selectedOption = it + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt index 90fc47a2..caf1511b 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/addmenu/screen/AddMenuInfoScreen.kt @@ -46,6 +46,8 @@ fun AddMenuInfoScreen(autoInput: Boolean = true) { ) ) } + var options = listOf("옵션1", "옵션2", "옵션3") + var selectedOption by rememberSaveable { mutableStateOf("") } Scaffold( modifier = Modifier.fillMaxSize(), @@ -93,9 +95,11 @@ fun AddMenuInfoScreen(autoInput: Boolean = true) { Column(modifier = Modifier.fillMaxWidth()) { AddMenuInfoMenuBoardFieldItem( - text = menuBoardText, - onTextChange = { menuBoardText = it } - ) + options = options, + selectedOption = selectedOption + ){ + selectedOption = it + } AddMenuInfoTextFieldItem( fieldName = stringResource(R.string.menu_name), diff --git a/app/src/main/res/drawable/ic_dropdown_checked.xml b/app/src/main/res/drawable/ic_dropdown_checked.xml new file mode 100644 index 00000000..61e554c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_dropdown_checked.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/ic_dropdown_unchecked.xml b/app/src/main/res/drawable/ic_dropdown_unchecked.xml new file mode 100644 index 00000000..f3fdbfa1 --- /dev/null +++ b/app/src/main/res/drawable/ic_dropdown_unchecked.xml @@ -0,0 +1,11 @@ + + + From 7657a3dc024d5219f2daa3e0299c720c6cf9f52b Mon Sep 17 00:00:00 2001 From: casperjr Date: Mon, 3 Feb 2025 18:23:39 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[feat]:=20navigation=20=EA=B8=B0=EB=B3=B8?= =?UTF-8?q?=ED=99=98=EA=B2=BD=20=EA=B5=AC=EC=B6=95(30)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 1 + .../main/java/com/kuit/ourmenu/MainActivity.kt | 4 ++++ .../kuit/ourmenu/ui/home/screen/HomeScreen.kt | 9 ++++++--- .../kuit/ourmenu/ui/navigator/MainNavGraph.kt | 16 ++++++++++++++++ .../java/com/kuit/ourmenu/ui/navigator/Routes.kt | 12 ++++++++++++ gradle/libs.versions.toml | 2 ++ 6 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f702414f..e008010b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -51,6 +51,7 @@ dependencies { implementation(libs.androidx.material3) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.lifecycle.runtime.compose.android) + implementation(libs.androidx.navigation.compose) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) diff --git a/app/src/main/java/com/kuit/ourmenu/MainActivity.kt b/app/src/main/java/com/kuit/ourmenu/MainActivity.kt index b420ea7c..1f534d8d 100644 --- a/app/src/main/java/com/kuit/ourmenu/MainActivity.kt +++ b/app/src/main/java/com/kuit/ourmenu/MainActivity.kt @@ -8,6 +8,8 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.navigation.compose.rememberNavController +import com.kuit.ourmenu.ui.navigator.MainNavGraph import com.kuit.ourmenu.ui.onboarding.screen.SplashScreen import com.kuit.ourmenu.ui.theme.OurMenuTheme @@ -17,6 +19,7 @@ class MainActivity : ComponentActivity() { enableEdgeToEdge() setContent { var showSplash by remember { mutableStateOf(true) } + val navController = rememberNavController() OurMenuTheme { if (showSplash) { @@ -25,6 +28,7 @@ class MainActivity : ComponentActivity() { } } else { // TODO: MainNavigation 추가하기 + MainNavGraph(navController = navController) } } } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 723e0603..64adadc1 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -12,13 +12,15 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.kuit.ourmenu.ui.home.component.recommendation.sub.HomeSubRecommendation +import androidx.navigation.NavHostController +import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.ui.common.topappbar.OurMenuAddButtonTopAppBar import com.kuit.ourmenu.ui.home.component.recommendation.main.HomeMainRecommendation +import com.kuit.ourmenu.ui.home.component.recommendation.sub.HomeSubRecommendation import com.kuit.ourmenu.ui.home.dummy.HomeDummyData @Composable -fun HomeScreen(modifier: Modifier = Modifier) { +fun HomeScreen(modifier: Modifier = Modifier, navController: NavHostController) { val scrollState = rememberScrollState() @@ -66,5 +68,6 @@ fun HomeScreen(modifier: Modifier = Modifier) { ) @Composable private fun HomeScreenPreview() { - HomeScreen() + val navController = rememberNavController() + HomeScreen(navController = navController) } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt new file mode 100644 index 00000000..8f66439e --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt @@ -0,0 +1,16 @@ +package com.kuit.ourmenu.ui.navigator + +import androidx.compose.runtime.Composable +import androidx.navigation.NavHostController +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import com.kuit.ourmenu.ui.home.screen.HomeScreen + +@Composable +fun MainNavGraph(navController: NavHostController) { + NavHost(navController, startDestination = Routes.Home) { + composable{ + HomeScreen(navController = navController) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt new file mode 100644 index 00000000..556869a5 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt @@ -0,0 +1,12 @@ +package com.kuit.ourmenu.ui.navigator + +sealed interface Routes{ + // Home + data object Home: Routes + + // 지도 + + // 메뉴판 + + // Mypage +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fff6a216..03f066c3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,6 +11,7 @@ composeBom = "2024.04.01" lifecycleViewmodel = "2.9.0-alpha08" lifecycleViewmodelCompose = "2.9.0-alpha08" lifecycleRuntimeComposeAndroid = "2.8.7" +navigationCompose = "2.8.6" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -30,6 +31,7 @@ androidx-material3 = { group = "androidx.compose.material3", name = "material3" androidx-lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "lifecycleViewmodel" } androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycleViewmodelCompose" } androidx-lifecycle-runtime-compose-android = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose-android", version.ref = "lifecycleRuntimeComposeAndroid" } +androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" }