diff --git a/app/src/main/java/org/linphone/contacts/AbstractAvatarModel.kt b/app/src/main/java/org/linphone/contacts/AbstractAvatarModel.kt index 913f239c1..b9a2aed82 100644 --- a/app/src/main/java/org/linphone/contacts/AbstractAvatarModel.kt +++ b/app/src/main/java/org/linphone/contacts/AbstractAvatarModel.kt @@ -11,4 +11,6 @@ abstract class AbstractAvatarModel { val initials = MutableLiveData() val images = MutableLiveData>() + + val showConferenceIcon = MutableLiveData() } diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt index 0099a8c07..97ed38f23 100644 --- a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt @@ -112,7 +112,7 @@ class HistoryListFragment : AbstractTopBarFragment() { } }, { // onCopyNumberOrAddressToClipboard - val addressToCopy = model.displayedAddress + val addressToCopy = model.sipUri Log.i("$TAG Copying number [$addressToCopy] to clipboard") copyNumberOrAddressToClipboard(addressToCopy) }, diff --git a/app/src/main/java/org/linphone/ui/main/history/model/CallLogModel.kt b/app/src/main/java/org/linphone/ui/main/history/model/CallLogModel.kt index d42433e11..ab2ae0958 100644 --- a/app/src/main/java/org/linphone/ui/main/history/model/CallLogModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/model/CallLogModel.kt @@ -18,7 +18,9 @@ class CallLogModel @WorkerThread constructor(private val callLog: CallLog) { val address = if (callLog.dir == Dir.Outgoing) callLog.toAddress else callLog.fromAddress - val displayedAddress = address.asStringUriOnly() + val sipUri = address.asStringUriOnly() + + val displayedAddress: String val avatarModel: ContactAvatarModel @@ -32,6 +34,10 @@ class CallLogModel @WorkerThread constructor(private val callLog: CallLog) { var friendExists: Boolean = false init { + val clone = address.clone() + clone.clean() + displayedAddress = clone.asStringUriOnly() + val timestamp = timestamp val displayedDate = if (TimestampUtils.isToday(timestamp)) { TimestampUtils.timeToString(timestamp) @@ -50,6 +56,14 @@ class CallLogModel @WorkerThread constructor(private val callLog: CallLog) { } else { val fakeFriend = coreContext.core.createFriend() fakeFriend.address = address + + // Check if it is a conference + val conferenceInfo = coreContext.core.findConferenceInformationFromUri(address) + if (conferenceInfo != null) { + avatarModel.name.postValue(conferenceInfo.subject) + avatarModel.showConferenceIcon.postValue(true) + } + friendRefKey = null friendExists = false } diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/ContactHistoryViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/ContactHistoryViewModel.kt index 7445a2863..6be572025 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/ContactHistoryViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/ContactHistoryViewModel.kt @@ -93,6 +93,14 @@ class ContactHistoryViewModel @UiThread constructor() : ViewModel() { if (callLog != null) { val model = CallLogModel(callLog) address = model.address + + // Check if it is a conference + val conferenceInfo = coreContext.core.findConferenceInformationFromUri(address) + if (conferenceInfo != null) { + model.avatarModel.name.postValue(conferenceInfo.subject) + model.avatarModel.showConferenceIcon.postValue(true) + } + callLogModel.postValue(model) val peerAddress = if (callLog.dir == Call.Dir.Outgoing) callLog.toAddress else callLog.fromAddress diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryListViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryListViewModel.kt index e15a64894..d92ba0f2c 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryListViewModel.kt @@ -112,7 +112,6 @@ class HistoryListViewModel @UiThread constructor() : AbstractTopBarViewModel() { val list = arrayListOf() var count = 0 - // TODO? : Add support for call logs in magic search val account = LinphoneUtils.getDefaultAccount() val logs = account?.callLogs ?: coreContext.core.callLogs for (callLog in logs) { diff --git a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt index b2892899d..c9beb9c7d 100644 --- a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt +++ b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt @@ -290,6 +290,17 @@ private suspend fun loadContactPictureWithCoil( val context = imageView.context if (model != null) { + if (model.showConferenceIcon.value == true) { + imageView.load( + ResourcesCompat.getDrawable( + context.resources, + R.drawable.users_three, + context.theme + ) + ) + return@withContext + } + if (!skipTrust) { if (model.showTrust.value == true) { when (model.trust.value) { diff --git a/app/src/main/res/layout/history_contact_fragment.xml b/app/src/main/res/layout/history_contact_fragment.xml index 9c64f9e93..622bf44a5 100644 --- a/app/src/main/res/layout/history_contact_fragment.xml +++ b/app/src/main/res/layout/history_contact_fragment.xml @@ -114,9 +114,13 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" android:text="@{viewModel.callLogModel.avatarModel.name, default=`John Doe`}" android:textColor="@color/gray_main2_700" android:textSize="14sp" + android:maxLines="1" + android:ellipsize="end" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/avatar" /> @@ -126,9 +130,13 @@ android:id="@+id/address" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" android:text="@{viewModel.callLogModel.displayedAddress, default=`+33601020304`}" android:textColor="@color/gray_main2_700" android:textSize="14sp" + android:maxLines="1" + android:ellipsize="end" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/name" />