@@ -4,14 +4,21 @@ import androidx.compose.foundation.layout.Column
44import androidx.compose.foundation.layout.padding
55import androidx.compose.foundation.rememberScrollState
66import androidx.compose.foundation.verticalScroll
7- import androidx.compose.material3.HorizontalDivider
7+ import androidx.compose.material3.ScrollableTabRow
8+ import androidx.compose.material3.Tab
89import androidx.compose.material3.Text
910import androidx.compose.runtime.Composable
11+ import androidx.compose.runtime.getValue
12+ import androidx.compose.runtime.mutableIntStateOf
13+ import androidx.compose.runtime.remember
14+ import androidx.compose.runtime.setValue
1015import androidx.compose.ui.Modifier
1116import androidx.compose.ui.platform.testTag
12- import androidx.compose.ui.tooling.preview.Preview
17+ import androidx.compose.ui.res.stringResource
18+ import androidx.compose.ui.tooling.preview.PreviewScreenSizes
1319import androidx.compose.ui.unit.dp
1420
21+ import io.github.tobyhs.weatherweight.R
1522import io.github.tobyhs.weatherweight.data.model.ForecastResultSet
1623
1724import java.time.ZoneId
@@ -32,15 +39,31 @@ fun ForecastScreenContent(forecastResultSet: ForecastResultSet) {
3239 modifier = Modifier .testTag(" publicationTime" ),
3340 )
3441
35- Column (Modifier .verticalScroll(rememberScrollState())) {
36- for (forecast in forecastResultSet.dailyForecasts) {
37- DailyForecastCard (forecast)
42+ var tabIndex by remember { mutableIntStateOf(0 ) }
43+ val tabTitleResources = listOf (R .string.daily, R .string.hourly)
44+ ScrollableTabRow (tabIndex, modifier = Modifier .padding(top = 4 .dp), edgePadding = 0 .dp) {
45+ tabTitleResources.forEachIndexed { index, titleRes ->
46+ Tab (
47+ text = { Text (stringResource(titleRes)) },
48+ modifier = Modifier .testTag(" forecastTab_${index} " ),
49+ selected = tabIndex == index,
50+ onClick = { tabIndex = index },
51+ )
3852 }
53+ }
3954
40- HorizontalDivider (Modifier .padding(vertical = 8 .dp))
41-
42- for (forecast in forecastResultSet.hourlyForecasts) {
43- HourlyForecastCard (forecast)
55+ Column (Modifier .verticalScroll(rememberScrollState())) {
56+ when (tabTitleResources[tabIndex]) {
57+ R .string.daily -> {
58+ for (forecast in forecastResultSet.dailyForecasts) {
59+ DailyForecastCard (forecast)
60+ }
61+ }
62+ R .string.hourly -> {
63+ for (forecast in forecastResultSet.hourlyForecasts) {
64+ HourlyForecastCard (forecast)
65+ }
66+ }
4467 }
4568 }
4669 }
@@ -53,7 +76,7 @@ internal val previewDataForecastResultSet = ForecastResultSet(
5376 hourlyForecasts = previewDataHourlyForecasts,
5477)
5578
56- @Preview
79+ @PreviewScreenSizes
5780@Composable
5881private fun ForecastScreenContentPreview () {
5982 ForecastScreenContent (previewDataForecastResultSet)
0 commit comments