Fix weather widget missing permission / no data UI overlap
This commit is contained in:
parent
e7775b5a2a
commit
9433b11747
@ -58,27 +58,29 @@ fun WeatherWidget() {
|
|||||||
val forecast = selectedForecast ?: run {
|
val forecast = selectedForecast ?: run {
|
||||||
val hasPermission by viewModel.hasLocationPermission.observeAsState()
|
val hasPermission by viewModel.hasLocationPermission.observeAsState()
|
||||||
val autoLocation by viewModel.autoLocation.observeAsState()
|
val autoLocation by viewModel.autoLocation.observeAsState()
|
||||||
AnimatedVisibility(hasPermission == false && autoLocation == true) {
|
Column {
|
||||||
MissingPermissionBanner(
|
AnimatedVisibility(hasPermission == false && autoLocation == true) {
|
||||||
modifier = Modifier
|
MissingPermissionBanner(
|
||||||
.padding(horizontal = 16.dp)
|
modifier = Modifier
|
||||||
.padding(top = 16.dp),
|
.padding(horizontal = 16.dp)
|
||||||
text = stringResource(id = R.string.missing_permission_auto_location),
|
.padding(top = 16.dp),
|
||||||
onClick = {
|
text = stringResource(id = R.string.missing_permission_auto_location),
|
||||||
viewModel.requestLocationPermission(context as AppCompatActivity)
|
onClick = {
|
||||||
},
|
viewModel.requestLocationPermission(context as AppCompatActivity)
|
||||||
secondaryAction = {
|
},
|
||||||
TextButton(onClick = {
|
secondaryAction = {
|
||||||
showLocationDialog = true
|
TextButton(onClick = {
|
||||||
}) {
|
showLocationDialog = true
|
||||||
Text(
|
}) {
|
||||||
stringResource(R.string.weather_widget_set_location),
|
Text(
|
||||||
)
|
stringResource(R.string.weather_widget_set_location),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
)
|
||||||
)
|
}
|
||||||
|
NoData()
|
||||||
}
|
}
|
||||||
NoData()
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +88,9 @@ fun WeatherWidget() {
|
|||||||
CurrentWeather(forecast, imperialUnits)
|
CurrentWeather(forecast, imperialUnits)
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp),
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.padding(vertical = 2.dp),
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
val dailyForecasts by viewModel.dailyForecasts.observeAsState(emptyList())
|
val dailyForecasts by viewModel.dailyForecasts.observeAsState(emptyList())
|
||||||
@ -98,7 +102,9 @@ fun WeatherWidget() {
|
|||||||
onDaySelected = {
|
onDaySelected = {
|
||||||
viewModel.selectDay(it)
|
viewModel.selectDay(it)
|
||||||
},
|
},
|
||||||
modifier = Modifier.weight(1f).padding(horizontal = 4.dp),
|
modifier = Modifier
|
||||||
|
.weight(1f)
|
||||||
|
.padding(horizontal = 4.dp),
|
||||||
imperialUnits = imperialUnits
|
imperialUnits = imperialUnits
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -110,7 +116,9 @@ fun WeatherWidget() {
|
|||||||
onTimeSelected = {
|
onTimeSelected = {
|
||||||
viewModel.selectForecast(it)
|
viewModel.selectForecast(it)
|
||||||
},
|
},
|
||||||
modifier = Modifier.weight(1f).padding(horizontal = 4.dp),
|
modifier = Modifier
|
||||||
|
.weight(1f)
|
||||||
|
.padding(horizontal = 4.dp),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -162,18 +170,27 @@ fun CurrentWeather(forecast: Forecast, imperialUnits: Boolean) {
|
|||||||
) {
|
) {
|
||||||
if (forecast.humidity >= 0) {
|
if (forecast.humidity >= 0) {
|
||||||
Text(
|
Text(
|
||||||
stringResource(id = R.string.weather_details_humidity, "${forecast.humidity.roundToInt()} %"),
|
stringResource(
|
||||||
|
id = R.string.weather_details_humidity,
|
||||||
|
"${forecast.humidity.roundToInt()} %"
|
||||||
|
),
|
||||||
style = MaterialTheme.typography.bodySmall,
|
style = MaterialTheme.typography.bodySmall,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Text(
|
Text(
|
||||||
stringResource(id = R.string.weather_details_wind, formatWindSpeed(imperialUnits, forecast)),
|
stringResource(
|
||||||
|
id = R.string.weather_details_wind,
|
||||||
|
formatWindSpeed(imperialUnits, forecast)
|
||||||
|
),
|
||||||
style = MaterialTheme.typography.bodySmall,
|
style = MaterialTheme.typography.bodySmall,
|
||||||
)
|
)
|
||||||
val precipitation = formatPrecipitation(imperialUnits, forecast)
|
val precipitation = formatPrecipitation(imperialUnits, forecast)
|
||||||
if (precipitation != null) {
|
if (precipitation != null) {
|
||||||
Text(
|
Text(
|
||||||
stringResource(id = R.string.weather_details_precipitation, precipitation),
|
stringResource(
|
||||||
|
id = R.string.weather_details_precipitation,
|
||||||
|
precipitation
|
||||||
|
),
|
||||||
style = MaterialTheme.typography.bodySmall,
|
style = MaterialTheme.typography.bodySmall,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user