Pārlūkot izejas kodu

design fixes

design fixes
Milan Jurkulak 3 gadi atpakaļ
vecāks
revīzija
ec4acbba6e

+ 1 - 4
app/src/main/kotlin/org/mjdev/tvapp/ui/pages/AboutPage.kt

@@ -8,7 +8,6 @@
 
 package org.mjdev.tvapp.ui.pages
 
-import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Row
@@ -49,9 +48,7 @@ class AboutPage : Page() {
                 .padding(16.dp)
         ) {
             Card(
-                modifier = Modifier
-                    .fillMaxSize()
-                    .background(backgroundColor, background),
+                modifier = Modifier.fillMaxSize(),
                 onClick = {},
                 onLongClick = {},
                 shape = CardDefaults.shape(),

+ 1 - 13
app/src/main/kotlin/org/mjdev/tvapp/ui/pages/MainPage.kt

@@ -15,13 +15,11 @@ import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Home
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.MutableState
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.vector.ImageVector
-import androidx.compose.ui.layout.ContentScale
 import org.mjdev.tvapp.R
 import org.mjdev.tvapp.activity.IPTVActivity
 import org.mjdev.tvapp.activity.IPTVActivity.Companion.IPTV_DATA
@@ -40,7 +38,6 @@ import org.mjdev.tvapp.viewmodel.MainViewModel
 import org.mjdev.tvlib.interfaces.ItemPhoto
 import org.mjdev.tvlib.interfaces.ItemWithBackground
 import org.mjdev.tvlib.interfaces.ItemWithImage
-import org.mjdev.tvlib.ui.components.image.FadingPhotoImage
 import java.io.Serializable
 import java.net.URL
 
@@ -65,7 +62,6 @@ class MainPage : Page() {
 
         val errorState = remember(viewModel.error) { mutableStateOf(viewModel.error.value) }
         val titleState = remember { mutableStateOf<Any?>(R.string.app_name) }
-        val backgroundState: MutableState<Any?> = remember { mutableStateOf(null) }
 
         val onItemClick: (item: Any?) -> Unit = { item ->
             val dataId = (item as? ItemWithId)?.id
@@ -88,7 +84,7 @@ class MainPage : Page() {
                 is ItemWithImage<*> -> item.image
                 else -> item.toString()
             }.also { uri ->
-                backgroundState.value = uri
+                navController?.backgroundState?.value = uri
             }
         }
 
@@ -102,14 +98,6 @@ class MainPage : Page() {
         Box(
             modifier = Modifier.fillMaxSize(),
         ) {
-            FadingPhotoImage(
-                modifier = Modifier.fillMaxSize(),
-                fadingImageState = backgroundState,
-                contrast = 4f,
-                alpha = 0.7f,
-                brightness = -255f,
-                contentScale = ContentScale.Crop
-            )
             BrowseView(
                 modifier = Modifier.fillMaxSize(),
                 appIcon = R.mipmap.ic_launcher_foreground,

+ 5 - 1
tvlib/src/main/kotlin/org/mjdev/tvlib/activity/ComposableActivity.kt

@@ -29,7 +29,6 @@ import androidx.tv.material3.MaterialTheme
 import androidx.tv.material3.NonInteractiveSurfaceDefaults
 import androidx.tv.material3.Surface
 import com.github.anrwatchdog.ANRWatchDog
-import com.google.ads.interactivemedia.v3.internal.anr
 import org.mjdev.tvlib.BuildConfig
 import org.mjdev.tvlib.annotations.TvPreview
 import org.mjdev.tvlib.extensions.ContextExt.isATv
@@ -90,6 +89,11 @@ open class ComposableActivity : ComponentActivity() {
         onIntent(navController, intent)
     }
 
+    // todo
+    override fun onNewIntent(intent: Intent?) {
+        super.onNewIntent(intent)
+    }
+
     open fun onIntent(navController: NavHostControllerEx, intent: Intent?) {
     }
 

+ 2 - 0
tvlib/src/main/kotlin/org/mjdev/tvlib/navigation/NavHostControllerEx.kt

@@ -51,6 +51,8 @@ class NavHostControllerEx(
 
     override val lifecycle: Lifecycle by lazy { LifecycleRegistry(this) }
 
+    val backgroundState: MutableState<Any?> = mutableStateOf(null)
+
     init {
         lifecycle.addObserver(this)
     }

+ 26 - 3
tvlib/src/main/kotlin/org/mjdev/tvlib/screen/Screen.kt

@@ -13,8 +13,11 @@ package org.mjdev.tvlib.screen
 import androidx.annotation.CallSuper
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.navigationBarsPadding
+import androidx.compose.foundation.layout.statusBarsPadding
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
@@ -22,6 +25,7 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
@@ -34,12 +38,12 @@ import org.mjdev.tvlib.annotations.TvPreview
 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.image.FadingPhotoImage
 
 @Suppress("unused", "LeakingThis")
 open class Screen {
 
-    open val route: String
-        get() = (this::class.simpleName ?: "none")
+    open val route: String get() = (this::class.simpleName ?: "none")
 
     open val routeArgs: List<NamedNavArgument> = emptyList()
 
@@ -92,7 +96,26 @@ open class Screen {
         this.backStackEntry = backStackEntry
         this.args = args
         navController.menuState.value = !immersive
-        ComposeScreen()
+        Box(
+            modifier = Modifier.fillMaxSize()
+        ) {
+            FadingPhotoImage(
+                modifier = Modifier.fillMaxSize(),
+                fadingImageState = navController.backgroundState,
+                contrast = 4f,
+                alpha = 0.7f,
+                brightness = -255f,
+                contentScale = ContentScale.Crop
+            )
+            Box(
+                modifier = Modifier
+                    .fillMaxSize()
+                    .navigationBarsPadding()
+                    .statusBarsPadding()
+            ) {
+                ComposeScreen()
+            }
+        }
     }
 
     @OptIn(ExperimentalTvMaterial3Api::class)

+ 0 - 10
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/page/Page.kt

@@ -10,21 +10,16 @@ package org.mjdev.tvlib.ui.components.page
 
 import android.annotation.SuppressLint
 import androidx.annotation.CallSuper
-import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import org.mjdev.tvlib.annotations.TvPreview
 import org.mjdev.tvlib.extensions.ComposeExt.rememberFocusRequester
@@ -35,7 +30,6 @@ import org.mjdev.tvlib.navigation.MenuItem
 import org.mjdev.tvlib.navigation.NavHostControllerEx
 import org.mjdev.tvlib.ui.components.text.TextAny
 
-@Suppress("LeakingThis")
 open class Page {
 
     var navController: NavHostControllerEx? = null
@@ -43,9 +37,6 @@ open class Page {
     open val title: Any? = null
     open val icon: Any? = null
     open val menuGravity = MenuItem.Gravity.Center
-    open val backgroundColor: Color = Color.DarkGray
-    open val roundRadius: Dp = 0.dp
-    open val background: Shape = RoundedCornerShape(roundRadius)
 
     @SuppressLint("ComposableNaming")
     @TvPreview
@@ -59,7 +50,6 @@ open class Page {
             VerticalScrollableBox(
                 modifier = Modifier.recomposeHighlighter()
                     .fillMaxSize()
-                    .background(backgroundColor, background)
                     .requestFocusOnTouch(focusRequester),
                 contentAlignment = Alignment.Center,
             ) {

+ 2 - 1
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/page/TvPager.kt

@@ -100,7 +100,8 @@ fun TvPager(
             }.using(
                 SizeTransform(clip = false)
             )
-        }
+        },
+        label = "TvPager"
     ) { pageIndex ->
         val page = if (pagerScope.size > pageIndex) pagerScope[pageIndex]
         else null

+ 1 - 5
tvlib/src/main/kotlin/org/mjdev/tvlib/ui/components/screen/ScreenView.kt

@@ -10,8 +10,6 @@ package org.mjdev.tvlib.ui.components.screen
 
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.navigationBarsPadding
-import androidx.compose.foundation.layout.statusBarsPadding
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
@@ -35,9 +33,7 @@ fun ScreenView(
     Box(
         modifier = modifier
             .fillMaxSize()
-            .recomposeHighlighter()
-            .navigationBarsPadding()
-            .statusBarsPadding(),
+            .recomposeHighlighter(),
         contentAlignment = Alignment.Center,
     ) {
         if (navController.isMenuEnabled) {

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

@@ -18,7 +18,6 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.unit.dp
-import androidx.tv.material3.ExperimentalTvMaterial3Api
 import org.mjdev.tvlib.annotations.TvPreview
 import org.mjdev.tvlib.extensions.ComposeExt.isEditMode
 import org.mjdev.tvlib.extensions.ModifierExt.recomposeHighlighter
@@ -29,7 +28,6 @@ import org.mjdev.tvlib.network.isNotConnected
 import org.mjdev.tvlib.R
 import org.mjdev.tvlib.ui.components.carousel.BigCarousel
 
-@OptIn(ExperimentalTvMaterial3Api::class)
 @TvPreview
 @Composable
 fun BrowseView(
@@ -50,7 +48,7 @@ fun BrowseView(
     networkState: State<NetworkStatus?> = mutableStateOf(NetworkStatus.Unknown),
     errorState: State<Throwable?> = mutableStateOf(null),
     verticalArrangement: Arrangement.Vertical = Arrangement.spacedBy(32.dp),
-    contentPadding: PaddingValues = PaddingValues(horizontal = 16.dp, vertical = 8.dp),
+    contentPadding: PaddingValues = PaddingValues(8.dp),
     customRows: List<@Composable () -> Unit> = emptyList(),
     onTitleClicked: () -> Unit = {},
     onClockClicked: () -> Unit = {},

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

@@ -61,7 +61,7 @@ fun Title(
     ) {
         Row(
             modifier = modifier
-                .padding(8.dp, 8.dp, 8.dp, 8.dp)
+                .padding(16.dp, 8.dp, 8.dp, 8.dp)
                 .recomposeHighlighter(),
             verticalAlignment = CenterVertically,
         ) {
@@ -93,7 +93,5 @@ fun Title(
                 color = color
             )
         }
-
     }
-
 }