Add Small Group Ringing support.

This commit is contained in:
Cody Henthorne
2021-08-24 10:18:39 -04:00
committed by Alex Hart
parent 5787a5f68a
commit db7272730e
39 changed files with 1597 additions and 609 deletions

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="28dp"
android:height="28dp"
android:viewportWidth="28"
android:viewportHeight="28">
<path
android:fillColor="@color/core_white"
android:pathData="M25.29,19.84A2.19,2.19 0,0 1,23 22L5,22a2.19,2.19 0,0 1,-2.25 -2.11c0,-1.31 0.91,-1.89 1.9,-2.33 2,-0.89 2.43,-3.35 2.85,-6C8,8.17 8.69,4 14,4s6,4.22 6.54,7.61c0.42,2.6 0.81,5.06 2.85,6C24.38,18 25.29,18.53 25.29,19.84ZM23.65,11.68a0.86,0.86 0,0 0,0.84 -0.9c-0.13,-3.84 -1.64,-7.11 -4.14,-9A0.88,0.88 0,1 0,19.3 3.2c2.07,1.55 3.33,4.34 3.44,7.64a0.88,0.88 0,0 0,0.88 0.84ZM5.21,10.84c0.11,-3.3 1.37,-6.09 3.44,-7.64A0.88,0.88 0,1 0,7.6 1.8c-2.5,1.87 -4,5.14 -4.14,9a0.86,0.86 0,0 0,0.84 0.9h0A0.88,0.88 0,0 0,5.21 10.84ZM11.42,23.5a0.5,0.5 0,0 0,-0.44 0.73,3.46 3.46,0 0,0 6,0 0.5,0.5 0,0 0,-0.44 -0.73Z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="28dp"
android:height="28dp"
android:viewportWidth="28"
android:viewportHeight="28">
<path
android:fillColor="@color/transparent_white_40"
android:pathData="M25.29,19.84A2.19,2.19 0,0 1,23 22L5,22a2.19,2.19 0,0 1,-2.25 -2.11c0,-1.31 0.91,-1.89 1.9,-2.33 2,-0.89 2.43,-3.35 2.85,-6C8,8.17 8.69,4 14,4s6,4.22 6.54,7.61c0.42,2.6 0.81,5.06 2.85,6C24.38,18 25.29,18.53 25.29,19.84ZM23.65,11.68a0.86,0.86 0,0 0,0.84 -0.9c-0.13,-3.84 -1.64,-7.11 -4.14,-9A0.88,0.88 0,1 0,19.3 3.2c2.07,1.55 3.33,4.34 3.44,7.64a0.88,0.88 0,0 0,0.88 0.84ZM5.21,10.84c0.11,-3.3 1.37,-6.09 3.44,-7.64A0.88,0.88 0,1 0,7.6 1.8c-2.5,1.87 -4,5.14 -4.14,9a0.86,0.86 0,0 0,0.84 0.9h0A0.88,0.88 0,0 0,5.21 10.84ZM11.42,23.5a0.5,0.5 0,0 0,-0.44 0.73,3.46 3.46,0 0,0 6,0 0.5,0.5 0,0 0,-0.44 -0.73Z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="28dp"
android:height="28dp"
android:viewportWidth="28"
android:viewportHeight="28">
<path
android:fillColor="@color/core_grey_75"
android:pathData="M25.29,19.84A2.19,2.19 0,0 1,23 22L5,22a2.19,2.19 0,0 1,-2.25 -2.11c0,-1.31 0.91,-1.89 1.9,-2.33 2,-0.89 2.43,-3.35 2.85,-6C8,8.17 8.69,4 14,4s6,4.22 6.54,7.61c0.42,2.6 0.81,5.06 2.85,6C24.38,18 25.29,18.53 25.29,19.84ZM23.65,11.68a0.86,0.86 0,0 0,0.84 -0.9c-0.13,-3.84 -1.64,-7.11 -4.14,-9A0.88,0.88 0,1 0,19.3 3.2c2.07,1.55 3.33,4.34 3.44,7.64a0.88,0.88 0,0 0,0.88 0.84ZM5.21,10.84c0.11,-3.3 1.37,-6.09 3.44,-7.64A0.88,0.88 0,1 0,7.6 1.8c-2.5,1.87 -4,5.14 -4.14,9a0.86,0.86 0,0 0,0.84 0.9h0A0.88,0.88 0,0 0,5.21 10.84ZM11.42,23.5a0.5,0.5 0,0 0,-0.44 0.73,3.46 3.46,0 0,0 6,0 0.5,0.5 0,0 0,-0.44 -0.73Z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/transparent_white_20" />
</shape>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="false">
<layer-list>
<item android:drawable="@drawable/webrtc_call_screen_circle_grey_disabled" />
<item android:bottom="14dp" android:drawable="@drawable/ic_ring_disabled_28" android:left="14dp" android:right="14dp" android:top="14dp" />
</layer-list>
</item>
<item android:state_checked="true">
<layer-list>
<item android:drawable="@drawable/circle_tintable" />
<item android:bottom="14dp" android:drawable="@drawable/ic_ring_grey_28" android:left="14dp" android:right="14dp" android:top="14dp" />
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable="@drawable/webrtc_call_screen_circle_grey" />
<item android:bottom="14dp" android:drawable="@drawable/ic_ring_28" android:left="14dp" android:right="14dp" android:top="14dp" />
</layer-list>
</item>
</selector>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="false">
<layer-list>
<item android:bottom="4dp" android:drawable="@drawable/webrtc_call_screen_circle_grey_disabled" android:left="4dp" android:right="4dp" android:top="4dp" />
<item android:bottom="14dp" android:drawable="@drawable/ic_ring_disabled_28" android:left="14dp" android:right="14dp" android:top="14dp" />
</layer-list>
</item>
<item android:state_checked="true">
<layer-list>
<item android:bottom="4dp" android:drawable="@drawable/circle_tintable" android:left="4dp" android:right="4dp" android:top="4dp" />
<item android:bottom="14dp" android:drawable="@drawable/ic_ring_grey_28" android:left="14dp" android:right="14dp" android:top="14dp" />
</layer-list>
</item>
<item>
<layer-list>
<item android:bottom="4dp" android:drawable="@drawable/webrtc_call_screen_circle_grey" android:left="4dp" android:right="4dp" android:top="4dp" />
<item android:bottom="14dp" android:drawable="@drawable/ic_ring_28" android:left="14dp" android:right="14dp" android:top="14dp" />
</layer-list>
</item>
</selector>

