Renamed 'now' conferences as group calls, added group call button to group chat rooms

This commit is contained in:
Sylvain Berfini 2022-05-18 10:59:10 +02:00
parent 363322485e
commit 91dae25936
8 changed files with 77 additions and 40 deletions

View file

@ -96,6 +96,9 @@ class ChatRoomViewModel(val chatRoom: ChatRoom) : ViewModel(), ContactDataInterf
val chatUnreadCountTranslateY = MutableLiveData<Float>()
val groupCallAvailable: Boolean
get() = LinphoneUtils.isRemoteConferencingAvailable()
private var addressToCall: Address? = null
private val bounceAnimator: ValueAnimator by lazy {
@ -277,6 +280,29 @@ class ChatRoomViewModel(val chatRoom: ChatRoom) : ViewModel(), ContactDataInterf
}
}
fun startGroupCall() {
val conferenceScheduler = coreContext.core.createConferenceScheduler()
val conferenceInfo = Factory.instance().createConferenceInfo()
val localAddress = chatRoom.localAddress.clone()
localAddress.clean() // Remove GRUU
val addresses = Array(chatRoom.participants.size) {
index ->
chatRoom.participants[index].address
}
val localAccount = coreContext.core.accountList.find {
account ->
account.params.identityAddress?.weakEqual(localAddress) ?: false
}
conferenceInfo.organizer = localAddress
conferenceInfo.subject = subject.value
conferenceInfo.setParticipants(addresses)
conferenceScheduler.account = localAccount
// Will trigger the conference creation/update automatically
conferenceScheduler.info = conferenceInfo
}
fun updateLastMessageToDisplay() {
formatLastMessage(chatRoom.lastMessageInHistory)
}

View file

@ -71,7 +71,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical|left"
android:layout_weight="@{viewModel.oneToOneChatRoom ? 0.4f : 0.6f}"
android:layout_weight="0.4"
android:gravity="center_vertical|left"
android:orientation="vertical"
android:paddingLeft="15dp">
@ -114,6 +114,18 @@
android:visibility="@{viewModel.oneToOneChatRoom ? View.VISIBLE : View.GONE}"
android:src="@drawable/call_alt_start" />
<ImageView
android:onClick="@{() -> viewModel.startGroupCall()}"
android:contentDescription="@string/content_description_start_call"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.2"
android:background="?attr/button_background_drawable"
android:padding="7dp"
android:enabled="@{viewModel.groupCallAvailable}"
android:visibility="@{viewModel.oneToOneChatRoom ? View.GONE : View.VISIBLE}"
android:src="@drawable/icon_video_conf_new" />
<ImageView
android:id="@+id/menu"
android:visibility="@{viewModel.hideMenu() || chatSendingViewModel.isReadOnly ? View.GONE : View.VISIBLE}"

View file

@ -50,7 +50,7 @@
android:gravity="center"
android:orientation="horizontal"
style="@style/calls_list_header_font"
android:text="@string/conference_schedule_title"/>
android:text="@{viewModel.scheduleForLater ? @string/conference_schedule_title : @string/conference_group_call_title, default=@string/conference_group_call_title}"/>
<ImageView
android:onClick="@{nextClickListener}"
@ -97,7 +97,7 @@
android:inputType="text"
style="@style/conference_scheduling_font"
android:background="@drawable/shape_edittext_background"
android:hint="@string/conference_schedule_subject_hint"
android:hint="@{viewModel.scheduleForLater ? @string/conference_schedule_subject_hint : @string/conference_group_call_subject_hint, default=@string/conference_group_call_subject_hint}"
android:text="@={viewModel.subject}" />
</LinearLayout>
@ -289,31 +289,27 @@
</LinearLayout>
<com.google.android.material.checkbox.MaterialCheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/conference_schedule_send_invite_chat"
android:checked="@={viewModel.sendInviteViaChat, default=true}"
style="@style/conference_scheduling_font"/>
<com.google.android.material.checkbox.MaterialCheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:visibility="gone"
android:text="@string/conference_schedule_send_invite_email"
android:checked="@={viewModel.sendInviteViaEmail}"
style="@style/conference_scheduling_font"/>
</LinearLayout>
</LinearLayout>
<com.google.android.material.checkbox.MaterialCheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:text="@string/conference_schedule_send_invite_chat"
android:checked="@={viewModel.sendInviteViaChat, default=true}"
style="@style/conference_scheduling_font"/>
<com.google.android.material.checkbox.MaterialCheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:visibility="gone"
android:text="@string/conference_schedule_send_invite_email"
android:checked="@={viewModel.sendInviteViaEmail}"
style="@style/conference_scheduling_font"/>
<TextView
android:visibility="gone"
android:layout_width="wrap_content"

