From 1b2c12385feaa8bc7e32b724289323e5d3e9499e Mon Sep 17 00:00:00 2001 From: arkon Date: Sat, 16 Jul 2022 18:11:26 -0400 Subject: [PATCH] Migrate licenses screen to full Compose --- .../presentation/category/CategoryScreen.kt | 4 +- .../kanade/presentation/components/AppBar.kt | 17 +++++--- .../presentation/more/about/AboutScreen.kt | 4 +- .../presentation/more/about/LicensesScreen.kt | 43 ++++++++++++------- .../presentation/webview/WebViewScreen.kt | 3 +- .../tachiyomi/ui/more/LicensesController.kt | 14 +++--- 6 files changed, 49 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/category/CategoryScreen.kt b/app/src/main/java/eu/kanade/presentation/category/CategoryScreen.kt index 579ce7a971..0ad6358f6c 100644 --- a/app/src/main/java/eu/kanade/presentation/category/CategoryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/category/CategoryScreen.kt @@ -13,10 +13,10 @@ import eu.kanade.presentation.category.components.CategoryCreateDialog import eu.kanade.presentation.category.components.CategoryDeleteDialog import eu.kanade.presentation.category.components.CategoryFloatingActionButton import eu.kanade.presentation.category.components.CategoryRenameDialog +import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.EmptyScreen import eu.kanade.presentation.components.LoadingScreen import eu.kanade.presentation.components.Scaffold -import eu.kanade.presentation.components.TopAppBar import eu.kanade.presentation.util.horizontalPadding import eu.kanade.presentation.util.plus import eu.kanade.presentation.util.topPaddingValues @@ -35,7 +35,7 @@ fun CategoryScreen( Scaffold( modifier = Modifier.statusBarsPadding(), topBar = { - TopAppBar( + AppBar( title = stringResource(R.string.action_edit_categories), navigateUp = navigateUp, ) diff --git a/app/src/main/java/eu/kanade/presentation/components/AppBar.kt b/app/src/main/java/eu/kanade/presentation/components/AppBar.kt index cf849609eb..cfc24c77c2 100644 --- a/app/src/main/java/eu/kanade/presentation/components/AppBar.kt +++ b/app/src/main/java/eu/kanade/presentation/components/AppBar.kt @@ -23,24 +23,27 @@ import androidx.compose.ui.text.style.TextOverflow import eu.kanade.tachiyomi.R @Composable -fun TopAppBar( +fun AppBar( title: String?, subtitle: String? = null, - navigateUp: () -> Unit, + navigateUp: (() -> Unit)? = null, navigationIcon: ImageVector = Icons.Default.ArrowBack, actions: @Composable RowScope.() -> Unit = {}, ) { SmallTopAppBar( navigationIcon = { - IconButton(onClick = navigateUp) { - Icon( - imageVector = navigationIcon, - contentDescription = stringResource(R.string.abc_action_bar_up_description), - ) + navigateUp?.let { + IconButton(onClick = it) { + Icon( + imageVector = navigationIcon, + contentDescription = stringResource(R.string.abc_action_bar_up_description), + ) + } } }, title = { AppBarTitle(title, subtitle) + // TODO: incognito/downloaded only banners }, actions = actions, ) diff --git a/app/src/main/java/eu/kanade/presentation/more/about/AboutScreen.kt b/app/src/main/java/eu/kanade/presentation/more/about/AboutScreen.kt index 7bd5a815a2..ba5af68d47 100644 --- a/app/src/main/java/eu/kanade/presentation/more/about/AboutScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/about/AboutScreen.kt @@ -16,11 +16,11 @@ import androidx.compose.ui.platform.LocalContext 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.LinkIcon import eu.kanade.presentation.components.PreferenceRow import eu.kanade.presentation.components.Scaffold import eu.kanade.presentation.components.ScrollbarLazyColumn -import eu.kanade.presentation.components.TopAppBar import eu.kanade.presentation.more.LogoHeader import eu.kanade.presentation.util.plus import eu.kanade.tachiyomi.BuildConfig @@ -42,7 +42,7 @@ fun AboutScreen( Scaffold( modifier = Modifier.statusBarsPadding(), topBar = { - TopAppBar( + AppBar( title = stringResource(R.string.pref_category_about), navigateUp = navigateUp, ) diff --git a/app/src/main/java/eu/kanade/presentation/more/about/LicensesScreen.kt b/app/src/main/java/eu/kanade/presentation/more/about/LicensesScreen.kt index 3645daea51..48c94cebc2 100644 --- a/app/src/main/java/eu/kanade/presentation/more/about/LicensesScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/about/LicensesScreen.kt @@ -4,28 +4,41 @@ import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.input.nestedscroll.NestedScrollConnection -import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.res.stringResource import com.mikepenz.aboutlibraries.ui.compose.LibrariesContainer import com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults +import eu.kanade.presentation.components.AppBar +import eu.kanade.presentation.components.Scaffold +import eu.kanade.presentation.util.plus +import eu.kanade.tachiyomi.R @Composable fun LicensesScreen( - nestedScrollInterop: NestedScrollConnection, + navigateUp: () -> Unit, ) { - LibrariesContainer( - modifier = Modifier - .fillMaxSize() - .nestedScroll(nestedScrollInterop), - contentPadding = WindowInsets.navigationBars.asPaddingValues(), - colors = LibraryDefaults.libraryColors( - backgroundColor = MaterialTheme.colorScheme.background, - contentColor = MaterialTheme.colorScheme.onBackground, - badgeBackgroundColor = MaterialTheme.colorScheme.primary, - badgeContentColor = MaterialTheme.colorScheme.onPrimary, - ), - ) + Scaffold( + modifier = Modifier.statusBarsPadding(), + topBar = { + AppBar( + title = stringResource(R.string.licenses), + navigateUp = navigateUp, + ) + }, + ) { paddingValues -> + LibrariesContainer( + modifier = Modifier + .fillMaxSize(), + contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(), + colors = LibraryDefaults.libraryColors( + backgroundColor = MaterialTheme.colorScheme.background, + contentColor = MaterialTheme.colorScheme.onBackground, + badgeBackgroundColor = MaterialTheme.colorScheme.primary, + badgeContentColor = MaterialTheme.colorScheme.onPrimary, + ), + ) + } } diff --git a/app/src/main/java/eu/kanade/presentation/webview/WebViewScreen.kt b/app/src/main/java/eu/kanade/presentation/webview/WebViewScreen.kt index b49c9372b0..b814b7b58c 100644 --- a/app/src/main/java/eu/kanade/presentation/webview/WebViewScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/webview/WebViewScreen.kt @@ -25,7 +25,6 @@ import com.google.accompanist.web.rememberWebViewNavigator import com.google.accompanist.web.rememberWebViewState import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBarActions -import eu.kanade.presentation.components.TopAppBar import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.system.setDefaultSettings @@ -45,7 +44,7 @@ fun WebViewScreen( val navigator = rememberWebViewNavigator() Column { - TopAppBar( + AppBar( title = state.pageTitle ?: initialTitle, subtitle = state.content.getCurrentUrl(), navigateUp = onUp, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/LicensesController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/LicensesController.kt index ba9a9c2a54..9ae0869194 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/LicensesController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/LicensesController.kt @@ -1,17 +1,15 @@ package eu.kanade.tachiyomi.ui.more import androidx.compose.runtime.Composable -import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import eu.kanade.presentation.more.about.LicensesScreen -import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.ui.base.controller.BasicComposeController +import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController -class LicensesController : BasicComposeController() { - - override fun getTitle() = resources?.getString(R.string.licenses) +class LicensesController : BasicFullComposeController() { @Composable - override fun ComposeContent(nestedScrollInterop: NestedScrollConnection) { - LicensesScreen(nestedScrollInterop = nestedScrollInterop) + override fun ComposeContent() { + LicensesScreen( + navigateUp = router::popCurrentController, + ) } }