View File

@@ -40,7 +40,8 @@
app:layout_constraintBottom_toTopOf="@id/fold_top_guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
app:layout_constraintTop_toTopOf="parent"
tools:visibility="gone">
<org.thoughtcrime.securesms.components.webrtc.TextureViewRenderer
android:id="@+id/call_screen_large_local_renderer"
@@ -171,7 +172,8 @@
app:layout_constraintBottom_toTopOf="@+id/fold_top_call_screen_guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
app:layout_constraintTop_toTopOf="parent"
tools:visibility="gone">
<androidx.cardview.widget.CardView
android:id="@+id/call_screen_pip"
@@ -226,6 +228,7 @@
android:id="@+id/call_screen_speaker_toggle_label"
android:layout_width="64dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="32dp"
android:clickable="false"
android:ellipsize="end"
@@ -328,7 +331,7 @@
android:stateListAnimator="@null"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/call_screen_button_labels_barrier"
app:layout_constraintEnd_toStartOf="@id/call_screen_end_call"
app:layout_constraintEnd_toStartOf="@id/call_screen_audio_ring_toggle"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/call_screen_video_toggle"
tools:visibility="visible" />
@@ -354,6 +357,42 @@
app:layout_constraintVertical_bias="0"
tools:visibility="visible" />
<org.thoughtcrime.securesms.components.AccessibleToggleButton
android:id="@+id/call_screen_audio_ring_toggle"
style="@style/WebRtcCallV2CompoundButton"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/webrtc_call_screen_ring_toggle"
android:stateListAnimator="@null"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/call_screen_button_labels_barrier"
app:layout_constraintEnd_toStartOf="@id/call_screen_end_call"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/call_screen_audio_mic_toggle"
tools:visibility="visible" />
<TextView
android:id="@+id/call_screen_audio_ring_toggle_label"
android:layout_width="64dp"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:clickable="false"
android:ellipsize="end"
android:gravity="center"
android:maxLines="2"
android:text="@string/WebRtcCallView__ring"
android:textAppearance="@style/TextAppearance.Signal.Subtitle"
android:textColor="@color/core_white"
android:visibility="gone"
app:layout_constrainedHeight="true"
app:layout_constraintBottom_toTopOf="@id/call_screen_start_call_controls"
app:layout_constraintEnd_toEndOf="@id/call_screen_audio_ring_toggle"
app:layout_constraintStart_toStartOf="@id/call_screen_audio_ring_toggle"
app:layout_constraintTop_toBottomOf="@id/call_screen_audio_ring_toggle"
app:layout_constraintVertical_bias="0"
tools:visibility="visible" />
<ImageView
android:id="@+id/call_screen_end_call"
android:layout_width="56dp"
@@ -367,7 +406,7 @@
app:layout_constraintBottom_toTopOf="@id/call_screen_button_labels_barrier"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/call_screen_audio_mic_toggle"
app:layout_constraintStart_toEndOf="@id/call_screen_audio_ring_toggle"
app:srcCompat="@drawable/webrtc_call_screen_hangup"
tools:visibility="visible" />
@@ -397,7 +436,7 @@
android:layout_width="match_parent"
android:layout_height="1dp"
app:barrierDirection="top"
app:constraint_referenced_ids="call_screen_speaker_toggle_label,call_screen_camera_direction_toggle_label,call_screen_video_toggle_label,call_screen_audio_mic_toggle_label,call_screen_end_call_label" />
app:constraint_referenced_ids="call_screen_speaker_toggle_label,call_screen_camera_direction_toggle_label,call_screen_video_toggle_label,call_screen_audio_mic_toggle_label,call_screen_audio_ring_toggle_label,call_screen_end_call_label" />
<ImageView
android:id="@+id/call_screen_decline_call"
@@ -411,7 +450,7 @@
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/webrtc_call_screen_hangup"
tools:visibility="visible" />
tools:visibility="gone" />
<TextView
android:id="@+id/call_screen_decline_call_label"
@@ -424,7 +463,7 @@
app:layout_constraintEnd_toEndOf="@id/call_screen_decline_call"
app:layout_constraintStart_toStartOf="@id/call_screen_decline_call"
app:layout_constraintTop_toBottomOf="@id/call_screen_decline_call"
tools:visibility="visible" />
tools:visibility="gone" />
<ImageView
android:id="@+id/call_screen_answer_call"
@@ -438,7 +477,7 @@
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toEndOf="@id/call_screen_decline_call"
app:srcCompat="@drawable/webrtc_call_screen_answer"
tools:visibility="visible" />
tools:visibility="gone" />
<TextView
android:id="@+id/call_screen_answer_call_label"
@@ -451,7 +490,7 @@
app:layout_constraintEnd_toEndOf="@id/call_screen_answer_call"
app:layout_constraintStart_toStartOf="@id/call_screen_answer_call"
app:layout_constraintTop_toBottomOf="@id/call_screen_answer_call"
tools:visibility="visible" />
tools:visibility="gone" />
<ImageView
android:id="@+id/call_screen_answer_with_audio"
@@ -463,7 +502,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/webrtc_call_screen_answer_without_video"
tools:visibility="visible" />
tools:visibility="gone" />
<TextView
android:id="@+id/call_screen_answer_with_audio_label"
@@ -476,7 +515,7 @@
app:layout_constraintBottom_toTopOf="@id/call_screen_answer_call"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
tools:visibility="gone" />
<LinearLayout
android:id="@+id/call_screen_start_call_controls"
@@ -524,7 +563,7 @@
app:layout_constraintBottom_toTopOf="@id/call_screen_navigation_bar_guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />
tools:visibility="gone" />
<ViewStub
android:id="@+id/call_screen_group_call_speaker_hint"

