Optimize SafeDrawing fullscreen; set dialogs to 55% - android
This commit is contained in:
parent
db71756ed1
commit
203c14c457
4 changed files with 56 additions and 16 deletions
|
|
@ -8,6 +8,7 @@ import android.os.Build
|
|||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.util.Base64
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
|
|
@ -16,6 +17,7 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.WindowInsetsControllerCompat
|
||||
|
|
@ -62,11 +64,27 @@ class MainActivity : ComponentActivity() {
|
|||
windowInsetsController.systemBarsBehavior =
|
||||
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
||||
|
||||
window.decorView.setOnSystemUiVisibilityChangeListener { visibility ->
|
||||
if (isFullScreen && (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
|
||||
windowInsetsController.hide(WindowInsetsCompat.Type.statusBars() or WindowInsetsCompat.Type.navigationBars())
|
||||
}
|
||||
}
|
||||
// Empêcher de rétablir la StatusBar quand le clavier s'ouvre
|
||||
ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { view, insets ->
|
||||
if (isFullScreen) {
|
||||
windowInsetsController.hide(WindowInsetsCompat.Type.statusBars() or WindowInsetsCompat.Type.navigationBars())
|
||||
}
|
||||
ViewCompat.onApplyWindowInsets(view, insets)
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
window.attributes.layoutInDisplayCutoutMode =
|
||||
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
|
||||
}
|
||||
} else {
|
||||
window.decorView.setOnSystemUiVisibilityChangeListener(null)
|
||||
ViewCompat.setOnApplyWindowInsetsListener(window.decorView, null)
|
||||
windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_DEFAULT
|
||||
windowInsetsController.show(WindowInsetsCompat.Type.statusBars() or WindowInsetsCompat.Type.navigationBars())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,9 +110,18 @@ fun MainScreenWithDrawer(
|
|||
val isFullScreenEnabled by sharedScreenModel.isFullScreen.collectAsState()
|
||||
val fullscreenController = LocalFullscreenController.current
|
||||
|
||||
LaunchedEffect(isFullScreenEnabled) {
|
||||
fullscreenController(isFullScreenEnabled)
|
||||
LaunchedEffect(isFullScreenEnabled, isSearchActive) {
|
||||
if(isFullScreenEnabled) {
|
||||
fullscreenController(true)
|
||||
}
|
||||
}
|
||||
val isImeVisible = WindowInsets.ime.asPaddingValues().calculateBottomPadding() > 0.dp
|
||||
LaunchedEffect(isImeVisible) {
|
||||
if (!isImeVisible && isFullScreenEnabled) {
|
||||
fullscreenController(true)
|
||||
}
|
||||
}
|
||||
|
||||
val fileContent = sharedScreenModel.fileContent.value ?: ""
|
||||
LaunchedEffect(Unit) {
|
||||
if(fileContent == "") {
|
||||
|
|
@ -214,6 +223,8 @@ fun MainScreenWithDrawer(
|
|||
songComp = songComposer,
|
||||
songRythm = songRhythm
|
||||
)
|
||||
val platform = getPlatform()
|
||||
val isAndroid = platform.name.startsWith("Android")
|
||||
|
||||
if (showPrintSettings) {
|
||||
PrintSettingsDialog(
|
||||
|
|
@ -223,7 +234,8 @@ fun MainScreenWithDrawer(
|
|||
onConfirm = { settings ->
|
||||
showPrintSettings = false
|
||||
pdfExportAction(settings)
|
||||
}
|
||||
},
|
||||
isAndroid
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -234,13 +246,12 @@ fun MainScreenWithDrawer(
|
|||
onDismissRequest = {
|
||||
showSettingsDialog = false
|
||||
},
|
||||
expandedDropdown
|
||||
expandedDropdown,
|
||||
isAndroid
|
||||
)
|
||||
}
|
||||
val favoritePaths by sharedScreenModel.playlistItems.collectAsState()
|
||||
BoxWithConstraints(modifier = Modifier.fillMaxSize()) {
|
||||
val platform = getPlatform()
|
||||
val isAndroid = platform.name.startsWith("Android")
|
||||
val topAppBarHeight = if (isAndroid) {
|
||||
if(maxWidth > maxHeight) {
|
||||
55.dp
|
||||
|
|
@ -248,11 +259,11 @@ fun MainScreenWithDrawer(
|
|||
if (isFullScreenEnabled) 70.dp else 80.dp
|
||||
}
|
||||
} else {
|
||||
55.dp
|
||||
50.dp
|
||||
}
|
||||
|
||||
val isLandscape = maxWidth > maxHeight
|
||||
Scaffold(
|
||||
contentWindowInsets = if (isAndroid && !isFullScreenEnabled) {
|
||||
contentWindowInsets = if (isAndroid && !isFullScreenEnabled && !isLandscape) {
|
||||
WindowInsets.safeDrawing.union(WindowInsets.displayCutout)
|
||||
} else {
|
||||
WindowInsets(0, 0, 0, 0)
|
||||
|
|
@ -261,8 +272,8 @@ fun MainScreenWithDrawer(
|
|||
TopAppBar(
|
||||
modifier = Modifier.height(topAppBarHeight)
|
||||
.windowInsetsPadding(
|
||||
if (isAndroid && !isFullScreenEnabled) {
|
||||
WindowInsets.safeDrawing.only(WindowInsetsSides.Horizontal)
|
||||
if (isAndroid && !isFullScreenEnabled && !isLandscape) {
|
||||
WindowInsets.safeDrawing.only(WindowInsetsSides.Horizontal + WindowInsetsSides.Top)
|
||||
} else {
|
||||
WindowInsets(0, 0, 0, 0)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import androidx.compose.ui.text.font.FontWeight
|
|||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.compose.ui.window.Dialog
|
||||
import androidx.compose.ui.window.DialogProperties
|
||||
import mg.dot.feufaro.pdf.PageOrientation
|
||||
import mg.dot.feufaro.pdf.PageSize
|
||||
import mg.dot.feufaro.pdf.PrintSettings
|
||||
|
|
@ -34,6 +35,7 @@ fun PrintSettingsDialog(
|
|||
initialSettings: PrintSettings = defaultPrintSettings(),
|
||||
onDismiss: () -> Unit,
|
||||
onConfirm: (PrintSettings) -> Unit,
|
||||
isAndroid: Boolean
|
||||
) {
|
||||
// ── État local (copie mutable des paramètres) ─────────────────────────────
|
||||
var pageSize by remember { mutableStateOf(initialSettings.pageSize) }
|
||||
|
|
@ -51,11 +53,15 @@ fun PrintSettingsDialog(
|
|||
var headerH by remember { mutableStateOf(initialSettings.headerH) }
|
||||
var nbGridOnMeasure by remember { mutableStateOf(initialSettings.nbGridOnMeasure) }
|
||||
|
||||
Dialog(onDismissRequest = onDismiss) {
|
||||
Dialog(
|
||||
properties = DialogProperties(
|
||||
usePlatformDefaultWidth = false
|
||||
),
|
||||
onDismissRequest = onDismiss
|
||||
) {
|
||||
Surface(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth(0.92f)
|
||||
.fillMaxHeight(0.92f),
|
||||
.fillMaxWidth(if(isAndroid) 0.9f else 0.55f),
|
||||
shape = RoundedCornerShape(16.dp),
|
||||
tonalElevation = 8.dp,
|
||||
color = MaterialTheme.colorScheme.surface
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import androidx.compose.ui.text.font.FontWeight
|
|||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.compose.ui.window.DialogProperties
|
||||
import feufaro.composeapp.generated.resources.Emmentaler
|
||||
import feufaro.composeapp.generated.resources.Res
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
|
@ -44,7 +45,8 @@ import org.koin.compose.koinInject
|
|||
fun Settings(
|
||||
sharedScreenModel: SharedScreenModel,
|
||||
onDismissRequest: () -> Unit,
|
||||
expandedDropdownN: Boolean
|
||||
expandedDropdownN: Boolean,
|
||||
isAndroid: Boolean
|
||||
) {
|
||||
var isDynamicEnabled by remember { mutableStateOf(Dynamic.isGloballyEnabled) }
|
||||
var refreshTrigger by remember { mutableStateOf(0) }
|
||||
|
|
@ -102,8 +104,11 @@ fun Settings(
|
|||
}
|
||||
|
||||
AlertDialog(
|
||||
properties = DialogProperties(
|
||||
usePlatformDefaultWidth = false
|
||||
),
|
||||
modifier = Modifier
|
||||
.fillMaxSize(),
|
||||
.fillMaxWidth(if(isAndroid) 0.9f else 0.55f),
|
||||
onDismissRequest = onDismissRequest,
|
||||
title = {
|
||||
Text(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue