1+ package com.codandotv.streamplayerapp.core_shared_ui.widget
2+
3+ import androidx.compose.foundation.background
4+ import androidx.compose.foundation.layout.Arrangement
5+ import androidx.compose.foundation.layout.Box
6+ import androidx.compose.foundation.layout.Row
7+ import androidx.compose.foundation.layout.Spacer
8+ import androidx.compose.foundation.layout.WindowInsets
9+ import androidx.compose.foundation.layout.fillMaxHeight
10+ import androidx.compose.foundation.layout.height
11+ import androidx.compose.foundation.layout.padding
12+ import androidx.compose.foundation.shape.RoundedCornerShape
13+ import androidx.compose.material.icons.Icons
14+ import androidx.compose.material.icons.filled.Search
15+ import androidx.compose.material3.ExperimentalMaterial3Api
16+ import androidx.compose.material3.Icon
17+ import androidx.compose.material3.IconButton
18+ import androidx.compose.material3.Text
19+ import androidx.compose.material3.TopAppBar
20+ import androidx.compose.material3.TopAppBarDefaults
21+ import androidx.compose.material3.TopAppBarScrollBehavior
22+ import androidx.compose.material3.rememberTopAppBarState
23+ import androidx.compose.runtime.Composable
24+ import androidx.compose.ui.Modifier
25+ import androidx.compose.ui.draw.clip
26+ import androidx.compose.ui.graphics.Color
27+ import androidx.compose.ui.res.painterResource
28+ import androidx.compose.ui.res.stringResource
29+ import androidx.compose.ui.unit.dp
30+ import com.codandotv.streamplayerapp.core_shared_ui.R
31+ import com.codandotv.streamplayerapp.core_shared_ui.resources.Colors
32+ import com.codandotv.streamplayerapp.core_shared_ui.theme.ThemePreview
33+ import com.codandotv.streamplayerapp.core_shared_ui.theme.ThemePreviews
34+
35+ @OptIn(ExperimentalMaterial3Api ::class )
36+ @Composable
37+ fun StreamPlayerTopBar (scrollBehavior : TopAppBarScrollBehavior ) {
38+ Box (modifier = Modifier .background(color = Colors .Dark80 )) {
39+ StreamPlayerTopBar ()
40+ StreamPlayerOptionsTopBar (modifier = Modifier .padding(top = 50 .dp), scrollBehavior)
41+ }
42+ }
43+
44+ @Composable
45+ private fun StreamPlayerTopBar () {
46+ Row (
47+ modifier = Modifier
48+ .height(50 .dp)
49+ ) {
50+ IconButton (
51+ modifier = Modifier
52+ .fillMaxHeight()
53+ .padding(vertical = 4 .dp),
54+ onClick = { /* todo */ }
55+ ) {
56+ Icon (
57+ painter = painterResource(R .drawable.ic_netflix),
58+ contentDescription = stringResource(id = R .string.icon_netflix),
59+ tint = Color .Unspecified ,
60+ )
61+ }
62+ Spacer (modifier = Modifier .weight(1f ))
63+
64+ IconButton (
65+ modifier = Modifier .fillMaxHeight(),
66+ onClick = { /* todo */ }
67+ ) {
68+ Icon (
69+ imageVector = Icons .Default .Search ,
70+ contentDescription = stringResource(id = R .string.icon_search),
71+ tint = Color .White ,
72+ )
73+ }
74+
75+
76+ IconButton (
77+ modifier = Modifier .fillMaxHeight(),
78+ onClick = { /* todo */ }
79+ ) {
80+ Icon (
81+ modifier = Modifier
82+ .height(24 .dp)
83+ .clip(RoundedCornerShape (4 .dp)),
84+ painter = painterResource(R .drawable.perfil_fake),
85+ contentDescription = stringResource(id = R .string.icon_profile),
86+ tint = Color .Unspecified ,
87+ )
88+ }
89+ }
90+ }
91+
92+ @OptIn(ExperimentalMaterial3Api ::class )
93+ @Composable
94+ private fun StreamPlayerOptionsTopBar (modifier : Modifier , scrollBehavior : TopAppBarScrollBehavior ) {
95+ TopAppBar (
96+ modifier = modifier,
97+ windowInsets = WindowInsets (top = 0 .dp),
98+ title = {},
99+ scrollBehavior = scrollBehavior,
100+ actions = {
101+ Row (
102+ horizontalArrangement = Arrangement .SpaceEvenly ,
103+ modifier = Modifier .padding(horizontal = 40 .dp)
104+ ) {
105+ Text (
106+ text = stringResource(id = R .string.topbar_shows),
107+ modifier = Modifier .weight(1f ),
108+ color = Color .White
109+ )
110+ Text (
111+ text = stringResource(id = R .string.topbar_movies),
112+ modifier = Modifier .weight(1f ),
113+ color = Color .White
114+ )
115+ Text (
116+ text = stringResource(id = R .string.topbar_categories),
117+ modifier = Modifier .weight(1f ),
118+ color = Color .White
119+ )
120+ }
121+ }, colors = TopAppBarDefaults .smallTopAppBarColors(containerColor = Color .Transparent )
122+ )
123+ }
124+
125+ @OptIn(ExperimentalMaterial3Api ::class )
126+ @ThemePreviews
127+ @Composable
128+ fun StreamPlayerTopBarPreview () {
129+ ThemePreview {
130+ StreamPlayerTopBar (
131+ scrollBehavior = TopAppBarDefaults .exitUntilCollapsedScrollBehavior(
132+ rememberTopAppBarState()
133+ )
134+ )
135+ }
136+ }
0 commit comments