mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Constrain reader sheet to max 75% of height
This commit is contained in:
		@@ -6,6 +6,7 @@ import androidx.compose.animation.fadeIn
 | 
			
		||||
import androidx.compose.animation.fadeOut
 | 
			
		||||
import androidx.compose.animation.togetherWith
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.compose.ui.unit.Dp
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import androidx.compose.ui.window.Dialog
 | 
			
		||||
@@ -70,6 +71,7 @@ fun NavigatorAdaptiveSheet(
 | 
			
		||||
 */
 | 
			
		||||
@Composable
 | 
			
		||||
fun AdaptiveSheet(
 | 
			
		||||
    modifier: Modifier = Modifier,
 | 
			
		||||
    tonalElevation: Dp = 1.dp,
 | 
			
		||||
    enableSwipeDismiss: Boolean = true,
 | 
			
		||||
    onDismissRequest: () -> Unit,
 | 
			
		||||
@@ -82,6 +84,7 @@ fun AdaptiveSheet(
 | 
			
		||||
        properties = dialogProperties,
 | 
			
		||||
    ) {
 | 
			
		||||
        AdaptiveSheetImpl(
 | 
			
		||||
            modifier = modifier,
 | 
			
		||||
            isTabletUi = isTabletUi,
 | 
			
		||||
            tonalElevation = tonalElevation,
 | 
			
		||||
            enableSwipeDismiss = enableSwipeDismiss,
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,7 @@ object TabbedDialogPaddings {
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun TabbedDialog(
 | 
			
		||||
    modifier: Modifier = Modifier,
 | 
			
		||||
    onDismissRequest: () -> Unit,
 | 
			
		||||
    tabTitles: List<String>,
 | 
			
		||||
    tabOverflowMenuContent: (@Composable ColumnScope.(() -> Unit) -> Unit)? = null,
 | 
			
		||||
@@ -47,6 +48,7 @@ fun TabbedDialog(
 | 
			
		||||
    content: @Composable (Int) -> Unit,
 | 
			
		||||
) {
 | 
			
		||||
    AdaptiveSheet(
 | 
			
		||||
        modifier = modifier,
 | 
			
		||||
        onDismissRequest = onDismissRequest,
 | 
			
		||||
    ) {
 | 
			
		||||
        val scope = rememberCoroutineScope()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,8 @@
 | 
			
		||||
package eu.kanade.presentation.reader.settings
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.layout.BoxWithConstraints
 | 
			
		||||
import androidx.compose.foundation.layout.Column
 | 
			
		||||
import androidx.compose.foundation.layout.heightIn
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.pager.rememberPagerState
 | 
			
		||||
import androidx.compose.foundation.rememberScrollState
 | 
			
		||||
@@ -30,35 +32,38 @@ fun ReaderSettingsDialog(
 | 
			
		||||
    )
 | 
			
		||||
    val pagerState = rememberPagerState { tabTitles.size }
 | 
			
		||||
 | 
			
		||||
    TabbedDialog(
 | 
			
		||||
        onDismissRequest = {
 | 
			
		||||
            onDismissRequest()
 | 
			
		||||
            onShowMenus()
 | 
			
		||||
        },
 | 
			
		||||
        tabTitles = tabTitles,
 | 
			
		||||
        pagerState = pagerState,
 | 
			
		||||
    ) { page ->
 | 
			
		||||
        val window = (LocalView.current.parent as? DialogWindowProvider)?.window
 | 
			
		||||
 | 
			
		||||
        LaunchedEffect(pagerState.currentPage) {
 | 
			
		||||
            if (pagerState.currentPage == 2) {
 | 
			
		||||
                window?.setDimAmount(0f)
 | 
			
		||||
                onHideMenus()
 | 
			
		||||
            } else {
 | 
			
		||||
                window?.setDimAmount(0.5f)
 | 
			
		||||
    BoxWithConstraints {
 | 
			
		||||
        TabbedDialog(
 | 
			
		||||
            modifier = Modifier.heightIn(max = maxHeight * 0.75f),
 | 
			
		||||
            onDismissRequest = {
 | 
			
		||||
                onDismissRequest()
 | 
			
		||||
                onShowMenus()
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
            },
 | 
			
		||||
            tabTitles = tabTitles,
 | 
			
		||||
            pagerState = pagerState,
 | 
			
		||||
        ) { page ->
 | 
			
		||||
            val window = (LocalView.current.parent as? DialogWindowProvider)?.window
 | 
			
		||||
 | 
			
		||||
        Column(
 | 
			
		||||
            modifier = Modifier
 | 
			
		||||
                .padding(vertical = TabbedDialogPaddings.Vertical)
 | 
			
		||||
                .verticalScroll(rememberScrollState()),
 | 
			
		||||
        ) {
 | 
			
		||||
            when (page) {
 | 
			
		||||
                0 -> ReadingModePage(screenModel)
 | 
			
		||||
                1 -> GeneralPage(screenModel)
 | 
			
		||||
                2 -> ColorFilterPage(screenModel)
 | 
			
		||||
            LaunchedEffect(pagerState.currentPage) {
 | 
			
		||||
                if (pagerState.currentPage == 2) {
 | 
			
		||||
                    window?.setDimAmount(0f)
 | 
			
		||||
                    onHideMenus()
 | 
			
		||||
                } else {
 | 
			
		||||
                    window?.setDimAmount(0.5f)
 | 
			
		||||
                    onShowMenus()
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Column(
 | 
			
		||||
                modifier = Modifier
 | 
			
		||||
                    .padding(vertical = TabbedDialogPaddings.Vertical)
 | 
			
		||||
                    .verticalScroll(rememberScrollState()),
 | 
			
		||||
            ) {
 | 
			
		||||
                when (page) {
 | 
			
		||||
                    0 -> ReadingModePage(screenModel)
 | 
			
		||||
                    1 -> GeneralPage(screenModel)
 | 
			
		||||
                    2 -> ColorFilterPage(screenModel)
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user