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