Skip to content

Commit a7c7c8f

Browse files
authored
Merge #54 -> develop
[Mod/#54] GUI 반영
2 parents 8f187c9 + 4bfd9c5 commit a7c7c8f

File tree

7 files changed

+364
-193
lines changed

7 files changed

+364
-193
lines changed

app/src/main/java/com/paw/key/core/designsystem/component/CourseDetail.kt

Lines changed: 193 additions & 134 deletions
Large diffs are not rendered by default.
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.paw.key.core.designsystem.component
2+
3+
import androidx.compose.foundation.background
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.Spacer
8+
import androidx.compose.foundation.layout.fillMaxSize
9+
import androidx.compose.foundation.layout.fillMaxWidth
10+
import androidx.compose.foundation.layout.height
11+
import androidx.compose.foundation.layout.padding
12+
import androidx.compose.foundation.layout.size
13+
import androidx.compose.foundation.layout.wrapContentSize
14+
import androidx.compose.material.icons.Icons
15+
import androidx.compose.material.icons.filled.Close
16+
import androidx.compose.material3.Icon
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.layout.ContentScale
22+
import androidx.compose.ui.platform.LocalContext
23+
import androidx.compose.ui.tooling.preview.Preview
24+
import androidx.compose.ui.unit.dp
25+
import coil.compose.AsyncImage
26+
27+
import androidx.compose.ui.window.Dialog
28+
import coil.request.ImageRequest
29+
import com.paw.key.core.designsystem.theme.PawKeyTheme
30+
31+
@Composable
32+
fun ImageModal(
33+
imageUrl: String,
34+
onDismiss: () -> Unit
35+
) {
36+
Dialog(onDismissRequest = onDismiss) {
37+
Column(
38+
modifier = Modifier
39+
.padding(16.dp)
40+
.size(width = 328.dp, height = 228.dp)
41+
.wrapContentSize(),
42+
horizontalAlignment = Alignment.End
43+
) {
44+
Icon(
45+
imageVector = Icons.Default.Close,
46+
contentDescription = "닫기",
47+
tint = Color.White,
48+
modifier = Modifier
49+
.align(Alignment.End)
50+
.clickable { onDismiss() }
51+
.padding(bottom = 8.dp)
52+
.size(24.dp)
53+
)
54+
AsyncImage(
55+
model = ImageRequest.Builder(LocalContext.current)
56+
.data("https://pawkey-server.com/image.jpg") // ← 서버에서 받은 이미지 URL 넣깅
57+
.crossfade(true)
58+
.build(),
59+
contentDescription = null,
60+
modifier = Modifier
61+
)
62+
}
63+
}
64+
}
65+
66+
@Preview(showBackground = true)
67+
@Composable
68+
fun ImageModalPreview() {
69+
PawKeyTheme {
70+
ImageModal(
71+
imageUrl = "https://pawkey-server.com/image.jpg",
72+
onDismiss = {}
73+
)
74+
}
75+
}
Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
package com.paw.key.presentation.ui.mypage
22

3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Box
35
import androidx.compose.foundation.layout.Column
6+
import androidx.compose.foundation.layout.fillMaxSize
47
import androidx.compose.foundation.layout.fillMaxWidth
58
import androidx.compose.foundation.layout.padding
6-
import androidx.compose.foundation.rememberScrollState
7-
import androidx.compose.foundation.verticalScroll
9+
import androidx.compose.foundation.lazy.LazyColumn
810
import androidx.compose.material3.SnackbarHostState
911
import androidx.compose.runtime.Composable
12+
import androidx.compose.runtime.getValue
13+
import androidx.compose.runtime.mutableStateOf
14+
import androidx.compose.runtime.remember
15+
import androidx.compose.runtime.setValue
1016
import androidx.compose.ui.Modifier
1117
import androidx.compose.ui.tooling.preview.Preview
1218
import androidx.compose.ui.unit.dp
1319
import com.paw.key.core.designsystem.component.CourseDetail
20+
import com.paw.key.core.designsystem.component.ImageModal
1421
import com.paw.key.core.designsystem.component.PawkeyButton
1522
import com.paw.key.core.designsystem.theme.PawKeyTheme
16-
import com.paw.key.presentation.ui.mypage.ArchivedCourseDetailScreen
23+
import com.paw.key.core.designsystem.theme.White1
1724

1825
@Composable
1926
fun ArchivedDetailRoute(
@@ -25,34 +32,49 @@ fun ArchivedDetailRoute(
2532
modifier = modifier
2633
)
2734
}
35+
2836
@Composable
2937
fun ArchivedCourseDetailScreen(
3038
navigateUp: () -> Unit,
3139
modifier: Modifier = Modifier
3240
){
33-
Column(
34-
modifier = Modifier
35-
.fillMaxWidth()
36-
.padding(16.dp)
37-
.verticalScroll(rememberScrollState())
38-
) {
39-
CourseDetail(
40-
title = "한강 산책로",
41-
petName = "후추",
42-
date = "2025/06/02",
43-
location = "뚝섬유원지",
44-
distance = "4.5km",
45-
option = listOf("풍경이 좋아요", "조용해요", "길이 깨끗해요"),
46-
time = "1시간 30분 소요"
47-
)
48-
PawkeyButton(
49-
text = "해당 루트로 산책하기",
50-
enabled = true,
51-
onClick = {},
52-
modifier = Modifier
41+
var isImageExpanded by remember { mutableStateOf(false) }
42+
43+
Box(modifier = Modifier.fillMaxSize()) {
44+
LazyColumn(
45+
modifier = modifier
5346
.fillMaxWidth()
54-
.padding(top = 16.dp)
55-
)
47+
.padding(16.dp)
48+
.background(color = White1)
49+
) {
50+
item {
51+
CourseDetail(
52+
title = "한강 산책로",
53+
petName = "후추",
54+
date = "2025/06/02",
55+
location = "뚝섬유원지",
56+
distance = "4.5km",
57+
option = listOf("풍경이 좋아요", "조용해요", "길이 깨끗해요"),
58+
time = "1시간 30분 소요",
59+
onImageClick = { isImageExpanded = true } // ← 콜백 전달
60+
)
61+
PawkeyButton(
62+
text = "해당 루트로 산책하기",
63+
enabled = true,
64+
onClick = {},
65+
modifier = Modifier
66+
.fillMaxWidth()
67+
.padding(top = 16.dp)
68+
)
69+
}
70+
}
71+
72+
if (isImageExpanded) {
73+
ImageModal(
74+
imageUrl = "https://pawkey-server.com/image.jpg",
75+
onDismiss = { isImageExpanded = false }
76+
)
77+
}
5678
}
5779
}
5880

@@ -62,4 +84,4 @@ fun ArchivedCourseDetailPreview(){
6284
PawKeyTheme {
6385
ArchivedCourseDetailScreen(navigateUp = {})
6486
}
65-
}
87+
}

app/src/main/java/com/paw/key/presentation/ui/mypage/ArchivedCourseListScreen.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,7 @@ fun ArchivedCourseListScreen(
8888
CourseCard(
8989
title = course.title,
9090
petName = course.petName,
91-
date = course.date,
92-
location = course.location,
93-
distance = course.distance,
94-
time = course.time
91+
date = course.date
9592
)
9693
}
9794
}

