diff --git a/app/src/main/java/eu/kanade/presentation/components/Banners.kt b/app/src/main/java/eu/kanade/presentation/components/Banners.kt index f234832a47..9aef71debb 100644 --- a/app/src/main/java/eu/kanade/presentation/components/Banners.kt +++ b/app/src/main/java/eu/kanade/presentation/components/Banners.kt @@ -1,7 +1,7 @@ package eu.kanade.presentation.components import androidx.compose.foundation.background -import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme @@ -14,15 +14,18 @@ import androidx.compose.ui.unit.dp import eu.kanade.tachiyomi.R @Composable -fun ColumnScope.AppStateBanners( +fun AppStateBanners( downloadedOnlyMode: Boolean, incognitoMode: Boolean, + modifier: Modifier = Modifier, ) { - if (downloadedOnlyMode) { - DownloadedOnlyModeBanner() - } - if (incognitoMode) { - IncognitoModeBanner() + Column(modifier = modifier) { + if (downloadedOnlyMode) { + DownloadedOnlyModeBanner() + } + if (incognitoMode) { + IncognitoModeBanner() + } } } diff --git a/app/src/main/java/eu/kanade/presentation/more/LogoHeader.kt b/app/src/main/java/eu/kanade/presentation/more/LogoHeader.kt index b992633a34..b5d5c1255d 100644 --- a/app/src/main/java/eu/kanade/presentation/more/LogoHeader.kt +++ b/app/src/main/java/eu/kanade/presentation/more/LogoHeader.kt @@ -6,8 +6,8 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp @@ -16,19 +16,18 @@ import eu.kanade.tachiyomi.R @Composable fun LogoHeader() { - Column { - Surface( - modifier = Modifier.fillMaxWidth(), - ) { - Icon( - painter = painterResource(R.drawable.ic_tachi), - contentDescription = null, - tint = MaterialTheme.colorScheme.onSurface, - modifier = Modifier - .padding(32.dp) - .size(56.dp), - ) - } + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Icon( + painter = painterResource(R.drawable.ic_tachi), + contentDescription = null, + tint = MaterialTheme.colorScheme.onSurface, + modifier = Modifier + .padding(vertical = 56.dp) + .size(64.dp), + ) Divider() } diff --git a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt index df8f3b2400..d6f4a4fbf0 100644 --- a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt @@ -1,5 +1,6 @@ package eu.kanade.presentation.more +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.CloudOff import androidx.compose.material.icons.outlined.GetApp @@ -11,18 +12,17 @@ import androidx.compose.material.icons.outlined.SettingsBackupRestore import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue +import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import eu.kanade.presentation.components.AppBar +import eu.kanade.presentation.components.AppStateBanners import eu.kanade.presentation.components.Divider import eu.kanade.presentation.components.PreferenceRow -import eu.kanade.presentation.components.Scaffold import eu.kanade.presentation.components.ScrollbarLazyColumn import eu.kanade.presentation.components.SwitchPreference import eu.kanade.presentation.util.bottomNavPaddingValues -import eu.kanade.presentation.util.plus import eu.kanade.presentation.util.quantityStringResource import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.ui.more.DownloadQueueState @@ -41,108 +41,105 @@ fun MoreScreen( val uriHandler = LocalUriHandler.current val downloadQueueState by presenter.downloadQueueState.collectAsState() - Scaffold( - topBar = { scrollBehavior -> - AppBar( - title = stringResource(R.string.label_more), + ScrollbarLazyColumn( + modifier = Modifier.statusBarsPadding(), + contentPadding = bottomNavPaddingValues, + ) { + item { + LogoHeader() + } + + item { + AppStateBanners( downloadedOnlyMode = presenter.downloadedOnly.value, incognitoMode = presenter.incognitoMode.value, - scrollBehavior = scrollBehavior, ) - }, - ) { contentPadding -> - ScrollbarLazyColumn( - contentPadding = contentPadding + bottomNavPaddingValues, - ) { - item { - LogoHeader() - } + } - item { - SwitchPreference( - preference = presenter.downloadedOnly, - title = stringResource(R.string.label_downloaded_only), - subtitle = stringResource(R.string.downloaded_only_summary), - painter = rememberVectorPainter(Icons.Outlined.CloudOff), - ) - } - item { - SwitchPreference( - preference = presenter.incognitoMode, - title = stringResource(R.string.pref_incognito_mode), - subtitle = stringResource(R.string.pref_incognito_mode_summary), - painter = painterResource(R.drawable.ic_glasses_24dp), - ) - } + item { + SwitchPreference( + preference = presenter.downloadedOnly, + title = stringResource(R.string.label_downloaded_only), + subtitle = stringResource(R.string.downloaded_only_summary), + painter = rememberVectorPainter(Icons.Outlined.CloudOff), + ) + } + item { + SwitchPreference( + preference = presenter.incognitoMode, + title = stringResource(R.string.pref_incognito_mode), + subtitle = stringResource(R.string.pref_incognito_mode_summary), + painter = painterResource(R.drawable.ic_glasses_24dp), + ) + } - item { Divider() } + item { Divider() } - item { - PreferenceRow( - title = stringResource(R.string.label_download_queue), - subtitle = when (downloadQueueState) { - DownloadQueueState.Stopped -> null - is DownloadQueueState.Paused -> { - val pending = (downloadQueueState as DownloadQueueState.Paused).pending - if (pending == 0) { - stringResource(R.string.paused) - } else { - "${stringResource(R.string.paused)} • ${ - quantityStringResource( - R.plurals.download_queue_summary, - pending, - pending, - ) - }" - } + item { + PreferenceRow( + title = stringResource(R.string.label_download_queue), + subtitle = when (downloadQueueState) { + DownloadQueueState.Stopped -> null + is DownloadQueueState.Paused -> { + val pending = (downloadQueueState as DownloadQueueState.Paused).pending + if (pending == 0) { + stringResource(R.string.paused) + } else { + "${stringResource(R.string.paused)} • ${ + quantityStringResource( + R.plurals.download_queue_summary, + pending, + pending, + ) + }" } - is DownloadQueueState.Downloading -> { - val pending = (downloadQueueState as DownloadQueueState.Downloading).pending - quantityStringResource(R.plurals.download_queue_summary, pending, pending) - } - }, - painter = rememberVectorPainter(Icons.Outlined.GetApp), - onClick = onClickDownloadQueue, - ) - } - item { - PreferenceRow( - title = stringResource(R.string.categories), - painter = rememberVectorPainter(Icons.Outlined.Label), - onClick = onClickCategories, - ) - } - item { - PreferenceRow( - title = stringResource(R.string.label_backup), - painter = rememberVectorPainter(Icons.Outlined.SettingsBackupRestore), - onClick = onClickBackupAndRestore, - ) - } + } + is DownloadQueueState.Downloading -> { + val pending = (downloadQueueState as DownloadQueueState.Downloading).pending + quantityStringResource(R.plurals.download_queue_summary, pending, pending) + } + }, + painter = rememberVectorPainter(Icons.Outlined.GetApp), + onClick = onClickDownloadQueue, + ) + } + item { + PreferenceRow( + title = stringResource(R.string.categories), + painter = rememberVectorPainter(Icons.Outlined.Label), + onClick = onClickCategories, + ) + } + item { + PreferenceRow( + title = stringResource(R.string.label_backup), + painter = rememberVectorPainter(Icons.Outlined.SettingsBackupRestore), + onClick = onClickBackupAndRestore, + ) + } - item { Divider() } + item { Divider() } - item { - PreferenceRow( - title = stringResource(R.string.label_settings), - painter = rememberVectorPainter(Icons.Outlined.Settings), - onClick = onClickSettings, - ) - } - item { - PreferenceRow( - title = stringResource(R.string.pref_category_about), - painter = rememberVectorPainter(Icons.Outlined.Info), - onClick = onClickAbout, - ) - } - item { - PreferenceRow( - title = stringResource(R.string.label_help), - painter = rememberVectorPainter(Icons.Outlined.HelpOutline), - onClick = { uriHandler.openUri(MoreController.URL_HELP) }, - ) - } + item { + PreferenceRow( + title = stringResource(R.string.label_settings), + painter = rememberVectorPainter(Icons.Outlined.Settings), + onClick = onClickSettings, + ) + } + item { + PreferenceRow( + title = stringResource(R.string.pref_category_about), + painter = rememberVectorPainter(Icons.Outlined.Info), + onClick = onClickAbout, + ) + } + item { + PreferenceRow( + title = stringResource(R.string.label_help), + painter = rememberVectorPainter(Icons.Outlined.HelpOutline), + onClick = { uriHandler.openUri(MoreController.URL_HELP) }, + ) } } }