Explorar el Código

code improvements for preview

Milan Jurkulak hace 3 años
padre
commit
ee23c0329e

+ 2 - 0
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/media/MediaPlayerContainer.kt

@@ -10,6 +10,7 @@
 
 package org.mjdev.tvlib.ui.components.media
 
+import android.annotation.SuppressLint
 import android.net.Uri
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
@@ -23,6 +24,7 @@ import org.mjdev.tvlib.extensions.ComposeExt.isEditMode
 import org.mjdev.tvlib.extensions.ModifierExt.recomposeHighlighter
 import org.mjdev.tvlib.ui.components.media.MediaPlayerState.Companion.rememberMediaPlayerState
 
+@SuppressLint("UnsafeOptInUsageError")
 @TvPreview
 @Composable
 fun MediaPlayerContainer(

+ 44 - 27
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/navigation/Navigation.kt

@@ -21,7 +21,9 @@ import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
+import androidx.tv.material3.DrawerValue
 import androidx.tv.material3.ExperimentalTvMaterial3Api
+import androidx.tv.material3.ModalNavigationDrawer
 import androidx.tv.material3.NavigationDrawer
 import org.mjdev.tvlib.annotations.TvPreview
 import org.mjdev.tvlib.extensions.ComposeExt.isEditMode
@@ -29,6 +31,7 @@ import org.mjdev.tvlib.extensions.ModifierExt.recomposeHighlighter
 import org.mjdev.tvlib.extensions.NavExt.rememberNavControllerEx
 import org.mjdev.tvlib.navigation.MenuItem
 import org.mjdev.tvlib.navigation.NavHostControllerEx
+import org.mjdev.tvlib.ui.components.page.Page
 
 @SuppressLint("AutoboxingStateValueProperty")
 @OptIn(ExperimentalTvMaterial3Api::class)
@@ -42,44 +45,58 @@ fun Navigation(
     borderSize: Dp = 0.dp,
     borderColor: Color = Color.Transparent,
     shape: Shape = RoundedCornerShape(roundCornerSize),
-    content: @Composable () -> Unit = {},
-    menuItems: List<MenuItem> = listOf(),
-    isEdit: Boolean = isEditMode()
+    content: @Composable () -> Unit = {
+        Page()
+    },
+    menuItems: List<MenuItem> = if (isEditMode()) listOf(
+        MenuItem.MENU_ITEM_EXIT,
+        MenuItem.MENU_ITEM_SETTINGS,
+        MenuItem.MENU_ITEM_SEARCH
+    ) else listOf(),
+    modal: Boolean = false,
 ) {
-    if (isEdit) navController.openMenu()
     navController.addMenuItem(*menuItems.toTypedArray())
-    if (navController.isMenuEnabled) {
-        SettingsDrawer(
-            drawerState = navController.settingsDrawerState,
-            modifier = Modifier.fillMaxHeight().recomposeHighlighter()
+    val isEdit: Boolean = isEditMode()
+    if (isEdit) navController.openMenu()
+    val mainContent: @Composable () -> Unit = {
+        Box(
+            modifier
+                .fillMaxSize()
+                .recomposeHighlighter()
         ) {
+            content()
+        }
+    }
+    if (navController.isMenuEnabled) {
+        val drawerContent: @Composable (DrawerValue) -> Unit = { state ->
+            NavDrawerContent(
+                backgroundColor = backgroundColor,
+                navController = navController,
+            )
+            navController.menuDrawerState.setValue(state)
+        }
+        if (modal) {
+            ModalNavigationDrawer(
+                modifier = modifier
+                    .fillMaxHeight()
+                    .background(backgroundColor, shape)
+                    .border(borderSize, borderColor, shape),
+                drawerState = navController.menuDrawerState,
+                content = mainContent,
+                drawerContent = drawerContent,
+            )
+        } else {
             NavigationDrawer(
                 modifier = modifier
                     .fillMaxHeight()
                     .background(backgroundColor, shape)
                     .border(borderSize, borderColor, shape),
                 drawerState = navController.menuDrawerState,
-                content = {
-                    Box(
-                        modifier.fillMaxSize().recomposeHighlighter()
-                    ) {
-                        content()
-                    }
-                },
-                drawerContent = { state ->
-                    NavDrawerContent(
-                        backgroundColor = backgroundColor,
-                        navController = navController,
-                    )
-                    navController.menuDrawerState.setValue(state)
-                }
+                content = mainContent,
+                drawerContent = drawerContent
             )
         }
     } else {
-        Box(
-            modifier.fillMaxHeight().recomposeHighlighter()
-        ) {
-            content()
-        }
+        mainContent()
     }
 }

+ 8 - 9
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/screen/ScreenView.kt

@@ -20,6 +20,7 @@ import org.mjdev.tvlib.extensions.ModifierExt.recomposeHighlighter
 import org.mjdev.tvlib.extensions.NavExt.rememberNavControllerEx
 import org.mjdev.tvlib.navigation.NavHostControllerEx
 import org.mjdev.tvlib.ui.components.navigation.Navigation
+import org.mjdev.tvlib.ui.components.page.Page
 
 @Suppress("TrailingComma", "unused")
 @TvPreview
@@ -27,7 +28,9 @@ import org.mjdev.tvlib.ui.components.navigation.Navigation
 fun ScreenView(
     modifier: Modifier = Modifier,
     navController: NavHostControllerEx = rememberNavControllerEx(),
-    content: @Composable () -> Unit = { EmptyScreen() }
+    content: @Composable () -> Unit = {
+        Page()
+    }
 ) {
     Box(
         modifier = modifier
@@ -35,17 +38,13 @@ fun ScreenView(
             .recomposeHighlighter()
             .navigationBarsPadding()
             .statusBarsPadding(),
-        contentAlignment = Alignment.TopStart,
+        contentAlignment = Alignment.Center,
     ) {
-        if (navController.menuState.value) {
+        if (navController.isMenuEnabled) {
             Navigation(
                 navController = navController,
-                content = {
-                    content()
-                }
+                content = content
             )
-        } else {
-            content()
-        }
+        } else content()
     }
 }

+ 3 - 3
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/tv/CategoryRow.kt

@@ -42,7 +42,7 @@ import org.mjdev.tvlib.ui.components.text.TextAny
 @Preview
 @Composable
 fun CategoryRow(
-    title: Any? = "category 1",
+    title: Any? = "category",
     items: List<Any?> = listOf(Unit, Unit, Unit),
     rowState: TvLazyListState = rememberTvLazyListState(),
     padding: Dp = 8.dp,
@@ -74,7 +74,7 @@ fun CategoryRow(
             modifier = Modifier
                 .recomposeHighlighter()
                 .fillMaxWidth()
-                .padding(padding / 2, padding / 2),
+                .padding(padding, padding / 2),
             text = title,
             color = Color.White,
             fontWeight = FontWeight.Bold
@@ -90,7 +90,7 @@ fun CategoryRow(
                 }
                 .recomposeHighlighter(),
             state = rowState,
-            contentPadding = (padding.value * 1.3).dp, // todo due border & glow
+            contentPadding = padding.value.dp,
         ) {
             items(items) { item ->
                 contentOfItem(item)

+ 7 - 6
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/tv/ErrorMessage.kt

@@ -10,6 +10,7 @@ package org.mjdev.tvlib.ui.components.tv
 
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.wrapContentSize
@@ -120,17 +121,17 @@ fun ErrorMessage(
 
                 Button(
                     modifier = Modifier.recomposeHighlighter()
-                        .background(
-                            Color.White.copy(
-                                alpha = 0.5f
-                            ),
-                            RoundedCornerShape(roundSize)
-                        )
+                        .padding(4.dp)
                         .constrainAs(_button) {
                             top.linkTo(parent.top, margin = 4.dp)
                             end.linkTo(parent.end, margin = roundSize)
                             bottom.linkTo(parent.bottom, margin = 4.dp)
                         },
+                    contentPadding=PaddingValues(
+                        8.dp,
+                        4.dp
+                    ),
+                    containerColor = Color.Red,
                     onClick = {
                         onDismiss()
                     }