Skip to content

Commit 70431a2

Browse files
committed
Adição de banner de conteúdo em destaque
1 parent e6d372a commit 70431a2

File tree

15 files changed

+402
-18
lines changed

15 files changed

+402
-18
lines changed

app/src/main/java/com/codandotv/streamplayerapp/MainActivity.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ import androidx.activity.ComponentActivity
55
import androidx.activity.compose.setContent
66
import androidx.compose.runtime.Composable
77
import androidx.navigation.compose.rememberNavController
8-
import com.codandotv.streamplayerapp.core_navigation.bottomnavigation.StreamPlayerBottomNavigation
9-
import com.codandotv.streamplayerapp.core_navigation.helper.currentRoute
10-
import com.codandotv.streamplayerapp.core_navigation.routes.Routes
118
import com.codandotv.streamplayerapp.core_shared_ui.theme.StreamPlayerTheme
129
import com.codandotv.streamplayerapp.navigation.NavigationGraph
1310

core-shared-ui/src/main/java/com/codandotv/streamplayerapp/core_shared_ui/resources/Colors.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ import androidx.compose.ui.graphics.Color
66

77
object Colors {
88
val DarkDeepGray = Color(0xFF262626)
9-
val Dark80 = Color(0xCC000000)
9+
val Dark10 = Color(0x1A000000)
1010

1111
val LightColors = lightColorScheme(
1212
primary = Color(0xFFE50914),
1313
secondary = Color(0xFFF5F5F1),
14-
background = Color(0xFFFFFFFF),
15-
onBackground = Color(0xFF070707),
16-
surface = Color(0xFFFFFFFF),
17-
onSurface = Color(0xFF121212),
14+
background = Color(0xFF000000),
15+
onBackground = Color(0xFFFFFFFF),
16+
surface = Color(0xFF121212),
17+
onSurface = Color(0xFF070707),
1818
onSurfaceVariant = Color(0xFF9B9B9B),
1919
)
2020

core-shared-ui/src/main/java/com/codandotv/streamplayerapp/core_shared_ui/widget/StreamPlayerTopBar.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import com.codandotv.streamplayerapp.core_shared_ui.theme.ThemePreviews
3535
@OptIn(ExperimentalMaterial3Api::class)
3636
@Composable
3737
fun StreamPlayerTopBar(scrollBehavior: TopAppBarScrollBehavior) {
38-
Box(modifier = Modifier.background(color = Colors.Dark80)) {
38+
Box(modifier = Modifier.background(color = Colors.Dark10)) {
3939
StreamPlayerTopBar()
4040
StreamPlayerOptionsTopBar(modifier = Modifier.padding(top = 50.dp), scrollBehavior)
4141
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960"
6+
android:tint="?attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M450,760L450,510L200,510L200,450L450,450L450,200L510,200L510,450L760,450L760,510L510,510L510,760L450,760Z"/>
10+
</vector>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960"
6+
android:tint="?attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M453,680L513,680L513,440L453,440L453,680ZM479.98,366Q494,366 503.5,356.8Q513,347.6 513,334Q513,319.55 503.52,309.78Q494.04,300 480.02,300Q466,300 456.5,309.78Q447,319.55 447,334Q447,347.6 456.48,356.8Q465.96,366 479.98,366ZM480.27,880Q397.53,880 324.77,848.5Q252,817 197.5,762.5Q143,708 111.5,635.16Q80,562.32 80,479.5Q80,396.68 111.5,323.84Q143,251 197.5,197Q252,143 324.84,111.5Q397.68,80 480.5,80Q563.32,80 636.16,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,479.73Q880,562.47 848.5,635.23Q817,708 763,762.32Q709,816.63 636,848.32Q563,880 480.27,880ZM480.5,820Q622,820 721,720.5Q820,621 820,479.5Q820,338 721.19,239Q622.38,140 480,140Q339,140 239.5,238.81Q140,337.63 140,480Q140,621 239.5,720.5Q339,820 480.5,820ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
10+
</vector>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960"
6+
android:tint="?attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/black"
9+
android:pathData="M320,760L320,200L760,480L320,760Z"/>
10+
</vector>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.codandotv.streamplayerapp.feature_list_streams.core
2+
3+
import androidx.annotation.StringRes
4+
import com.codandotv.streamplayerapp.feature_list_streams.R
5+
6+
enum class ContentType(@StringRes val contentName: Int, @StringRes val contentNameAsPlural: Int) {
7+
SHOW(R.string.content_type_show, R.string.content_type_show_plural),
8+
FILM(R.string.content_type_film, R.string.content_type_film_plural);
9+
10+
companion object {
11+
fun getContentName(contentType: ContentType) =
12+
values().first { contentType == it }.contentName
13+
14+
fun getContentNameAsPlural(contentType: ContentType) =
15+
values().first { contentType == it }.contentNameAsPlural
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.codandotv.streamplayerapp.feature_list_streams.list.domain.model
2+
3+
import android.os.Parcelable
4+
import androidx.annotation.DrawableRes
5+
import androidx.annotation.StringRes
6+
import kotlinx.parcelize.Parcelize
7+
8+
@Parcelize
9+
data class HighlightBanner(
10+
val name: String,
11+
val imageUrl: String,
12+
val contentType: Int,
13+
val contentTypeAsPlural: Int,
14+
val extraInfo: IconAndTextInfo,
15+
val leftButton: IconAndTextInfo,
16+
val centralButton: IconAndTextInfo,
17+
val rightButton: IconAndTextInfo
18+
) : Parcelable
19+
20+
@Parcelize
21+
data class IconAndTextInfo(
22+
@DrawableRes val icon: Int,
23+
@StringRes val text: Int
24+
) : Parcelable
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
package com.codandotv.streamplayerapp.feature_list_streams.list.presentation
22

33
import android.content.res.Resources
4+
import com.codandotv.streamplayerapp.core_shared_ui.R.*
5+
import com.codandotv.streamplayerapp.feature_list_streams.R
6+
import com.codandotv.streamplayerapp.feature_list_streams.core.ContentType
7+
import com.codandotv.streamplayerapp.feature_list_streams.list.domain.model.HighlightBanner
8+
import com.codandotv.streamplayerapp.feature_list_streams.list.domain.model.IconAndTextInfo
49
import com.codandotv.streamplayerapp.feature_list_streams.list.domain.model.ListStream
510
import com.codandotv.streamplayerapp.feature_list_streams.list.presentation.screens.CarouselData
611
import com.codandotv.streamplayerapp.feature_list_streams.list.presentation.screens.ListStreamsUIState
@@ -14,17 +19,29 @@ class ListStreamUiModelImpl(
1419
private val resources: Resources
1520
) : ListStreamUimodel {
1621
override fun convertToCardContent(listStream: List<ListStream>): ListStreamsUIState {
22+
val item = listStream.random().streams.random()
1723
return ListStreamsUIState(
1824
isLoading = false,
1925
carousels = listStream.map {
20-
CarouselData(categoryName = it.categoryName,
21-
cards = it.streams.map { stream ->
22-
StreamsCardContent(
23-
contentDescription = stream.name,
24-
url = stream.posterPathUrl,
25-
id = stream.id
26-
)
27-
})
28-
})
26+
CarouselData(categoryName = it.categoryName,
27+
cards = it.streams.map { stream ->
28+
StreamsCardContent(
29+
contentDescription = stream.name,
30+
url = stream.posterPathUrl,
31+
id = stream.id
32+
)
33+
})
34+
},
35+
highlightBanner = HighlightBanner(
36+
name = item.name,
37+
imageUrl = item.posterPathUrl,
38+
contentType = ContentType.getContentName(ContentType.FILM),
39+
contentTypeAsPlural = ContentType.getContentNameAsPlural(ContentType.FILM),
40+
extraInfo = IconAndTextInfo(R.drawable.ic_top_10, R.string.highlight_banner_stream_ranking),
41+
leftButton = IconAndTextInfo(drawable.ic_add, R.string.highlight_banner_add),
42+
centralButton = IconAndTextInfo(drawable.ic_play, R.string.highlight_banner_watch),
43+
rightButton = IconAndTextInfo(drawable.ic_info, R.string.highlight_banner_info),
44+
)
45+
)
2946
}
3047
}

feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature_list_streams/list/presentation/screens/ListStreamsScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.navigation.compose.rememberNavController
2323
import com.codandotv.streamplayerapp.core_navigation.bottomnavigation.StreamPlayerBottomNavigation
2424
import com.codandotv.streamplayerapp.core_shared_ui.theme.ThemePreviews
2525
import com.codandotv.streamplayerapp.core_shared_ui.widget.StreamPlayerTopBar
26+
import com.codandotv.streamplayerapp.feature_list_streams.list.presentation.widgets.HighlightBanner
2627
import com.codandotv.streamplayerapp.feature_list_streams.list.presentation.widgets.StreamsCarousel
2728
import org.koin.androidx.compose.koinViewModel
2829

@@ -78,6 +79,7 @@ fun ListStreamsScreen(
7879
.align(Alignment.TopCenter)
7980
.verticalScroll(ScrollState(0))
8081
) {
82+
HighlightBanner(uiState.highlightBanner)
8183
uiState.carousels.forEach {
8284
StreamsCarousel(
8385
title = it.categoryName,

0 commit comments

Comments
 (0)