app/src/main/java/com/paw/key/presentation/ui/mypage/SavedCourseDetailScreen.kt

Lines changed: 45 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
package com.paw.key.presentation.ui.mypage
22

3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Box
35
import androidx.compose.foundation.layout.Column
4-
import androidx.compose.foundation.layout.PaddingValues
56
import androidx.compose.foundation.layout.fillMaxSize
67
import androidx.compose.foundation.layout.fillMaxWidth
78
import androidx.compose.foundation.layout.padding
89
import androidx.compose.foundation.lazy.LazyColumn
9-
import androidx.compose.foundation.rememberScrollState
10-
import androidx.compose.foundation.verticalScroll
1110
import androidx.compose.material3.SnackbarHostState
1211
import androidx.compose.runtime.Composable
12+
import androidx.compose.runtime.getValue
13+
import androidx.compose.runtime.mutableStateOf
14+
import androidx.compose.runtime.remember
15+
import androidx.compose.runtime.setValue
1316
import androidx.compose.ui.Modifier
1417
import androidx.compose.ui.tooling.preview.Preview
1518
import androidx.compose.ui.unit.dp
1619
import com.paw.key.core.designsystem.component.CourseDetail
20+
import com.paw.key.core.designsystem.component.ImageModal
1721
import com.paw.key.core.designsystem.component.PawkeyButton
1822
import com.paw.key.core.designsystem.theme.PawKeyTheme
23+
import com.paw.key.core.designsystem.theme.White1
1924