View File

@@ -973,11 +973,13 @@
<string name="NotificationBarManager_signal_call_in_progress">Signal call in progress</string>
<string name="NotificationBarManager__establishing_signal_call">Establishing Signal call</string>
<string name="NotificationBarManager__incoming_signal_call">Incoming Signal call</string>
<string name="NotificationBarManager__incoming_signal_group_call">Incoming Signal group call</string>
<string name="NotificationBarManager__stopping_signal_call_service">Stopping Signal call service</string>
<string name="NotificationBarManager__deny_call">Deny call</string>
<string name="NotificationBarManager__decline_call">Decline call</string>
<string name="NotificationBarManager__answer_call">Answer call</string>
<string name="NotificationBarManager__end_call">End call</string>
<string name="NotificationBarManager__cancel_call">Cancel call</string>
<string name="NotificationBarManager__join_call">Join call</string>
<!-- NotificationsMegaphone -->
<string name="NotificationsMegaphone_turn_on_notifications">Turn on Notifications?</string>
@@ -1398,6 +1400,7 @@
<string name="WebRtcCallActivity__to_call_s_signal_needs_access_to_your_camera">To call %1$s, Signal needs access to your camera</string>
<string name="WebRtcCallActivity__signal_s">Signal %1$s</string>
<string name="WebRtcCallActivity__calling">Calling…</string>
<string name="WebRtcCallActivity__group_is_too_large_to_ring_the_participants">Group is too large to ring the participants.</string>
<!-- WebRtcCallView -->
<string name="WebRtcCallView__signal_call">Signal Call</string>
@@ -1412,6 +1415,35 @@
<string name="WebRtcCallView__joining">Joining…</string>
<string name="WebRtcCallView__disconnected">Disconnected</string>
<string name="WebRtcCallView__signal_will_ring_s">Signal will ring %1$s</string>
<string name="WebRtcCallView__signal_will_ring_s_and_s">Signal will ring %1$s and %2$s</string>
<plurals name="WebRtcCallView__signal_will_ring_s_s_and_d_others">
<item quantity="one">Signal will ring %1$s, %2$s, and %3$d other</item>
<item quantity="other">Signal will ring %1$s, %2$s, and %3$d others</item>
</plurals>
<string name="WebRtcCallView__s_will_be_notified">%1$s will be notified</string>
<string name="WebRtcCallView__s_and_s_will_be_notified">%1$s and %2$s will be notified</string>
<plurals name="WebRtcCallView__s_s_and_d_others_will_be_notified">
<item quantity="one">%1$s, %2$s, and %3$d other will be notified</item>
<item quantity="other">%1$s, %2$s, and %3$d others will be notified</item>
</plurals>
<string name="WebRtcCallView__ringing_s">Ringing %1$s</string>
<string name="WebRtcCallView__ringing_s_and_s">Ringing %1$s and %2$s</string>
<plurals name="WebRtcCallView__ringing_s_s_and_d_others">
<item quantity="one">Ringing %1$s, %2$s, and %3$d other</item>
<item quantity="other">Ringing %1$s, %2$s, and %3$d others</item>
</plurals>
<string name="WebRtcCallView__s_is_calling_you">%1$s is calling you</string>
<string name="WebRtcCallView__s_is_calling_you_and_s">%1$s is calling you and %2$s</string>
<string name="WebRtcCallView__s_is_calling_you_s_and_s">%1$s is calling you, %2$s, and %3$s</string>
<plurals name="WebRtcCallView__s_is_calling_you_s_s_and_d_others">
<item quantity="one">%1$s is calling you, %2$s, %3$s, and %4$d other</item>
<item quantity="other">%1$s is calling you, %2$s, %3$s, and %4$d others</item>
</plurals>
<string name="WebRtcCallView__no_one_else_is_here">No one else is here</string>
<string name="WebRtcCallView__s_is_in_this_call">%1$s is in this call</string>
<string name="WebRtcCallView__s_are_in_this_call">%1$s are in this call</string>
@@ -1427,6 +1459,7 @@
<string name="WebRtcCallView__speaker">Speaker</string>
<string name="WebRtcCallView__camera">Camera</string>
<string name="WebRtcCallView__mute">Mute</string>
<string name="WebRtcCallView__ring">Ring</string>
<string name="WebRtcCallView__end_call">End call</string>
<!-- CallParticipantsListDialog -->