View file

@ -49,7 +49,7 @@
android:gravity="center"
android:orientation="horizontal"
style="@style/calls_list_header_font"
android:text="@string/conference_schedule_summary"/>
android:text="@{viewModel.scheduleForLater ? @string/conference_schedule_summary : @string/conference_group_call_summary, default=@string/conference_group_call_summary}"/>
<View
android:layout_width="0dp"
@ -269,9 +269,10 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
style="@style/conference_scheduling_font"
android:visibility="@{viewModel.scheduleForLater &amp;&amp; viewModel.sendInviteViaChat ? View.VISIBLE : View.GONE}"
android:text="@string/conference_schedule_send_invite_chat_summary"/>
<LinearLayout
@ -313,7 +314,7 @@
android:layout_marginBottom="10dp"
android:layout_gravity="center"
android:background="@drawable/shape_rect_orange_button"
android:text="@{viewModel.scheduleForLater ? @string/conference_schedule : @string/conference_schedule_create, default=@string/conference_schedule}"
android:text="@{viewModel.scheduleForLater ? @string/conference_schedule_start : @string/conference_group_call_create, default=@string/conference_group_call_create}"
style="@style/big_orange_button_font"/>
</LinearLayout>

View file

@ -245,7 +245,6 @@
<string name="chat_room_choose_conversation_for_text_sharing">Auswählen oder erstellen einer Konversation um den Text zu teilen</string>
<string name="chat_message_cant_open_file_in_app_dialog_message">Möchten Sie die Datei als Text öffnen oder sie (unverschlüsselt) in eine Anwendung eines Drittanbieters exportieren, falls verfügbar\?</string>
<string name="conference">Konferenz</string>
<string name="conference_schedule_later">Möchten Sie die Konferenz auf einen späteren Zeitpunkt planen\?</string>
<string name="conference_schedule_subject_title">Betreff</string>
<string name="conference_schedule_description_title">Beschreibung hinzufügen</string>
</resources>

View file

@ -668,8 +668,8 @@
<string name="content_description_create_conference">Créer une conférence</string>
<string name="content_description_encrypted_conference">La conférence sera chiffrée</string>
<string name="conference">Conférence</string>
<string name="conference_schedule_title">Démarrer une conférence</string>
<string name="conference_schedule_later">Voulez-vous la programmer pour plus tard \?</string>
<string name="conference_schedule_title">Programmer une conférence</string>
<string name="conference_schedule_later">Voulez-vous programmer une conférence pour plus tard ?</string>
<string name="conference_schedule_mandatory_field">Obligatoire</string>
<string name="conference_schedule_subject_title">Sujet</string>
<string name="conference_schedule_subject_hint">Sujet de la conférence</string>
@ -685,8 +685,7 @@
<string name="conference_schedule_encryption">Voulez-vous chiffrer la conférence \?</string>
<string name="conference_schedule_send_invite_chat_summary">L\'invitation va être envoyée depuis mon compte &appName;</string>
<string name="conference_schedule_participants_list">Liste des participants</string>
<string name="conference_schedule_create">Créer la conférence</string>
<string name="conference_schedule">Planifier une conférence</string>
<string name="conference_schedule_start">Planifier une conférence</string>
<string name="conference_schedule_address_copied_to_clipboard">L\'adresse de la conférence à été copiée dans le presse papier</string>
<string name="conference_schedule_info_not_sent_to_participant">Échec de l\'envoi de l\'invitation de conférence à un participant</string>
<string name="conference_paused_title">Vous êtes actuellement en dehors de la conférence.</string>
@ -719,4 +718,8 @@
<string name="conference_first_to_join">Vous êtes le premier à avoir rejoint la conférence</string>
<string name="conference_last_user">Tous les autres participants ont quitté la conférence</string>
<string name="conference_incoming_title">Appel de conférence entrant</string>
<string name="conference_group_call_title">Démarrer un appel de groupe</string>
<string name="conference_group_call_subject_hint">Sujet de l\'appel de groupe</string>
<string name="conference_group_call_summary">Informations de l\'appel de groupe</string>
<string name="conference_group_call_create">Démarrer l\'appel de groupe</string>
</resources>

