From b73900b698edba5ef78c438efd9ee2e8c8a12821 Mon Sep 17 00:00:00 2001 From: Damontecres Date: Thu, 29 Jan 2026 16:03:27 -0500 Subject: [PATCH] Move some settings to new page --- .../main/settings/HomeSettingsDestination.kt | 3 + .../ui/main/settings/HomeSettingsGlobal.kt | 146 ++++++++++++++++++ .../ui/main/settings/HomeSettingsPage.kt | 39 +++-- .../ui/main/settings/HomeSettingsRowList.kt | 76 ++------- app/src/main/res/values/strings.xml | 1 + 5 files changed, 186 insertions(+), 79 deletions(-) create mode 100644 app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsGlobal.kt diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsDestination.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsDestination.kt index 7aa65db9..8148e619 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsDestination.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsDestination.kt @@ -29,4 +29,7 @@ sealed interface HomeSettingsDestination : NavKey { @Serializable data object ChooseDiscover : HomeSettingsDestination + + @Serializable + data object GlobalSettings : HomeSettingsDestination } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsGlobal.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsGlobal.kt new file mode 100644 index 00000000..309d7d88 --- /dev/null +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsGlobal.kt @@ -0,0 +1,146 @@ +package com.github.damontecres.wholphin.ui.main.settings + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.KeyboardArrowDown +import androidx.compose.material.icons.filled.KeyboardArrowUp +import androidx.compose.material3.HorizontalDivider +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRestorer +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.tv.material3.Icon +import androidx.tv.material3.MaterialTheme +import androidx.tv.material3.Text +import com.github.damontecres.wholphin.R +import com.github.damontecres.wholphin.ui.FontAwesome +import com.github.damontecres.wholphin.ui.tryRequestFocus + +@Composable +fun HomeSettingsGlobal( + onClickResize: (Int) -> Unit, + onClickSave: () -> Unit, + onClickLoad: () -> Unit, + onClickLoadWeb: () -> Unit, + modifier: Modifier = Modifier, +) { + val firstFocus: FocusRequester = remember { FocusRequester() } + LaunchedEffect(Unit) { firstFocus.tryRequestFocus() } + Column(modifier = modifier) { + Text( + text = stringResource(R.string.settings), + style = MaterialTheme.typography.titleLarge, + textAlign = TextAlign.Center, + modifier = Modifier.fillMaxWidth(), + ) + HorizontalDivider() + LazyColumn( + verticalArrangement = Arrangement.spacedBy(8.dp), + modifier = + modifier + .fillMaxHeight() + .focusRestorer(firstFocus), + ) { + item { + HomeSettingsListItem( + selected = false, + headlineContent = { + Text( + text = "Increase card sizes", + ) + }, + leadingContent = { + Icon( + imageVector = Icons.Default.KeyboardArrowUp, + contentDescription = null, + ) + }, + onClick = { onClickResize.invoke(1) }, + modifier = Modifier, + ) + } + item { + HomeSettingsListItem( + selected = false, + headlineContent = { + Text( + text = "Decrease card sizes", + ) + }, + leadingContent = { + Icon( + imageVector = Icons.Default.KeyboardArrowDown, + contentDescription = null, + ) + }, + onClick = { onClickResize.invoke(-1) }, + modifier = Modifier, + ) + } + item { HorizontalDivider() } + item { + HomeSettingsListItem( + selected = false, + headlineContent = { + Text( + text = stringResource(R.string.save_to_server), + ) + }, + leadingContent = { + Text( + text = stringResource(R.string.fa_cloud_arrow_up), + fontFamily = FontAwesome, + ) + }, + onClick = onClickSave, + modifier = Modifier, + ) + } + item { + HomeSettingsListItem( + selected = false, + headlineContent = { + Text( + text = stringResource(R.string.load_from_server), + ) + }, + leadingContent = { + Text( + text = stringResource(R.string.fa_cloud_arrow_down), + fontFamily = FontAwesome, + ) + }, + onClick = onClickLoad, + modifier = Modifier, + ) + } + item { + HomeSettingsListItem( + selected = false, + headlineContent = { + Text( + text = stringResource(R.string.load_from_web_client), + ) + }, + leadingContent = { + Text( + text = stringResource(R.string.fa_download), + fontFamily = FontAwesome, + ) + }, + onClick = onClickLoadWeb, + modifier = Modifier, + ) + } + } + } +} diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsPage.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsPage.kt index 1076d727..386eae87 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsPage.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsPage.kt @@ -82,27 +82,18 @@ fun HomeSettingsPage( ), modifier = Modifier.background(MaterialTheme.colorScheme.surfaceColorAtElevation(1.dp)), entryProvider = { key -> - key as HomeSettingsDestination - NavEntry(key, contentKey = key.toString()) { + val dest = key as HomeSettingsDestination + NavEntry(dest, contentKey = key.toString()) { val destModifier = Modifier .fillMaxSize() .padding(4.dp) - when (val dest = key) { + when (dest) { HomeSettingsDestination.RowList -> { HomeSettingsRowList( state = state, onClickAdd = { backStack.add(HomeSettingsDestination.AddRow) }, - onClickSave = { - showConfirmDialog = { - viewModel.saveToRemote() - } - }, - onClickLoad = { - showConfirmDialog = { - viewModel.loadFromRemote() - } - }, + onClickSettings = { backStack.add(HomeSettingsDestination.GlobalSettings) }, onClickMove = viewModel::moveRow, onClickDelete = viewModel::deleteRow, onClick = { index, row -> @@ -112,9 +103,6 @@ fun HomeSettingsPage( listState.scrollToItem(index) } }, - onClickResize = { - viewModel.resizeCards(it) - }, modifier = destModifier, ) } @@ -184,6 +172,25 @@ fun HomeSettingsPage( }, ) } + + HomeSettingsDestination.GlobalSettings -> { + HomeSettingsGlobal( + onClickResize = { viewModel.resizeCards(it) }, + onClickSave = { + showConfirmDialog = { + viewModel.saveToRemote() + } + }, + onClickLoad = { + showConfirmDialog = { + viewModel.loadFromRemote() + } + }, + onClickLoadWeb = { + }, + modifier = destModifier, + ) + } } } }, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsRowList.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsRowList.kt index 9d0cd9f1..59199eca 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsRowList.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/main/settings/HomeSettingsRowList.kt @@ -13,7 +13,7 @@ import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Edit +import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.HorizontalDivider import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -47,10 +47,8 @@ enum class MoveDirection { fun HomeSettingsRowList( state: HomePageSettingsState, onClick: (Int, HomeRowConfigDisplay) -> Unit, - onClickResize: (Int) -> Unit, - onClickSave: () -> Unit, - onClickLoad: () -> Unit, onClickAdd: () -> Unit, + onClickSettings: () -> Unit, onClickMove: (MoveDirection, Int) -> Unit, onClickDelete: (Int) -> Unit, modifier: Modifier, @@ -59,6 +57,12 @@ fun HomeSettingsRowList( val focusManager = LocalFocusManager.current LaunchedEffect(Unit) { firstFocus.tryRequestFocus() } Column(modifier = modifier) { + Text( + text = stringResource(R.string.customize_home), + style = MaterialTheme.typography.titleLarge, + textAlign = TextAlign.Center, + modifier = Modifier.fillMaxWidth(), + ) LazyColumn( verticalArrangement = Arrangement.spacedBy(8.dp), modifier = @@ -84,75 +88,21 @@ fun HomeSettingsRowList( modifier = Modifier.focusRequester(firstFocus), ) } - item { - Row { - HomeSettingsListItem( - selected = false, - headlineContent = { - Text( - text = "Increase card sizes", - ) - }, - leadingContent = { - Icon( - imageVector = Icons.Default.Edit, - contentDescription = null, - ) - }, - onClick = { onClickResize.invoke(1) }, - modifier = Modifier.weight(1f), - ) - HomeSettingsListItem( - selected = false, - headlineContent = { - Text( - text = "Decrease card sizes", - ) - }, - leadingContent = { - Icon( - imageVector = Icons.Default.Edit, - contentDescription = null, - ) - }, - onClick = { onClickResize.invoke(-1) }, - modifier = Modifier.weight(1f), - ) - } - } item { HomeSettingsListItem( selected = false, headlineContent = { Text( - text = stringResource(R.string.save_to_server), + text = stringResource(R.string.settings), ) }, leadingContent = { - Text( - text = stringResource(R.string.fa_cloud_arrow_up), - fontFamily = FontAwesome, + Icon( + imageVector = Icons.Default.Settings, + contentDescription = null, ) }, - onClick = onClickSave, - modifier = Modifier, - ) - } - item { - HomeSettingsListItem( - selected = false, - headlineContent = { - Text( - text = stringResource(R.string.load_from_server), - ) - }, - leadingContent = { - Text( - text = stringResource(R.string.fa_cloud_arrow_down), - fontFamily = FontAwesome, - ) - }, - onClick = onClickLoad, + onClick = onClickSettings, modifier = Modifier, ) } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b3050ad8..55c15cfb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -471,6 +471,7 @@ Home rows Load from server Save to server + Load from web client Disabled