diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java
index 01565857a6..ea190d0996 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java
@@ -96,6 +96,7 @@ public class WebRtcCallView extends InsetAwareConstraintLayout {
private RecipientId recipientId;
private ImageView answer;
private TextView answerWithoutVideoLabel;
+ private ImageView cameraDirectionToggle;
private AccessibleToggleButton ringToggle;
private PictureInPictureGestureHelper pictureInPictureGestureHelper;
private ImageView overflow;
@@ -177,6 +178,7 @@ public class WebRtcCallView extends InsetAwareConstraintLayout {
incomingRingStatus = findViewById(R.id.call_screen_incoming_ring_status);
answer = findViewById(R.id.call_screen_answer_call);
answerWithoutVideoLabel = findViewById(R.id.call_screen_answer_without_video_label);
+ cameraDirectionToggle = findViewById(R.id.call_screen_camera_direction_toggle);
ringToggle = findViewById(R.id.call_screen_audio_ring_toggle);
overflow = findViewById(R.id.call_screen_overflow_button);
hangup = findViewById(R.id.call_screen_end_call);
@@ -271,6 +273,7 @@ public class WebRtcCallView extends InsetAwareConstraintLayout {
runIfNonNull(controlsListener, listener -> listener.onRingGroupChanged(isOn, ringToggle.isActivated()));
});
+ cameraDirectionToggle.setOnClickListener(v -> runIfNonNull(controlsListener, ControlsListener::onCameraDirectionChanged));
smallLocalRender.findViewById(R.id.call_participant_switch_camera).setOnClickListener(v -> runIfNonNull(controlsListener, ControlsListener::onCameraDirectionChanged));
overflow.setOnClickListener(v -> {
@@ -352,6 +355,7 @@ public class WebRtcCallView extends InsetAwareConstraintLayout {
rotatableControls.add(audioToggle);
rotatableControls.add(micToggle);
rotatableControls.add(videoToggle);
+ rotatableControls.add(cameraDirectionToggle);
rotatableControls.add(decline);
rotatableControls.add(smallLocalAudioIndicator);
rotatableControls.add(ringToggle);
@@ -917,6 +921,7 @@ public class WebRtcCallView extends InsetAwareConstraintLayout {
}
private void updateButtonStateForLargeButtons() {
+ cameraDirectionToggle.setImageResource(R.drawable.webrtc_call_screen_camera_toggle);
hangup.setImageResource(R.drawable.webrtc_call_screen_hangup);
overflow.setImageResource(R.drawable.webrtc_call_screen_overflow_menu);
micToggle.setBackgroundResource(R.drawable.webrtc_call_screen_mic_toggle);
@@ -927,6 +932,7 @@ public class WebRtcCallView extends InsetAwareConstraintLayout {
}
private void updateButtonStateForSmallButtons() {
+ cameraDirectionToggle.setImageResource(R.drawable.webrtc_call_screen_camera_toggle_small);
hangup.setImageResource(R.drawable.webrtc_call_screen_hangup_small);
overflow.setImageResource(R.drawable.webrtc_call_screen_overflow_menu_small);
micToggle.setBackgroundResource(R.drawable.webrtc_call_screen_mic_toggle_small);
diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/controls/ControlsAndInfoController.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/controls/ControlsAndInfoController.kt
index 9d64922890..4a3fed6ee7 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/controls/ControlsAndInfoController.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/controls/ControlsAndInfoController.kt
@@ -209,7 +209,7 @@ class ControlsAndInfoController(
}
}
- private fun onControlTopChanged() {
+ fun onControlTopChanged() {
val guidelineTop = max(frame.top, coordinator.height - behavior.peekHeight)
aboveControlsGuideline.setGuidelineBegin(guidelineTop)
webRtcCallView.onControlTopChanged()
@@ -321,6 +321,7 @@ class ControlsAndInfoController(
val margin = if (controlState.displaySmallCallButtons()) 4.dp else 8.dp
setControlConstraints(R.id.call_screen_speaker_toggle, controlState.displayAudioToggle(), margin)
+ setControlConstraints(R.id.call_screen_camera_direction_toggle, controlState.displayCameraToggle(), margin)
setControlConstraints(R.id.call_screen_video_toggle, controlState.displayVideoToggle(), margin)
setControlConstraints(R.id.call_screen_audio_mic_toggle, controlState.displayMuteAudio(), margin)
setControlConstraints(R.id.call_screen_audio_ring_toggle, controlState.displayRingToggle(), margin)
diff --git a/app/src/main/res/layout/webrtc_call_controls.xml b/app/src/main/res/layout/webrtc_call_controls.xml
index 76ccefabd2..1b62cad7e9 100644
--- a/app/src/main/res/layout/webrtc_call_controls.xml
+++ b/app/src/main/res/layout/webrtc_call_controls.xml
@@ -56,12 +56,28 @@
android:scaleType="fitXY"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/call_screen_start_call_controls"
- app:layout_constraintEnd_toStartOf="@id/call_screen_video_toggle"
+ app:layout_constraintEnd_toStartOf="@id/call_screen_camera_direction_toggle"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/webrtc_call_screen_speaker_toggle"
tools:visibility="visible" />
+
+