fix android tv focus
This commit is contained in:
+7
-13
@@ -3,10 +3,8 @@ package ru.shadowsparky.vbox.shared.presentation.overview.season
|
|||||||
import androiddev.apps.vbox.client.shared.generated.resources.Res
|
import androiddev.apps.vbox.client.shared.generated.resources.Res
|
||||||
import androiddev.apps.vbox.client.shared.generated.resources.retry
|
import androiddev.apps.vbox.client.shared.generated.resources.retry
|
||||||
import androiddev.apps.vbox.client.shared.generated.resources.seasons_overview
|
import androiddev.apps.vbox.client.shared.generated.resources.seasons_overview
|
||||||
import androidx.compose.foundation.clickable
|
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
@@ -18,7 +16,6 @@ import androidx.compose.runtime.withFrameNanos
|
|||||||
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.focus.focusRequester
|
import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.unit.dp
|
|
||||||
import org.jetbrains.compose.resources.stringResource
|
import org.jetbrains.compose.resources.stringResource
|
||||||
import ru.shadowsparky.ui.LocalBlurState
|
import ru.shadowsparky.ui.LocalBlurState
|
||||||
import ru.shadowsparky.ui.applyBlurSource
|
import ru.shadowsparky.ui.applyBlurSource
|
||||||
@@ -26,6 +23,7 @@ import ru.shadowsparky.ui.components.BackButton
|
|||||||
import ru.shadowsparky.ui.components.ErrorContent
|
import ru.shadowsparky.ui.components.ErrorContent
|
||||||
import ru.shadowsparky.ui.components.ExpressiveLazyColumn
|
import ru.shadowsparky.ui.components.ExpressiveLazyColumn
|
||||||
import ru.shadowsparky.ui.components.Loading
|
import ru.shadowsparky.ui.components.Loading
|
||||||
|
import ru.shadowsparky.ui.components.TextPreference
|
||||||
import ru.shadowsparky.ui.components.TopAppBar
|
import ru.shadowsparky.ui.components.TopAppBar
|
||||||
import ru.shadowsparky.ui.rememberBlurState
|
import ru.shadowsparky.ui.rememberBlurState
|
||||||
import ru.shadowsparky.vbox.shared.domain.model.Season
|
import ru.shadowsparky.vbox.shared.domain.model.Season
|
||||||
@@ -79,14 +77,15 @@ fun SeasonsInfo(
|
|||||||
content = {
|
content = {
|
||||||
section {
|
section {
|
||||||
itemsIndexed(seasons) { index, season ->
|
itemsIndexed(seasons) { index, season ->
|
||||||
SeasonInfo(
|
TextPreference(
|
||||||
if (index == 0) {
|
season.title,
|
||||||
|
onClick = { onClick(season.id) },
|
||||||
|
modifier = if (index == 0) {
|
||||||
Modifier.focusRequester(requester)
|
Modifier.focusRequester(requester)
|
||||||
} else {
|
} else {
|
||||||
Modifier
|
Modifier
|
||||||
},
|
}
|
||||||
season.title
|
)
|
||||||
) { onClick(season.id) }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -99,8 +98,3 @@ fun SeasonsInfo(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun SeasonInfo(modifier: Modifier, titleText: String, onClick: () -> Unit) {
|
|
||||||
Text(titleText, modifier = modifier.fillMaxWidth().clickable { onClick() }.padding(16.dp))
|
|
||||||
}
|
|
||||||
|
|||||||
+10
-1
@@ -6,6 +6,7 @@ import androiddev.feature.chat.chat_client.generated.resources.chat_load_error
|
|||||||
import androiddev.feature.chat.chat_client.generated.resources.chat_ok
|
import androiddev.feature.chat.chat_client.generated.resources.chat_ok
|
||||||
import androiddev.feature.chat.chat_client.generated.resources.chat_retry_button
|
import androiddev.feature.chat.chat_client.generated.resources.chat_retry_button
|
||||||
import androiddev.feature.chat.chat_client.generated.resources.send
|
import androiddev.feature.chat.chat_client.generated.resources.send
|
||||||
|
import androidx.compose.foundation.focusable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
@@ -17,14 +18,17 @@ import androidx.compose.foundation.layout.calculateStartPadding
|
|||||||
import androidx.compose.foundation.layout.fillMaxSize
|
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.heightIn
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.widthIn
|
import androidx.compose.foundation.layout.widthIn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.foundation.text.KeyboardActions
|
import androidx.compose.foundation.text.KeyboardActions
|
||||||
import androidx.compose.foundation.text.KeyboardOptions
|
import androidx.compose.foundation.text.KeyboardOptions
|
||||||
import androidx.compose.foundation.text.selection.SelectionContainer
|
import androidx.compose.foundation.text.selection.SelectionContainer
|
||||||
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.Card
|
import androidx.compose.material3.Card
|
||||||
import androidx.compose.material3.CardDefaults
|
import androidx.compose.material3.CardDefaults
|
||||||
@@ -213,6 +217,7 @@ private fun MessageBubble(
|
|||||||
onParseMessage: (String) -> List<TextToken>,
|
onParseMessage: (String) -> List<TextToken>,
|
||||||
onClickLink: (String) -> Unit
|
onClickLink: (String) -> Unit
|
||||||
) {
|
) {
|
||||||
|
val scrollState = rememberScrollState()
|
||||||
val isUser = message.role == ChatRoles.USER
|
val isUser = message.role == ChatRoles.USER
|
||||||
val alignment = if (isUser) Alignment.CenterEnd else Alignment.CenterStart
|
val alignment = if (isUser) Alignment.CenterEnd else Alignment.CenterStart
|
||||||
val containerColor = if (isUser) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.surfaceVariant
|
val containerColor = if (isUser) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.surfaceVariant
|
||||||
@@ -248,7 +253,11 @@ private fun MessageBubble(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth()
|
||||||
|
.heightIn(max = 400.dp)
|
||||||
|
.focusable()
|
||||||
|
.verticalScroll(scrollState)
|
||||||
|
,
|
||||||
contentAlignment = alignment
|
contentAlignment = alignment
|
||||||
) {
|
) {
|
||||||
Card(
|
Card(
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.PaddingValues
|
|||||||
import androidx.compose.foundation.layout.Spacer
|
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.lazy.LazyColumn
|
|
||||||
import androidx.compose.foundation.lazy.LazyItemScope
|
import androidx.compose.foundation.lazy.LazyItemScope
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material3.Card
|
import androidx.compose.material3.Card
|
||||||
|
|||||||
Reference in New Issue
Block a user