From 1e3f313ca255b625ec2019191c869e0edcce047f Mon Sep 17 00:00:00 2001 From: arkon Date: Sat, 16 Jul 2022 17:58:43 -0400 Subject: [PATCH] Remove top app bar scroll behavior This lets us make it more consistent with the Compose screens for now. Maybe it'll return in the future. This also includes making the AboutController a full Compose controller with a new abstracted TopAppBar composable. (cherry picked from commit 80c7a453286f296ae4d5d3531c805e63db9ca424) # Conflicts: # app/src/main/java/eu/kanade/presentation/category/components/CategoryTopAppBar.kt # app/src/main/java/eu/kanade/presentation/more/about/AboutScreen.kt --- .../presentation/category/CategoryScreen.kt | 6 +- .../presentation/category/SortTagScreen.kt | 6 +- .../category/SourceCategoryScreen.kt | 6 +- .../presentation/category/SourceRepoScreen.kt | 4 +- .../category/components/CategoryTopAppBar.kt | 31 --- .../kanade/presentation/components/AppBar.kt | 27 +++ .../presentation/more/about/AboutScreen.kt | 198 +++++++++--------- .../presentation/webview/WebViewScreen.kt | 25 +-- .../ui/base/controller/ComposeController.kt | 21 ++ .../kanade/tachiyomi/ui/main/MainActivity.kt | 4 +- .../tachiyomi/ui/more/AboutController.kt | 12 +- .../components/PagePreviewScreen.kt | 33 +-- app/src/main/res/layout/main_activity.xml | 3 +- 13 files changed, 182 insertions(+), 194 deletions(-) delete mode 100644 app/src/main/java/eu/kanade/presentation/category/components/CategoryTopAppBar.kt 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 b1874f046..06bc7afca 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.category.components.CategoryTopAppBar 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,9 +35,9 @@ fun CategoryScreen( Scaffold( modifier = Modifier.statusBarsPadding(), topBar = { - CategoryTopAppBar( + TopAppBar( + title = stringResource(R.string.action_edit_categories), navigateUp = navigateUp, - title = stringResource(id = R.string.action_edit_categories), ) }, floatingActionButton = { diff --git a/app/src/main/java/eu/kanade/presentation/category/SortTagScreen.kt b/app/src/main/java/eu/kanade/presentation/category/SortTagScreen.kt index fec272625..ea7fc7034 100644 --- a/app/src/main/java/eu/kanade/presentation/category/SortTagScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/category/SortTagScreen.kt @@ -11,11 +11,11 @@ import androidx.compose.ui.res.stringResource 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.CategoryTopAppBar import eu.kanade.presentation.category.components.genre.SortTagContent 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,9 +35,9 @@ fun SortTagScreen( modifier = Modifier .statusBarsPadding(), topBar = { - CategoryTopAppBar( + TopAppBar( navigateUp = navigateUp, - title = stringResource(id = R.string.action_edit_tags), + title = stringResource(R.string.action_edit_tags), ) }, floatingActionButton = { diff --git a/app/src/main/java/eu/kanade/presentation/category/SourceCategoryScreen.kt b/app/src/main/java/eu/kanade/presentation/category/SourceCategoryScreen.kt index 6f2301330..d9fb672d6 100644 --- a/app/src/main/java/eu/kanade/presentation/category/SourceCategoryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/category/SourceCategoryScreen.kt @@ -12,11 +12,11 @@ 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.category.components.CategoryTopAppBar import eu.kanade.presentation.category.components.sources.SourceCategoryContent 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 @@ -36,9 +36,9 @@ fun SourceCategoryScreen( modifier = Modifier .statusBarsPadding(), topBar = { - CategoryTopAppBar( + TopAppBar( navigateUp = navigateUp, - title = stringResource(id = R.string.action_edit_categories), + title = stringResource(R.string.action_edit_categories), ) }, floatingActionButton = { diff --git a/app/src/main/java/eu/kanade/presentation/category/SourceRepoScreen.kt b/app/src/main/java/eu/kanade/presentation/category/SourceRepoScreen.kt index a4e346919..c9d729e2e 100644 --- a/app/src/main/java/eu/kanade/presentation/category/SourceRepoScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/category/SourceRepoScreen.kt @@ -11,11 +11,11 @@ import androidx.compose.ui.res.stringResource 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.CategoryTopAppBar import eu.kanade.presentation.category.components.repo.SourceRepoContent 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 SourceRepoScreen( modifier = Modifier .statusBarsPadding(), topBar = { - CategoryTopAppBar( + TopAppBar( navigateUp = navigateUp, title = stringResource(R.string.action_edit_repos), ) diff --git a/app/src/main/java/eu/kanade/presentation/category/components/CategoryTopAppBar.kt b/app/src/main/java/eu/kanade/presentation/category/components/CategoryTopAppBar.kt deleted file mode 100644 index e4ad6af8f..000000000 --- a/app/src/main/java/eu/kanade/presentation/category/components/CategoryTopAppBar.kt +++ /dev/null @@ -1,31 +0,0 @@ -package eu.kanade.presentation.category.components - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.SmallTopAppBar -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.res.stringResource -import eu.kanade.tachiyomi.R - -@Composable -fun CategoryTopAppBar( - navigateUp: () -> Unit, - title: String, -) { - SmallTopAppBar( - navigationIcon = { - IconButton(onClick = navigateUp) { - Icon( - imageVector = Icons.Default.ArrowBack, - contentDescription = stringResource(R.string.abc_action_bar_up_description), - ) - } - }, - title = { - Text(text = title) - }, - ) -} 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 418a8856c..cf849609e 100644 --- a/app/src/main/java/eu/kanade/presentation/components/AppBar.kt +++ b/app/src/main/java/eu/kanade/presentation/components/AppBar.kt @@ -1,12 +1,15 @@ package eu.kanade.presentation.components import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.RowScope import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.SmallTopAppBar import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -19,6 +22,30 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import eu.kanade.tachiyomi.R +@Composable +fun TopAppBar( + title: String?, + subtitle: String? = null, + navigateUp: () -> Unit, + 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), + ) + } + }, + title = { + AppBarTitle(title, subtitle) + }, + actions = actions, + ) +} + @Composable fun AppBarTitle( title: String?, 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 330b03144..f5648f961 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 @@ -6,20 +6,21 @@ import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Public import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.rememberVectorPainter -import androidx.compose.ui.input.nestedscroll.NestedScrollConnection -import androidx.compose.ui.input.nestedscroll.nestedScroll 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.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.tachiyomi.BuildConfig import eu.kanade.tachiyomi.R @@ -29,7 +30,7 @@ import exh.syDebugVersion @Composable fun AboutScreen( - nestedScrollInterop: NestedScrollConnection, + navigateUp: () -> Unit, checkVersion: () -> Unit, getFormattedBuildTime: () -> String, onClickLicenses: () -> Unit, @@ -38,110 +39,119 @@ fun AboutScreen( val context = LocalContext.current val uriHandler = LocalUriHandler.current - ScrollbarLazyColumn( - modifier = Modifier.nestedScroll(nestedScrollInterop), - contentPadding = WindowInsets.navigationBars.asPaddingValues(), - ) { - item { - LogoHeader() - } - - item { - PreferenceRow( - title = stringResource(R.string.version), - subtitle = when { - BuildConfig.DEBUG -> { - "Debug ${BuildConfig.COMMIT_SHA} (${getFormattedBuildTime()})" - } - // SY --> - syDebugVersion != "0" -> { - "Preview r$syDebugVersion (${BuildConfig.COMMIT_SHA}, ${getFormattedBuildTime()})" - } - // SY <-- - else -> { - "Stable ${BuildConfig.VERSION_NAME} (${getFormattedBuildTime()})" - } - }, - onClick = { - val deviceInfo = CrashLogUtil(context).getDebugInfo() - context.copyToClipboard("Debug information", deviceInfo) - }, + Scaffold( + modifier = Modifier.statusBarsPadding(), + topBar = { + TopAppBar( + title = stringResource(R.string.pref_category_about), + navigateUp = navigateUp, ) - } + }, + ) { paddingValues -> + ScrollbarLazyColumn( + contentPadding = WindowInsets.navigationBars.asPaddingValues(), + ) { + item { + LogoHeader() + } - if (BuildConfig.INCLUDE_UPDATER) { item { PreferenceRow( - title = stringResource(R.string.check_for_updates), - onClick = checkVersion, + title = stringResource(R.string.version), + subtitle = when { + BuildConfig.DEBUG -> { + "Debug ${BuildConfig.COMMIT_SHA} (${getFormattedBuildTime()})" + } + // SY --> + syDebugVersion != "0" -> { + "Preview r$syDebugVersion (${BuildConfig.COMMIT_SHA}, ${getFormattedBuildTime()})" + } + // SY <-- + else -> { + "Stable ${BuildConfig.VERSION_NAME} (${getFormattedBuildTime()})" + } + }, + onClick = { + val deviceInfo = CrashLogUtil(context).getDebugInfo() + context.copyToClipboard("Debug information", deviceInfo) + }, ) } - } - if (!BuildConfig.DEBUG) { + + if (BuildConfig.INCLUDE_UPDATER) { + item { + PreferenceRow( + title = stringResource(R.string.check_for_updates), + onClick = checkVersion, + ) + } + } + if (!BuildConfig.DEBUG) { + item { + PreferenceRow( + title = stringResource(R.string.whats_new), + onClick = onClickWhatsNew, + ) + } + } + item { PreferenceRow( - title = stringResource(R.string.whats_new), - onClick = onClickWhatsNew, + title = stringResource(R.string.help_translate), + onClick = { uriHandler.openUri("https://tachiyomi.org/help/contribution/#translation") }, ) } - } - item { - PreferenceRow( - title = stringResource(R.string.help_translate), - onClick = { uriHandler.openUri("https://tachiyomi.org/help/contribution/#translation") }, - ) - } + item { + PreferenceRow( + title = stringResource(R.string.licenses), + onClick = onClickLicenses, + ) + } - item { - PreferenceRow( - title = stringResource(R.string.licenses), - onClick = onClickLicenses, - ) - } + item { + PreferenceRow( + title = stringResource(R.string.privacy_policy), + onClick = { uriHandler.openUri("https://tachiyomi.org/privacy") }, + ) + } - item { - PreferenceRow( - title = stringResource(R.string.privacy_policy), - onClick = { uriHandler.openUri("https://tachiyomi.org/privacy") }, - ) - } - - item { - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.Center, - ) { - LinkIcon( - label = stringResource(R.string.website), - painter = rememberVectorPainter(Icons.Outlined.Public), - url = "https://tachiyomi.org", - ) - LinkIcon( - label = "Discord", - painter = painterResource(R.drawable.ic_discord_24dp), - url = "https://discord.gg/tachiyomi", - ) - LinkIcon( - label = "Twitter", - painter = painterResource(R.drawable.ic_twitter_24dp), - url = "https://twitter.com/tachiyomiorg", - ) - LinkIcon( - label = "Facebook", - painter = painterResource(R.drawable.ic_facebook_24dp), - url = "https://facebook.com/tachiyomiorg", - ) - LinkIcon( - label = "Reddit", - painter = painterResource(R.drawable.ic_reddit_24dp), - url = "https://www.reddit.com/r/Tachiyomi", - ) - LinkIcon( - label = "GitHub", - painter = painterResource(R.drawable.ic_github_24dp), - url = "https://github.com/jobobby04/tachiyomisy", - ) + item { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.Center, + ) { + LinkIcon( + label = stringResource(R.string.website), + painter = rememberVectorPainter(Icons.Outlined.Public), + url = "https://tachiyomi.org", + ) + LinkIcon( + label = "Discord", + painter = painterResource(R.drawable.ic_discord_24dp), + url = "https://discord.gg/tachiyomi", + ) + LinkIcon( + label = "Twitter", + painter = painterResource(R.drawable.ic_twitter_24dp), + url = "https://twitter.com/tachiyomiorg", + ) + LinkIcon( + label = "Facebook", + painter = painterResource(R.drawable.ic_facebook_24dp), + url = "https://facebook.com/tachiyomiorg", + ) + LinkIcon( + label = "Reddit", + painter = painterResource(R.drawable.ic_reddit_24dp), + url = "https://www.reddit.com/r/Tachiyomi", + ) + LinkIcon( + label = "GitHub", + painter = painterResource(R.drawable.ic_github_24dp), + url = "https://github.com/jobobby04/tachiyomisy", + ) + } } } } 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 94b0ed0f3..b49c9372b 100644 --- a/app/src/main/java/eu/kanade/presentation/webview/WebViewScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/webview/WebViewScreen.kt @@ -11,10 +11,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.ArrowForward import androidx.compose.material.icons.filled.Close -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.LinearProgressIndicator -import androidx.compose.material3.SmallTopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier @@ -28,7 +25,7 @@ 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.AppBarTitle +import eu.kanade.presentation.components.TopAppBar import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.system.setDefaultSettings @@ -48,21 +45,11 @@ fun WebViewScreen( val navigator = rememberWebViewNavigator() Column { - SmallTopAppBar( - title = { - AppBarTitle( - title = state.pageTitle ?: initialTitle, - subtitle = state.content.getCurrentUrl(), - ) - }, - navigationIcon = { - IconButton(onClick = onUp) { - Icon( - imageVector = Icons.Default.Close, - contentDescription = stringResource(R.string.action_close), - ) - } - }, + TopAppBar( + title = state.pageTitle ?: initialTitle, + subtitle = state.content.getCurrentUrl(), + navigateUp = onUp, + navigationIcon = Icons.Default.Close, actions = { AppBarActions( listOf( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ComposeController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ComposeController.kt index d4f30a76f..bd705e5b4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ComposeController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ComposeController.kt @@ -73,6 +73,27 @@ abstract class BasicComposeController(bundle: Bundle? = null) : } } +/** + * Basic Compose controller without a presenter. + */ +abstract class BasicFullComposeController : + BaseController(), + FullComposeContentController { + + override fun createBinding(inflater: LayoutInflater) = + ComposeControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) + + binding.root.apply { + setComposeContent { + ComposeContent() + } + } + } +} + abstract class SearchableComposeController

