From dfc61dc6f59978b536a8da550787897486888aa5 Mon Sep 17 00:00:00 2001 From: JungHwan Date: Thu, 8 Aug 2024 19:10:46 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=93=9D=20Docs:=20profile=20page=20add?= =?UTF-8?q?ed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit profile page added --- .../afs/tutrd/component/divider/Divider.kt | 45 +++ .../java/com/afs/tutrd/di/RepositoryModule.kt | 7 - .../java/com/afs/tutrd/domain/HealthCheck.kt | 7 - .../healthCheck/HealthCheckRepository.kt | 5 - .../navigation/profile/ProfileNavigation.kt | 6 +- .../presentation/profile/ProfileScreen.kt | 17 - .../profile/view/ProfileScreen.kt | 342 ++++++++++++++++++ .../profile/view/ProfileTopBar.kt | 37 ++ .../profile/view/TuteeTutorToggleBar.kt | 64 ++++ 9 files changed, 492 insertions(+), 38 deletions(-) create mode 100644 app/src/main/java/com/afs/tutrd/component/divider/Divider.kt delete mode 100644 app/src/main/java/com/afs/tutrd/domain/HealthCheck.kt delete mode 100644 app/src/main/java/com/afs/tutrd/domain/healthCheck/HealthCheckRepository.kt delete mode 100644 app/src/main/java/com/afs/tutrd/presentation/profile/ProfileScreen.kt create mode 100644 app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileScreen.kt create mode 100644 app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileTopBar.kt create mode 100644 app/src/main/java/com/afs/tutrd/presentation/profile/view/TuteeTutorToggleBar.kt diff --git a/app/src/main/java/com/afs/tutrd/component/divider/Divider.kt b/app/src/main/java/com/afs/tutrd/component/divider/Divider.kt new file mode 100644 index 0000000..886adf1 --- /dev/null +++ b/app/src/main/java/com/afs/tutrd/component/divider/Divider.kt @@ -0,0 +1,45 @@ +package com.afs.tutrd.component.divider + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun Divider( + title: String? +) { + Column( + modifier = Modifier, + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + if (title != null) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 18.sp, + text = title, + ) + } + Box( + modifier = Modifier + .fillMaxWidth() + .height(1.dp) + .background(color = Color(213, 213, 213))) + } +} + +@Preview +@Composable +fun preview() { + Divider(title = "정보") +} \ No newline at end of file diff --git a/app/src/main/java/com/afs/tutrd/di/RepositoryModule.kt b/app/src/main/java/com/afs/tutrd/di/RepositoryModule.kt index 6ee7e21..c788aa1 100644 --- a/app/src/main/java/com/afs/tutrd/di/RepositoryModule.kt +++ b/app/src/main/java/com/afs/tutrd/di/RepositoryModule.kt @@ -1,8 +1,5 @@ package com.afs.tutrd.di -import com.afs.tutrd.data.healthCheck.HealthCheckRepositoryIml -import com.afs.tutrd.domain.healthCheck.HealthCheckRepository -import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent @@ -11,8 +8,4 @@ import dagger.hilt.components.SingletonComponent @InstallIn(SingletonComponent::class) interface RepositoryModule { - @Binds - fun bindHealthCheckRepository( - healthCheckRepositoryIml: HealthCheckRepositoryIml - ): HealthCheckRepository } \ No newline at end of file diff --git a/app/src/main/java/com/afs/tutrd/domain/HealthCheck.kt b/app/src/main/java/com/afs/tutrd/domain/HealthCheck.kt deleted file mode 100644 index ad727fa..0000000 --- a/app/src/main/java/com/afs/tutrd/domain/HealthCheck.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.afs.tutrd.domain - -/** - * 디렉토리 초기 구조 잡아 놓기 위해 커밋한 파일입니다 - * - * domain\${featureName} - */ \ No newline at end of file diff --git a/app/src/main/java/com/afs/tutrd/domain/healthCheck/HealthCheckRepository.kt b/app/src/main/java/com/afs/tutrd/domain/healthCheck/HealthCheckRepository.kt deleted file mode 100644 index 0354c55..0000000 --- a/app/src/main/java/com/afs/tutrd/domain/healthCheck/HealthCheckRepository.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.afs.tutrd.domain.healthCheck - -interface HealthCheckRepository { - suspend fun checkHealth(): Result -} \ No newline at end of file diff --git a/app/src/main/java/com/afs/tutrd/navigation/profile/ProfileNavigation.kt b/app/src/main/java/com/afs/tutrd/navigation/profile/ProfileNavigation.kt index 9053458..de49470 100644 --- a/app/src/main/java/com/afs/tutrd/navigation/profile/ProfileNavigation.kt +++ b/app/src/main/java/com/afs/tutrd/navigation/profile/ProfileNavigation.kt @@ -6,13 +6,15 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable import com.afs.tutrd.navigation.profile.screen.Profile -import com.afs.tutrd.presentation.profile.ProfileScreen +import com.afs.tutrd.presentation.profile.view.ProfileScreen internal fun NavGraphBuilder.profileScreen( modifier: Modifier = Modifier ) { composable { - ProfileScreen(modifier = modifier) + ProfileScreen( + + modifier = modifier) } } diff --git a/app/src/main/java/com/afs/tutrd/presentation/profile/ProfileScreen.kt b/app/src/main/java/com/afs/tutrd/presentation/profile/ProfileScreen.kt deleted file mode 100644 index 9770eca..0000000 --- a/app/src/main/java/com/afs/tutrd/presentation/profile/ProfileScreen.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.afs.tutrd.presentation.profile - -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import com.afs.tutrd.component.scaffold.TutrdScaffold - -@Composable -fun ProfileScreen(modifier: Modifier) { - TutrdScaffold { - Box(modifier = modifier.fillMaxSize()) { - Text(text = "profile screen") - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileScreen.kt b/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileScreen.kt new file mode 100644 index 0000000..08eb371 --- /dev/null +++ b/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileScreen.kt @@ -0,0 +1,342 @@ +package com.afs.tutrd.presentation.profile.view + +import androidx.compose.foundation.ScrollState +import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.scrollable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement +import androidx.compose.material3.LocalMinimumTouchTargetEnforcement +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.afs.tutrd.component.divider.Divider +import com.afs.tutrd.component.scaffold.TutrdScaffold + +@Composable +fun ProfileScreen(modifier: Modifier) { + + val scrollState = rememberScrollState() + + TutrdScaffold( + topBar = { ProfileTopBar(title = "프로필") } + ) { paddingValues -> + Column( + modifier = Modifier + .fillMaxSize() + .padding(paddingValues) + .padding(horizontal = 20.dp), + verticalArrangement = Arrangement.spacedBy(32.dp) + ) { + TuteeTutorToggleBar() + Column( + modifier = Modifier + .fillMaxWidth() + .verticalScroll(scrollState), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Divider(title = "정보") + Row( + modifier = Modifier + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "이름" + ) + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "정환" + ) + } + Row( + modifier = Modifier + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "이메일" + ) + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "qwer123@naver.com" + ) + } + Row( + modifier = Modifier + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "연락처" + ) + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "010-9025-8656" + ) + } + Row( + modifier = Modifier + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "주요분야" + ) + Text( + fontSize = 16.sp, + text = "수학, 코딩" + ) + } + Row( + modifier = Modifier + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "한줄소개" + ) + Text( + fontSize = 16.sp, + text = "입력해주세요" + ) + } + } + + Column( + modifier = Modifier + .fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Divider(title = "서비스") + + TextButton( + modifier = Modifier + .height(24.dp), + colors = ButtonColors( + containerColor = Color.Transparent, + contentColor = Color.Black, + disabledContentColor = Color.Gray, + disabledContainerColor = Color.Gray), + contentPadding = PaddingValues(0.dp), + onClick = { /*TODO*/ } + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "서비스 이용약관", + ) + } + TextButton( + modifier = Modifier + .height(24.dp), + colors = ButtonColors( + containerColor = Color.Transparent, + contentColor = Color.Black, + disabledContentColor = Color.Gray, + disabledContainerColor = Color.Gray), + contentPadding = PaddingValues(0.dp), + onClick = { /*TODO*/ } + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "개인정보 처리방침", + ) + } + TextButton( + modifier = Modifier + .height(24.dp), + colors = ButtonColors( + containerColor = Color.Transparent, + contentColor = Color.Black, + disabledContentColor = Color.Gray, + disabledContainerColor = Color.Gray), + contentPadding = PaddingValues(0.dp), + onClick = { /*TODO*/ } + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "오픈소스 라이선스", + ) + } + } + + Column( + modifier = Modifier + .fillMaxWidth() + .verticalScroll(scrollState), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + Divider(title = "계정") + Row( + modifier = Modifier + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "아이디" + ) + Text( + modifier = Modifier + .alpha(0.5f), + fontSize = 16.sp, + text = "qwer123@naver.com" + ) + } + TextButton( + modifier = Modifier + .height(24.dp), + colors = ButtonColors( + containerColor = Color.Transparent, + contentColor = Color.Black, + disabledContentColor = Color.Gray, + disabledContainerColor = Color.Gray), + contentPadding = PaddingValues(0.dp), + onClick = { /*TODO*/ } + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "비밀번호 변경", + ) + } + TextButton( + modifier = Modifier + .height(24.dp), + colors = ButtonColors( + containerColor = Color.Transparent, + contentColor = Color.Black, + disabledContentColor = Color.Gray, + disabledContainerColor = Color.Gray), + contentPadding = PaddingValues(0.dp), + onClick = { /*TODO*/ } + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "로그아웃", + ) + } + TextButton( + modifier = Modifier + .height(24.dp), + colors = ButtonColors( + containerColor = Color.Transparent, + contentColor = Color.Black, + disabledContentColor = Color.Gray, + disabledContainerColor = Color.Gray), + contentPadding = PaddingValues(0.dp), + onClick = { /*TODO*/ } + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = "탈퇴", + ) + } + + } + + } + } +} +// +//@Preview +//@Composable +//fun preview() { +// Column( +// modifier = Modifier +// .fillMaxWidth(), +// verticalArrangement = Arrangement.spacedBy(16.dp) +// ) { +// Divider(title = "서비스") +// +// TextButton( +// modifier = Modifier +// .height(24.dp), +// colors = ButtonColors( +// containerColor = Color.Transparent, +// contentColor = Color.Black, +// disabledContentColor = Color.Gray, +// disabledContainerColor = Color.Gray), +// contentPadding = PaddingValues(0.dp), +// onClick = { /*TODO*/ } +// ) { +// Text( +// fontWeight = FontWeight.Bold, +// fontSize = 16.sp, +// text = "서비스 이용약관", +// ) +// } +// TextButton( +// modifier = Modifier +// .height(24.dp), +// colors = ButtonColors( +// containerColor = Color.Transparent, +// contentColor = Color.Black, +// disabledContentColor = Color.Gray, +// disabledContainerColor = Color.Gray), +// contentPadding = PaddingValues(0.dp), +// onClick = { /*TODO*/ } +// ) { +// Text( +// fontWeight = FontWeight.Bold, +// fontSize = 16.sp, +// text = "개인정보 처리방침", +// ) +// } +// TextButton( +// modifier = Modifier +// .height(24.dp), +// colors = ButtonColors( +// containerColor = Color.Transparent, +// contentColor = Color.Black, +// disabledContentColor = Color.Gray, +// disabledContainerColor = Color.Gray), +// contentPadding = PaddingValues(0.dp), +// onClick = { /*TODO*/ } +// ) { +// Text( +// fontWeight = FontWeight.Bold, +// fontSize = 16.sp, +// text = "오픈소스 라이선스", +// ) +// } +// } +//} \ No newline at end of file diff --git a/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileTopBar.kt b/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileTopBar.kt new file mode 100644 index 0000000..7d43998 --- /dev/null +++ b/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileTopBar.kt @@ -0,0 +1,37 @@ +package com.afs.tutrd.presentation.profile.view + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.afs.tutrd.theme.Heading1 + +@Composable +internal fun ProfileTopBar( + title: String +) { + Box( + modifier = Modifier + .height(56.dp) + .fillMaxWidth() + .padding(horizontal = 20.dp) + , + contentAlignment = Alignment.CenterStart + ) { + Row( + modifier = Modifier + ) { + Text( + modifier = Modifier, + text = title, + style = Heading1 + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/afs/tutrd/presentation/profile/view/TuteeTutorToggleBar.kt b/app/src/main/java/com/afs/tutrd/presentation/profile/view/TuteeTutorToggleBar.kt new file mode 100644 index 0000000..70db66d --- /dev/null +++ b/app/src/main/java/com/afs/tutrd/presentation/profile/view/TuteeTutorToggleBar.kt @@ -0,0 +1,64 @@ +package com.afs.tutrd.presentation.profile.view + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Switch +import androidx.compose.material3.SwitchDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun TuteeTutorToggleBar() { + + val toggleText = "튜티로 전환" //FIXME + var checked by remember { mutableStateOf(false) } + + Row( + modifier = Modifier + .fillMaxWidth() + .height(56.dp) + .background( + color = Color(247, 247, 245), + shape = RoundedCornerShape(8.dp) + ) + .padding(horizontal = 12.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Text( + modifier = Modifier, + fontSize = 16.sp, + fontWeight = FontWeight.Bold, + text = toggleText + ) + Spacer(modifier = Modifier.weight(1f)) + Switch( + colors = SwitchDefaults.colors( + + ), + checked = checked, + onCheckedChange = { checked = it} //FIXME 전환로직 삽입 + ) + } +} +// +//@Preview +//@Composable +//fun preview() { +// TuteeTutorToggleBar() +//} \ No newline at end of file From d610f36a641fad056828ff7ef9abf66ad41c52cf Mon Sep 17 00:00:00 2001 From: JungHwan Date: Thu, 8 Aug 2024 23:11:23 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=92=84=20Style:=20ui=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ui update --- app/src/main/java/com/afs/tutrd/TutrdApp.kt | 1 - .../profile/view/ProfileScreen.kt | 343 ++++-------------- 2 files changed, 71 insertions(+), 273 deletions(-) diff --git a/app/src/main/java/com/afs/tutrd/TutrdApp.kt b/app/src/main/java/com/afs/tutrd/TutrdApp.kt index c054157..0e39512 100644 --- a/app/src/main/java/com/afs/tutrd/TutrdApp.kt +++ b/app/src/main/java/com/afs/tutrd/TutrdApp.kt @@ -22,7 +22,6 @@ fun TutrdApp() { val tutrdNavController = rememberTutrdNavController() val navController = tutrdNavController.navController val isVisibleBottomBar = tutrdNavController.isInBottomTabs() - val currentTab = tutrdNavController.mapRouteToTab() TutrdScaffold( diff --git a/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileScreen.kt b/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileScreen.kt index 08eb371..0f5c33f 100644 --- a/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileScreen.kt +++ b/app/src/main/java/com/afs/tutrd/presentation/profile/view/ProfileScreen.kt @@ -6,12 +6,14 @@ import androidx.compose.foundation.gestures.scrollable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button @@ -29,11 +31,60 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.hilt.navigation.compose.hiltViewModel import com.afs.tutrd.component.divider.Divider import com.afs.tutrd.component.scaffold.TutrdScaffold +import com.afs.tutrd.presentation.home.viewmodel.HomeViewModel @Composable -fun ProfileScreen(modifier: Modifier) { +fun InfoRow(title: String, value: String, isDimmed: Boolean = false) { + Row( + modifier = Modifier + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = title + ) + Text( + modifier = if (isDimmed) Modifier.alpha(0.5f) else Modifier, + fontSize = 16.sp, + text = value + ) + } +} + +@Composable +fun ProfileTextButton(text: String, onClick: () -> Unit) { + TextButton( + modifier = Modifier + .height(24.dp) + .width(IntrinsicSize.Max), + colors = ButtonColors( + containerColor = Color.Transparent, + contentColor = Color.Black, + disabledContentColor = Color.Gray, + disabledContainerColor = Color.Gray), + contentPadding = PaddingValues(0.dp), + onClick = onClick + ) { + Text( + modifier = Modifier + .fillMaxWidth(), + fontWeight = FontWeight.Bold, + fontSize = 16.sp, + text = text + ) + } +} + +@Composable +fun ProfileScreen( + modifier: Modifier = Modifier, + viewModel: HomeViewModel = hiltViewModel() +) { val scrollState = rememberScrollState() @@ -41,98 +92,25 @@ fun ProfileScreen(modifier: Modifier) { topBar = { ProfileTopBar(title = "프로필") } ) { paddingValues -> Column( - modifier = Modifier + modifier = modifier .fillMaxSize() .padding(paddingValues) - .padding(horizontal = 20.dp), + .padding(all = 20.dp) + .verticalScroll(scrollState), verticalArrangement = Arrangement.spacedBy(32.dp) ) { TuteeTutorToggleBar() Column( modifier = Modifier - .fillMaxWidth() - .verticalScroll(scrollState), + .fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(16.dp) ) { Divider(title = "정보") - Row( - modifier = Modifier - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "이름" - ) - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "정환" - ) - } - Row( - modifier = Modifier - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "이메일" - ) - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "qwer123@naver.com" - ) - } - Row( - modifier = Modifier - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "연락처" - ) - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "010-9025-8656" - ) - } - Row( - modifier = Modifier - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "주요분야" - ) - Text( - fontSize = 16.sp, - text = "수학, 코딩" - ) - } - Row( - modifier = Modifier - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "한줄소개" - ) - Text( - fontSize = 16.sp, - text = "입력해주세요" - ) - } + InfoRow(title = "이름", value = "정환") + InfoRow(title = "이메일", value = "qwer123@naver.com") + InfoRow(title = "연락처", value = "010-9025-8656") + InfoRow(title = "주요분야", value = "수학, 코딩") + InfoRow(title = "한줄소개", value = "입력해주세요") } Column( @@ -142,201 +120,22 @@ fun ProfileScreen(modifier: Modifier) { ) { Divider(title = "서비스") - TextButton( - modifier = Modifier - .height(24.dp), - colors = ButtonColors( - containerColor = Color.Transparent, - contentColor = Color.Black, - disabledContentColor = Color.Gray, - disabledContainerColor = Color.Gray), - contentPadding = PaddingValues(0.dp), - onClick = { /*TODO*/ } - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "서비스 이용약관", - ) - } - TextButton( - modifier = Modifier - .height(24.dp), - colors = ButtonColors( - containerColor = Color.Transparent, - contentColor = Color.Black, - disabledContentColor = Color.Gray, - disabledContainerColor = Color.Gray), - contentPadding = PaddingValues(0.dp), - onClick = { /*TODO*/ } - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "개인정보 처리방침", - ) - } - TextButton( - modifier = Modifier - .height(24.dp), - colors = ButtonColors( - containerColor = Color.Transparent, - contentColor = Color.Black, - disabledContentColor = Color.Gray, - disabledContainerColor = Color.Gray), - contentPadding = PaddingValues(0.dp), - onClick = { /*TODO*/ } - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "오픈소스 라이선스", - ) - } + ProfileTextButton(text = "서비스 이용약관", onClick = { /* TODO */ }) + ProfileTextButton(text = "개인정보 처리방침", onClick = { /* TODO */ }) + ProfileTextButton(text = "오픈소스 라이선스", onClick = { /* TODO */ }) + } Column( modifier = Modifier - .fillMaxWidth() - .verticalScroll(scrollState), + .fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(16.dp) ) { Divider(title = "계정") - Row( - modifier = Modifier - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "아이디" - ) - Text( - modifier = Modifier - .alpha(0.5f), - fontSize = 16.sp, - text = "qwer123@naver.com" - ) - } - TextButton( - modifier = Modifier - .height(24.dp), - colors = ButtonColors( - containerColor = Color.Transparent, - contentColor = Color.Black, - disabledContentColor = Color.Gray, - disabledContainerColor = Color.Gray), - contentPadding = PaddingValues(0.dp), - onClick = { /*TODO*/ } - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "비밀번호 변경", - ) - } - TextButton( - modifier = Modifier - .height(24.dp), - colors = ButtonColors( - containerColor = Color.Transparent, - contentColor = Color.Black, - disabledContentColor = Color.Gray, - disabledContainerColor = Color.Gray), - contentPadding = PaddingValues(0.dp), - onClick = { /*TODO*/ } - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "로그아웃", - ) - } - TextButton( - modifier = Modifier - .height(24.dp), - colors = ButtonColors( - containerColor = Color.Transparent, - contentColor = Color.Black, - disabledContentColor = Color.Gray, - disabledContainerColor = Color.Gray), - contentPadding = PaddingValues(0.dp), - onClick = { /*TODO*/ } - ) { - Text( - fontWeight = FontWeight.Bold, - fontSize = 16.sp, - text = "탈퇴", - ) - } - + InfoRow(title = "아이디", value = "qwer123@naver.com", isDimmed = true) + ProfileTextButton(text = "비밀번호 변경", onClick = { /* TODO */ }) + ProfileTextButton(text = "로그아웃", onClick = { /* TODO */ }) + ProfileTextButton(text = "탈퇴", onClick = { /* TODO */ }) } - - } } -} -// -//@Preview -//@Composable -//fun preview() { -// Column( -// modifier = Modifier -// .fillMaxWidth(), -// verticalArrangement = Arrangement.spacedBy(16.dp) -// ) { -// Divider(title = "서비스") -// -// TextButton( -// modifier = Modifier -// .height(24.dp), -// colors = ButtonColors( -// containerColor = Color.Transparent, -// contentColor = Color.Black, -// disabledContentColor = Color.Gray, -// disabledContainerColor = Color.Gray), -// contentPadding = PaddingValues(0.dp), -// onClick = { /*TODO*/ } -// ) { -// Text( -// fontWeight = FontWeight.Bold, -// fontSize = 16.sp, -// text = "서비스 이용약관", -// ) -// } -// TextButton( -// modifier = Modifier -// .height(24.dp), -// colors = ButtonColors( -// containerColor = Color.Transparent, -// contentColor = Color.Black, -// disabledContentColor = Color.Gray, -// disabledContainerColor = Color.Gray), -// contentPadding = PaddingValues(0.dp), -// onClick = { /*TODO*/ } -// ) { -// Text( -// fontWeight = FontWeight.Bold, -// fontSize = 16.sp, -// text = "개인정보 처리방침", -// ) -// } -// TextButton( -// modifier = Modifier -// .height(24.dp), -// colors = ButtonColors( -// containerColor = Color.Transparent, -// contentColor = Color.Black, -// disabledContentColor = Color.Gray, -// disabledContainerColor = Color.Gray), -// contentPadding = PaddingValues(0.dp), -// onClick = { /*TODO*/ } -// ) { -// Text( -// fontWeight = FontWeight.Bold, -// fontSize = 16.sp, -// text = "오픈소스 라이선스", -// ) -// } -// } -//} \ No newline at end of file +}} \ No newline at end of file