Skip to content

Commit 7290e23

Browse files
committed
💄 rule picker 레이아웃 변경
1 parent 1786f61 commit 7290e23

File tree

4 files changed

+132
-37
lines changed

4 files changed

+132
-37
lines changed

domain/src/main/java/com/whyranoid/domain/model/Rule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ data class Rule(
66
val minute: Int
77
) {
88
override fun toString(): String {
9-
return "${dayOfWeek.dayResId}-$hour-$minute"
9+
return "${dayOfWeek.dayResId}요일${hour}${minute}"
1010
}
1111
}
1212

presentation/src/main/java/com/whyranoid/presentation/compose/DropDownMenu.kt

Lines changed: 56 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package com.whyranoid.presentation.compose
22

3-
import androidx.compose.foundation.layout.wrapContentSize
3+
import androidx.compose.foundation.layout.height
4+
import androidx.compose.foundation.layout.wrapContentHeight
5+
import androidx.compose.foundation.layout.wrapContentWidth
6+
import androidx.compose.foundation.shape.RoundedCornerShape
47
import androidx.compose.material.Button
8+
import androidx.compose.material.ButtonDefaults
59
import androidx.compose.material.DropdownMenu
610
import androidx.compose.material.DropdownMenuItem
711
import androidx.compose.material.Text
@@ -11,25 +15,40 @@ import androidx.compose.runtime.mutableStateOf
1115
import androidx.compose.runtime.remember
1216
import androidx.compose.runtime.setValue
1317
import androidx.compose.ui.Modifier
18+
import androidx.compose.ui.res.colorResource
1419
import androidx.compose.ui.res.stringArrayResource
20+
import androidx.compose.ui.res.stringResource
21+
import androidx.compose.ui.unit.dp
1522
import com.whyranoid.presentation.R
1623

