refactor(tv): replace deprecated tv lazy layouts with normal lazy layouts
Use beta version of compose for now (1.7.x) TV compose foundation library removed No longer using bom to specify dependencies (doesn't work with the beta versions)
This commit is contained in:
parent
307ce957c2
commit
15c1ac9593
18 changed files with 64 additions and 66 deletions
|
@ -81,15 +81,14 @@ ktlint {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
val composeBom = platform(libs.androidx.compose.bom)
|
|
||||||
|
|
||||||
implementation(projects.core)
|
implementation(projects.core)
|
||||||
implementation(projects.data)
|
implementation(projects.data)
|
||||||
implementation(projects.preferences)
|
implementation(projects.preferences)
|
||||||
implementation(projects.player.core)
|
implementation(projects.player.core)
|
||||||
implementation(projects.player.video)
|
implementation(projects.player.video)
|
||||||
implementation(libs.androidx.activity.compose)
|
implementation(libs.androidx.activity.compose)
|
||||||
implementation(composeBom)
|
implementation(libs.androidx.compose.foundation)
|
||||||
|
implementation(libs.androidx.compose.runtime)
|
||||||
implementation(libs.androidx.compose.ui.tooling.preview)
|
implementation(libs.androidx.compose.ui.tooling.preview)
|
||||||
implementation(libs.androidx.compose.material3)
|
implementation(libs.androidx.compose.material3)
|
||||||
implementation(libs.androidx.core)
|
implementation(libs.androidx.core)
|
||||||
|
@ -99,7 +98,6 @@ dependencies {
|
||||||
implementation(libs.androidx.media3.ui)
|
implementation(libs.androidx.media3.ui)
|
||||||
implementation(libs.androidx.media3.session)
|
implementation(libs.androidx.media3.session)
|
||||||
implementation(libs.androidx.paging.compose)
|
implementation(libs.androidx.paging.compose)
|
||||||
implementation(libs.androidx.tv.foundation)
|
|
||||||
implementation(libs.androidx.tv.material)
|
implementation(libs.androidx.tv.material)
|
||||||
implementation(libs.coil.compose)
|
implementation(libs.coil.compose)
|
||||||
implementation(libs.coil.svg)
|
implementation(libs.coil.svg)
|
||||||
|
|
|
@ -115,7 +115,7 @@ private fun AddServerScreenLayout(
|
||||||
},
|
},
|
||||||
singleLine = true,
|
singleLine = true,
|
||||||
keyboardOptions = KeyboardOptions(
|
keyboardOptions = KeyboardOptions(
|
||||||
autoCorrect = false,
|
autoCorrectEnabled = false,
|
||||||
keyboardType = KeyboardType.Uri,
|
keyboardType = KeyboardType.Uri,
|
||||||
imeAction = ImeAction.Go,
|
imeAction = ImeAction.Go,
|
||||||
),
|
),
|
||||||
|
|
|
@ -6,6 +6,9 @@ import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
@ -19,9 +22,6 @@ import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyColumn
|
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyRow
|
|
||||||
import androidx.tv.foundation.lazy.list.items
|
|
||||||
import androidx.tv.material3.MaterialTheme
|
import androidx.tv.material3.MaterialTheme
|
||||||
import androidx.tv.material3.Text
|
import androidx.tv.material3.Text
|
||||||
import com.ramcosta.composedestinations.annotation.Destination
|
import com.ramcosta.composedestinations.annotation.Destination
|
||||||
|
@ -107,7 +107,7 @@ private fun HomeScreenLayout(
|
||||||
}
|
}
|
||||||
else -> Unit
|
else -> Unit
|
||||||
}
|
}
|
||||||
TvLazyColumn(
|
LazyColumn(
|
||||||
contentPadding = PaddingValues(bottom = MaterialTheme.spacings.large),
|
contentPadding = PaddingValues(bottom = MaterialTheme.spacings.large),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
|
@ -122,7 +122,7 @@ private fun HomeScreenLayout(
|
||||||
modifier = Modifier.padding(start = MaterialTheme.spacings.large),
|
modifier = Modifier.padding(start = MaterialTheme.spacings.large),
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(MaterialTheme.spacings.medium))
|
Spacer(modifier = Modifier.height(MaterialTheme.spacings.medium))
|
||||||
TvLazyRow(
|
LazyRow(
|
||||||
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
||||||
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.large),
|
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.large),
|
||||||
) {
|
) {
|
||||||
|
@ -145,7 +145,7 @@ private fun HomeScreenLayout(
|
||||||
modifier = Modifier.padding(start = MaterialTheme.spacings.large),
|
modifier = Modifier.padding(start = MaterialTheme.spacings.large),
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(MaterialTheme.spacings.medium))
|
Spacer(modifier = Modifier.height(MaterialTheme.spacings.medium))
|
||||||
TvLazyRow(
|
LazyRow(
|
||||||
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
||||||
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.large),
|
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.large),
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -2,6 +2,9 @@ package dev.jdtech.jellyfin.ui
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
|
import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
|
import androidx.compose.foundation.lazy.grid.items
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
@ -14,9 +17,6 @@ import androidx.compose.ui.focus.FocusRequester
|
||||||
import androidx.compose.ui.focus.focusRequester
|
import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.tv.foundation.lazy.grid.TvGridCells
|
|
||||||
import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid
|
|
||||||
import androidx.tv.foundation.lazy.grid.items
|
|
||||||
import androidx.tv.material3.MaterialTheme
|
import androidx.tv.material3.MaterialTheme
|
||||||
import com.ramcosta.composedestinations.annotation.Destination
|
import com.ramcosta.composedestinations.annotation.Destination
|
||||||
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
|
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
|
||||||
|
@ -72,8 +72,8 @@ private fun LibrariesScreenLayout(
|
||||||
|
|
||||||
val focusRequester = remember { FocusRequester() }
|
val focusRequester = remember { FocusRequester() }
|
||||||
|
|
||||||
TvLazyVerticalGrid(
|
LazyVerticalGrid(
|
||||||
columns = TvGridCells.Fixed(3),
|
columns = GridCells.Fixed(3),
|
||||||
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large),
|
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large),
|
||||||
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large),
|
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large),
|
||||||
contentPadding = PaddingValues(
|
contentPadding = PaddingValues(
|
||||||
|
|
|
@ -3,6 +3,9 @@ package dev.jdtech.jellyfin.ui
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
|
import androidx.compose.foundation.lazy.grid.GridItemSpan
|
||||||
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
@ -15,9 +18,6 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.paging.PagingData
|
import androidx.paging.PagingData
|
||||||
import androidx.paging.compose.collectAsLazyPagingItems
|
import androidx.paging.compose.collectAsLazyPagingItems
|
||||||
import androidx.tv.foundation.lazy.grid.TvGridCells
|
|
||||||
import androidx.tv.foundation.lazy.grid.TvGridItemSpan
|
|
||||||
import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid
|
|
||||||
import androidx.tv.material3.MaterialTheme
|
import androidx.tv.material3.MaterialTheme
|
||||||
import androidx.tv.material3.Text
|
import androidx.tv.material3.Text
|
||||||
import com.ramcosta.composedestinations.annotation.Destination
|
import com.ramcosta.composedestinations.annotation.Destination
|
||||||
|
@ -86,8 +86,8 @@ private fun LibraryScreenLayout(
|
||||||
is LibraryViewModel.UiState.Loading -> Text(text = "LOADING")
|
is LibraryViewModel.UiState.Loading -> Text(text = "LOADING")
|
||||||
is LibraryViewModel.UiState.Normal -> {
|
is LibraryViewModel.UiState.Normal -> {
|
||||||
val items = uiState.items.collectAsLazyPagingItems()
|
val items = uiState.items.collectAsLazyPagingItems()
|
||||||
TvLazyVerticalGrid(
|
LazyVerticalGrid(
|
||||||
columns = TvGridCells.Fixed(5),
|
columns = GridCells.Fixed(5),
|
||||||
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
||||||
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
||||||
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large),
|
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large),
|
||||||
|
@ -95,7 +95,7 @@ private fun LibraryScreenLayout(
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.focusRequester(focusRequester),
|
.focusRequester(focusRequester),
|
||||||
) {
|
) {
|
||||||
item(span = { TvGridItemSpan(this.maxLineSpan) }) {
|
item(span = { GridItemSpan(this.maxLineSpan) }) {
|
||||||
Text(
|
Text(
|
||||||
text = libraryName,
|
text = libraryName,
|
||||||
style = MaterialTheme.typography.displayMedium,
|
style = MaterialTheme.typography.displayMedium,
|
||||||
|
|
|
@ -152,7 +152,7 @@ private fun LoginScreenLayout(
|
||||||
label = { Text(text = stringResource(id = CoreR.string.edit_text_username_hint)) },
|
label = { Text(text = stringResource(id = CoreR.string.edit_text_username_hint)) },
|
||||||
singleLine = true,
|
singleLine = true,
|
||||||
keyboardOptions = KeyboardOptions(
|
keyboardOptions = KeyboardOptions(
|
||||||
autoCorrect = false,
|
autoCorrectEnabled = false,
|
||||||
keyboardType = KeyboardType.Text,
|
keyboardType = KeyboardType.Text,
|
||||||
imeAction = ImeAction.Next,
|
imeAction = ImeAction.Next,
|
||||||
),
|
),
|
||||||
|
@ -175,7 +175,7 @@ private fun LoginScreenLayout(
|
||||||
label = { Text(text = stringResource(id = CoreR.string.edit_text_password_hint)) },
|
label = { Text(text = stringResource(id = CoreR.string.edit_text_password_hint)) },
|
||||||
singleLine = true,
|
singleLine = true,
|
||||||
keyboardOptions = KeyboardOptions(
|
keyboardOptions = KeyboardOptions(
|
||||||
autoCorrect = false,
|
autoCorrectEnabled = false,
|
||||||
keyboardType = KeyboardType.Password,
|
keyboardType = KeyboardType.Password,
|
||||||
imeAction = ImeAction.Go,
|
imeAction = ImeAction.Go,
|
||||||
),
|
),
|
||||||
|
|
|
@ -18,12 +18,12 @@ import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.focus.FocusRequester
|
import androidx.compose.ui.focus.FocusRequester
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.viewinterop.AndroidView
|
import androidx.compose.ui.viewinterop.AndroidView
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.LifecycleEventObserver
|
import androidx.lifecycle.LifecycleEventObserver
|
||||||
|
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||||
import androidx.media3.common.C
|
import androidx.media3.common.C
|
||||||
import androidx.media3.common.Player
|
import androidx.media3.common.Player
|
||||||
import androidx.media3.common.TrackSelectionOverride
|
import androidx.media3.common.TrackSelectionOverride
|
||||||
|
|
|
@ -6,6 +6,8 @@ import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
@ -16,8 +18,6 @@ import androidx.compose.ui.focus.FocusRequester
|
||||||
import androidx.compose.ui.focus.focusRequester
|
import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyColumn
|
|
||||||
import androidx.tv.foundation.lazy.list.items
|
|
||||||
import androidx.tv.material3.MaterialTheme
|
import androidx.tv.material3.MaterialTheme
|
||||||
import androidx.tv.material3.Text
|
import androidx.tv.material3.Text
|
||||||
import com.ramcosta.composedestinations.annotation.Destination
|
import com.ramcosta.composedestinations.annotation.Destination
|
||||||
|
@ -109,7 +109,7 @@ private fun SeasonScreenLayout(
|
||||||
style = MaterialTheme.typography.headlineMedium,
|
style = MaterialTheme.typography.headlineMedium,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
TvLazyColumn(
|
LazyColumn(
|
||||||
contentPadding = PaddingValues(
|
contentPadding = PaddingValues(
|
||||||
top = MaterialTheme.spacings.large,
|
top = MaterialTheme.spacings.large,
|
||||||
bottom = MaterialTheme.spacings.large,
|
bottom = MaterialTheme.spacings.large,
|
||||||
|
|
|
@ -13,6 +13,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
|
@ -31,8 +33,6 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyRow
|
|
||||||
import androidx.tv.foundation.lazy.list.items
|
|
||||||
import androidx.tv.material3.Border
|
import androidx.tv.material3.Border
|
||||||
import androidx.tv.material3.ClickableSurfaceDefaults
|
import androidx.tv.material3.ClickableSurfaceDefaults
|
||||||
import androidx.tv.material3.Icon
|
import androidx.tv.material3.Icon
|
||||||
|
@ -172,7 +172,7 @@ private fun ServerSelectScreenLayout(
|
||||||
style = MaterialTheme.typography.bodyMedium,
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
TvLazyRow(
|
LazyRow(
|
||||||
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large),
|
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large),
|
||||||
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default),
|
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default),
|
||||||
modifier = Modifier.focusRequester(focusRequester),
|
modifier = Modifier.focusRequester(focusRequester),
|
||||||
|
|
|
@ -3,6 +3,10 @@ package dev.jdtech.jellyfin.ui
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
|
import androidx.compose.foundation.lazy.grid.GridItemSpan
|
||||||
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
|
import androidx.compose.foundation.lazy.grid.items
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
@ -15,10 +19,6 @@ import androidx.compose.ui.res.stringArrayResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.tv.foundation.lazy.grid.TvGridCells
|
|
||||||
import androidx.tv.foundation.lazy.grid.TvGridItemSpan
|
|
||||||
import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid
|
|
||||||
import androidx.tv.foundation.lazy.grid.items
|
|
||||||
import androidx.tv.material3.MaterialTheme
|
import androidx.tv.material3.MaterialTheme
|
||||||
import androidx.tv.material3.Text
|
import androidx.tv.material3.Text
|
||||||
import com.ramcosta.composedestinations.annotation.Destination
|
import com.ramcosta.composedestinations.annotation.Destination
|
||||||
|
@ -88,8 +88,8 @@ private fun SettingsScreenLayout(
|
||||||
|
|
||||||
when (uiState) {
|
when (uiState) {
|
||||||
is SettingsViewModel.UiState.Normal -> {
|
is SettingsViewModel.UiState.Normal -> {
|
||||||
TvLazyVerticalGrid(
|
LazyVerticalGrid(
|
||||||
columns = TvGridCells.Fixed(3),
|
columns = GridCells.Fixed(3),
|
||||||
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
||||||
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
||||||
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large),
|
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large),
|
||||||
|
@ -97,7 +97,7 @@ private fun SettingsScreenLayout(
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.focusRequester(focusRequester),
|
.focusRequester(focusRequester),
|
||||||
) {
|
) {
|
||||||
item(span = { TvGridItemSpan(this.maxLineSpan) }) {
|
item(span = { GridItemSpan(this.maxLineSpan) }) {
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(id = CoreR.string.title_settings),
|
text = stringResource(id = CoreR.string.title_settings),
|
||||||
style = MaterialTheme.typography.displayMedium,
|
style = MaterialTheme.typography.displayMedium,
|
||||||
|
|
|
@ -8,6 +8,8 @@ import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
@ -23,8 +25,6 @@ import androidx.compose.ui.res.stringArrayResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyColumn
|
|
||||||
import androidx.tv.foundation.lazy.list.items
|
|
||||||
import androidx.tv.material3.MaterialTheme
|
import androidx.tv.material3.MaterialTheme
|
||||||
import androidx.tv.material3.Text
|
import androidx.tv.material3.Text
|
||||||
import com.ramcosta.composedestinations.annotation.Destination
|
import com.ramcosta.composedestinations.annotation.Destination
|
||||||
|
@ -131,7 +131,7 @@ private fun SettingsSubScreenLayout(
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large),
|
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large),
|
||||||
) {
|
) {
|
||||||
TvLazyColumn(
|
LazyColumn(
|
||||||
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
||||||
contentPadding = PaddingValues(vertical = MaterialTheme.spacings.large),
|
contentPadding = PaddingValues(vertical = MaterialTheme.spacings.large),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.jdtech.jellyfin.ui
|
package dev.jdtech.jellyfin.ui
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
|
@ -16,6 +17,10 @@ import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
@ -44,10 +49,6 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.toSize
|
import androidx.compose.ui.unit.toSize
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyColumn
|
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyRow
|
|
||||||
import androidx.tv.foundation.lazy.list.items
|
|
||||||
import androidx.tv.foundation.lazy.list.rememberTvLazyListState
|
|
||||||
import androidx.tv.material3.Button
|
import androidx.tv.material3.Button
|
||||||
import androidx.tv.material3.Icon
|
import androidx.tv.material3.Icon
|
||||||
import androidx.tv.material3.LocalContentColor
|
import androidx.tv.material3.LocalContentColor
|
||||||
|
@ -136,7 +137,7 @@ private fun ShowScreenLayout(
|
||||||
) {
|
) {
|
||||||
val focusRequester = remember { FocusRequester() }
|
val focusRequester = remember { FocusRequester() }
|
||||||
|
|
||||||
val listState = rememberTvLazyListState()
|
val listState = rememberLazyListState()
|
||||||
val listSize = remember { mutableIntStateOf(2) }
|
val listSize = remember { mutableIntStateOf(2) }
|
||||||
var currentIndex by remember { mutableIntStateOf(0) }
|
var currentIndex by remember { mutableIntStateOf(0) }
|
||||||
|
|
||||||
|
@ -179,7 +180,7 @@ private fun ShowScreenLayout(
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
TvLazyColumn(
|
LazyColumn(
|
||||||
state = listState,
|
state = listState,
|
||||||
contentPadding = PaddingValues(top = 112.dp, bottom = MaterialTheme.spacings.large),
|
contentPadding = PaddingValues(top = 112.dp, bottom = MaterialTheme.spacings.large),
|
||||||
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.medium),
|
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.medium),
|
||||||
|
@ -364,7 +365,7 @@ private fun ShowScreenLayout(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
item {
|
item {
|
||||||
TvLazyRow(
|
LazyRow(
|
||||||
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
||||||
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2),
|
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2),
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -11,6 +11,8 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
|
@ -29,8 +31,6 @@ import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyRow
|
|
||||||
import androidx.tv.foundation.lazy.list.items
|
|
||||||
import androidx.tv.material3.Border
|
import androidx.tv.material3.Border
|
||||||
import androidx.tv.material3.ClickableSurfaceDefaults
|
import androidx.tv.material3.ClickableSurfaceDefaults
|
||||||
import androidx.tv.material3.Icon
|
import androidx.tv.material3.Icon
|
||||||
|
@ -146,7 +146,7 @@ private fun UserSelectScreenLayout(
|
||||||
style = MaterialTheme.typography.bodyMedium,
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
TvLazyRow(
|
LazyRow(
|
||||||
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default),
|
||||||
contentPadding = PaddingValues(MaterialTheme.spacings.default),
|
contentPadding = PaddingValues(MaterialTheme.spacings.default),
|
||||||
modifier = Modifier.focusRequester(focusRequester),
|
modifier = Modifier.focusRequester(focusRequester),
|
||||||
|
|
|
@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
|
@ -18,7 +19,6 @@ import androidx.compose.ui.res.stringArrayResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyColumn
|
|
||||||
import androidx.tv.material3.Border
|
import androidx.tv.material3.Border
|
||||||
import androidx.tv.material3.ClickableSurfaceDefaults
|
import androidx.tv.material3.ClickableSurfaceDefaults
|
||||||
import androidx.tv.material3.ClickableSurfaceScale
|
import androidx.tv.material3.ClickableSurfaceScale
|
||||||
|
@ -56,7 +56,7 @@ fun SettingsDetailsCard(
|
||||||
Text(text = stringResource(id = it), style = MaterialTheme.typography.bodyMedium)
|
Text(text = stringResource(id = it), style = MaterialTheme.typography.bodyMedium)
|
||||||
}
|
}
|
||||||
Spacer(modifier = Modifier.height(MaterialTheme.spacings.default))
|
Spacer(modifier = Modifier.height(MaterialTheme.spacings.default))
|
||||||
TvLazyColumn(
|
LazyColumn(
|
||||||
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.medium - MaterialTheme.spacings.extraSmall),
|
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.medium - MaterialTheme.spacings.extraSmall),
|
||||||
contentPadding = PaddingValues(vertical = MaterialTheme.spacings.extraSmall),
|
contentPadding = PaddingValues(vertical = MaterialTheme.spacings.extraSmall),
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -10,6 +10,8 @@ import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
|
@ -19,8 +21,6 @@ import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.media3.common.C
|
import androidx.media3.common.C
|
||||||
import androidx.tv.foundation.lazy.list.TvLazyColumn
|
|
||||||
import androidx.tv.foundation.lazy.list.items
|
|
||||||
import androidx.tv.material3.Border
|
import androidx.tv.material3.Border
|
||||||
import androidx.tv.material3.ClickableSurfaceDefaults
|
import androidx.tv.material3.ClickableSurfaceDefaults
|
||||||
import androidx.tv.material3.ClickableSurfaceScale
|
import androidx.tv.material3.ClickableSurfaceScale
|
||||||
|
@ -65,7 +65,7 @@ fun VideoPlayerTrackSelectorDialog(
|
||||||
style = MaterialTheme.typography.headlineMedium,
|
style = MaterialTheme.typography.headlineMedium,
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(MaterialTheme.spacings.medium))
|
Spacer(modifier = Modifier.height(MaterialTheme.spacings.medium))
|
||||||
TvLazyColumn(
|
LazyColumn(
|
||||||
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.medium - MaterialTheme.spacings.extraSmall),
|
verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.medium - MaterialTheme.spacings.extraSmall),
|
||||||
contentPadding = PaddingValues(vertical = MaterialTheme.spacings.extraSmall),
|
contentPadding = PaddingValues(vertical = MaterialTheme.spacings.extraSmall),
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -49,13 +49,13 @@ ktlint {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
val composeBom = platform(libs.androidx.compose.bom)
|
// val composeBom = platform(libs.androidx.compose.bom)
|
||||||
|
|
||||||
implementation(projects.data)
|
implementation(projects.data)
|
||||||
implementation(projects.preferences)
|
implementation(projects.preferences)
|
||||||
implementation(projects.player.core)
|
implementation(projects.player.core)
|
||||||
implementation(libs.androidx.appcompat)
|
implementation(libs.androidx.appcompat)
|
||||||
implementation(composeBom)
|
// implementation(composeBom)
|
||||||
implementation(libs.androidx.compose.ui)
|
implementation(libs.androidx.compose.ui)
|
||||||
implementation(libs.androidx.core)
|
implementation(libs.androidx.core)
|
||||||
implementation(libs.androidx.hilt.work)
|
implementation(libs.androidx.hilt.work)
|
||||||
|
|
|
@ -6,8 +6,8 @@ import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.input.key.onKeyEvent
|
import androidx.compose.ui.input.key.onKeyEvent
|
||||||
import androidx.compose.ui.input.key.onPreviewKeyEvent
|
import androidx.compose.ui.input.key.onPreviewKeyEvent
|
||||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
|
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||||
import androidx.lifecycle.repeatOnLifecycle
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ android-desugar-jdk-libs = "2.0.4"
|
||||||
android-plugin = "8.5.1"
|
android-plugin = "8.5.1"
|
||||||
androidx-activity = "1.9.0"
|
androidx-activity = "1.9.0"
|
||||||
androidx-appcompat = "1.7.0"
|
androidx-appcompat = "1.7.0"
|
||||||
androidx-compose-bom = "2024.06.00"
|
androidx-compose = "1.7.0-beta05"
|
||||||
androidx-compose-material3 = "1.2.1"
|
androidx-compose-material3 = "1.2.1"
|
||||||
androidx-constraintlayout = "2.1.4"
|
androidx-constraintlayout = "2.1.4"
|
||||||
androidx-core = "1.13.1"
|
androidx-core = "1.13.1"
|
||||||
|
@ -22,7 +22,6 @@ androidx-test-expresso = "3.6.1"
|
||||||
androidx-test-junit = "1.2.1"
|
androidx-test-junit = "1.2.1"
|
||||||
androidx-test-rules = "1.6.1"
|
androidx-test-rules = "1.6.1"
|
||||||
androidx-test-runner = "1.6.1"
|
androidx-test-runner = "1.6.1"
|
||||||
androidx-tv = "1.0.0-alpha11"
|
|
||||||
androidx-tv-material3 = "1.0.0-rc01"
|
androidx-tv-material3 = "1.0.0-rc01"
|
||||||
androidx-work = "2.9.0"
|
androidx-work = "2.9.0"
|
||||||
coil = "2.6.0"
|
coil = "2.6.0"
|
||||||
|
@ -46,11 +45,12 @@ android-desugar-jdk = { group = "com.android.tools", name = "desugar_jdk_libs",
|
||||||
androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "androidx-activity" }
|
androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "androidx-activity" }
|
||||||
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidx-activity" }
|
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidx-activity" }
|
||||||
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" }
|
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" }
|
||||||
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidx-compose-bom" }
|
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "androidx-compose" }
|
||||||
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "androidx-compose-material3" }
|
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "androidx-compose-material3" }
|
||||||
androidx-compose-ui = { group = "androidx.compose.ui", name = "ui" }
|
androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime", version.ref = "androidx-compose" }
|
||||||
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
|
androidx-compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "androidx-compose" }
|
||||||
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
|
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "androidx-compose" }
|
||||||
|
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "androidx-compose" }
|
||||||
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidx-constraintlayout" }
|
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidx-constraintlayout" }
|
||||||
androidx-core = { group = "androidx.core", name = "core", version.ref = "androidx-core" }
|
androidx-core = { group = "androidx.core", name = "core", version.ref = "androidx-core" }
|
||||||
androidx-hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "androidx-hilt" }
|
androidx-hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "androidx-hilt" }
|
||||||
|
@ -79,7 +79,6 @@ androidx-test-expresso = { group = "androidx.test.espresso", name = "espresso-co
|
||||||
androidx-test-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-junit" }
|
androidx-test-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-junit" }
|
||||||
androidx-test-rules = { group = "androidx.test" , name = "rules", version.ref = "androidx-test-rules" }
|
androidx-test-rules = { group = "androidx.test" , name = "rules", version.ref = "androidx-test-rules" }
|
||||||
androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidx-test-runner" }
|
androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidx-test-runner" }
|
||||||
androidx-tv-foundation = { group = "androidx.tv", name = "tv-foundation", version.ref = "androidx-tv" }
|
|
||||||
androidx-tv-material = { group = "androidx.tv", name = "tv-material", version.ref = "androidx-tv-material3" }
|
androidx-tv-material = { group = "androidx.tv", name = "tv-material", version.ref = "androidx-tv-material3" }
|
||||||
androidx-work = { group = "androidx.work", name = "work-runtime", version.ref = "androidx-work" }
|
androidx-work = { group = "androidx.work", name = "work-runtime", version.ref = "androidx-work" }
|
||||||
androidx-work-testing = { group = "androidx.work", name = "work-testing", version.ref = "androidx-work" }
|
androidx-work-testing = { group = "androidx.work", name = "work-testing", version.ref = "androidx-work" }
|
||||||
|
|
Loading…
Reference in a new issue