Skip to content

Commit d812309

Browse files
authored
Merge pull request #31 from casper-jr/feat/navigation
[FEAT] navigation 사용환경 구축
2 parents 851b7d7 + 7657a3d commit d812309

15 files changed

Lines changed: 426 additions & 86 deletions

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ dependencies {
5151
implementation(libs.androidx.material3)
5252
implementation(libs.androidx.lifecycle.viewmodel.compose)
5353
implementation(libs.androidx.lifecycle.runtime.compose.android)
54+
implementation(libs.androidx.navigation.compose)
5455
testImplementation(libs.junit)
5556
androidTestImplementation(libs.androidx.junit)
5657
androidTestImplementation(libs.androidx.espresso.core)

app/src/main/java/com/kuit/ourmenu/MainActivity.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import androidx.compose.runtime.getValue
88
import androidx.compose.runtime.mutableStateOf
99
import androidx.compose.runtime.remember
1010
import androidx.compose.runtime.setValue
11+
import androidx.navigation.compose.rememberNavController
12+
import com.kuit.ourmenu.ui.navigator.MainNavGraph
1113
import com.kuit.ourmenu.ui.onboarding.screen.SplashScreen
1214
import com.kuit.ourmenu.ui.theme.OurMenuTheme
1315

@@ -17,6 +19,7 @@ class MainActivity : ComponentActivity() {
1719
enableEdgeToEdge()
1820
setContent {
1921
var showSplash by remember { mutableStateOf(true) }
22+
val navController = rememberNavController()
2023

2124
OurMenuTheme {
2225
if (showSplash) {
@@ -25,6 +28,7 @@ class MainActivity : ComponentActivity() {
2528
}
2629
} else {
2730
// TODO: MainNavigation 추가하기
31+
MainNavGraph(navController = navController)
2832
}
2933
}
3034
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package com.kuit.ourmenu.ui.addmenu.component
2+
3+
import androidx.compose.foundation.layout.Arrangement
4+
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.PaddingValues
6+
import androidx.compose.foundation.layout.Row
7+
import androidx.compose.foundation.layout.Spacer
8+
import androidx.compose.foundation.layout.fillMaxWidth
9+
import androidx.compose.foundation.layout.size
10+
import androidx.compose.foundation.lazy.LazyRow
11+
import androidx.compose.foundation.lazy.itemsIndexed
12+
import androidx.compose.foundation.shape.RoundedCornerShape
13+
import androidx.compose.material3.Button
14+
import androidx.compose.material3.ButtonDefaults
15+
import androidx.compose.material3.Icon
16+
import androidx.compose.material3.Text
17+
import androidx.compose.runtime.Composable
18+
import androidx.compose.ui.Alignment
19+
import androidx.compose.ui.Modifier
20+
import androidx.compose.ui.graphics.Color
21+
import androidx.compose.ui.res.painterResource
22+
import androidx.compose.ui.tooling.preview.Preview
23+
import androidx.compose.ui.unit.dp
24+
import com.kuit.ourmenu.R
25+
import com.kuit.ourmenu.ui.addmenu.component.item.AddMenuAddedImageItem
26+
import com.kuit.ourmenu.ui.theme.Neutral300
27+
import com.kuit.ourmenu.ui.theme.Neutral500
28+
import com.kuit.ourmenu.ui.theme.ourMenuTypography
29+
30+
@Composable
31+
fun AddMenuAddImageComponent(
32+
modifier: Modifier = Modifier,
33+
imgList: List<Int>,
34+
onDelete: (Int) -> Unit
35+
) {
36+
Row(
37+
modifier = modifier
38+
.fillMaxWidth()
39+
) {
40+
Button(
41+
onClick = { /*TODO: 이미지 추가*/ },
42+
modifier = modifier.size(88.dp, 72.dp),
43+
shape = RoundedCornerShape(12.dp),
44+
contentPadding = PaddingValues(0.dp),
45+
colors = ButtonDefaults.buttonColors(
46+
containerColor = Neutral300
47+
)
48+
) {
49+
Column(
50+
modifier = modifier.fillMaxWidth(),
51+
horizontalAlignment = Alignment.CenterHorizontally,
52+
verticalArrangement = Arrangement.Center
53+
) {
54+
Icon(
55+
painter = painterResource(R.drawable.ic_addmenu_add_photo),
56+
contentDescription = "add photo",
57+
tint = Color.Unspecified
58+
)
59+
Text(
60+
text = "${imgList.size}/5",
61+
style = ourMenuTypography().pretendard_500_12,
62+
color = Neutral500
63+
)
64+
}
65+
}
66+
Spacer(modifier = modifier.size(8.dp))
67+
LazyRow(modifier = modifier.fillMaxWidth()) {
68+
itemsIndexed(imgList) { index, item ->
69+
if (index == 0) {
70+
AddMenuAddedImageItem(img = item, isFirstItem = true) {
71+
onDelete(index)
72+
}
73+
} else {
74+
AddMenuAddedImageItem(img = item, isFirstItem = false) {
75+
onDelete(index)
76+
}
77+
}
78+
Spacer(modifier = modifier.size(8.dp))
79+
}
80+
}
81+
}
82+
}
83+
84+
@Preview(showBackground = true)
85+
@Composable
86+
private fun AddMenuAddImageComponentPreview() {
87+
val imgList = listOf(
88+
R.drawable.img_dummy_pizza,
89+
R.drawable.img_dummy_pizza,
90+
R.drawable.img_dummy_pizza,
91+
R.drawable.img_dummy_pizza,
92+
)
93+
AddMenuAddImageComponent(imgList = imgList) {
94+
//onDelete
95+
}
96+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package com.kuit.ourmenu.ui.addmenu.component.item
2+
3+
import androidx.compose.foundation.Image
4+
import androidx.compose.foundation.clickable
5+
import androidx.compose.foundation.layout.Box
6+
import androidx.compose.foundation.layout.Column
7+
import androidx.compose.foundation.layout.fillMaxSize
8+
import androidx.compose.foundation.layout.padding
9+
import androidx.compose.foundation.layout.size
10+
import androidx.compose.foundation.shape.RoundedCornerShape
11+
import androidx.compose.material3.Card
12+
import androidx.compose.material3.Surface
13+
import androidx.compose.material3.Text
14+
import androidx.compose.runtime.Composable
15+
import androidx.compose.ui.Alignment
16+
import androidx.compose.ui.Modifier
17+
import androidx.compose.ui.draw.clip
18+
import androidx.compose.ui.layout.ContentScale
19+
import androidx.compose.ui.res.painterResource
20+
import androidx.compose.ui.tooling.preview.Preview
21+
import androidx.compose.ui.unit.dp
22+
import com.kuit.ourmenu.R
23+
import com.kuit.ourmenu.ui.theme.NeutralWhite
24+
import com.kuit.ourmenu.ui.theme.Primary500Main
25+
import com.kuit.ourmenu.ui.theme.ourMenuTypography
26+
27+
@Composable
28+
fun AddMenuAddedImageItem(
29+
modifier: Modifier = Modifier,
30+
img: Int,
31+
isFirstItem: Boolean,
32+
onDelete: () -> Unit
33+
) {
34+
Card(
35+
modifier = modifier
36+
.size(88.dp, 72.dp),
37+
shape = RoundedCornerShape(12.dp)
38+
) {
39+
Box(modifier = modifier.fillMaxSize()) {
40+
Image(
41+
modifier = modifier
42+
.fillMaxSize()
43+
.clip(RoundedCornerShape(12.dp)),
44+
painter = painterResource(img),
45+
contentDescription = "menu image",
46+
contentScale = ContentScale.Crop
47+
)
48+
49+
if (isFirstItem) {
50+
Surface(
51+
modifier = modifier
52+
.align(Alignment.TopStart)
53+
.padding(top = 4.dp, start = 6.dp)
54+
.size(40.dp, 24.dp),
55+
shape = RoundedCornerShape(8.dp),
56+
color = NeutralWhite,
57+
) {
58+
Box(modifier = modifier.fillMaxSize()) {
59+
Text(
60+
text = "대표",
61+
color = Primary500Main,
62+
style = ourMenuTypography().pretendard_600_14,
63+
modifier = modifier.align(Alignment.Center)
64+
)
65+
}
66+
}
67+
}
68+
69+
Image(
70+
modifier = modifier
71+
.align(Alignment.TopEnd)
72+
.padding(top = 7.dp, end = 6.dp)
73+
.clickable {
74+
onDelete()
75+
},
76+
painter = painterResource(R.drawable.ic_addmenu_x),
77+
contentDescription = "menu image",
78+
contentScale = ContentScale.Crop
79+
)
80+
}
81+
}
82+
}
83+
84+
@Preview(showBackground = true)
85+
@Composable
86+
private fun AddMenuAddedImageItemPreview() {
87+
Column {
88+
AddMenuAddedImageItem(img = R.drawable.img_dummy_pizza, isFirstItem = true) {
89+
90+
}
91+
AddMenuAddedImageItem(img = R.drawable.img_dummy_pizza, isFirstItem = false) {
92+
93+
}
94+
}
95+
}

app/src/main/java/com/kuit/ourmenu/ui/addmenu/component/item/AddMenuInfoAddressFieldItem.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography
3131

3232
@Composable
3333
fun AddMenuInfoAddressFieldItem(
34+
autoInput: Boolean,
3435
mainAddressText: String,
3536
detailedAddressText: String,
3637
onMainAddressChange: (String) -> Unit,
@@ -107,6 +108,7 @@ private fun AddMenuInfoAddressFieldItemPreview() {
107108
var mainAddressText by rememberSaveable { mutableStateOf("") }
108109
var detailedAddressText by rememberSaveable { mutableStateOf("") }
109110
AddMenuInfoAddressFieldItem(
111+
autoInput = true,
110112
mainAddressText = mainAddressText,
111113
detailedAddressText = detailedAddressText,
112114
onMainAddressChange = { mainAddressText = it },

0 commit comments

Comments
 (0)