2025
@Composable
2126
fun SavedDetailRoute(
@@ -28,34 +33,49 @@ fun SavedDetailRoute(
2833
modifier = modifier
2934
)
3035
}
36+
3137
@Composable
3238
fun SavedCourseDetailScreen(
3339
navigateUp: () -> Unit,
3440
modifier: Modifier = Modifier
3541
){
36-
Column(
37-
modifier = Modifier
38-
.fillMaxWidth()
39-
.padding(16.dp)
40-
.verticalScroll(rememberScrollState())
41-
) {
42-
CourseDetail(
43-
title = "한강 산책로",
44-
petName = "후추",
45-
date = "2025/06/02",
46-
location = "뚝섬유원지",
47-
distance = "4.5km",
48-
option = listOf("풍경이 좋아요", "조용해요", "길이 깨끗해요"),
49-
time = "1시간 30분 소요"
50-
)
51-
PawkeyButton(
52-
text = "해당 루트로 산책하기",
53-
enabled = true,
54-
onClick = {},
55-
modifier = Modifier
42+
var isImageExpanded by remember { mutableStateOf(false) }
43+
44+
Box(modifier = Modifier.fillMaxSize()) {
45+
LazyColumn(
46+
modifier = modifier
5647
.fillMaxWidth()
57-
.padding(top = 16.dp)
58-
)
48+
.padding(16.dp)
49+
.background(color = White1)
50+
) {
51+
item {
52+
CourseDetail(
53+
title = "한강 산책로",
54+
petName = "후추",
55+
date = "2025/06/02",
56+
location = "뚝섬유원지",
57+
distance = "4.5km",
58+
option = listOf("풍경이 좋아요", "조용해요", "길이 깨끗해요"),
59+
time = "1시간 30분 소요",
60+
onImageClick = { isImageExpanded = true } // ← 콜백 전달
61+
)
62+
PawkeyButton(
63+
text = "해당 루트로 산책하기",
64+
enabled = true,
65+
onClick = {},
66+
modifier = Modifier
67+
.fillMaxWidth()
68+
.padding(top = 16.dp)
69+
)
70+
}
71+
}
72+
73+
if (isImageExpanded) {
74+
ImageModal(
75+
imageUrl = "https://pawkey-server.com/image.jpg",
76+
onDismiss = { isImageExpanded = false }
77+
)
78+
}
5979
}
6080
}
6181

app/src/main/java/com/paw/key/presentation/ui/mypage/SavedCourseListScreen.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,7 @@ fun SavedCourseListScreen(
110110
CourseCard(
111111
title = course.title,
112112
petName = course.petName,
113-
date = course.date,
114-
location = course.location,
115-
distance = course.distance,
116-
time = course.time
113+
date = course.date
117114
)
118115
}
119116
}

app/src/main/java/com/paw/key/presentation/ui/mypage/navigation/ArchivedDetailNavigation.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ fun NavController.navigateArchivedDetail(
2323
fun NavGraphBuilder.archivedDetailNavGraph(
2424
navigateUp: () -> Unit,
2525
modifier: Modifier = Modifier,
26+
2627
) {
2728
composable<ArchivedDetail> {
2829
ArchivedDetailRoute(

0 commit comments

Comments
 (0)