Replace categorical window size classes with breakpoint-based checks.

This commit is contained in:
jeffrey-signal
2026-01-22 13:57:09 -05:00
committed by Alex Hart
parent 585bd5f24c
commit 4c43bf2228
7 changed files with 40 additions and 39 deletions

View File

@@ -8,27 +8,25 @@ package org.thoughtcrime.securesms.window
import android.content.res.Resources
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.window.core.ExperimentalWindowCoreApi
import androidx.window.core.layout.WindowHeightSizeClass
import androidx.window.core.layout.WindowSizeClass
import androidx.window.core.layout.WindowWidthSizeClass
import androidx.window.core.layout.computeWindowSizeClass
import org.thoughtcrime.securesms.keyvalue.SignalStore
val WindowSizeClass.listPaneDefaultPreferredWidth: Dp get() = if (windowWidthSizeClass.isAtLeast(WindowWidthSizeClass.EXPANDED)) 416.dp else 316.dp
val WindowSizeClass.listPaneDefaultPreferredWidth: Dp get() = if (isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_EXPANDED_LOWER_BOUND)) 416.dp else 316.dp
val WindowSizeClass.horizontalPartitionDefaultSpacerSize: Dp get() = 12.dp
val WindowSizeClass.detailPaneMaxContentWidth: Dp get() = 624.dp
fun WindowHeightSizeClass.isAtLeast(other: WindowHeightSizeClass): Boolean {
return hashCode() >= other.hashCode()
}
val WindowSizeClass.isWidthCompact
get() = !isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND)
fun WindowWidthSizeClass.isAtLeast(other: WindowWidthSizeClass): Boolean {
return hashCode() >= other.hashCode()
}
val WindowSizeClass.isHeightCompact
get() = !isHeightAtLeastBreakpoint(WindowSizeClass.HEIGHT_DP_MEDIUM_LOWER_BOUND)
@OptIn(ExperimentalWindowCoreApi::class)
fun Resources.getWindowSizeClass(): WindowSizeClass {
return WindowSizeClass.compute(displayMetrics.widthPixels / displayMetrics.density, displayMetrics.heightPixels / displayMetrics.density)
return WindowSizeClass.BREAKPOINTS_V1.computeWindowSizeClass(
widthDp = displayMetrics.widthPixels / displayMetrics.density,
heightDp = displayMetrics.heightPixels / displayMetrics.density
)
}
/**
@@ -42,6 +40,8 @@ fun WindowSizeClass.isSplitPane(
return true
}
return windowWidthSizeClass.isAtLeast(WindowWidthSizeClass.EXPANDED) &&
windowHeightSizeClass.isAtLeast(WindowHeightSizeClass.MEDIUM)
return isAtLeastBreakpoint(
widthDpBreakpoint = WindowSizeClass.WIDTH_DP_EXPANDED_LOWER_BOUND,
heightDpBreakpoint = WindowSizeClass.HEIGHT_DP_MEDIUM_LOWER_BOUND
)
}