>(bundle: Bundle? = null) : SearchableNucleusController(bundle), ComposeContentController { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index fe7077b94..e066c4001 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -44,7 +44,7 @@ import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi import eu.kanade.tachiyomi.ui.base.activity.BaseActivity import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.FabController -import eu.kanade.tachiyomi.ui.base.controller.FullComposeController +import eu.kanade.tachiyomi.ui.base.controller.FullComposeContentController import eu.kanade.tachiyomi.ui.base.controller.NoAppBarElevationController import eu.kanade.tachiyomi.ui.base.controller.RootController import eu.kanade.tachiyomi.ui.base.controller.TabbedController @@ -660,7 +660,7 @@ class MainActivity : BaseActivity() { binding.fabLayout.rootFab.hide() } - val isFullComposeController = internalTo is FullComposeController<*> + val isFullComposeController = internalTo is FullComposeContentController binding.appbar.isVisible = !isFullComposeController binding.controllerContainer.enableScrollingBehavior(!isFullComposeController) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt index 81156e7c0..7c11d816a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt @@ -1,15 +1,13 @@ package eu.kanade.tachiyomi.ui.more import androidx.compose.runtime.Composable -import androidx.compose.ui.input.nestedscroll.NestedScrollConnection import eu.kanade.presentation.more.about.AboutScreen import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.updater.AppUpdateChecker import eu.kanade.tachiyomi.data.updater.AppUpdateResult -import eu.kanade.tachiyomi.ui.base.controller.BasicComposeController -import eu.kanade.tachiyomi.ui.base.controller.NoAppBarElevationController +import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController import eu.kanade.tachiyomi.ui.base.controller.pushController import eu.kanade.tachiyomi.ui.main.WhatsNewDialogController import eu.kanade.tachiyomi.util.lang.launchNow @@ -23,17 +21,15 @@ import java.text.SimpleDateFormat import java.util.Locale import java.util.TimeZone -class AboutController : BasicComposeController(), NoAppBarElevationController { +class AboutController : BasicFullComposeController() { private val preferences: PreferencesHelper by injectLazy() private val updateChecker by lazy { AppUpdateChecker() } - override fun getTitle() = resources?.getString(R.string.pref_category_about) - @Composable - override fun ComposeContent(nestedScrollInterop: NestedScrollConnection) { + override fun ComposeContent() { AboutScreen( - nestedScrollInterop = nestedScrollInterop, + navigateUp = router::popCurrentController, checkVersion = this::checkVersion, getFormattedBuildTime = this::getFormattedBuildTime, onClickLicenses = { diff --git a/app/src/main/java/exh/pagepreview/components/PagePreviewScreen.kt b/app/src/main/java/exh/pagepreview/components/PagePreviewScreen.kt index c48598e1c..20fe1c7f5 100644 --- a/app/src/main/java/exh/pagepreview/components/PagePreviewScreen.kt +++ b/app/src/main/java/exh/pagepreview/components/PagePreviewScreen.kt @@ -8,18 +8,13 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.UTurnRight import androidx.compose.material3.AlertDialog import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Slider -import androidx.compose.material3.SmallTopAppBar import androidx.compose.material3.Text import androidx.compose.material3.TextButton -import androidx.compose.material3.TopAppBarDefaults -import androidx.compose.material3.TopAppBarScrollBehavior -import androidx.compose.material3.rememberTopAppBarScrollState import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect import androidx.compose.runtime.derivedStateOf @@ -30,7 +25,6 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import eu.kanade.presentation.components.AroundLayout @@ -38,6 +32,7 @@ import eu.kanade.presentation.components.EmptyScreen import eu.kanade.presentation.components.LoadingScreen import eu.kanade.presentation.components.Scaffold import eu.kanade.presentation.components.ScrollbarLazyColumn +import eu.kanade.presentation.components.TopAppBar import eu.kanade.presentation.manga.components.PagePreview import eu.kanade.presentation.util.plus import eu.kanade.presentation.util.topPaddingValues @@ -57,18 +52,13 @@ fun PagePreviewScreen( onDismissPageDialog: () -> Unit, navigateUp: () -> Unit, ) { - val topAppBarScrollState = rememberTopAppBarScrollState() - val topAppBarScrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(topAppBarScrollState) - Scaffold( modifier = Modifier - .statusBarsPadding() - .nestedScroll(topAppBarScrollBehavior.nestedScrollConnection), + .statusBarsPadding(), topBar = { PagePreviewTopAppBar( - topAppBarScrollBehavior = topAppBarScrollBehavior, navigateUp = navigateUp, - title = stringResource(id = R.string.page_previews), + title = stringResource(R.string.page_previews), onOpenPageDialog = onOpenPageDialog, showOpenPageDialog = state is PagePreviewState.Success && (state.pageCount != null && state.pageCount > 1 /* TODO support unknown pageCount || state.hasNextPage*/), @@ -176,25 +166,13 @@ fun PagePreviewPageDialog( @Composable fun PagePreviewTopAppBar( - topAppBarScrollBehavior: TopAppBarScrollBehavior, navigateUp: () -> Unit, title: String, onOpenPageDialog: () -> Unit, showOpenPageDialog: Boolean, ) { - SmallTopAppBar( - navigationIcon = { - IconButton(onClick = navigateUp) { - Icon( - imageVector = Icons.Default.ArrowBack, - contentDescription = stringResource(R.string.abc_action_bar_up_description), - ) - } - }, - title = { - Text(text = title) - }, - scrollBehavior = topAppBarScrollBehavior, + TopAppBar( + title = title, actions = { if (showOpenPageDialog) { IconButton(onClick = onOpenPageDialog) { @@ -205,5 +183,6 @@ fun PagePreviewTopAppBar( } } }, + navigateUp = navigateUp, ) } diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index 98e63ad49..9a2a6ed03 100755 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -23,8 +23,7 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" - android:theme="?attr/actionBarTheme" - app:layout_scrollFlags="scroll|enterAlways|snap" /> + android:theme="?attr/actionBarTheme" />