ソースを参照

Tweak manga cover dialog UI

Closes #8654, although it's just a workaround. The cover itself doesn't appear within the inset areas when zoomed.
arkon 2 年 前
コミット
d7a21771a5

+ 72 - 57
app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt

@@ -7,12 +7,10 @@ import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.navigationBarsPadding
 import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.systemBars
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.outlined.Close
 import androidx.compose.material.icons.outlined.Edit
@@ -31,6 +29,8 @@ import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.unit.DpOffset
@@ -69,81 +69,85 @@ fun MangaCoverDialog(
     ) {
         Scaffold(
             snackbarHost = { SnackbarHost(hostState = snackbarHostState) },
+            containerColor = Color.Transparent,
             bottomBar = {
                 Row(
                     modifier = Modifier
                         .fillMaxWidth()
-                        .background(color = MaterialTheme.colorScheme.background.copy(alpha = 0.9f))
-                        .padding(horizontal = 4.dp, vertical = 4.dp)
+                        .padding(4.dp)
                         .navigationBarsPadding(),
                 ) {
-                    IconButton(onClick = onDismissRequest) {
-                        Icon(
-                            imageVector = Icons.Outlined.Close,
-                            contentDescription = stringResource(R.string.action_close),
-                        )
+                    ActionsPill {
+                        IconButton(onClick = onDismissRequest) {
+                            Icon(
+                                imageVector = Icons.Outlined.Close,
+                                contentDescription = stringResource(R.string.action_close),
+                            )
+                        }
                     }
                     Spacer(modifier = Modifier.weight(1f))
-                    IconButton(onClick = onShareClick) {
-                        Icon(
-                            imageVector = Icons.Outlined.Share,
-                            contentDescription = stringResource(R.string.action_share),
-                        )
-                    }
-                    IconButton(onClick = onSaveClick) {
-                        Icon(
-                            imageVector = Icons.Outlined.Save,
-                            contentDescription = stringResource(R.string.action_save),
-                        )
-                    }
-                    if (onEditClick != null) {
-                        Box {
-                            var expanded by remember { mutableStateOf(false) }
-                            IconButton(
-                                onClick = {
-                                    if (isCustomCover) {
-                                        expanded = true
-                                    } else {
-                                        onEditClick(EditCoverAction.EDIT)
-                                    }
-                                },
-                            ) {
-                                Icon(
-                                    imageVector = Icons.Outlined.Edit,
-                                    contentDescription = stringResource(R.string.action_edit_cover),
-                                )
-                            }
-                            DropdownMenu(
-                                expanded = expanded,
-                                onDismissRequest = { expanded = false },
-                                offset = DpOffset(8.dp, 0.dp),
-                            ) {
-                                DropdownMenuItem(
-                                    text = { Text(text = stringResource(R.string.action_edit)) },
-                                    onClick = {
-                                        onEditClick(EditCoverAction.EDIT)
-                                        expanded = false
-                                    },
-                                )
-                                DropdownMenuItem(
-                                    text = { Text(text = stringResource(R.string.action_delete)) },
+                    ActionsPill {
+                        IconButton(onClick = onShareClick) {
+                            Icon(
+                                imageVector = Icons.Outlined.Share,
+                                contentDescription = stringResource(R.string.action_share),
+                            )
+                        }
+                        IconButton(onClick = onSaveClick) {
+                            Icon(
+                                imageVector = Icons.Outlined.Save,
+                                contentDescription = stringResource(R.string.action_save),
+                            )
+                        }
+                        if (onEditClick != null) {
+                            Box {
+                                var expanded by remember { mutableStateOf(false) }
+                                IconButton(
                                     onClick = {
-                                        onEditClick(EditCoverAction.DELETE)
-                                        expanded = false
+                                        if (isCustomCover) {
+                                            expanded = true
+                                        } else {
+                                            onEditClick(EditCoverAction.EDIT)
+                                        }
                                     },
-                                )
+                                ) {
+                                    Icon(
+                                        imageVector = Icons.Outlined.Edit,
+                                        contentDescription = stringResource(R.string.action_edit_cover),
+                                    )
+                                }
+                                DropdownMenu(
+                                    expanded = expanded,
+                                    onDismissRequest = { expanded = false },
+                                    offset = DpOffset(8.dp, 0.dp),
+                                ) {
+                                    DropdownMenuItem(
+                                        text = { Text(text = stringResource(R.string.action_edit)) },
+                                        onClick = {
+                                            onEditClick(EditCoverAction.EDIT)
+                                            expanded = false
+                                        },
+                                    )
+                                    DropdownMenuItem(
+                                        text = { Text(text = stringResource(R.string.action_delete)) },
+                                        onClick = {
+                                            onEditClick(EditCoverAction.DELETE)
+                                            expanded = false
+                                        },
+                                    )
+                                }
                             }
                         }
                     }
                 }
             },
         ) { contentPadding ->
-            val statusBarPaddingPx = WindowInsets.systemBars.getTop(LocalDensity.current)
+            val statusBarPaddingPx = with(LocalDensity.current) { contentPadding.calculateTopPadding().roundToPx() }
             val bottomPaddingPx = with(LocalDensity.current) { contentPadding.calculateBottomPadding().roundToPx() }
+
             Box(
                 modifier = Modifier
                     .fillMaxSize()
-                    .background(color = MaterialTheme.colorScheme.background)
                     .clickableNoIndication(onClick = onDismissRequest),
             ) {
                 AndroidView(
@@ -185,3 +189,14 @@ fun MangaCoverDialog(
         }
     }
 }
+
+@Composable
+private fun ActionsPill(content: @Composable () -> Unit) {
+    Row(
+        modifier = Modifier
+            .clip(MaterialTheme.shapes.extraLarge)
+            .background(MaterialTheme.colorScheme.background.copy(alpha = 0.95f)),
+    ) {
+        content()
+    }
+}