mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-02 00:17:41 +01:00
Show gallery button on camera screen when camera permission is denied.
This commit is contained in:
@@ -39,6 +39,7 @@ import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import org.signal.camera.CameraScreen
|
||||
@@ -46,6 +47,7 @@ import org.signal.camera.CameraScreenEvents
|
||||
import org.signal.camera.CameraScreenViewModel
|
||||
import org.signal.camera.VideoCaptureResult
|
||||
import org.signal.camera.VideoOutput
|
||||
import org.signal.camera.hud.GalleryThumbnailButton
|
||||
import org.signal.camera.hud.StandardCameraHud
|
||||
import org.signal.camera.hud.StandardCameraHudEvents
|
||||
import org.signal.camera.hud.StringResources
|
||||
@@ -141,6 +143,7 @@ class CameraXFragment : ComposeFragment(), CameraFragment {
|
||||
onCheckPermissions = { checkPermissions(isVideoEnabled) },
|
||||
hasCameraPermission = { hasCameraPermission() },
|
||||
onRequestMicPermission = { requestMicPermission() },
|
||||
onGalleryClicked = { controller?.onGalleryClicked() },
|
||||
createVideoFileDescriptor = { createVideoFileDescriptor() },
|
||||
getMaxVideoDurationInSeconds = { getMaxVideoDurationInSeconds() },
|
||||
cameraDisplay = CameraDisplay.getDisplay(requireActivity())
|
||||
@@ -300,6 +303,7 @@ private fun CameraXScreen(
|
||||
onCheckPermissions: () -> Unit,
|
||||
hasCameraPermission: () -> Boolean,
|
||||
onRequestMicPermission: () -> Unit,
|
||||
onGalleryClicked: () -> Unit,
|
||||
createVideoFileDescriptor: () -> ParcelFileDescriptor?,
|
||||
getMaxVideoDurationInSeconds: () -> Int,
|
||||
cameraDisplay: CameraDisplay,
|
||||
@@ -436,7 +440,9 @@ private fun CameraXScreen(
|
||||
} else {
|
||||
PermissionMissingContent(
|
||||
isVideoEnabled = isVideoEnabled,
|
||||
onRequestPermissions = onCheckPermissions
|
||||
onRequestPermissions = onCheckPermissions,
|
||||
onGalleryClicked = onGalleryClicked,
|
||||
galleryButtonBottomPadding = hudBottomMargin + 16.dp
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -445,7 +451,9 @@ private fun CameraXScreen(
|
||||
@Composable
|
||||
private fun PermissionMissingContent(
|
||||
isVideoEnabled: Boolean,
|
||||
onRequestPermissions: () -> Unit
|
||||
onRequestPermissions: () -> Unit,
|
||||
onGalleryClicked: () -> Unit,
|
||||
galleryButtonBottomPadding: Dp = 16.dp
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val hasAudioPermission = remember { Permissions.hasAll(context, Manifest.permission.RECORD_AUDIO) }
|
||||
@@ -476,6 +484,14 @@ private fun PermissionMissingContent(
|
||||
Text(text = stringResource(R.string.CameraXFragment_allow_access))
|
||||
}
|
||||
}
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.align(Alignment.BottomEnd)
|
||||
.padding(bottom = galleryButtonBottomPadding, end = 40.dp)
|
||||
) {
|
||||
GalleryThumbnailButton(onClick = onGalleryClicked)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -600,6 +616,7 @@ private fun CameraXScreenPreview_20_9() {
|
||||
onCheckPermissions = {},
|
||||
hasCameraPermission = { true },
|
||||
onRequestMicPermission = { },
|
||||
onGalleryClicked = { },
|
||||
createVideoFileDescriptor = { null },
|
||||
getMaxVideoDurationInSeconds = { 60 },
|
||||
cameraDisplay = CameraDisplay.DISPLAY_20_9,
|
||||
@@ -626,6 +643,7 @@ private fun CameraXScreenPreview_19_9() {
|
||||
onCheckPermissions = {},
|
||||
hasCameraPermission = { true },
|
||||
onRequestMicPermission = { },
|
||||
onGalleryClicked = { },
|
||||
createVideoFileDescriptor = { null },
|
||||
getMaxVideoDurationInSeconds = { 60 },
|
||||
cameraDisplay = CameraDisplay.DISPLAY_19_9,
|
||||
@@ -652,6 +670,7 @@ private fun CameraXScreenPreview_18_9() {
|
||||
onCheckPermissions = {},
|
||||
hasCameraPermission = { true },
|
||||
onRequestMicPermission = { },
|
||||
onGalleryClicked = { },
|
||||
createVideoFileDescriptor = { null },
|
||||
getMaxVideoDurationInSeconds = { 60 },
|
||||
cameraDisplay = CameraDisplay.DISPLAY_18_9,
|
||||
@@ -678,6 +697,7 @@ private fun CameraXScreenPreview_16_9() {
|
||||
onCheckPermissions = {},
|
||||
hasCameraPermission = { true },
|
||||
onRequestMicPermission = { },
|
||||
onGalleryClicked = { },
|
||||
createVideoFileDescriptor = { null },
|
||||
getMaxVideoDurationInSeconds = { 60 },
|
||||
cameraDisplay = CameraDisplay.DISPLAY_16_9,
|
||||
@@ -704,6 +724,7 @@ private fun CameraXScreenPreview_6_5() {
|
||||
onCheckPermissions = {},
|
||||
hasCameraPermission = { true },
|
||||
onRequestMicPermission = { },
|
||||
onGalleryClicked = { },
|
||||
createVideoFileDescriptor = { null },
|
||||
getMaxVideoDurationInSeconds = { 60 },
|
||||
cameraDisplay = CameraDisplay.DISPLAY_6_5,
|
||||
|
||||
Reference in New Issue
Block a user