Utilize fixed rounded corner sheet for recipients fragment.

This commit is contained in:
Alex Hart
2025-10-20 14:28:57 -03:00
committed by Greyson Parrelli
parent c8f801da83
commit 329389bb41
7 changed files with 25 additions and 19 deletions

View File

@@ -51,7 +51,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.fragment.app.DialogFragment

View File

@@ -19,6 +19,8 @@ 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 com.google.android.material.R as MaterialR
/**
@@ -26,6 +28,17 @@ import com.google.android.material.R as MaterialR
*/
abstract class FixedRoundedCornerBottomSheetDialogFragment : BottomSheetDialogFragment() {
/**
* Sheet corner radius in DP
*/
protected val cornerRadius: Int by lazy {
if (WindowSizeClass.isLargeScreenSupportEnabled() && resources.getWindowSizeClass().isSplitPane()) {
32
} else {
18
}
}
protected open val peekHeightPercentage: Float = 0.5f
@StyleRes
@@ -54,8 +67,8 @@ abstract class FixedRoundedCornerBottomSheetDialogFragment : BottomSheetDialogFr
dialog.behavior.peekHeight = (resources.displayMetrics.heightPixels * peekHeightPercentage).toInt()
val shapeAppearanceModel = ShapeAppearanceModel.builder()
.setTopLeftCorner(CornerFamily.ROUNDED, ViewUtil.dpToPx(requireContext(), 18).toFloat())
.setTopRightCorner(CornerFamily.ROUNDED, ViewUtil.dpToPx(requireContext(), 18).toFloat())
.setTopLeftCorner(CornerFamily.ROUNDED, ViewUtil.dpToPx(requireContext(), cornerRadius).toFloat())
.setTopRightCorner(CornerFamily.ROUNDED, ViewUtil.dpToPx(requireContext(), cornerRadius).toFloat())
.build()
dialogBackground = MaterialShapeDrawable(shapeAppearanceModel)

View File

@@ -28,7 +28,7 @@ abstract class ComposeBottomSheetDialogFragment : FixedRoundedCornerBottomSheetD
isDarkMode = forceDarkTheme || DynamicTheme.isDarkTheme(LocalContext.current)
) {
Surface(
shape = RoundedCornerShape(18.dp, 18.dp),
shape = RoundedCornerShape(cornerRadius.dp, cornerRadius.dp),
color = SignalTheme.colors.colorSurface1,
contentColor = MaterialTheme.colorScheme.onSurface
) {

View File

@@ -15,13 +15,11 @@ import android.view.ViewGroup
import android.widget.ProgressBar
import android.widget.TextView
import android.widget.Toast
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@@ -31,6 +29,7 @@ import org.thoughtcrime.securesms.avatar.view.AvatarView
import org.thoughtcrime.securesms.badges.BadgeImageView
import org.thoughtcrime.securesms.badges.view.ViewBadgeBottomSheetDialogFragment
import org.thoughtcrime.securesms.calls.YouAreAlreadyInACallSnackbar
import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment
import org.thoughtcrime.securesms.components.settings.DSLSettingsIcon
import org.thoughtcrime.securesms.components.settings.conversation.preferences.ButtonStripPreference
import org.thoughtcrime.securesms.conversation.v2.data.AvatarDownloadStateCache
@@ -45,7 +44,6 @@ import org.thoughtcrime.securesms.recipients.ui.about.AboutSheet
import org.thoughtcrime.securesms.util.BottomSheetUtil
import org.thoughtcrime.securesms.util.ContextUtil
import org.thoughtcrime.securesms.util.SpanUtil
import org.thoughtcrime.securesms.util.ThemeUtil
import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.WindowUtil
import org.thoughtcrime.securesms.util.visible
@@ -54,7 +52,7 @@ import org.thoughtcrime.securesms.util.visible
* A bottom sheet that shows some simple recipient details, as well as some actions (like calling,
* adding to contacts, etc).
*/
class RecipientBottomSheetDialogFragment : BottomSheetDialogFragment() {
class RecipientBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDialogFragment() {
companion object {
val TAG: String = Log.tag(RecipientBottomSheetDialogFragment::class.java)
@@ -87,6 +85,8 @@ class RecipientBottomSheetDialogFragment : BottomSheetDialogFragment() {
}
}
override val peekHeightPercentage: Float = 1f
private val viewModel: RecipientDialogViewModel by viewModels(factoryProducer = this::createFactory)
private var callback: Callback? = null
@@ -98,15 +98,6 @@ class RecipientBottomSheetDialogFragment : BottomSheetDialogFragment() {
return RecipientDialogViewModel.Factory(requireContext(), recipientId, groupId)
}
override fun onCreate(savedInstanceState: Bundle?) {
setStyle(
DialogFragment.STYLE_NORMAL,
if (ThemeUtil.isDarkTheme(requireContext())) R.style.Theme_Signal_RoundedBottomSheet else R.style.Theme_Signal_RoundedBottomSheet_Light
)
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return inflater.inflate(R.layout.recipient_bottom_sheet, container, false)
}

View File

@@ -2,4 +2,5 @@
<resources>
<dimen name="media_bubble_max_width">350dp</dimen>
<dimen name="media_bubble_max_height">300dp</dimen>
<dimen name="bottom_sheet_corner_size">32dp</dimen>
</resources>

View File

@@ -7,6 +7,8 @@
<resources>
<dimen name="signal_m3_toolbar_height">64dp</dimen>
<dimen name="bottom_sheet_corner_size">18dp</dimen>
<dimen name="min_keyboard_size">60dp</dimen>
<dimen name="default_custom_keyboard_size">260dp</dimen>
<dimen name="min_custom_keyboard_size">110dp</dimen>

View File

@@ -476,8 +476,8 @@
<style name="ShapeAppearanceOverlay.Signal.BottomSheet.Rounded" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSizeTopRight">18dp</item>
<item name="cornerSizeTopLeft">18dp</item>
<item name="cornerSizeTopRight">@dimen/bottom_sheet_corner_size</item>
<item name="cornerSizeTopLeft">@dimen/bottom_sheet_corner_size</item>
<item name="cornerSizeBottomLeft">0dp</item>
<item name="cornerSizeBottomRight">0dp</item>
</style>