From f22ef74c2acb04f503d980b3afedb180844fc4d9 Mon Sep 17 00:00:00 2001 From: yeongun130 Date: Wed, 28 Feb 2024 17:25:43 +0900 Subject: [PATCH] :lipstick: :: Add home screen --- .../msg/presentation/view/home/HomeScreen.kt | 108 +++++++++++++----- .../view/home/component/DotoriMainTopBar.kt | 71 ++++++++++++ 2 files changed, 150 insertions(+), 29 deletions(-) create mode 100644 presentation/src/main/java/com/msg/presentation/view/home/component/DotoriMainTopBar.kt diff --git a/presentation/src/main/java/com/msg/presentation/view/home/HomeScreen.kt b/presentation/src/main/java/com/msg/presentation/view/home/HomeScreen.kt index 445d931f..54cc674f 100644 --- a/presentation/src/main/java/com/msg/presentation/view/home/HomeScreen.kt +++ b/presentation/src/main/java/com/msg/presentation/view/home/HomeScreen.kt @@ -1,40 +1,90 @@ package com.msg.presentation.view.home -import android.annotation.SuppressLint -import android.net.http.SslError -import android.view.ViewGroup -import android.webkit.SslErrorHandler -import android.webkit.WebView -import android.webkit.WebViewClient +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +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.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.viewinterop.AndroidView +import androidx.compose.ui.unit.dp +import com.dotori.dotori_components.components.card.DotoriMainCard +import com.dotori.dotori_components.components.utils.Types +import com.dotori.dotori_components.components.watch.DotoriWatch +import com.dotori.dotori_components.theme.DotoriTheme +import com.msg.presentation.view.home.component.Cafeteria +import com.msg.presentation.view.home.component.DotoriMainTopBar +import com.msg.presentation.view.util.updateDotoriTheme +import kotlinx.coroutines.delay +import java.util.Date -@SuppressLint("SetJavaScriptEnabled") @Composable -fun HomeScreen() { - AndroidView(factory = { - WebView(it).apply { - layoutParams = ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT +fun HomeScreen( + modifier: Modifier = Modifier +) { + val scrollState = rememberScrollState() + val currentTime = remember { + mutableStateOf(Date()) + } + LaunchedEffect(key1 = true) { + while (true) { + delay(1_000) + currentTime.value = Date() + } + } + + Column( + modifier = modifier + .fillMaxSize() + .background(DotoriTheme.colors.background) + ) { + DotoriMainTopBar( + isDark = DotoriTheme.isSystemIsDarkTheme(), + onSwitchClick = { DotoriTheme.updateDotoriTheme() } + ) + + Spacer(modifier = modifier.height(12.dp)) + Column( + modifier = modifier + .padding(horizontal = 20.dp) + .verticalScroll(scrollState) + ) { + DotoriWatch( + time = currentTime.value + ) + Spacer(modifier = modifier.height(12.dp)) + DotoriMainCard( + count = 10, + limit = 50, + role = "ROLE_MEMBER", + mode = Types.CardType.SELF_STUDY, + arrowClick = { /*TODO*/ }, + settingClick = { /*TODO*/ }, + refreshClick = { /*TODO*/ }, + buttonClick = { /*TODO*/ } + ) + Spacer(modifier = modifier.height(12.dp)) + DotoriMainCard( + count = 0, + limit = 50, + role = "ROLE_DEVELOPER", + mode = Types.CardType.MASSAGE_CHAIR, + arrowClick = { /*TODO*/ }, + settingClick = { /*TODO*/ }, + refreshClick = { /*TODO*/ }, + buttonClick = { /*TODO*/ } ) - settings.javaScriptEnabled = true - settings.domStorageEnabled = true - webViewClient = object : WebViewClient() { - @SuppressLint("WebViewClientOnReceivedSslError") - override fun onReceivedSslError( - view: WebView?, - handler: SslErrorHandler?, - error: SslError? - ) { - super.onReceivedSslError(view, handler, error) - handler!!.proceed() - } - } - loadUrl("https://www.dotori-gsm.com/home") + Spacer(modifier = modifier.height(12.dp)) + Cafeteria() } - }) + } } @Preview diff --git a/presentation/src/main/java/com/msg/presentation/view/home/component/DotoriMainTopBar.kt b/presentation/src/main/java/com/msg/presentation/view/home/component/DotoriMainTopBar.kt new file mode 100644 index 00000000..3e7d7a22 --- /dev/null +++ b/presentation/src/main/java/com/msg/presentation/view/home/component/DotoriMainTopBar.kt @@ -0,0 +1,71 @@ +package com.msg.presentation.view.home.component + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +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.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.dotori.dotori_components.components.toggle.DotoriThemeSwitchButton +import com.dotori.dotori_components.components.utils.Theme +import com.dotori.dotori_components.theme.DotoriText +import com.dotori.dotori_components.theme.DotoriTheme +import com.dotori.dotori_components.theme.HamburgerIcon +import com.dotori.dotori_components.theme.White +import com.example.dus.R + +@Composable +fun DotoriMainTopBar( + isDark: Boolean, + onSwitchClick: (Boolean) -> Unit, + modifier: Modifier = Modifier, +) { + Row( + modifier = modifier + .fillMaxWidth() + .background(White) + .padding(horizontal = 20.dp, vertical = 12.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + HamburgerIcon() + Spacer(modifier = modifier.width(16.dp)) + DotoriText() + + Spacer(modifier = modifier.weight(1f)) + + DotoriThemeSwitchButton( + isDark = isDark, + onSwitchClick = onSwitchClick + ) + Spacer(modifier = modifier.width(16.dp)) + Image( + painter = if (DotoriTheme.dotoriTheme == Theme.LIGHT) painterResource(id = R.drawable.ic_profile_light) + else painterResource(id = R.drawable.ic_profile_dark), + contentDescription = "profile image", + modifier = modifier + .size(40.dp) + .clip(CircleShape) + ) + } +} + +@Preview +@Composable +fun DotoriMainTopBarPre() { + DotoriMainTopBar( + isDark = DotoriTheme.isSystemIsDarkTheme(), + onSwitchClick = { } + ) +} \ No newline at end of file