Milan Jurkulak преди 3 години
родител
ревизия
7105fc2b24

+ 4 - 0
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/card/ItemCard.kt

@@ -9,6 +9,7 @@
 package org.mjdev.tvlib.ui.components.card
 
 import android.annotation.SuppressLint
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.MutableState
@@ -18,6 +19,7 @@ import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.dp
 import androidx.tv.material3.CardBorder
 import androidx.tv.material3.CardColors
 import androidx.tv.material3.CardDefaults
@@ -60,6 +62,7 @@ fun ItemCard(
     },
     cardWidth: Dp = computeCardWidth(),
     focusState: MutableState<FocusState?> = rememberFocusState(item),
+    titlePadding: PaddingValues = PaddingValues(8.dp),
     onFocus: (item: Any?) -> Unit = {},
     onClick: (item: Any?) -> Unit = {},
 ) = FocusableCard(
@@ -77,6 +80,7 @@ fun ItemCard(
     cardWidth = cardWidth,
     imageRenderer = imageRenderer,
     placeholder = placeholder,
+    titlePadding = titlePadding,
     onFocus = onFocus,
     onClick = onClick,
 )

+ 4 - 0
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/card/PhotoCard.kt

@@ -10,6 +10,7 @@ package org.mjdev.tvlib.ui.components.card
 
 import android.annotation.SuppressLint
 import androidx.annotation.FloatRange
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.ui.Modifier
 import androidx.compose.runtime.Composable
@@ -19,6 +20,7 @@ import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.dp
 import androidx.tv.material3.CardDefaults
 import androidx.tv.material3.CardScale
 import androidx.tv.material3.ExperimentalTvMaterial3Api
@@ -57,6 +59,7 @@ fun PhotoCard(
     aspectRatio: Float = 16f / 9f,
     placeholder: @Composable () -> Unit = {},
     scale: CardScale = CardDefaults.scale(),
+    titlePadding: PaddingValues = PaddingValues(8.dp),
     onFocus: (item: Any?) -> Unit = {},
     onClick: (item: Any?) -> Unit = {},
 ) {
@@ -71,6 +74,7 @@ fun PhotoCard(
         scale = scale,
         imageRenderer = imageRenderer,
         placeholder = placeholder,
+        titlePadding = titlePadding,
         onFocus = onFocus,
         onClick = onClick,
     )

+ 3 - 0
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/carousel/CarouselCard.kt

@@ -9,6 +9,7 @@
 package org.mjdev.tvlib.ui.components.carousel
 
 import android.annotation.SuppressLint
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.defaultMinSize
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.runtime.Composable
@@ -52,6 +53,7 @@ fun CarouselCard(
             placeholder = placeholder
         )
     },
+    titlePadding: PaddingValues = PaddingValues(8.dp, 12.dp, 8.dp, 12.dp),
     onFocus: (item: Any?) -> Unit = {},
     onClick: (item: Any?) -> Unit = {}
 ) {
@@ -69,6 +71,7 @@ fun CarouselCard(
         focusState = focusState,
         placeholder = placeholder,
         imageRenderer = imageRenderer,
+        titlePadding = titlePadding,
         onFocus = onFocus,
         onClick = { onClick(item) }
     )

+ 25 - 19
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/complex/FocusableCard.kt

@@ -11,6 +11,7 @@ package org.mjdev.tvlib.ui.components.complex
 import android.annotation.SuppressLint
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.defaultMinSize
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
@@ -66,8 +67,8 @@ fun FocusableCard(
     scale: CardScale = CardDefaults.scale(),
     shape: CardShape = CardDefaults.shape(),
     textColor: Color = Color.White,
-    textBackgroundUnselected: Color = Color.DarkGray.copy(alpha=0.5f),
-    textBackgroundSelected: Color = Color.Green.copy(alpha=0.5f),
+    textBackgroundUnselected: Color = Color.DarkGray.copy(alpha = 0.5f),
+    textBackgroundSelected: Color = Color.Green.copy(alpha = 0.5f),
     colors: CardColors = CardDefaults.colors(),
     border: CardBorder = CardDefaults.colorFocusBorder(Color.Green),
     glow: CardGlow = CardDefaults.colorFocusGlow(Color.Green),
@@ -89,6 +90,7 @@ fun FocusableCard(
             onFocus(item)
         }
     },
+    titlePadding: PaddingValues = PaddingValues(8.dp),
     cardWidth: Dp = computeCardWidth(),
     aspectRatio: Float = 16f / 9f,
     onClick: (item: Any?) -> Unit = {},
@@ -123,35 +125,39 @@ fun FocusableCard(
         },
         title = {
             Box(
-                modifier = Modifier.fillMaxWidth().background(
-                    if (focusState.isFocused)
-                        textBackgroundSelected
-                    else
-                        textBackgroundUnselected,
-                    RectangleShape
-                )
+                modifier = Modifier
+                    .fillMaxWidth()
+                    .background(
+                        if (focusState.isFocused)
+                            textBackgroundSelected
+                        else
+                            textBackgroundUnselected,
+                        RectangleShape
+                    )
             ) {
                 AutoHideEmptyText(
-                    modifier = Modifier.padding(4.dp),
+                    modifier = Modifier.padding(titlePadding),
                     maxLines = 1,
                     color = textColor,
                     style = MaterialTheme.typography.bodyMedium,
-                    text = if(isEdit) "title" else (item as? ItemWithTitle<*>)?.title
+                    text = if (isEdit) "title" else (item as? ItemWithTitle<*>)?.title
                 )
             }
         },
         subtitle = {
             Box(
-                modifier = Modifier.fillMaxWidth().background(
-                    if (focusState.isFocused)
-                        textBackgroundSelected
-                    else
-                        textBackgroundUnselected,
-                    RectangleShape
-                )
+                modifier = Modifier
+                    .fillMaxWidth()
+                    .background(
+                        if (focusState.isFocused)
+                            textBackgroundSelected
+                        else
+                            textBackgroundUnselected,
+                        RectangleShape
+                    )
             ) {
                 AutoHideEmptyText(
-                    modifier = Modifier.padding(4.dp),
+                    modifier = Modifier.padding(titlePadding),
                     maxLines = 1,
                     color = textColor,
                     style = MaterialTheme.typography.bodySmall,