Skip to content

Commit

Permalink
refactor: Created WarningLabel
Browse files Browse the repository at this point in the history
  • Loading branch information
PavloNetrebchuk committed Mar 25, 2024
1 parent bae55d2 commit 320e237
Show file tree
Hide file tree
Showing 2 changed files with 134 additions and 100 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,67 @@ package org.openedx.course.presentation.detail

import android.annotation.SuppressLint
import android.content.Intent
import android.content.res.Configuration.*
import android.content.res.Configuration.ORIENTATION_LANDSCAPE
import android.content.res.Configuration.ORIENTATION_PORTRAIT
import android.content.res.Configuration.UI_MODE_NIGHT_NO
import android.content.res.Configuration.UI_MODE_NIGHT_YES
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
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.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.CircularProgressIndicator
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Report
import androidx.compose.runtime.*
import androidx.compose.material.rememberScaffoldState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.*
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
Expand All @@ -44,17 +82,28 @@ import org.openedx.core.UIMessage
import org.openedx.core.domain.model.Course
import org.openedx.core.domain.model.Media
import org.openedx.core.extension.isEmailValid
import org.openedx.core.ui.*
import org.openedx.core.ui.AuthButtonsPanel
import org.openedx.core.ui.HandleUIMessage
import org.openedx.core.ui.OfflineModeDialog
import org.openedx.core.ui.OpenEdXButton
import org.openedx.core.ui.Toolbar
import org.openedx.core.ui.WindowSize
import org.openedx.core.ui.WindowType
import org.openedx.core.ui.displayCutoutForLandscape
import org.openedx.core.ui.isPreview
import org.openedx.core.ui.rememberWindowSize
import org.openedx.core.ui.statusBarsInset
import org.openedx.core.ui.theme.OpenEdXTheme
import org.openedx.core.ui.theme.appColors
import org.openedx.core.ui.theme.appShapes
import org.openedx.core.ui.theme.appTypography
import org.openedx.core.ui.windowSizeValue
import org.openedx.core.utils.EmailUtil
import org.openedx.course.R
import org.openedx.course.presentation.CourseRouter
import org.openedx.course.presentation.ui.CourseImageHeader
import org.openedx.course.presentation.ui.WarningLabel
import java.nio.charset.StandardCharsets
import java.util.*
import java.util.Date
import org.openedx.course.R as courseR

class CourseDetailsFragment : Fragment() {
Expand Down Expand Up @@ -555,100 +604,18 @@ private fun CourseDetailNativeContentLandscape(

@Composable
private fun EnrollOverLabel() {
val borderColor = if (!isSystemInDarkTheme()) {
MaterialTheme.appColors.cardViewBorder
} else {
MaterialTheme.appColors.surface
}
Box(
Modifier
.fillMaxWidth()
.shadow(
0.dp,
MaterialTheme.appShapes.material.medium
)
.background(
MaterialTheme.appColors.surface,
MaterialTheme.appShapes.material.medium
)
.border(
1.dp,
borderColor,
MaterialTheme.appShapes.material.medium
)
) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(
horizontal = 16.dp,
vertical = 12.dp
),
verticalAlignment = Alignment.CenterVertically
) {
Icon(
imageVector = Icons.Outlined.Report,
contentDescription = null,
tint = MaterialTheme.appColors.warning
)
Spacer(Modifier.width(12.dp))
Text(
modifier = Modifier.testTag("txt_enroll_error"),
text = stringResource(id = courseR.string.course_you_cant_enroll),
color = MaterialTheme.appColors.textPrimaryVariant,
style = MaterialTheme.appTypography.titleSmall
)
}
}
WarningLabel(
painter = rememberVectorPainter(Icons.Outlined.Report),
text = stringResource(id = courseR.string.course_you_cant_enroll)
)
}

@Composable
private fun NoInternetLabel() {
val borderColor = if (!isSystemInDarkTheme()) {
MaterialTheme.appColors.cardViewBorder
} else {
MaterialTheme.appColors.surface
}
Box(
Modifier
.fillMaxWidth()
.shadow(
0.dp,
MaterialTheme.appShapes.material.medium
)
.background(
MaterialTheme.appColors.surface,
MaterialTheme.appShapes.material.medium
)
.border(
1.dp,
borderColor,
MaterialTheme.appShapes.material.medium
)
) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(
horizontal = 16.dp,
vertical = 12.dp
),
verticalAlignment = Alignment.CenterVertically
) {
Icon(
painter = painterResource(id = org.openedx.core.R.drawable.core_ic_offline),
contentDescription = null,
tint = MaterialTheme.appColors.warning
)
Spacer(Modifier.width(12.dp))
Text(
modifier = Modifier.testTag("txt_enroll_internet_error"),
text = stringResource(id = courseR.string.course_no_internet_label),
color = MaterialTheme.appColors.textPrimaryVariant,
style = MaterialTheme.appTypography.titleSmall
)
}
}
WarningLabel(
painter = painterResource(id = org.openedx.core.R.drawable.core_ic_offline),
text = stringResource(id = courseR.string.course_no_internet_label)
)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
Expand Down Expand Up @@ -58,7 +59,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.rotate
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
Expand Down Expand Up @@ -1157,6 +1160,70 @@ fun CourseDatesBannerTablet(
}
}

@Composable
fun WarningLabel(
painter: Painter,
text: String
) {
val borderColor = if (!isSystemInDarkTheme()) {
MaterialTheme.appColors.cardViewBorder
} else {
MaterialTheme.appColors.surface
}
Box(
Modifier
.fillMaxWidth()
.shadow(
0.dp,
MaterialTheme.appShapes.material.medium
)
.background(
MaterialTheme.appColors.surface,
MaterialTheme.appShapes.material.medium
)
.border(
1.dp,
borderColor,
MaterialTheme.appShapes.material.medium
)
) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(
horizontal = 16.dp,
vertical = 12.dp
),
verticalAlignment = Alignment.CenterVertically
) {
Icon(
painter = painter,
contentDescription = null,
tint = MaterialTheme.appColors.warning
)
Spacer(Modifier.width(12.dp))
Text(
modifier = Modifier.testTag("txt_enroll_internet_error"),
text = text,
color = MaterialTheme.appColors.textPrimaryVariant,
style = MaterialTheme.appTypography.titleSmall
)
}
}
}

@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO)
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun WarningLabelPreview() {
OpenEdXTheme {
WarningLabel(
painter = painterResource(id = org.openedx.core.R.drawable.core_ic_offline),
text = stringResource(id = courseR.string.course_no_internet_label)
)
}
}

@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO)
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
Expand Down

0 comments on commit 320e237

Please sign in to comment.