Skip to content

Commit 516ade0

Browse files
authored
Merge pull request #124 from Stack-Knowledge/feature/123-modifybottom-navigation-design
🔀 :: (#123) - modifybottom navigation design
2 parents 0a86701 + e417b1b commit 516ade0

File tree

11 files changed

+62
-28
lines changed

11 files changed

+62
-28
lines changed

core/ui/src/main/java/com/minstone/ui/navigation/StackKnowledgeBottomNavigation.kt

Lines changed: 43 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,21 @@ package com.minstone.ui.navigation
33
import androidx.compose.foundation.Image
44
import androidx.compose.foundation.background
55
import androidx.compose.foundation.clickable
6+
import androidx.compose.foundation.layout.Arrangement
67
import androidx.compose.foundation.layout.Box
78
import androidx.compose.foundation.layout.Column
89
import androidx.compose.foundation.layout.Row
910
import androidx.compose.foundation.layout.Spacer
1011
import androidx.compose.foundation.layout.fillMaxWidth
1112
import androidx.compose.foundation.layout.height
13+
import androidx.compose.material3.Divider
1214
import androidx.compose.material3.NavigationBar
1315
import androidx.compose.material3.Text
1416
import androidx.compose.runtime.Composable
1517
import androidx.compose.ui.Alignment
1618
import androidx.compose.ui.Modifier
19+
import androidx.compose.ui.graphics.Color
20+
import androidx.compose.ui.graphics.ColorFilter
1721
import androidx.compose.ui.res.painterResource
1822
import androidx.compose.ui.res.stringResource
1923
import androidx.compose.ui.unit.dp
@@ -33,42 +37,51 @@ enum class NavigateType(val value: String) {
3337
fun StackKnowledgeBottomNavigation(
3438
modifier: Modifier,
3539
role: Authority,
40+
locate: NavigateType,
3641
onNavigate: (String) -> Unit,
3742
) {
3843
StackKnowledgeAndroidTheme { colors, typography ->
3944
Box(
4045
modifier = modifier.background(color = colors.WHITE),
4146
contentAlignment = Alignment.BottomCenter
4247
) {
43-
Row(
44-
modifier = modifier
45-
.fillMaxWidth()
46-
.height(56.dp),
47-
verticalAlignment = Alignment.CenterVertically
48-
) {
49-
val navItems = listOf(
50-
Triple(R.drawable.home_icon, NavigateType.HOME.value, R.string.home),
51-
Triple(R.drawable.mission_icon, NavigateType.MISSION.value, if(role == Authority.ROLE_STUDENT) R.string.mission else R.string.solved_mission),
52-
Triple(R.drawable.create_mission_icon, NavigateType.CREATE_MISSION.value, R.string.create_mission),
53-
Triple(R.drawable.shop_icon, NavigateType.SHOP.value, R.string.shop),
54-
Triple(R.drawable.ranking_icon, NavigateType.RANKING.value, R.string.ranking)
48+
Column {
49+
Divider(
50+
modifier = Modifier.fillMaxWidth(),
51+
color = Color(0xFFF1F1F1)
5552
)
53+
Row(
54+
modifier = modifier
55+
.fillMaxWidth()
56+
.height(56.dp),
57+
verticalAlignment = Alignment.CenterVertically
58+
) {
59+
val navItems = listOf(
60+
Triple(R.drawable.home_icon, NavigateType.HOME.value, R.string.home),
61+
Triple(R.drawable.mission_icon, NavigateType.MISSION.value, if(role == Authority.ROLE_STUDENT) R.string.mission else R.string.solved_mission),
62+
Triple(R.drawable.create_mission_icon, NavigateType.CREATE_MISSION.value, R.string.create_mission),
63+
Triple(R.drawable.shop_icon, NavigateType.SHOP.value, R.string.shop),
64+
Triple(R.drawable.ranking_icon, NavigateType.RANKING.value, R.string.ranking)
65+
)
5666

57-
navItems.forEachIndexed { index, (iconRes, navigateType, stringResId) ->
58-
if (index != 2 || role == Authority.ROLE_TEACHER) {
59-
BottomNavigationComponent(
60-
modifier = modifier
61-
.weight(1f)
62-
.height(56.dp),
63-
buttonText = stringResId,
64-
buttonImage = {
65-
Image(
66-
painter = painterResource(iconRes),
67-
contentDescription = null
68-
)
67+
navItems.forEachIndexed { index, (iconRes, navigateType, stringResId) ->
68+
if (index != 2 || role == Authority.ROLE_TEACHER) {
69+
BottomNavigationComponent(
70+
modifier = modifier
71+
.weight(1f)
72+
.height(56.dp),
73+
buttonText = stringResId,
74+
isLocate = locate.value == navigateType,
75+
buttonImage = {
76+
Image(
77+
painter = painterResource(iconRes),
78+
colorFilter = if(locate.value == navigateType) ColorFilter.tint(colors.P1) else null,
79+
contentDescription = null
80+
)
81+
}
82+
) {
83+
onNavigate(navigateType)
6984
}
70-
) {
71-
onNavigate(navigateType)
7285
}
7386
}
7487
}
@@ -81,20 +94,22 @@ fun StackKnowledgeBottomNavigation(
8194
private fun BottomNavigationComponent(
8295
modifier: Modifier,
8396
buttonText: Int,
97+
isLocate: Boolean,
8498
buttonImage: @Composable () -> Unit,
8599
onClick: () -> Unit
86100
) {
87101
StackKnowledgeAndroidTheme { colors, typography ->
88102
Column(
89103
modifier = modifier.clickable(onClick = onClick),
90-
horizontalAlignment = Alignment.CenterHorizontally
104+
horizontalAlignment = Alignment.CenterHorizontally,
105+
verticalArrangement = Arrangement.Center
91106
) {
92107
buttonImage()
93108
Spacer(modifier = Modifier.height(5.dp))
94109
Text(
95110
text = stringResource(id = buttonText),
96111
style = typography.bodySmall,
97-
color = colors.BLACK
112+
color = if (isLocate) colors.P1 else colors.BLACK
98113
)
99114
}
100115
}

feature/main/src/main/java/com/stackknowledge/main/MainPageScreen.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ private fun MainPageScreen(
113113
) {
114114
StackKnowledgeBottomNavigation(
115115
modifier = Modifier,
116+
locate = NavigateType.HOME,
116117
role = role
117118
) {
118119
onNavigate(it, null)

feature/mission/src/main/java/com/stackkowledge/mission/CreateMissionScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
2121
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2222
import com.example.common.toast.makeToast
2323
import com.example.common.util.Event
24+
import com.minstone.ui.navigation.NavigateType
2425
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
2526
import com.stackknowledge.design_system.R
2627
import com.stackknowledge.design_system.component.dialog.StackKnowledgeDialog
@@ -205,6 +206,7 @@ private fun CreateMissionScreen(
205206
) {
206207
StackKnowledgeBottomNavigation(
207208
modifier = Modifier,
209+
locate = NavigateType.CREATE_MISSION,
208210
role = role
209211
) {
210212
onNavigate(it)

feature/mission/src/main/java/com/stackkowledge/mission/EntireMissionScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.compose.ui.Modifier
1616
import androidx.compose.ui.platform.LocalContext
1717
import androidx.hilt.navigation.compose.hiltViewModel
1818
import androidx.lifecycle.compose.collectAsStateWithLifecycle
19+
import com.minstone.ui.navigation.NavigateType
1920
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
2021
import com.stackknowledge.design_system.component.topbar.StackKnowledgeTopBar
2122
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
@@ -77,6 +78,7 @@ private fun EntireMissionScreen(
7778
) {
7879
StackKnowledgeBottomNavigation(
7980
modifier = Modifier,
81+
locate = NavigateType.MISSION,
8082
role = role
8183
) {
8284
onNavigate(it)

feature/mission/src/main/java/com/stackkowledge/mission/ResolveMissionScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
2626
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2727
import com.example.common.toast.makeToast
2828
import com.example.common.util.Event
29+
import com.minstone.ui.navigation.NavigateType
2930
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
3031
import com.stackknowledge.design_system.component.dialog.StackKnowledgeDialog
3132
import com.stackknowledge.design_system.component.topbar.StackKnowledgeTopBar
@@ -232,6 +233,7 @@ private fun ResolveMissionScreen(
232233
) {
233234
StackKnowledgeBottomNavigation(
234235
modifier = Modifier,
236+
locate = NavigateType.MISSION,
235237
role = role
236238
) {
237239
onNavigateState = it

feature/ranking/src/main/java/com/stackknowledge/ranking/RankingScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import androidx.compose.ui.Modifier
1717
import androidx.compose.ui.unit.dp
1818
import androidx.hilt.navigation.compose.hiltViewModel
1919
import androidx.lifecycle.compose.collectAsStateWithLifecycle
20+
import com.minstone.ui.navigation.NavigateType
2021
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
2122
import com.stackknowledge.design_system.component.topbar.StackKnowledgeTopBar
2223
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
@@ -85,6 +86,7 @@ private fun RankingScreen(
8586
) {
8687
StackKnowledgeBottomNavigation(
8788
modifier = Modifier,
89+
locate = NavigateType.RANKING,
8890
role = role
8991
) {
9092
onNavigate(it)

feature/ranking/src/main/java/com/stackknowledge/ranking/TeacherRankingScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import androidx.compose.ui.Modifier
1717
import androidx.compose.ui.unit.dp
1818
import androidx.hilt.navigation.compose.hiltViewModel
1919
import androidx.lifecycle.compose.collectAsStateWithLifecycle
20+
import com.minstone.ui.navigation.NavigateType
2021
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
2122
import com.stackknowledge.design_system.component.topbar.StackKnowledgeTopBar
2223
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
@@ -73,6 +74,7 @@ private fun TeacherRankingScreen(
7374
) {
7475
StackKnowledgeBottomNavigation(
7576
modifier = Modifier,
77+
locate = NavigateType.RANKING,
7678
role = role
7779
) {
7880
onNavigate(it)

feature/score-mission/src/main/java/com/stackknowledge/score_mission/GradingAnswerScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.compose.ui.unit.dp
2222
import androidx.hilt.navigation.compose.hiltViewModel
2323
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2424
import com.example.common.util.Event
25+
import com.minstone.ui.navigation.NavigateType
2526
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
2627
import com.stackknowledge.design_system.R
2728
import com.stackknowledge.design_system.component.dialog.StackKnowledgeDialog
@@ -152,6 +153,7 @@ private fun GradingAnswerScreen(
152153
) {
153154
StackKnowledgeBottomNavigation(
154155
modifier = Modifier,
156+
locate = NavigateType.MISSION,
155157
role = role
156158
) {
157159
onNavigate(it)

feature/score-mission/src/main/java/com/stackknowledge/score_mission/SolvedMissionScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.compose.ui.Modifier
1616
import androidx.compose.ui.platform.LocalContext
1717
import androidx.hilt.navigation.compose.hiltViewModel
1818
import androidx.lifecycle.compose.collectAsStateWithLifecycle
19+
import com.minstone.ui.navigation.NavigateType
1920
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
2021
import com.stackknowledge.design_system.component.topbar.StackKnowledgeTopBar
2122
import com.stackknowledge.design_system.theme.StackKnowledgeAndroidTheme
@@ -76,6 +77,7 @@ private fun SolvedMissionScreen(
7677
) {
7778
StackKnowledgeBottomNavigation(
7879
modifier = Modifier,
80+
locate = NavigateType.MISSION,
7981
role = role
8082
) {
8183
onNavigate(it)

feature/shop/src/main/java/com/stackknowledge/shop/ShopScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.compose.ui.tooling.preview.Preview
2020
import androidx.compose.ui.unit.dp
2121
import androidx.hilt.navigation.compose.hiltViewModel
2222
import androidx.lifecycle.compose.collectAsStateWithLifecycle
23+
import com.minstone.ui.navigation.NavigateType
2324
import com.minstone.ui.navigation.StackKnowledgeBottomNavigation
2425
import com.stackknowledge.design_system.R
2526
import com.stackknowledge.design_system.component.dialog.StackKnowledgeDialog
@@ -117,6 +118,7 @@ private fun ShopScreen(
117118
) {
118119
StackKnowledgeBottomNavigation(
119120
modifier = Modifier,
121+
locate = NavigateType.SHOP,
120122
role = role
121123
) {
122124
onNavigate(it)

0 commit comments

Comments
 (0)