mirror of
https://github.com/PranshulGG/WeatherMaster.git
synced 2026-10-23 11:33:42 -05:00
add PixelStyleCurrentWeatherCard and support layout switching in CurrentWeatherCard
This commit is contained in:
1 parent
570605d497
commit
409fb8eb16
1 file changed
+78
-17
+78
-17
@@ -32,22 +32,27 @@ import kotlin.math.roundToInt
|
||||
fun CurrentWeatherCard(
|
||||
weather: Weather,
|
||||
units: WeatherUnits,
|
||||
context: Context
|
||||
context: Context,
|
||||
isFroggyLayout: Boolean = true
|
||||
) {
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.padding(start = 16.dp, end = 16.dp, top = 6.dp)
|
||||
) {
|
||||
Row(
|
||||
if (isFroggyLayout) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.SpaceBetween
|
||||
.padding(start = 16.dp, end = 16.dp, top = 6.dp)
|
||||
) {
|
||||
CardRowContent(weather, units, context)
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.SpaceBetween
|
||||
) {
|
||||
CardRowContent(weather, units, context)
|
||||
}
|
||||
MinMaxTempRow(weather, units, context)
|
||||
}
|
||||
MinMaxTempRow(weather, units, context)
|
||||
} else {
|
||||
PixelStyleCurrentWeatherCard(weather, units, context)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -102,7 +107,12 @@ private fun CardRowContent(weather: Weather, units: WeatherUnits, context: Conte
|
||||
|
||||
|
||||
@Composable
|
||||
private fun MinMaxTempRow(weather: Weather, units: WeatherUnits, context: Context) {
|
||||
private fun MinMaxTempRow(
|
||||
weather: Weather,
|
||||
units: WeatherUnits,
|
||||
context: Context,
|
||||
isFroggyLayout: Boolean = true
|
||||
) {
|
||||
|
||||
|
||||
val colorScheme = MaterialTheme.colorScheme
|
||||
@@ -114,9 +124,10 @@ private fun MinMaxTempRow(weather: Weather, units: WeatherUnits, context: Contex
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
horizontalArrangement = if (isFroggyLayout) Arrangement.SpaceBetween else Arrangement.Center,
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
|
||||
) {
|
||||
Text(
|
||||
"${
|
||||
stringResource(
|
||||
@@ -130,9 +141,10 @@ private fun MinMaxTempRow(weather: Weather, units: WeatherUnits, context: Contex
|
||||
)
|
||||
}",
|
||||
color = colorScheme.onSurfaceVariant,
|
||||
style = MaterialTheme.typography.labelLarge
|
||||
style = if (isFroggyLayout) MaterialTheme.typography.labelLarge else MaterialTheme.typography.titleLarge
|
||||
)
|
||||
LastUpdatedTextRow(weather.current.lastUpdatedInMilli, context)
|
||||
if (isFroggyLayout)
|
||||
LastUpdatedTextRow(weather.current.lastUpdatedInMilli, context)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,4 +167,53 @@ private fun LastUpdatedTextRow(timeMilli: Long, context: Context) {
|
||||
fontStyle = FontStyle.Italic
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun PixelStyleCurrentWeatherCard(weather: Weather, units: WeatherUnits, context: Context) {
|
||||
val current = weather.current
|
||||
|
||||
val currentTemp = TemperatureUnit.CELSIUS.convert(current.temperature, units.tempUnit)
|
||||
|
||||
val feelsLike = TemperatureUnit.CELSIUS.convert(current.feelsLike, units.tempUnit)
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.padding(start = 16.dp, end = 16.dp, top = 24.dp)
|
||||
.fillMaxWidth(),
|
||||
horizontalAlignment = Alignment.CenterHorizontally
|
||||
) {
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
WeatherIconBox(
|
||||
current.weatherCondition.toIcon(
|
||||
targetTimeMilli = weather.current.time,
|
||||
daily = weather.daily.firstOrNull()
|
||||
),
|
||||
size = 32.dp
|
||||
)
|
||||
Gap(horizontal = 6.dp)
|
||||
Text(
|
||||
current.weatherCondition.toLabel(context),
|
||||
color = MaterialTheme.colorScheme.onSurface,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
}
|
||||
Text(
|
||||
"${currentTemp?.roundToInt() ?: "-"}°",
|
||||
color = MaterialTheme.colorScheme.primary,
|
||||
fontSize = 136.sp,
|
||||
fontWeight = FontWeight.Bold,
|
||||
)
|
||||
Text(
|
||||
stringResource(R.string.temp_feels_like, "${feelsLike?.roundToInt() ?: "-"}°"),
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
Gap(vertical = 6.dp)
|
||||
MinMaxTempRow(weather, units, context, false)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user