diff --git a/app/src/main/java/org/linphone/ui/call/adapter/CallsListAdapter.kt b/app/src/main/java/org/linphone/ui/call/adapter/CallsListAdapter.kt index bd0d08654..e87ede7b4 100644 --- a/app/src/main/java/org/linphone/ui/call/adapter/CallsListAdapter.kt +++ b/app/src/main/java/org/linphone/ui/call/adapter/CallsListAdapter.kt @@ -28,12 +28,13 @@ import androidx.lifecycle.findViewTreeLifecycleOwner import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView +import org.linphone.BR.showTransferIcon import org.linphone.R import org.linphone.databinding.CallListCellBinding import org.linphone.ui.call.model.CallModel import org.linphone.utils.Event -class CallsListAdapter : +class CallsListAdapter(private val showTransferIconInsteadOfCallState: Boolean = false) : ListAdapter(CallDiffCallback()) { var selectedAdapterPosition = -1 @@ -55,6 +56,7 @@ class CallsListAdapter : val viewHolder = ViewHolder(binding) binding.apply { lifecycleOwner = parent.findViewTreeLifecycleOwner() + showTransferIcon = showTransferIconInsteadOfCallState setOnClickListener { callClickedEvent.value = Event(model!!) diff --git a/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt index 660fbee3f..fd10c345e 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt @@ -228,6 +228,7 @@ class NewCallFragment : GenericCallFragment() { override fun onPause() { super.onPause() + viewModel.searchFilter.value = "" numberOrAddressPickerDialog?.dismiss() numberOrAddressPickerDialog = null } diff --git a/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt index 5fc4193fa..a2c73f30d 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt @@ -87,7 +87,7 @@ class TransferCallFragment : GenericCallFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - callsAdapter = CallsListAdapter() + callsAdapter = CallsListAdapter(showTransferIconInsteadOfCallState = true) contactsAdapter = ConversationsContactsAndSuggestionsListAdapter() } @@ -249,6 +249,7 @@ class TransferCallFragment : GenericCallFragment() { override fun onPause() { super.onPause() + viewModel.searchFilter.value = "" numberOrAddressPickerDialog?.dismiss() numberOrAddressPickerDialog = null } diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt index 9b5234a90..4bb10d33a 100644 --- a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt @@ -866,6 +866,8 @@ class CurrentCallViewModel isRecording.postValue(recording) if (recording) { showRecordingToast() + } else { + showGreenToast(R.string.call_has_been_recorded, R.drawable.record_fill) } } } diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt index 02935e759..9198718a8 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt @@ -548,6 +548,26 @@ open class ConversationFragment : SlidingPaneChildFragment() { } } } + + sharedViewModel.textToShareFromIntent.observe(viewLifecycleOwner) { text -> + if (text.isNotEmpty() && sharedViewModel.displayedChatRoom != null) { + Log.i("$TAG Found text to share from intent") + sendMessageViewModel.textToSend.value = text + + sharedViewModel.textToShareFromIntent.value = "" + } + } + + sharedViewModel.filesToShareFromIntent.observe(viewLifecycleOwner) { files -> + if (files.isNotEmpty() && sharedViewModel.displayedChatRoom != null) { + Log.i("$TAG Found [${files.size}] files to share from intent") + for (path in files) { + sendMessageViewModel.addAttachments(arrayListOf(path)) + } + + sharedViewModel.filesToShareFromIntent.value = arrayListOf() + } + } } } } @@ -1001,26 +1021,6 @@ open class ConversationFragment : SlidingPaneChildFragment() { } } - sharedViewModel.textToShareFromIntent.observe(viewLifecycleOwner) { text -> - if (text.isNotEmpty() && sharedViewModel.displayedChatRoom != null) { - Log.i("$TAG Found text to share from intent") - sendMessageViewModel.textToSend.value = text - - sharedViewModel.textToShareFromIntent.value = "" - } - } - - sharedViewModel.filesToShareFromIntent.observe(viewLifecycleOwner) { files -> - if (files.isNotEmpty()) { - Log.i("$TAG Found [${files.size}] files to share from intent") - for (path in files) { - sendMessageViewModel.addAttachments(arrayListOf(path)) - } - - sharedViewModel.filesToShareFromIntent.value = arrayListOf() - } - } - sharedViewModel.forceRefreshConversationInfoEvent.observe(viewLifecycleOwner) { it.consume { Log.i("$TAG Force refreshing conversation info") diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/LdapViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/LdapViewModel.kt index 8478321a9..9469063cd 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/LdapViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/LdapViewModel.kt @@ -212,6 +212,7 @@ class LdapViewModel : GenericViewModel() { core.addLdap(ldap) Log.i("$TAG New LDAP config created") } + showGreenToast(R.string.settings_contacts_ldap_saved_toast, R.drawable.check) ldapServerOperationSuccessfulEvent.postValue(Event(true)) } catch (e: Exception) { Log.e("$TAG Exception while creating LDAP: $e") diff --git a/app/src/main/res/layout-land/call_media_encryption_stats_bottom_sheet.xml b/app/src/main/res/layout-land/call_media_encryption_stats_bottom_sheet.xml index ed9cfa403..6b43d9184 100644 --- a/app/src/main/res/layout-land/call_media_encryption_stats_bottom_sheet.xml +++ b/app/src/main/res/layout-land/call_media_encryption_stats_bottom_sheet.xml @@ -142,7 +142,7 @@ android:layout_height="wrap_content" android:layout_margin="15dp" android:text="@string/call_do_zrtp_sas_validation_again" - android:visibility="@{model.isMediaEncryptionZrtp ? View.VISIBLE : View.GONE}" + android:visibility="@{model.isMediaEncryptionZrtp && !viewModel.conferenceModel.isCurrentCallInConference() ? View.VISIBLE : View.GONE}" app:layout_columnSpan="2" app:layout_gravity="center_horizontal"/> diff --git a/app/src/main/res/layout-land/meetings_list_fragment.xml b/app/src/main/res/layout-land/meetings_list_fragment.xml index 61f7f0e05..5b8d7098b 100644 --- a/app/src/main/res/layout-land/meetings_list_fragment.xml +++ b/app/src/main/res/layout-land/meetings_list_fragment.xml @@ -32,6 +32,12 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + + + + + android:visibility="@{model.isMediaEncryptionZrtp && !viewModel.conferenceModel.isCurrentCallInConference() ? View.VISIBLE : View.GONE}"/> diff --git a/app/src/main/res/layout/chat_info_fragment.xml b/app/src/main/res/layout/chat_info_fragment.xml index 5dd2ec24f..a5a2315f7 100644 --- a/app/src/main/res/layout/chat_info_fragment.xml +++ b/app/src/main/res/layout/chat_info_fragment.xml @@ -352,7 +352,7 @@ android:onClick="@{() -> viewModel.toggleParticipantsExpand()}" android:padding="10dp" android:text="@{viewModel.participantsLabel, default=@string/conversation_info_participants_list_title}" - android:visibility="@{viewModel.isGroup ? View.VISIBLE : View.GONE}" + android:visibility="@{viewModel.isGroup && !viewModel.isReadOnly ? View.VISIBLE : View.GONE}" android:background="@drawable/squircle_transparent_button_background" app:layout_constraintWidth_max="@dimen/section_max_width" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/meeting_edit_fragment.xml b/app/src/main/res/layout/meeting_edit_fragment.xml index 3b4044fec..5a8115d2d 100644 --- a/app/src/main/res/layout/meeting_edit_fragment.xml +++ b/app/src/main/res/layout/meeting_edit_fragment.xml @@ -259,7 +259,7 @@ android:text="@={viewModel.description}" android:textSize="14sp" android:textColor="?attr/color_main2_600" - android:inputType="text|textCapSentences" + android:inputType="text|textCapSentences|textMultiLine" android:drawableStart="@drawable/file_text" android:drawablePadding="8dp" android:drawableTint="?attr/color_main2_600" diff --git a/app/src/main/res/layout/meeting_schedule_fragment.xml b/app/src/main/res/layout/meeting_schedule_fragment.xml index 85c6e05a3..25c8a781d 100644 --- a/app/src/main/res/layout/meeting_schedule_fragment.xml +++ b/app/src/main/res/layout/meeting_schedule_fragment.xml @@ -397,7 +397,7 @@ android:text="@={viewModel.description}" android:textSize="14sp" android:textColor="?attr/color_main2_600" - android:inputType="text|textCapSentences" + android:inputType="text|textCapSentences|textMultiLine" android:drawableStart="@drawable/file_text" android:drawablePadding="8dp" android:drawableTint="?attr/color_main2_600" diff --git a/app/src/main/res/layout/meetings_list_fragment.xml b/app/src/main/res/layout/meetings_list_fragment.xml index 6cd498242..d24b20826 100644 --- a/app/src/main/res/layout/meetings_list_fragment.xml +++ b/app/src/main/res/layout/meetings_list_fragment.xml @@ -33,6 +33,12 @@ android:layout_height="match_parent" android:background="?attr/color_main1_500"> + + + + + + Attributs de nom Attributs SIP Domaine SIP + Configuration LDAP sauvegardée Une erreur s\'est produite, la configuration LDAP n\'a pas été sauvegardée ! Tous les champs doivent être remplis Réunions @@ -712,6 +713,7 @@ Mettre en pause Reprendre Enregistrer + Arrêter l\'enregistrement Raccrocher Décliner Décrocher @@ -734,6 +736,7 @@ Appel non chiffré Liste des appels L\'appel est enregistré + Enregistrement sauvegardé %s enregistre l\'appel %s appels %s appels en pause diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bd5cedc2c..597d9d55b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -308,6 +308,7 @@ Name attributes SIP attributes SIP domain + LDAP server saved A error occurred, LDAP server not saved! All fields must be filled Meetings @@ -755,6 +756,7 @@ Pause Resume Record + Stop recording Hang up Decline Answer @@ -777,6 +779,7 @@ Call is not encrypted Calls list Call is being recorded + Call recording has been saved %s is recording %s calls %s paused calls