1724
@Composable
1825
fun DateDropDownMenu(
1926
selectedDate: String,
2027
onDateSelected: (String) -> Unit
2128
) {
29+
val dateText = stringResource(id = R.string.text_date)
2230
val dateList = stringArrayResource(id = R.array.rule_date_array)
2331
var isDropDownMenuExpanded by remember { mutableStateOf(false) }
2432
Button(
25-
onClick = { isDropDownMenuExpanded = true }
33+
onClick = { isDropDownMenuExpanded = true },
34+
colors = ButtonDefaults
35+
.outlinedButtonColors(
36+
contentColor = colorResource(id = R.color.mogakrun_on_primary)
37+
),
38+
shape = RoundedCornerShape(30),
39+
elevation = ButtonDefaults.elevation(
40+
defaultElevation = 2.dp,
41+
pressedElevation = 4.dp,
42+
disabledElevation = 0.dp
43+
)
2644
) {
27-
Text(text = selectedDate)
45+
Text(text = selectedDate + dateText)
2846
}
2947

3048
DropdownMenu(
3149
modifier = Modifier
32-
.wrapContentSize(),
50+
.wrapContentWidth()
51+
.wrapContentHeight(),
3352
expanded = isDropDownMenuExpanded,
3453
onDismissRequest = { isDropDownMenuExpanded = false }
3554
) {
@@ -38,7 +57,7 @@ fun DateDropDownMenu(
3857
onDateSelected(date)
3958
isDropDownMenuExpanded = false
4059
}) {
41-
Text(text = date)
60+
Text(text = date + dateText)
4261
}
4362
}
4463
}
@@ -49,17 +68,29 @@ fun HourDropDownMenu(
4968
selectedHour: String,
5069
onHourSelected: (String) -> Unit
5170
) {
71+
val hourText = stringResource(id = R.string.text_hour)
5272
val hourList = stringArrayResource(id = R.array.rule_hour_array)
5373
var isDropDownMenuExpanded by remember { mutableStateOf(false) }
5474
Button(
55-
onClick = { isDropDownMenuExpanded = true }
75+
onClick = { isDropDownMenuExpanded = true },
76+
colors = ButtonDefaults
77+
.outlinedButtonColors(
78+
contentColor = colorResource(id = R.color.mogakrun_on_primary)
79+
),
80+
shape = RoundedCornerShape(30),
81+
elevation = ButtonDefaults.elevation(
82+
defaultElevation = 2.dp,
83+
pressedElevation = 4.dp,
84+
disabledElevation = 0.dp
85+
)
5686
) {
57-
Text(text = selectedHour)
87+
Text(text = selectedHour + hourText)
5888
}
5989

6090
DropdownMenu(
6191
modifier = Modifier
62-
.wrapContentSize(),
92+
.wrapContentWidth()
93+
.height(500.dp),
6394
expanded = isDropDownMenuExpanded,
6495
onDismissRequest = { isDropDownMenuExpanded = false }
6596
) {
@@ -68,7 +99,7 @@ fun HourDropDownMenu(
6899
onHourSelected(hour)
69100
isDropDownMenuExpanded = false
70101
}) {
71-
Text(text = hour)
102+
Text(text = hour + hourText)
72103
}
73104
}
74105
}
@@ -79,18 +110,30 @@ fun MinuteDropDownMenu(
79110
selectedMinute: String,
80111
onMinuteSelected: (String) -> Unit
81112
) {
113+
val minuteText = stringResource(id = R.string.text_minute)
82114
val minuteList = stringArrayResource(id = R.array.rule_minute_array)
83115
var isDropDownMenuExpanded by remember { mutableStateOf(false) }
84116

85117
Button(
86-
onClick = { isDropDownMenuExpanded = true }
118+
onClick = { isDropDownMenuExpanded = true },
119+
colors = ButtonDefaults
120+
.outlinedButtonColors(
121+
contentColor = colorResource(id = R.color.mogakrun_on_primary)
122+
),
123+
shape = RoundedCornerShape(30),
124+
elevation = ButtonDefaults.elevation(
125+
defaultElevation = 2.dp,
126+
pressedElevation = 4.dp,
127+
disabledElevation = 0.dp
128+
)
87129
) {
88-
Text(text = selectedMinute)
130+
Text(text = selectedMinute + minuteText)
89131
}
90132

91133
DropdownMenu(
92134
modifier = Modifier
93-
.wrapContentSize(),
135+
.wrapContentWidth()
136+
.height(500.dp),
94137
expanded = isDropDownMenuExpanded,
95138
onDismissRequest = { isDropDownMenuExpanded = false }
96139
) {
@@ -99,7 +142,7 @@ fun MinuteDropDownMenu(
99142
onMinuteSelected(minute)
100143
isDropDownMenuExpanded = false
101144
}) {
102-
Text(text = minute)
145+
Text(text = minute + minuteText)
103146
}
104147
}
105148
}
Lines changed: 66 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package com.whyranoid.presentation.compose
22

3+
import androidx.compose.foundation.layout.Arrangement
34
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.Row
46
import androidx.compose.foundation.layout.Spacer
7+
import androidx.compose.foundation.layout.fillMaxWidth
58
import androidx.compose.foundation.layout.padding
9+
import androidx.compose.foundation.shape.RoundedCornerShape
610
import androidx.compose.material.AlertDialog
711
import androidx.compose.material.Text
812
import androidx.compose.material.TextButton
@@ -11,65 +15,104 @@ import androidx.compose.runtime.getValue
1115
import androidx.compose.runtime.mutableStateOf
1216
import androidx.compose.runtime.remember
1317
import androidx.compose.runtime.setValue
18+
import androidx.compose.ui.Alignment
1419
import androidx.compose.ui.Modifier
20+
import androidx.compose.ui.res.colorResource
21+
import androidx.compose.ui.res.stringResource
22+
import androidx.compose.ui.text.font.FontWeight.Companion.Bold
1523
import androidx.compose.ui.unit.dp
24+
import androidx.compose.ui.unit.sp
25+
import com.whyranoid.presentation.R
1626
import com.whyranoid.presentation.community.group.create.CreateGroupViewModel
1727

