From 720af0427a439dc9861ee204dc73a5cd8850ab96 Mon Sep 17 00:00:00 2001 From: Eric Ampire Date: Mon, 6 Sep 2021 22:58:30 +0200 Subject: [PATCH] Adding UserHeaderView --- .../screen/home/ui/LoggedUserHeaderView.kt | 77 ++++++++++++++++ .../screen/home/ui/UnLoggedUserHeaderView.kt | 87 +++++++++++++++++++ .../androidstudycase/util/PreviewData.kt | 7 ++ .../androidstudycase/util/PreviewParameter.kt | 6 ++ .../res/drawable/lottiefiles_circle_logo.xml | 27 ++++++ 5 files changed, 204 insertions(+) create mode 100644 app/src/main/java/com/ericampire/android/androidstudycase/presentation/screen/home/ui/LoggedUserHeaderView.kt create mode 100644 app/src/main/java/com/ericampire/android/androidstudycase/presentation/screen/home/ui/UnLoggedUserHeaderView.kt create mode 100644 app/src/main/res/drawable/lottiefiles_circle_logo.xml diff --git a/app/src/main/java/com/ericampire/android/androidstudycase/presentation/screen/home/ui/LoggedUserHeaderView.kt b/app/src/main/java/com/ericampire/android/androidstudycase/presentation/screen/home/ui/LoggedUserHeaderView.kt new file mode 100644 index 0000000..3b0246c --- /dev/null +++ b/app/src/main/java/com/ericampire/android/androidstudycase/presentation/screen/home/ui/LoggedUserHeaderView.kt @@ -0,0 +1,77 @@ +package com.ericampire.android.androidstudycase.presentation.screen.home.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.MaterialTheme +import androidx.compose.material.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.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.unit.dp +import com.ericampire.android.androidstudycase.domain.entity.User +import com.ericampire.android.androidstudycase.presentation.custom.CustomImageView +import com.ericampire.android.androidstudycase.presentation.theme.AndroidStudyCaseTheme +import com.ericampire.android.androidstudycase.presentation.theme.AppColor +import com.ericampire.android.androidstudycase.util.UserProvider + +@Composable +fun LoggedUserHeaderView( + modifier: Modifier = Modifier, + user: User +) { + Row( + modifier = modifier + .background(color = AppColor.Black001) + .padding(16.dp) + .fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(16.dp), + content = { + CustomImageView( + modifier = Modifier + .size(57.dp) + .clip(CircleShape), + data = user.imageUrl, + ) + Column( + verticalArrangement = Arrangement.spacedBy(8.dp), + content = { + Text( + maxLines = 1, + text = "Monday September 4", + style = MaterialTheme.typography.button.copy( + color = Color.Gray + ), + ) + Text( + maxLines = 1, + text = user.displayName, + style = MaterialTheme.typography.h3.copy( + color = AppColor.PaleBlue + ), + ) + } + ) + } + ) +} + +@Preview +@Composable +private fun LoggedUserHeaderViewPreview(@PreviewParameter(UserProvider::class) data: User) { + AndroidStudyCaseTheme(darkTheme = true) { + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center, + content = { + LoggedUserHeaderView( + user = data, + ) + } + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ericampire/android/androidstudycase/presentation/screen/home/ui/UnLoggedUserHeaderView.kt b/app/src/main/java/com/ericampire/android/androidstudycase/presentation/screen/home/ui/UnLoggedUserHeaderView.kt new file mode 100644 index 0000000..5056917 --- /dev/null +++ b/app/src/main/java/com/ericampire/android/androidstudycase/presentation/screen/home/ui/UnLoggedUserHeaderView.kt @@ -0,0 +1,87 @@ +package com.ericampire.android.androidstudycase.presentation.screen.home.ui + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.MaterialTheme +import androidx.compose.material.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.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.ericampire.android.androidstudycase.R +import com.ericampire.android.androidstudycase.presentation.theme.AndroidStudyCaseTheme +import com.ericampire.android.androidstudycase.presentation.theme.AppColor + +@Composable +fun UnLoggedUserHeaderView( + modifier: Modifier = Modifier, + onLoginClick: () -> Unit +) { + Row( + modifier = modifier + .background(color = AppColor.Black001) + .padding(16.dp) + .fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(16.dp), + content = { + Image( + modifier = Modifier + .size(57.dp) + .clip(CircleShape), + painter = painterResource(id = R.drawable.lottiefiles_circle_logo), + contentDescription = stringResource(id = R.string.txt_lottie_logo) + ) + Column( + verticalArrangement = Arrangement.spacedBy(8.dp), + content = { + Text( + maxLines = 1, + text = "Monday September 4", + style = MaterialTheme.typography.button.copy( + color = Color.Gray + ), + ) + Text( + maxLines = 1, + text = stringResource(R.string.txt_hello_stranger), + style = MaterialTheme.typography.h3.copy( + color = AppColor.PaleBlue + ), + ) + Text( + modifier = Modifier.clickable(onClick = onLoginClick), + maxLines = 1, + text = stringResource(R.string.txt_login), + style = MaterialTheme.typography.body1.copy( + color = AppColor.Teal + ), + ) + } + ) + } + ) +} + +@Preview +@Composable +private fun UnLoggedUserHeaderViewPreview() { + AndroidStudyCaseTheme(darkTheme = true) { + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center, + content = { + UnLoggedUserHeaderView() { + + } + } + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ericampire/android/androidstudycase/util/PreviewData.kt b/app/src/main/java/com/ericampire/android/androidstudycase/util/PreviewData.kt index de0e03a..fbbc1f4 100644 --- a/app/src/main/java/com/ericampire/android/androidstudycase/util/PreviewData.kt +++ b/app/src/main/java/com/ericampire/android/androidstudycase/util/PreviewData.kt @@ -3,8 +3,15 @@ package com.ericampire.android.androidstudycase.util import com.ericampire.android.androidstudycase.domain.entity.Animator import com.ericampire.android.androidstudycase.domain.entity.Blog import com.ericampire.android.androidstudycase.domain.entity.Lottiefile +import com.ericampire.android.androidstudycase.domain.entity.User object PreviewData { + object User { + val data = listOf( + User(1, "Eric Ampire", "https://avatars.githubusercontent.com/u/32017617?v=4") + ) + } + object Blog { val data = listOf( Blog( diff --git a/app/src/main/java/com/ericampire/android/androidstudycase/util/PreviewParameter.kt b/app/src/main/java/com/ericampire/android/androidstudycase/util/PreviewParameter.kt index c0a4765..db3be4a 100644 --- a/app/src/main/java/com/ericampire/android/androidstudycase/util/PreviewParameter.kt +++ b/app/src/main/java/com/ericampire/android/androidstudycase/util/PreviewParameter.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider import com.ericampire.android.androidstudycase.domain.entity.Animator import com.ericampire.android.androidstudycase.domain.entity.Blog import com.ericampire.android.androidstudycase.domain.entity.Lottiefile +import com.ericampire.android.androidstudycase.domain.entity.User class BlogProvider : PreviewParameterProvider { @@ -21,4 +22,9 @@ class AnimatorProvider : PreviewParameterProvider { class LottieFileProvider : PreviewParameterProvider { override val values: Sequence get() = PreviewData.Lottiefile.data.asSequence() +} + +class UserProvider : PreviewParameterProvider { + override val values: Sequence + get() = PreviewData.User.data.asSequence() } \ No newline at end of file diff --git a/app/src/main/res/drawable/lottiefiles_circle_logo.xml b/app/src/main/res/drawable/lottiefiles_circle_logo.xml new file mode 100644 index 0000000..fd8871f --- /dev/null +++ b/app/src/main/res/drawable/lottiefiles_circle_logo.xml @@ -0,0 +1,27 @@ + + + + + + + + + + +