From af32d7eea77ef633ec1df0c0cd147f72617078b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <99822064+revonateB0T@users.noreply.github.com> Date: Tue, 5 Mar 2024 13:32:48 +0800 Subject: [PATCH] Initial Setting Pager (#854) * Update Compose Snapshot * Initial SettingsPager * Cleanup * Fix inactive color * Sync container color with BSheet --------- Co-authored-by: GG Bond --- .../hippo/ehviewer/ui/reader/ReaderScreen.kt | 3 ++ .../hippo/ehviewer/ui/reader/SettingsPager.kt | 46 +++++++++++++++++++ settings.gradle.kts | 2 +- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/com/hippo/ehviewer/ui/reader/SettingsPager.kt diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt index 9a198e468..95317dd34 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt @@ -3,6 +3,7 @@ package com.hippo.ehviewer.ui.reader import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.pager.rememberPagerState @@ -94,8 +95,10 @@ fun ReaderScreen(info: BaseGalleryInfo, page: Int = -1, navigator: DestinationsN ModalBottomSheet( onDismissRequest = { dispose() }, sheetState = state, + dragHandle = null, windowInsets = WindowInsets(0), ) { + SettingsPager(modifier = Modifier.fillMaxWidth()) Spacer(modifier = Modifier.navigationBarsPadding()) } } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/SettingsPager.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/SettingsPager.kt new file mode 100644 index 000000000..7d93dc537 --- /dev/null +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/SettingsPager.kt @@ -0,0 +1,46 @@ +package com.hippo.ehviewer.ui.reader + +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.material3.BottomSheetDefaults +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.PrimaryTabRow +import androidx.compose.material3.Tab +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.hippo.ehviewer.R +import kotlinx.coroutines.launch + +private val tabs = arrayOf( + R.string.pref_category_reading_mode, + R.string.pref_category_general, + R.string.custom_filter, +) + +@Composable +fun SettingsPager(modifier: Modifier = Modifier) { + val pagerState = rememberPagerState { tabs.size } + val scope = rememberCoroutineScope() + PrimaryTabRow( + selectedTabIndex = pagerState.currentPage, + containerColor = BottomSheetDefaults.ContainerColor, + ) { + tabs.forEachIndexed { index, res -> + Tab( + selected = pagerState.currentPage == index, + onClick = { scope.launch { pagerState.animateScrollToPage(index) } }, + text = { Text(text = stringResource(id = res)) }, + unselectedContentColor = MaterialTheme.colorScheme.onSurface, + ) + } + } + HorizontalPager(modifier = modifier, state = pagerState) { + Spacer(modifier = Modifier.size(200.dp)) + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 59e62585d..e3685e6a5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,7 +13,7 @@ dependencyResolutionManagement { mavenCentral() maven("https://jitpack.io") maven("https://androidx.dev/storage/compose-compiler/repository/") - maven("https://androidx.dev/snapshots/builds/11509867/artifacts/repository") + maven("https://androidx.dev/snapshots/builds/11527796/artifacts/repository") } }