11package com.cornellappdev.score.components
22
3- import androidx.compose.foundation.Canvas
43import androidx.compose.foundation.layout.Arrangement
5- import androidx.compose.foundation.layout.Box
6- import androidx.compose.foundation.layout.Column
74import androidx.compose.foundation.layout.PaddingValues
8- import androidx.compose.foundation.layout.Row
95import androidx.compose.foundation.layout.fillMaxWidth
10- import androidx.compose.foundation.layout.padding
11- import androidx.compose.foundation.layout.size
12- import androidx.compose.foundation.pager.HorizontalPager
13- import androidx.compose.foundation.pager.rememberPagerState
6+ import androidx.compose.foundation.layout.width
7+ import androidx.compose.foundation.lazy.LazyRow
8+ import androidx.compose.foundation.lazy.items
149import androidx.compose.runtime.Composable
15- import androidx.compose.ui.Alignment
1610import androidx.compose.ui.Modifier
17- import androidx.compose.ui.graphics.Color
1811import androidx.compose.ui.res.painterResource
1912import androidx.compose.ui.tooling.preview.Preview
20- import androidx.compose.ui.unit.Dp
2113import androidx.compose.ui.unit.dp
2214import com.cornellappdev.score.R
2315import com.cornellappdev.score.model.GameCardData
2416import com.cornellappdev.score.theme.CornellRed
25- import com.cornellappdev.score.theme.CrimsonPrimary
26- import com.cornellappdev.score.theme.GrayLight
2717import com.cornellappdev.score.util.gameList
2818
29- @Composable
30- fun DotIndicator (
31- pagerState : androidx.compose.foundation.pager.PagerState ,
32- totalPages : Int ,
33- modifier : Modifier = Modifier ,
34- dotSize : Dp = 14.dp,
35- selectedColor : Color = CrimsonPrimary ,
36- unselectedColor : Color = GrayLight
37- ) {
38- Row (
39- modifier = modifier,
40- horizontalArrangement = Arrangement .spacedBy(32 .dp)
41- ) {
42- for (i in 0 until totalPages) {
43- val color = if (i == pagerState.currentPage) selectedColor else unselectedColor
44- Canvas (
45- modifier = Modifier
46- .size(dotSize)
47- .padding(2 .dp)
48- ) {
49- drawCircle(color = color)
50- }
51- }
52- }
53- }
54-
5519@Composable
5620fun GamesCarousel (
5721 games : List <GameCardData >,
5822 onClick : (String ) -> Unit ,
5923 modifier : Modifier = Modifier ,
6024) {
61- val pagerState = rememberPagerState(pageCount = { games.size })
62- Column (
63- modifier = modifier
64- .fillMaxWidth(),
65- verticalArrangement = Arrangement .spacedBy(16 .dp, Alignment .Top ),
25+ LazyRow (
26+ modifier = modifier.fillMaxWidth(),
27+ contentPadding = PaddingValues (horizontal = 24 .dp),
28+ horizontalArrangement = Arrangement .spacedBy(16 .dp)
6629 ) {
67- HorizontalPager (
68- state = pagerState,
69- modifier = Modifier .fillMaxWidth(),
70- contentPadding = PaddingValues (horizontal = 24 .dp),
71- pageSpacing = 24 .dp
72- ) { page ->
73- val game = games[page]
30+ items(games) { game ->
7431 FeaturedGameCard (
7532 leftTeamLogo = painterResource(R .drawable.cornell_logo),
7633 rightTeamLogo = game.teamLogo,
@@ -81,21 +38,12 @@ fun GamesCarousel(
8138 genderIcon = painterResource(game.genderIcon),
8239 sportIcon = painterResource(game.sportIcon),
8340 location = game.location,
84- modifier = Modifier ,
85- headerModifier = Modifier ,
8641 gradientColor1 = CornellRed ,
8742 gradientColor2 = game.teamColor,
8843 leftScore = game.cornellScore?.toInt(),
8944 rightScore = game.otherScore?.toInt(),
90- onClick = { onClick(game.id) }
91- )
92- }
93-
94- Box (modifier = Modifier .fillMaxWidth()) {
95- DotIndicator (
96- pagerState = pagerState,
97- totalPages = games.size,
98- modifier = Modifier .align(Alignment .Center )
45+ onClick = { onClick(game.id) },
46+ modifier = Modifier .width(300 .dp)
9947 )
10048 }
10149 }
@@ -105,4 +53,4 @@ fun GamesCarousel(
10553@Preview
10654private fun GamesCarouselPreview () = ScorePreview {
10755 GamesCarousel (gameList, onClick = {})
108- }
56+ }
0 commit comments