View file

@ -596,8 +596,7 @@
<string name="chat_message_abort_removal">Прервать</string>
<string name="conference_schedule_participants_list">Список участников</string>
<string name="conference_schedule_summary">Информация конференции</string>
<string name="conference_schedule_create">Создать конференцию</string>
<string name="conference_schedule">Запланировать конференцию</string>
<string name="conference_schedule_start">Запланировать конференцию</string>
<string name="conference_schedule_address_copied_to_clipboard">Адрес конференции скопирован в буфер обмена</string>
<string name="conference_schedule_info_not_sent_to_participant">Не удалось отправить информацию о конференции участнику</string>
<string name="conference_paused_title">В настоящее время вы вне конференции.</string>
@ -649,8 +648,6 @@
<string name="conferences_settings_layout_title">Макет по умолчанию</string>
<string name="content_description_delete_conference">Удалить конференцию</string>
<string name="conference">Конференция</string>
<string name="conference_schedule_title">Начать конференцию</string>
<string name="conference_schedule_later">Вы хотите запланировать эту конференцию на потом\?</string>
<string name="conference_schedule_mandatory_field">Обязательно</string>
<string name="conference_schedule_subject_title">Тема</string>
<string name="conference_schedule_subject_hint">Тема конференции</string>

View file

@ -234,11 +234,13 @@
<!-- Conferencing -->
<string name="conference">Conference</string>
<string name="conference_schedule_title">Start a conference</string>
<string name="conference_schedule_later">Do you want to schedule this conference for later?</string>
<string name="conference_schedule_title">Schedule a conference</string>
<string name="conference_group_call_title">Start a group call</string>
<string name="conference_schedule_later">Do you want to schedule a conference for later?</string>
<string name="conference_schedule_mandatory_field">Mandatory</string>
<string name="conference_schedule_subject_title">Subject</string>
<string name="conference_schedule_subject_hint">Conference subject</string>
<string name="conference_group_call_subject_hint">Group call subject</string>
<string name="conference_schedule_address_title">Conference address</string>
<string name="conference_schedule_description_title">Add a description</string>
<string name="conference_schedule_description_hint">Description</string>
@ -253,8 +255,9 @@
<string name="conference_schedule_participants_list">Participants list</string>
<string name="conference_organizer">Organizer</string>
<string name="conference_schedule_summary">Conference info</string>
<string name="conference_schedule_create">Create conference</string>
<string name="conference_schedule">Schedule conference</string>
<string name="conference_group_call_summary">Group call info</string>
<string name="conference_schedule_start">Schedule conference</string>
<string name="conference_group_call_create">Start group call</string>
<string name="conference_schedule_address_copied_to_clipboard">Conference address copied into clipboard</string>
<string name="conference_schedule_info_not_sent_to_participant">Failed to send conference info to a participant</string>
<string name="conference_paused_title">You are currently out of the conference.</string>