From f583d4311141ade633c0e3609bfefd61e3876692 Mon Sep 17 00:00:00 2001 From: HyunWoo Lee Date: Sat, 11 Mar 2023 02:42:25 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=A4=EC=A0=95=ED=99=94=EB=A9=B4=20navigati?= =?UTF-8?q?on=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designsystem/component/toolbar/Toolbar.kt | 3 +- .../feature/mission/list/MissionListScreen.kt | 20 ++++++++-- .../stamp/feature/setting/SettingScreen.kt | 37 +++++++++++++++++++ 3 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/org/sopt/stamp/feature/setting/SettingScreen.kt diff --git a/app/src/main/java/org/sopt/stamp/designsystem/component/toolbar/Toolbar.kt b/app/src/main/java/org/sopt/stamp/designsystem/component/toolbar/Toolbar.kt index dc87a6b..5fc9cd9 100644 --- a/app/src/main/java/org/sopt/stamp/designsystem/component/toolbar/Toolbar.kt +++ b/app/src/main/java/org/sopt/stamp/designsystem/component/toolbar/Toolbar.kt @@ -32,6 +32,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import org.sopt.stamp.R +import org.sopt.stamp.designsystem.component.util.noRippleClickable import org.sopt.stamp.designsystem.style.SoptTheme import org.sopt.stamp.util.MultiFormFactorPreviews @@ -74,7 +75,7 @@ fun Toolbar( painter = painterResource(id = R.drawable.ic_back), contentDescription = "Back Button", modifier = Modifier - .clickable(onClick = onBack) + .noRippleClickable(onClick = onBack) .align(Alignment.CenterVertically) .padding(8.dp) ) diff --git a/app/src/main/java/org/sopt/stamp/feature/mission/list/MissionListScreen.kt b/app/src/main/java/org/sopt/stamp/feature/mission/list/MissionListScreen.kt index adc09a4..be80170 100644 --- a/app/src/main/java/org/sopt/stamp/feature/mission/list/MissionListScreen.kt +++ b/app/src/main/java/org/sopt/stamp/feature/mission/list/MissionListScreen.kt @@ -67,6 +67,7 @@ import org.sopt.stamp.domain.error.Error import org.sopt.stamp.domain.model.MissionsFilter import org.sopt.stamp.feature.destinations.MissionDetailScreenDestination import org.sopt.stamp.feature.destinations.RankingScreenDestination +import org.sopt.stamp.feature.destinations.SettingScreenDestination import org.sopt.stamp.feature.mission.MissionsState import org.sopt.stamp.feature.mission.MissionsViewModel import org.sopt.stamp.feature.mission.model.MissionListUiModel @@ -110,7 +111,8 @@ fun MissionListScreen( menuTexts = MissionsFilter.getTitleOfMissionsList(), onMenuClick = { filter -> missionsViewModel.fetchMissions(filter = filter) }, onMissionItemClick = { item -> navigator.navigate(MissionDetailScreenDestination(item)) }, - onFloatingButtonClick = { navigator.navigate(RankingScreenDestination) } + onFloatingButtonClick = { navigator.navigate(RankingScreenDestination) }, + onSettingButtonClick = { navigator.navigate(SettingScreenDestination) } ) } } @@ -122,14 +124,16 @@ fun MissionListScreen( menuTexts: List, onMenuClick: (String) -> Unit = {}, onMissionItemClick: (item: MissionNavArgs) -> Unit = {}, - onFloatingButtonClick: () -> Unit = {} + onFloatingButtonClick: () -> Unit = {}, + onSettingButtonClick: () -> Unit = {} ) { Scaffold( topBar = { MissionListHeader( title = missionListUiModel.title, menuTexts = menuTexts, - onMenuClick = { onMenuClick(it) } + onMenuClick = { onMenuClick(it) }, + onSettingButtonClick = { onSettingButtonClick() } ) }, floatingActionButton = { @@ -207,7 +211,8 @@ fun MissionEmptyScreen(contentText: String) { fun MissionListHeader( title: String, menuTexts: List, - onMenuClick: (String) -> Unit = {} + onMenuClick: (String) -> Unit = {}, + onSettingButtonClick: () -> Unit = {} ) { var currentText by remember { mutableStateOf(title) } SoptTopAppBar( @@ -220,6 +225,13 @@ fun MissionListHeader( onMenuClick(selectedMenuText) } ) + }, + actions = { + SoptampIconButton( + imageVector = ImageVector.vectorResource(id = R.drawable.setting) + ) { + onSettingButtonClick() + } } ) } diff --git a/app/src/main/java/org/sopt/stamp/feature/setting/SettingScreen.kt b/app/src/main/java/org/sopt/stamp/feature/setting/SettingScreen.kt new file mode 100644 index 0000000..bda0044 --- /dev/null +++ b/app/src/main/java/org/sopt/stamp/feature/setting/SettingScreen.kt @@ -0,0 +1,37 @@ +package org.sopt.stamp.feature.setting + +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.navigation.DestinationsNavigator +import org.sopt.stamp.config.navigation.SettingNavGraph +import org.sopt.stamp.designsystem.component.layout.SoptColumn +import org.sopt.stamp.designsystem.component.toolbar.Toolbar +import org.sopt.stamp.designsystem.style.SoptTheme + +@SettingNavGraph(true) +@Destination("menu") +@Composable +fun SettingScreen( + navigator: DestinationsNavigator +) { + SoptTheme { + SoptColumn { + Toolbar( + modifier = Modifier.padding(bottom = 10.dp), + title = { + Text( + text = "설정", + style = SoptTheme.typography.h2, + modifier = Modifier.padding(start = 4.dp), + color = SoptTheme.colors.onSurface + ) + }, + onBack = { navigator.popBackStack() }, + ) + } + } +}