mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 09:20:19 +01:00
Remove custom WindowSizeClass and just depend on Material Adaptive WindowSizeClass.
Co-authored-by: jeffrey-signal <jeffrey@signal.org>
This commit is contained in:
committed by
jeffrey-signal
parent
95c9776b4d
commit
109f651681
@@ -19,8 +19,9 @@ import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.util.ThemeUtil
|
||||
import org.thoughtcrime.securesms.util.ViewUtil
|
||||
import org.thoughtcrime.securesms.util.WindowUtil
|
||||
import org.thoughtcrime.securesms.window.WindowSizeClass
|
||||
import org.thoughtcrime.securesms.window.WindowSizeClass.Companion.getWindowSizeClass
|
||||
import org.thoughtcrime.securesms.window.getWindowSizeClass
|
||||
import org.thoughtcrime.securesms.window.isLargeScreenSupportEnabled
|
||||
import org.thoughtcrime.securesms.window.isSplitPane
|
||||
import com.google.android.material.R as MaterialR
|
||||
|
||||
/**
|
||||
@@ -32,7 +33,7 @@ abstract class FixedRoundedCornerBottomSheetDialogFragment : BottomSheetDialogFr
|
||||
* Sheet corner radius in DP
|
||||
*/
|
||||
protected val cornerRadius: Int by lazy {
|
||||
if (WindowSizeClass.isLargeScreenSupportEnabled() && resources.getWindowSizeClass().isSplitPane()) {
|
||||
if (isLargeScreenSupportEnabled() && resources.getWindowSizeClass().isSplitPane()) {
|
||||
32
|
||||
} else {
|
||||
18
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.thoughtcrime.securesms.components
|
||||
|
||||
import android.content.Context
|
||||
import android.content.res.Configuration
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
@@ -15,7 +16,6 @@ import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.main.VerticalInsets
|
||||
import org.thoughtcrime.securesms.util.ViewUtil
|
||||
import org.thoughtcrime.securesms.window.WindowSizeClass.Companion.getWindowSizeClass
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
@@ -241,7 +241,7 @@ open class InsetAwareConstraintLayout @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
private fun isLandscape(): Boolean {
|
||||
return resources.getWindowSizeClass().isLandscape()
|
||||
return resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||
}
|
||||
|
||||
private val Guideline?.guidelineEnd: Int
|
||||
|
||||
@@ -8,10 +8,12 @@ package org.thoughtcrime.securesms.components.compose
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.thoughtcrime.securesms.window.WindowSizeClass
|
||||
import androidx.window.core.layout.WindowWidthSizeClass
|
||||
import org.thoughtcrime.securesms.window.isAtLeast
|
||||
|
||||
/**
|
||||
* Displays the screen title for split-pane UIs on tablets and foldable devices.
|
||||
@@ -21,7 +23,7 @@ fun ScreenTitlePane(
|
||||
title: String,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
val windowSizeClass = WindowSizeClass.rememberWindowSizeClass()
|
||||
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
|
||||
|
||||
Text(
|
||||
text = title,
|
||||
@@ -29,7 +31,7 @@ fun ScreenTitlePane(
|
||||
color = MaterialTheme.colorScheme.onSurface,
|
||||
modifier = modifier
|
||||
.padding(
|
||||
start = if (windowSizeClass.isExtended()) 80.dp else 20.dp,
|
||||
start = if (windowSizeClass.windowWidthSizeClass.isAtLeast(WindowWidthSizeClass.EXPANDED)) 80.dp else 20.dp,
|
||||
end = 20.dp,
|
||||
bottom = 12.dp
|
||||
)
|
||||
|
||||
@@ -185,11 +185,11 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter
|
||||
|
||||
switchPref(
|
||||
isEnabled = state.largeScreenUi,
|
||||
title = DSLSettingsText.from("Force split pane UI on landscape phones."),
|
||||
title = DSLSettingsText.from("Force split pane UI on phones."),
|
||||
summary = DSLSettingsText.from("This setting requires split pane UI to be enabled."),
|
||||
isChecked = state.forceSplitPaneOnCompactLandscape,
|
||||
isChecked = state.forceSplitPane,
|
||||
onClick = {
|
||||
viewModel.setForceSplitPaneOnCompactLandscape(!state.forceSplitPaneOnCompactLandscape)
|
||||
viewModel.setForceSplitPane(!state.forceSplitPane)
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -32,5 +32,5 @@ data class InternalSettingsState(
|
||||
val hevcEncoding: Boolean,
|
||||
val newCallingUi: Boolean,
|
||||
val largeScreenUi: Boolean,
|
||||
val forceSplitPaneOnCompactLandscape: Boolean
|
||||
val forceSplitPane: Boolean
|
||||
)
|
||||
|
||||
@@ -198,7 +198,7 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito
|
||||
hevcEncoding = SignalStore.internal.hevcEncoding,
|
||||
newCallingUi = SignalStore.internal.newCallingUi,
|
||||
largeScreenUi = SignalStore.internal.largeScreenUi,
|
||||
forceSplitPaneOnCompactLandscape = SignalStore.internal.forceSplitPaneOnCompactLandscape
|
||||
forceSplitPane = SignalStore.internal.forceSplitPane
|
||||
)
|
||||
|
||||
fun onClearOnboardingState() {
|
||||
@@ -219,8 +219,8 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito
|
||||
refresh()
|
||||
}
|
||||
|
||||
fun setForceSplitPaneOnCompactLandscape(forceSplitPaneOnCompactLandscape: Boolean) {
|
||||
SignalStore.internal.forceSplitPaneOnCompactLandscape = forceSplitPaneOnCompactLandscape
|
||||
fun setForceSplitPane(forceSplitPane: Boolean) {
|
||||
SignalStore.internal.forceSplitPane = forceSplitPane
|
||||
refresh()
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.SheetValue
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
@@ -63,6 +64,8 @@ import androidx.compose.ui.tooling.preview.Devices
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.DpSize
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.window.core.layout.WindowHeightSizeClass
|
||||
import androidx.window.core.layout.WindowWidthSizeClass
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import org.signal.core.ui.compose.BottomSheets
|
||||
@@ -76,7 +79,6 @@ import org.thoughtcrime.securesms.events.CallParticipant
|
||||
import org.thoughtcrime.securesms.events.GroupCallReactionEvent
|
||||
import org.thoughtcrime.securesms.events.WebRtcViewModel
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.window.WindowSizeClass
|
||||
import kotlin.math.max
|
||||
import kotlin.math.round
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
@@ -484,7 +486,7 @@ private fun TinyLocalVideoRenderer(
|
||||
|
||||
if (LocalInspectionMode.current) {
|
||||
Text(
|
||||
"Test ${WindowSizeClass.rememberWindowSizeClass()}",
|
||||
"Test ${currentWindowAdaptiveInfo().windowSizeClass}",
|
||||
modifier = modifier
|
||||
.padding(padding)
|
||||
.height(height)
|
||||
@@ -553,27 +555,28 @@ private fun SmallMoveableLocalVideoRenderer(
|
||||
@Composable
|
||||
private fun rememberTinyPortraitSize(): SelfPictureInPictureDimensions {
|
||||
val smallWidth = dimensionResource(R.dimen.call_screen_overflow_item_size)
|
||||
val windowClass = WindowSizeClass.rememberWindowSizeClass()
|
||||
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
|
||||
val isLandscape = LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||
|
||||
val smallSize = when (windowClass) {
|
||||
WindowSizeClass.COMPACT_PORTRAIT -> DpSize(40.dp, smallWidth)
|
||||
WindowSizeClass.COMPACT_LANDSCAPE -> DpSize(smallWidth, 40.dp)
|
||||
WindowSizeClass.EXTENDED_PORTRAIT, WindowSizeClass.EXTENDED_LANDSCAPE -> DpSize(124.dp, 217.dp)
|
||||
val smallSize = when {
|
||||
windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.COMPACT && !isLandscape -> DpSize(40.dp, smallWidth)
|
||||
windowSizeClass.windowHeightSizeClass == WindowHeightSizeClass.COMPACT && isLandscape -> DpSize(smallWidth, 40.dp)
|
||||
windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.EXPANDED -> DpSize(124.dp, 217.dp)
|
||||
else -> DpSize(smallWidth, smallWidth)
|
||||
}
|
||||
|
||||
val expandedSize = when (windowClass) {
|
||||
WindowSizeClass.COMPACT_PORTRAIT -> DpSize(180.dp, 320.dp)
|
||||
WindowSizeClass.COMPACT_LANDSCAPE -> DpSize(320.dp, 180.dp)
|
||||
val expandedSize = when {
|
||||
windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.COMPACT && !isLandscape -> DpSize(180.dp, 320.dp)
|
||||
windowSizeClass.windowHeightSizeClass == WindowHeightSizeClass.COMPACT && isLandscape -> DpSize(320.dp, 180.dp)
|
||||
else -> DpSize(smallWidth, smallWidth)
|
||||
}
|
||||
|
||||
val padding = when (windowClass) {
|
||||
WindowSizeClass.COMPACT_PORTRAIT -> PaddingValues(vertical = 16.dp)
|
||||
val padding = when {
|
||||
windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.COMPACT && !isLandscape -> PaddingValues(vertical = 16.dp)
|
||||
else -> PaddingValues(16.dp)
|
||||
}
|
||||
|
||||
return remember(windowClass) {
|
||||
return remember(windowSizeClass) {
|
||||
SelfPictureInPictureDimensions(smallSize, expandedSize, padding)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user