Fix WindowSizeClass breakpoint compat
This commit is contained in:
@@ -265,7 +265,7 @@ dependencies {
|
||||
"otherLegacyImplementation"("com.github.topjohnwu.libsu:service:$libsuVersion")
|
||||
|
||||
// Compose dependencies - API 23+ (play/other)
|
||||
val composeBom23 = platform("androidx.compose:compose-bom:2025.12.01")
|
||||
val composeBom23 = platform("androidx.compose:compose-bom:2026.01.01")
|
||||
val activityVersion23 = "1.12.2"
|
||||
val lifecycleComposeVersion23 = "2.10.0"
|
||||
|
||||
|
||||
@@ -78,7 +78,6 @@ import androidx.navigation.NavDestination.Companion.hierarchy
|
||||
import androidx.navigation.NavGraph.Companion.findStartDestination
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import dev.jeziellago.compose.markdowntext.MarkdownText
|
||||
import io.nekohasekai.libbox.Libbox
|
||||
import io.nekohasekai.sfa.Application
|
||||
@@ -86,6 +85,8 @@ import io.nekohasekai.sfa.BuildConfig
|
||||
import io.nekohasekai.sfa.R
|
||||
import io.nekohasekai.sfa.bg.ServiceConnection
|
||||
import io.nekohasekai.sfa.bg.ServiceNotification
|
||||
import io.nekohasekai.sfa.compat.WindowSizeClassCompat
|
||||
import io.nekohasekai.sfa.compat.isWidthAtLeastBreakpointCompat
|
||||
import io.nekohasekai.sfa.compose.base.GlobalEventBus
|
||||
import io.nekohasekai.sfa.compose.base.SelectableMessageDialog
|
||||
import io.nekohasekai.sfa.compose.base.UiEvent
|
||||
@@ -281,7 +282,7 @@ class MainActivity :
|
||||
|
||||
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
|
||||
val useNavigationRail =
|
||||
windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND)
|
||||
windowSizeClass.isWidthAtLeastBreakpointCompat(WindowSizeClassCompat.WIDTH_DP_MEDIUM_LOWER_BOUND)
|
||||
|
||||
// Snackbar state
|
||||
val snackbarHostState = remember { SnackbarHostState() }
|
||||
|
||||
@@ -51,8 +51,9 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.window.Dialog
|
||||
import androidx.compose.ui.window.DialogProperties
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import io.nekohasekai.sfa.R
|
||||
import io.nekohasekai.sfa.compat.WindowSizeClassCompat
|
||||
import io.nekohasekai.sfa.compat.isWidthAtLeastBreakpointCompat
|
||||
import io.nekohasekai.sfa.qrs.QRSConstants
|
||||
import io.nekohasekai.sfa.qrs.QRSEncoder
|
||||
import kotlinx.coroutines.delay
|
||||
@@ -61,7 +62,7 @@ import kotlinx.coroutines.delay
|
||||
fun QRSDialog(profileData: ByteArray, profileName: String, onDismiss: () -> Unit) {
|
||||
val context = LocalContext.current
|
||||
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
|
||||
val isTablet = windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND)
|
||||
val isTablet = windowSizeClass.isWidthAtLeastBreakpointCompat(WindowSizeClassCompat.WIDTH_DP_MEDIUM_LOWER_BOUND)
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
var fps by remember { mutableIntStateOf(QRSConstants.DEFAULT_FPS) }
|
||||
var sliceSize by remember { mutableIntStateOf(QRSConstants.DEFAULT_SLICE_SIZE) }
|
||||
|
||||
@@ -90,9 +90,10 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import io.nekohasekai.sfa.Application
|
||||
import io.nekohasekai.sfa.R
|
||||
import io.nekohasekai.sfa.compat.WindowSizeClassCompat
|
||||
import io.nekohasekai.sfa.compat.isWidthAtLeastBreakpointCompat
|
||||
import io.nekohasekai.sfa.compose.topbar.OverrideTopBar
|
||||
import io.nekohasekai.sfa.constant.Status
|
||||
import java.io.File
|
||||
@@ -119,7 +120,7 @@ fun LogScreen(
|
||||
val uiState by resolvedViewModel.uiState.collectAsState()
|
||||
val context = LocalContext.current
|
||||
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
|
||||
val isTablet = windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND)
|
||||
val isTablet = windowSizeClass.isWidthAtLeastBreakpointCompat(WindowSizeClassCompat.WIDTH_DP_MEDIUM_LOWER_BOUND)
|
||||
val listState = rememberLazyListState()
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
val resolvedTitle = title ?: stringResource(R.string.title_log)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package io.nekohasekai.sfa.compat
|
||||
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import androidx.window.core.layout.WindowWidthSizeClass
|
||||
|
||||
object WindowSizeClassCompat {
|
||||
const val WIDTH_DP_MEDIUM_LOWER_BOUND = 600
|
||||
const val WIDTH_DP_EXPANDED_LOWER_BOUND = 840
|
||||
}
|
||||
|
||||
fun WindowSizeClass.isWidthAtLeastBreakpointCompat(breakpointDp: Int): Boolean = when {
|
||||
breakpointDp <= WindowSizeClassCompat.WIDTH_DP_MEDIUM_LOWER_BOUND ->
|
||||
windowWidthSizeClass != WindowWidthSizeClass.COMPACT
|
||||
breakpointDp <= WindowSizeClassCompat.WIDTH_DP_EXPANDED_LOWER_BOUND ->
|
||||
windowWidthSizeClass == WindowWidthSizeClass.EXPANDED
|
||||
else -> windowWidthSizeClass == WindowWidthSizeClass.EXPANDED
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package io.nekohasekai.sfa.compat
|
||||
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
|
||||
object WindowSizeClassCompat {
|
||||
const val WIDTH_DP_MEDIUM_LOWER_BOUND = 600
|
||||
const val WIDTH_DP_EXPANDED_LOWER_BOUND = 840
|
||||
}
|
||||
|
||||
fun WindowSizeClass.isWidthAtLeastBreakpointCompat(breakpointDp: Int): Boolean = isWidthAtLeastBreakpoint(breakpointDp)
|
||||
Reference in New Issue
Block a user