1828
@Composable
1929
fun RulePicker(
2030
declarationDialogState: Boolean,
2131
viewModel: CreateGroupViewModel
2232
) {
23-
var selectedDate by remember { mutableStateOf("요일") }
24-
var selectedHour by remember { mutableStateOf("시간") }
25-
var selectedMinute by remember { mutableStateOf("") }
33+
val emptyText = stringResource(id = R.string.text_empty)
34+
val confirmText = stringResource(id = R.string.text_confirm)
35+
val cancelText = stringResource(id = R.string.text_cancel)
36+
val dialogTitleText = stringResource(id = R.string.text_rule_picker_title)
37+
38+
var selectedDate by remember { mutableStateOf(emptyText) }
39+
var selectedHour by remember { mutableStateOf(emptyText) }
40+
var selectedMinute by remember { mutableStateOf(emptyText) }
41+
2642
if (declarationDialogState) {
2743
AlertDialog(
2844
onDismissRequest = {
2945
viewModel.onDialogDismiss()
3046
},
3147
title = {
32-
Text(text = "요일 및 시간을 골라주세요!!")
3348
},
3449
text = {
35-
Column {
36-
DateDropDownMenu(selectedDate) { date ->
37-
selectedDate = date
38-
}
39-
Spacer(modifier = Modifier.padding(bottom = 10.dp))
40-
HourDropDownMenu(selectedHour) { hour ->
41-
selectedHour = hour
42-
}
50+
Column(
51+
modifier = Modifier
52+
.fillMaxWidth()
53+
.padding(8.dp),
54+
horizontalAlignment = Alignment.CenterHorizontally
55+
) {
56+
Text(
57+
text = dialogTitleText,
58+
color = colorResource(id = R.color.mogakrun_onBackground),
59+
fontWeight = Bold,
60+
fontSize = 20.sp
61+
)
4362
Spacer(modifier = Modifier.padding(bottom = 10.dp))
44-
MinuteDropDownMenu(selectedMinute) { minute ->
45-
selectedMinute = minute
63+
Row(
64+
modifier = Modifier
65+
.fillMaxWidth(),
66+
horizontalArrangement = Arrangement.SpaceBetween,
67+
verticalAlignment = Alignment.CenterVertically
68+
69+
) {
70+
DateDropDownMenu(selectedDate) { date ->
71+
selectedDate = date
72+
}
73+
HourDropDownMenu(selectedHour) { hour ->
74+
selectedHour = hour
75+
}
76+
MinuteDropDownMenu(selectedMinute) { minute ->
77+
selectedMinute = minute
78+
}
4679
}
4780
}
4881
},
4982
confirmButton = {
5083
TextButton(
5184
onClick = {
5285
viewModel.onDialogConfirm(selectedDate, selectedHour, selectedMinute)
53-
selectedDate = "요일"
54-
selectedHour = "시간"
55-
selectedMinute = ""
86+
selectedDate = emptyText
87+
selectedHour = emptyText
88+
selectedMinute = emptyText
5689
}
5790
) {
58-
Text("확인")
91+
Text(
92+
text = confirmText,
93+
color = colorResource(id = R.color.mogakrun_on_primary)
94+
)
5995
}
6096
},
6197
dismissButton = {
6298
TextButton(
6399
onClick = {
64100
viewModel.onDialogDismiss()
65-
selectedDate = "요일"
66-
selectedHour = "시간"
67-
selectedMinute = ""
101+
selectedDate = emptyText
102+
selectedHour = emptyText
103+
selectedMinute = emptyText
68104
}
105+
69106
) {
70-
Text("취소")
107+
Text(
108+
text = cancelText,
109+
color = colorResource(id = R.color.mogakrun_on_primary)
110+
)
71111
}
72-
}
112+
},
113+
backgroundColor = colorResource(id = R.color.mogakrun_background),
114+
contentColor = colorResource(id = R.color.mogakrun_on_primary),
115+
shape = RoundedCornerShape(10)
73116
)
74117
}
75118
}

presentation/src/main/res/values/strings.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
<string name="app_name">MoGakRun</string>
44

5+
<string name="text_empty" />
6+
57
<!-- 바텀네비게이션 -->
68
<string name="bottom_navigation_menu_community">커뮤니티</string>
79
<string name="bottom_navigation_menu_running">러닝</string>
@@ -179,4 +181,11 @@
179181
<item>55</item>
180182
</string-array>
181183

184+
<!-- 규칙 생성 다이어로그-->
185+
<string name="text_date">요일</string>
186+
<string name="text_hour">시</string>
187+
<string name="text_minute">분</string>
188+
<string name="text_confirm">확인</string>
189+
<string name="text_rule_picker_title">요일 및 시간을 골라주세요!!</string>
190+
182191
</resources>

0 commit comments

Comments
 (0)