mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-25 12:17:22 +00:00
Add Snackbar displaying message that user is awaiting entry to an ad hoc call.
This commit is contained in:
committed by
Greyson Parrelli
parent
6641cc4806
commit
330debcf37
@@ -408,9 +408,11 @@ public class WebRtcCallViewModel extends ViewModel {
|
||||
groupCallState = (participantLimit == null || remoteDevicesCount < participantLimit) ? WebRtcControls.GroupCallState.CONNECTING
|
||||
: WebRtcControls.GroupCallState.FULL;
|
||||
break;
|
||||
case CONNECTED_AND_PENDING:
|
||||
groupCallState = WebRtcControls.GroupCallState.PENDING;
|
||||
break;
|
||||
case CONNECTED:
|
||||
case CONNECTED_AND_JOINING:
|
||||
case CONNECTED_AND_PENDING:
|
||||
case CONNECTED_AND_JOINED:
|
||||
groupCallState = WebRtcControls.GroupCallState.CONNECTED;
|
||||
break;
|
||||
|
||||
@@ -227,6 +227,10 @@ public final class WebRtcControls {
|
||||
return !isInPipMode;
|
||||
}
|
||||
|
||||
public boolean displayWaitingToBeLetIn() {
|
||||
return !isInPipMode && groupCallState == GroupCallState.PENDING;
|
||||
}
|
||||
|
||||
public @NonNull WebRtcAudioOutput getAudioOutput() {
|
||||
switch (activeDevice) {
|
||||
case SPEAKER_PHONE:
|
||||
@@ -282,7 +286,6 @@ public final class WebRtcControls {
|
||||
|
||||
private int displayedButtonCount() {
|
||||
return (displayAudioToggle() ? 1 : 0) +
|
||||
(displayCameraToggle() ? 1 : 0) +
|
||||
(displayVideoToggle() ? 1 : 0) +
|
||||
(displayMuteAudio() ? 1 : 0) +
|
||||
(displayRingToggle() ? 1 : 0) +
|
||||
@@ -312,6 +315,7 @@ public final class WebRtcControls {
|
||||
RECONNECTING,
|
||||
CONNECTING,
|
||||
FULL,
|
||||
PENDING,
|
||||
CONNECTED;
|
||||
|
||||
boolean isAtLeast(@SuppressWarnings("SameParameterValue") @NonNull GroupCallState other) {
|
||||
|
||||
@@ -9,10 +9,12 @@ import android.content.ActivityNotFoundException
|
||||
import android.content.Intent
|
||||
import android.content.res.ColorStateList
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.Color
|
||||
import android.os.Handler
|
||||
import android.os.Parcelable
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.IdRes
|
||||
import androidx.annotation.Px
|
||||
@@ -34,6 +36,8 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehaviorHack
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.progressindicator.CircularProgressIndicatorSpec
|
||||
import com.google.android.material.progressindicator.IndeterminateDrawable
|
||||
import com.google.android.material.shape.CornerFamily
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
import com.google.android.material.shape.ShapeAppearanceModel
|
||||
@@ -111,6 +115,20 @@ class ControlsAndInfoController private constructor(
|
||||
private val toggleCameraDirectionView: View = webRtcCallView.findViewById(R.id.call_screen_camera_direction_toggle)
|
||||
private val callControls: ConstraintLayout = webRtcCallView.findViewById(R.id.call_controls_constraint_layout)
|
||||
private val isLandscape = webRtcCallActivity.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||
private val waitingToBeLetInProgressDrawable = IndeterminateDrawable.createCircularDrawable(
|
||||
webRtcCallActivity,
|
||||
CircularProgressIndicatorSpec(webRtcCallActivity, null).apply {
|
||||
indicatorSize = 20.dp
|
||||
indicatorInset = 0.dp
|
||||
trackThickness = 2.dp
|
||||
trackCornerRadius = 1.dp
|
||||
indicatorColors = intArrayOf(ContextCompat.getColor(webRtcCallActivity, R.color.signal_colorOnBackground))
|
||||
trackColor = Color.TRANSPARENT
|
||||
}
|
||||
)
|
||||
private val waitingToBeLetIn: TextView = webRtcCallView.findViewById<TextView>(R.id.call_controls_waiting_to_be_let_in).apply {
|
||||
setCompoundDrawablesRelativeWithIntrinsicBounds(waitingToBeLetInProgressDrawable, null, null, null)
|
||||
}
|
||||
|
||||
private val scheduleHideControlsRunnable: Runnable = Runnable { onScheduledHide() }
|
||||
private val bottomSheetVisibilityListeners = mutableSetOf<BottomSheetVisibilityListener>()
|
||||
@@ -367,6 +385,13 @@ class ControlsAndInfoController private constructor(
|
||||
constraints.applyTo(callControls)
|
||||
|
||||
toggleCameraDirectionView.visible = controlState.displayCameraToggle()
|
||||
waitingToBeLetIn.visible = controlState.displayWaitingToBeLetIn()
|
||||
|
||||
if (controlState.displayWaitingToBeLetIn()) {
|
||||
waitingToBeLetInProgressDrawable.setVisible(true, false)
|
||||
} else {
|
||||
waitingToBeLetInProgressDrawable.stop()
|
||||
}
|
||||
}
|
||||
|
||||
private fun onScheduledHide() {
|
||||
@@ -463,7 +488,8 @@ class ControlsAndInfoController private constructor(
|
||||
displayMuteAudio() != previousState.displayMuteAudio() ||
|
||||
displayRingToggle() != previousState.displayRingToggle() ||
|
||||
displayOverflow() != previousState.displayOverflow() ||
|
||||
displayEndCall() != previousState.displayEndCall()
|
||||
displayEndCall() != previousState.displayEndCall() ||
|
||||
displayWaitingToBeLetIn() != previousState.displayWaitingToBeLetIn()
|
||||
}
|
||||
|
||||
private fun alphaControls(slideOffset: Float): Float {
|
||||
|
||||
Reference in New Issue
Block a user