diff --git a/core/src/main/java/com/gdg/core/designsystem/theme/Color.kt b/core/src/main/java/com/gdg/core/designsystem/theme/Color.kt
index 147aac3..9febed3 100644
--- a/core/src/main/java/com/gdg/core/designsystem/theme/Color.kt
+++ b/core/src/main/java/com/gdg/core/designsystem/theme/Color.kt
@@ -30,6 +30,7 @@ val Green600 = Color(0xFF04D181)
val Green500 = Color(0xFF9AE5DA)
// Blue Color
+val Blue300 = Color(0xFF049ED1)
val Blue200 = Color(0xFF73CAED)
val Blue100 = Color(0xFF98D1E8)
@@ -51,6 +52,7 @@ class CrowdZeroColors(
green700: Color,
green600: Color,
green500: Color,
+ blue300: Color,
blue200: Color,
blue100: Color
) {
@@ -86,6 +88,8 @@ class CrowdZeroColors(
private set
var green500 by mutableStateOf(green500)
private set
+ var blue300 by mutableStateOf(blue300)
+ private set
var blue200 by mutableStateOf(blue200)
private set
var blue100 by mutableStateOf(blue100)
@@ -108,6 +112,7 @@ class CrowdZeroColors(
green700 = green700,
green600 = green600,
green500 = green500,
+ blue300 = blue300,
blue200 = blue200,
blue100 = blue100
)
@@ -152,6 +157,7 @@ fun crowdZeroColors(
green700: Color = Green700,
green600: Color = Green600,
green500: Color = Green500,
+ blue300: Color = Blue300,
blue200: Color = Blue200,
blue100: Color = Blue100
) = CrowdZeroColors(
@@ -171,6 +177,7 @@ fun crowdZeroColors(
green700 = green700,
green600 = green600,
green500 = green500,
+ blue300 = blue300,
blue200 = blue200,
blue100 = blue100
)
diff --git a/core/src/main/java/com/gdg/core/type/DustConditionType.kt b/core/src/main/java/com/gdg/core/type/DustConditionType.kt
index ccc170e..95d8bae 100644
--- a/core/src/main/java/com/gdg/core/type/DustConditionType.kt
+++ b/core/src/main/java/com/gdg/core/type/DustConditionType.kt
@@ -3,6 +3,7 @@ package com.gdg.core.type
import androidx.annotation.StringRes
import androidx.compose.ui.graphics.Color
import com.gdg.core.R
+import com.gdg.core.designsystem.theme.Blue300
import com.gdg.core.designsystem.theme.Gray700
import com.gdg.core.designsystem.theme.Green600
import com.gdg.core.designsystem.theme.Orange
@@ -14,14 +15,18 @@ enum class DustConditionType(
) {
GOOD(
title = R.string.dust_condition_good,
- color = Green600
+ color = Blue300
),
NORMAL(
title = R.string.dust_condition_normal,
- color = Orange
+ color = Green600
),
BAD(
title = R.string.dust_condition_bad,
+ color = Orange
+ ),
+ VERY_BAD(
+ title = R.string.dust_condition_very_bad,
color = Red
),
UNKNOWN(
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index f7fe1a1..0fec91c 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -32,5 +32,6 @@
이전 달
다음 달
모름
+ 매우나쁨
\ No newline at end of file
diff --git a/feature/src/main/java/com/gdg/feature/calendar/CalendarRoute.kt b/feature/src/main/java/com/gdg/feature/calendar/CalendarRoute.kt
index 16c687c..d04da31 100644
--- a/feature/src/main/java/com/gdg/feature/calendar/CalendarRoute.kt
+++ b/feature/src/main/java/com/gdg/feature/calendar/CalendarRoute.kt
@@ -1,8 +1,6 @@
package com.gdg.feature.calendar
import androidx.compose.foundation.Image
-import androidx.compose.foundation.background
-import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
@@ -17,7 +15,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
-import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -29,8 +26,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.clip
-import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.SpanStyle
@@ -47,6 +42,7 @@ import com.gdg.core.state.UiState
import com.gdg.core.util.TimeFormatter
import com.gdg.domain.entity.ScheduleEntity
import com.gdg.feature.R
+import com.gdg.feature.calendar.component.CalendarInfoBox
import timber.log.Timber
import java.time.LocalDate
import java.time.YearMonth
@@ -212,80 +208,6 @@ fun CalendarScreen(
}
}
-@Composable
-fun CalendarInfoBox(data: ScheduleEntity) {
- Column(
- modifier = Modifier
- .fillMaxWidth()
- .border(0.5.dp, CrowdZeroTheme.colors.gray500, shape = RoundedCornerShape(15.dp))
- .clip(RoundedCornerShape(15.dp))
- .background(CrowdZeroTheme.colors.white)
- .padding(dimensionResource(R.dimen.default_padding))
- ) {
- Row(
- modifier = Modifier.fillMaxWidth(),
- verticalAlignment = Alignment.CenterVertically
- ) {
- Text(
- modifier = Modifier.padding(end = 8.dp),
- text = data.duration,
- style = CrowdZeroTheme.typography.c4SemiBold,
- color = CrowdZeroTheme.colors.green600
- )
- Text(
- text = data.region,
- style = CrowdZeroTheme.typography.c4SemiBold,
- color = CrowdZeroTheme.colors.white,
- modifier = Modifier
- .background(
- color = CrowdZeroTheme.colors.green600,
- shape = RoundedCornerShape(30.dp)
- )
- .padding(horizontal = 8.dp, vertical = 3.dp)
- )
- }
- Text(
- text = data.location.replace("\n", " "),
- style = CrowdZeroTheme.typography.h5Bold,
- color = CrowdZeroTheme.colors.gray900
- )
- Row(
- modifier = Modifier.fillMaxWidth(),
- verticalAlignment = Alignment.CenterVertically
- ) {
- Text(
- modifier = Modifier.padding(end = 4.dp),
- text = stringResource(R.string.calendar_people_reporting_title),
- style = CrowdZeroTheme.typography.c3Regular,
- color = CrowdZeroTheme.colors.gray600
- )
- Text(
- modifier = Modifier.padding(end = 8.dp),
- text = stringResource(R.string.calendar_people_reporting, data.people),
- style = CrowdZeroTheme.typography.c3Regular,
- color = CrowdZeroTheme.colors.gray800
- )
- Text(
- modifier = Modifier.padding(end = 8.dp),
- text = stringResource(R.string.calendar_slash),
- style = CrowdZeroTheme.typography.c3Regular,
- color = CrowdZeroTheme.colors.gray600
- )
- Text(
- modifier = Modifier.padding(end = 4.dp),
- text = stringResource(R.string.calendar_jurisdiction),
- style = CrowdZeroTheme.typography.c3Regular,
- color = CrowdZeroTheme.colors.gray600
- )
- Text(
- text = data.jurisdiction.replace("\n", " "),
- style = CrowdZeroTheme.typography.c3Regular,
- color = CrowdZeroTheme.colors.gray800
- )
- }
- }
-}
-
@Preview(showBackground = true)
@Composable
fun CalendarScreenPreview() {
diff --git a/feature/src/main/java/com/gdg/feature/calendar/component/CalendarInfoBox.kt b/feature/src/main/java/com/gdg/feature/calendar/component/CalendarInfoBox.kt
new file mode 100644
index 0000000..132d0fe
--- /dev/null
+++ b/feature/src/main/java/com/gdg/feature/calendar/component/CalendarInfoBox.kt
@@ -0,0 +1,117 @@
+package com.gdg.feature.calendar.component
+
+import androidx.compose.foundation.background
+import androidx.compose.foundation.border
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.shape.RoundedCornerShape
+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.res.dimensionResource
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import com.gdg.core.designsystem.theme.CrowdZeroAndroidTheme
+import com.gdg.core.designsystem.theme.CrowdZeroTheme
+import com.gdg.core.extension.showIf
+import com.gdg.domain.entity.ScheduleEntity
+import com.gdg.feature.R
+
+@Composable
+fun CalendarInfoBox(data: ScheduleEntity) {
+ Column(
+ modifier = Modifier
+ .fillMaxWidth()
+ .border(0.5.dp, CrowdZeroTheme.colors.gray500, shape = RoundedCornerShape(15.dp))
+ .clip(RoundedCornerShape(15.dp))
+ .background(CrowdZeroTheme.colors.white)
+ .padding(dimensionResource(R.dimen.default_padding)),
+ verticalArrangement = Arrangement.spacedBy(2.dp)
+ ) {
+ Row(
+ modifier = Modifier.fillMaxWidth(),
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ Text(
+ modifier = Modifier.padding(end = 8.dp),
+ text = data.duration.replace("\n", " "),
+ style = CrowdZeroTheme.typography.c4SemiBold,
+ color = CrowdZeroTheme.colors.green600
+ )
+ Text(
+ text = data.region,
+ style = CrowdZeroTheme.typography.c4SemiBold,
+ color = CrowdZeroTheme.colors.white,
+ modifier = Modifier
+ .background(
+ color = CrowdZeroTheme.colors.green600,
+ shape = RoundedCornerShape(30.dp)
+ )
+ .padding(horizontal = 8.dp, vertical = 3.dp)
+ .showIf(data.region != "None")
+ )
+ }
+ Text(
+ text = data.location.replace("\n", " "),
+ style = CrowdZeroTheme.typography.h5Bold,
+ color = CrowdZeroTheme.colors.gray900
+ )
+ Row(
+ modifier = Modifier.fillMaxWidth(),
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ Text(
+ modifier = Modifier.padding(end = 4.dp),
+ text = stringResource(R.string.calendar_people_reporting_title),
+ style = CrowdZeroTheme.typography.c3Regular,
+ color = CrowdZeroTheme.colors.gray600
+ )
+ Text(
+ modifier = Modifier.padding(end = 8.dp),
+ text = stringResource(R.string.calendar_people_reporting, data.people),
+ style = CrowdZeroTheme.typography.c3Regular,
+ color = CrowdZeroTheme.colors.gray800
+ )
+ Text(
+ modifier = Modifier.padding(end = 8.dp),
+ text = stringResource(R.string.calendar_slash),
+ style = CrowdZeroTheme.typography.c3Regular,
+ color = CrowdZeroTheme.colors.gray600
+ )
+ Text(
+ modifier = Modifier.padding(end = 4.dp),
+ text = stringResource(R.string.calendar_jurisdiction),
+ style = CrowdZeroTheme.typography.c3Regular,
+ color = CrowdZeroTheme.colors.gray600
+ )
+ Text(
+ text = data.jurisdiction.replace("\n", " "),
+ style = CrowdZeroTheme.typography.c3Regular,
+ color = CrowdZeroTheme.colors.gray800
+ )
+ }
+ }
+}
+
+@Preview(showBackground = true)
+@Composable
+fun CalendarInfoBoxPreview() {
+ CrowdZeroAndroidTheme {
+ CalendarInfoBox(
+ ScheduleEntity(
+ date = "2021-10-01",
+ duration = "07:30 ~ 24:00",
+ location = "두터교회 앞 인도 및 2개 차로",
+ region = "한남동",
+ people = "3000",
+ jurisdiction = "용산"
+ )
+ )
+ }
+}
diff --git a/feature/src/main/java/com/gdg/feature/detail/DetailRoute.kt b/feature/src/main/java/com/gdg/feature/detail/DetailRoute.kt
index 9ea9423..ce83630 100644
--- a/feature/src/main/java/com/gdg/feature/detail/DetailRoute.kt
+++ b/feature/src/main/java/com/gdg/feature/detail/DetailRoute.kt
@@ -213,8 +213,8 @@ fun DetailScreen(
true -> when (congestionState.data.level) {
"여유" -> OverlayImage.fromResource(CongestionType.GOOD.icon)
"보통" -> OverlayImage.fromResource(CongestionType.NORMAL.icon)
- "약간 혼잡" -> OverlayImage.fromResource(CongestionType.LITTLE_BAD.icon)
- "혼잡" -> OverlayImage.fromResource(CongestionType.BAD.icon)
+ "약간 붐빔" -> OverlayImage.fromResource(CongestionType.LITTLE_BAD.icon)
+ "붐빔" -> OverlayImage.fromResource(CongestionType.BAD.icon)
else -> OverlayImage.fromResource(CongestionType.UNKNOWN.icon)
}
diff --git a/feature/src/main/java/com/gdg/feature/detail/component/CongestionItem.kt b/feature/src/main/java/com/gdg/feature/detail/component/CongestionItem.kt
index 47a767e..740c9de 100644
--- a/feature/src/main/java/com/gdg/feature/detail/component/CongestionItem.kt
+++ b/feature/src/main/java/com/gdg/feature/detail/component/CongestionItem.kt
@@ -43,8 +43,8 @@ fun CongestionItem(
color = when (data.level) {
"여유" -> CrowdZeroTheme.colors.green600
"보통" -> CrowdZeroTheme.colors.yellow
- "약간 혼잡" -> CrowdZeroTheme.colors.orange
- "혼잡" -> CrowdZeroTheme.colors.red
+ "약간 붐빔" -> CrowdZeroTheme.colors.orange
+ "붐빔" -> CrowdZeroTheme.colors.red
else -> CrowdZeroTheme.colors.gray700
}
)
@@ -69,8 +69,8 @@ fun CongestionItem(
congestionType = when (data.level) {
"여유" -> CongestionType.GOOD
"보통" -> CongestionType.NORMAL
- "약간 혼잡" -> CongestionType.LITTLE_BAD
- "혼잡" -> CongestionType.BAD
+ "약간 붐빔" -> CongestionType.LITTLE_BAD
+ "붐빔" -> CongestionType.BAD
else -> CongestionType.UNKNOWN
}
)
diff --git a/feature/src/main/java/com/gdg/feature/detail/component/WeatherItem.kt b/feature/src/main/java/com/gdg/feature/detail/component/WeatherItem.kt
index d91a2d5..2728b65 100644
--- a/feature/src/main/java/com/gdg/feature/detail/component/WeatherItem.kt
+++ b/feature/src/main/java/com/gdg/feature/detail/component/WeatherItem.kt
@@ -79,6 +79,7 @@ fun WeatherItem(
"좋음" -> DustConditionType.GOOD
"보통" -> DustConditionType.NORMAL
"나쁨" -> DustConditionType.BAD
+ "매우나쁨" -> DustConditionType.VERY_BAD
else -> DustConditionType.UNKNOWN
}
)
@@ -89,6 +90,7 @@ fun WeatherItem(
"좋음" -> DustConditionType.GOOD
"보통" -> DustConditionType.NORMAL
"나쁨" -> DustConditionType.BAD
+ "매우나쁨" -> DustConditionType.VERY_BAD
else -> DustConditionType.UNKNOWN
}
)
@@ -105,6 +107,8 @@ fun WeatherItem(
imageVector = when (data.skyStts) {
"맑음" -> ImageVector.vectorResource(R.drawable.ic_sunny)
"구름많음" -> ImageVector.vectorResource(R.drawable.ic_cloudy)
+ "흐림" -> ImageVector.vectorResource(R.drawable.ic_cloudy)
+ "소나기" -> ImageVector.vectorResource(R.drawable.ic_rainy)
"비" -> ImageVector.vectorResource(R.drawable.ic_rainy)
"눈" -> ImageVector.vectorResource(R.drawable.ic_snowy)
else -> ImageVector.vectorResource(R.drawable.ic_sunny_cloudy)
diff --git a/feature/src/main/java/com/gdg/feature/map/component/PlaceInfoCard.kt b/feature/src/main/java/com/gdg/feature/map/component/PlaceInfoCard.kt
index 52cb581..de66de9 100644
--- a/feature/src/main/java/com/gdg/feature/map/component/PlaceInfoCard.kt
+++ b/feature/src/main/java/com/gdg/feature/map/component/PlaceInfoCard.kt
@@ -105,8 +105,8 @@ fun PlaceInfoCard(
color = when (place.congestion) {
"여유" -> CrowdZeroTheme.colors.green600
"보통" -> CrowdZeroTheme.colors.yellow
- "약간 혼잡" -> CrowdZeroTheme.colors.orange
- "혼잡" -> CrowdZeroTheme.colors.red
+ "약간 붐빔" -> CrowdZeroTheme.colors.orange
+ "붐빔" -> CrowdZeroTheme.colors.red
else -> CrowdZeroTheme.colors.gray700
}
)
@@ -125,8 +125,8 @@ fun PlaceInfoCard(
color = when (place.congestion) {
"여유" -> CrowdZeroTheme.colors.green600
"보통" -> CrowdZeroTheme.colors.yellow
- "약간 혼잡" -> CrowdZeroTheme.colors.orange
- "혼잡" -> CrowdZeroTheme.colors.red
+ "약간 붐빔" -> CrowdZeroTheme.colors.orange
+ "붐빔" -> CrowdZeroTheme.colors.red
else -> CrowdZeroTheme.colors.gray700
}
)