@@ -15,9 +15,23 @@ import androidx.compose.material.icons.Icons
1515import androidx.compose.material.icons.rounded.Brush
1616import androidx.compose.material.icons.rounded.Movie
1717import androidx.compose.material.icons.rounded.Refresh
18- import androidx.compose.material3.*
19- import androidx.compose.runtime.*
18+ import androidx.compose.material3.ExperimentalMaterial3Api
19+ import androidx.compose.material3.Icon
20+ import androidx.compose.material3.IconButton
21+ import androidx.compose.material3.ListItem
22+ import androidx.compose.material3.MaterialTheme
23+ import androidx.compose.material3.RadioButton
24+ import androidx.compose.material3.Scaffold
25+ import androidx.compose.material3.Surface
26+ import androidx.compose.material3.Text
27+ import androidx.compose.material3.TopAppBar
28+ import androidx.compose.runtime.Composable
29+ import androidx.compose.runtime.LaunchedEffect
30+ import androidx.compose.runtime.getValue
31+ import androidx.compose.runtime.mutableStateOf
32+ import androidx.compose.runtime.remember
2033import androidx.compose.runtime.saveable.rememberSaveable
34+ import androidx.compose.runtime.setValue
2135import androidx.compose.ui.Modifier
2236import androidx.compose.ui.platform.LocalContext
2337import androidx.compose.ui.tooling.preview.Preview
@@ -30,6 +44,7 @@ import com.theoplayer.android.api.ads.ima.GoogleImaIntegrationFactory
3044import com.theoplayer.android.api.cast.CastConfiguration
3145import com.theoplayer.android.api.cast.CastIntegrationFactory
3246import com.theoplayer.android.api.cast.CastStrategy
47+ import com.theoplayer.android.api.pip.PipConfiguration
3348import com.theoplayer.android.ui.DefaultUI
3449import com.theoplayer.android.ui.demo.nitflex.NitflexUI
3550import com.theoplayer.android.ui.demo.nitflex.theme.NitflexTheme
@@ -59,7 +74,10 @@ fun MainContent() {
5974
6075 val context = LocalContext .current
6176 val theoplayerView = remember(context) {
62- THEOplayerView (context).apply {
77+ val config = THEOplayerConfig .Builder ().apply {
78+ pipConfiguration(PipConfiguration .Builder ().build())
79+ }.build()
80+ THEOplayerView (context, config).apply {
6381 // Add ads integration through Google IMA
6482 player.addIntegration(
6583 GoogleImaIntegrationFactory .createGoogleImaIntegration(this )
@@ -81,11 +99,10 @@ fun MainContent() {
8199 var themeMenuOpen by remember { mutableStateOf(false ) }
82100 var theme by rememberSaveable { mutableStateOf(PlayerTheme .Default ) }
83101
84- Surface (
102+ Scaffold (
85103 modifier = Modifier .fillMaxSize(),
86- color = MaterialTheme .colorScheme.background
87- ) {
88- Scaffold (topBar = {
104+ containerColor = MaterialTheme .colorScheme.background,
105+ topBar = {
89106 TopAppBar (
90107 title = {
91108 Text (text = " Demo" )
@@ -105,51 +122,51 @@ fun MainContent() {
105122 }
106123 }
107124 )
108- }) { padding ->
109- val playerModifier = Modifier
110- .padding(padding)
111- .fillMaxSize(1f )
112- when (theme) {
113- PlayerTheme .Default -> {
114- DefaultUI (
125+ }
126+ ) { padding ->
127+ val playerModifier = Modifier
128+ .padding(padding)
129+ .fillMaxSize(1f )
130+ when (theme) {
131+ PlayerTheme .Default -> {
132+ DefaultUI (
133+ modifier = playerModifier,
134+ player = player,
135+ title = stream.title
136+ )
137+ }
138+
139+ PlayerTheme .Nitflex -> {
140+ NitflexTheme (useDarkTheme = true ) {
141+ NitflexUI (
115142 modifier = playerModifier,
116143 player = player,
117144 title = stream.title
118145 )
119146 }
120-
121- PlayerTheme .Nitflex -> {
122- NitflexTheme (useDarkTheme = true ) {
123- NitflexUI (
124- modifier = playerModifier,
125- player = player,
126- title = stream.title
127- )
128- }
129- }
130147 }
148+ }
131149
132- if (streamMenuOpen) {
133- SelectStreamDialog (
134- streams = streams,
135- currentStream = stream,
136- onSelectStream = {
137- stream = it
138- streamMenuOpen = false
139- },
140- onDismissRequest = { streamMenuOpen = false }
141- )
142- }
143- if (themeMenuOpen) {
144- SelectThemeDialog (
145- currentTheme = theme,
146- onSelectTheme = {
147- theme = it
148- themeMenuOpen = false
149- },
150- onDismissRequest = { themeMenuOpen = false }
151- )
152- }
150+ if (streamMenuOpen) {
151+ SelectStreamDialog (
152+ streams = streams,
153+ currentStream = stream,
154+ onSelectStream = {
155+ stream = it
156+ streamMenuOpen = false
157+ },
158+ onDismissRequest = { streamMenuOpen = false }
159+ )
160+ }
161+ if (themeMenuOpen) {
162+ SelectThemeDialog (
163+ currentTheme = theme,
164+ onSelectTheme = {
165+ theme = it
166+ themeMenuOpen = false
167+ },
168+ onDismissRequest = { themeMenuOpen = false }
169+ )
153170 }
154171 }
155172}
@@ -214,7 +231,7 @@ fun SelectThemeDialog(
214231 style = MaterialTheme .typography.headlineSmall
215232 )
216233 LazyColumn {
217- items(items = PlayerTheme .values() ) {
234+ items(items = PlayerTheme .entries ) {
218235 ListItem (
219236 headlineContent = { Text (text = it.title) },
220237 leadingContent = {
0 commit comments