diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt index 00d42ae78..db5f6368a 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt @@ -204,6 +204,7 @@ class ContactsManager @UiThread constructor(context: Context) { ContactAvatarModel(friend) } else { val fakeFriend = coreContext.core.createFriend() + fakeFriend.name = LinphoneUtils.getDisplayName(address) fakeFriend.address = clone ContactAvatarModel(fakeFriend) } diff --git a/app/src/main/java/org/linphone/ui/main/contacts/model/ContactAvatarModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactAvatarModel.kt index 52134c221..c67a79079 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/model/ContactAvatarModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactAvatarModel.kt @@ -41,7 +41,7 @@ class ContactAvatarModel @WorkerThread constructor(val friend: Friend) : Abstrac private const val TAG = "[Contact Avatar Model]" } - val id = friend.refKey + val id = friend.refKey ?: friend.name val starred = friend.starred diff --git a/app/src/main/java/org/linphone/ui/main/history/model/CallLogHistoryModel.kt b/app/src/main/java/org/linphone/ui/main/history/model/CallLogHistoryModel.kt index e0a30232a..804ab2c0f 100644 --- a/app/src/main/java/org/linphone/ui/main/history/model/CallLogHistoryModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/model/CallLogHistoryModel.kt @@ -3,9 +3,11 @@ package org.linphone.ui.main.history.model import androidx.annotation.IntegerRes import androidx.annotation.WorkerThread import androidx.lifecycle.MutableLiveData +import org.linphone.R import org.linphone.core.Call import org.linphone.core.Call.Dir import org.linphone.core.CallLog +import org.linphone.utils.AppUtils import org.linphone.utils.LinphoneUtils import org.linphone.utils.TimestampUtils @@ -28,9 +30,9 @@ class CallLogHistoryModel @WorkerThread constructor(val callLog: CallLog) { val startDate = callLog.startDate val date = if (TimestampUtils.isToday(startDate)) { - "Aujourd'hui" + AppUtils.getString(R.string.today) } else if (TimestampUtils.isYesterday(startDate)) { - "Hier" + AppUtils.getString(R.string.yesterday) } else { TimestampUtils.dateToString(callLog.startDate) } 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 ab2ae0958..69f0087a4 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 @@ -5,13 +5,20 @@ import androidx.annotation.UiThread import androidx.annotation.WorkerThread import androidx.lifecycle.MutableLiveData import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.R import org.linphone.core.Call.Dir import org.linphone.core.CallLog +import org.linphone.core.tools.Log import org.linphone.ui.main.contacts.model.ContactAvatarModel +import org.linphone.utils.AppUtils import org.linphone.utils.LinphoneUtils import org.linphone.utils.TimestampUtils class CallLogModel @WorkerThread constructor(private val callLog: CallLog) { + companion object { + private const val TAG = "[CallLog Model]" + } + val id = callLog.callId ?: callLog.refKey val timestamp = callLog.startDate @@ -34,39 +41,41 @@ 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) } else if (TimestampUtils.isYesterday(timestamp)) { - "Hier" + AppUtils.getString(R.string.yesterday) } else { TimestampUtils.dateToString(timestamp) } dateTime.postValue(displayedDate) - val friend = coreContext.contactsManager.findContactByAddress(address) - avatarModel = coreContext.contactsManager.getContactAvatarModelForAddress(address) - if (friend != null) { - friendRefKey = friend.refKey - friendExists = true - } else { + if (callLog.wasConference()) { 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) + fakeFriend.name = conferenceInfo.subject + } else { + fakeFriend.name = LinphoneUtils.getDisplayName(address) + Log.w( + "$TAG Call log was conference but failed to find matching conference info from it's URI!" + ) } + avatarModel = ContactAvatarModel(fakeFriend) + avatarModel.showConferenceIcon.postValue(true) friendRefKey = null friendExists = false + } else { + avatarModel = coreContext.contactsManager.getContactAvatarModelForAddress(address) + val friend = avatarModel.friend + friendRefKey = friend.refKey + friendExists = !friendRefKey.isNullOrEmpty() } + displayedAddress = avatarModel.friend.address?.asStringUriOnly() ?: address.asStringUriOnly() iconResId.postValue(LinphoneUtils.getCallIconResId(callLog.status, callLog.dir)) } diff --git a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt index d222c41b9..7e3bfa76b 100644 --- a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt +++ b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt @@ -345,7 +345,7 @@ private suspend fun loadContactPictureWithCoil( imageView.load( ResourcesCompat.getDrawable( context.resources, - R.drawable.users_three, + R.drawable.inset_users_three, context.theme ) ) @@ -419,7 +419,7 @@ private suspend fun loadContactPictureWithCoil( imageView.load( ResourcesCompat.getDrawable( context.resources, - R.drawable.user_circle, + R.drawable.inset_user_circle, context.theme ) ) diff --git a/app/src/main/res/drawable/inset_user_circle.xml b/app/src/main/res/drawable/inset_user_circle.xml new file mode 100644 index 000000000..f2a72e408 --- /dev/null +++ b/app/src/main/res/drawable/inset_user_circle.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/inset_users_three.xml b/app/src/main/res/drawable/inset_users_three.xml new file mode 100644 index 000000000..274eb8524 --- /dev/null +++ b/app/src/main/res/drawable/inset_users_three.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/account_profile_fragment.xml b/app/src/main/res/layout/account_profile_fragment.xml index 960498ffa..08d52b777 100644 --- a/app/src/main/res/layout/account_profile_fragment.xml +++ b/app/src/main/res/layout/account_profile_fragment.xml @@ -5,6 +5,7 @@ + @@ -101,7 +102,8 @@ android:layout_width="@dimen/avatar_presence_badge_big_size" android:layout_height="@dimen/avatar_presence_badge_big_size" android:layout_marginStart="@dimen/avatar_presence_badge_big_end_margin" - android:src="@drawable/trusted" + android:src="@{viewModel.accountModel.trust == SecurityLevel.Safe ? @drawable/trusted : @drawable/not_trusted, default=@drawable/trusted}" + android:visibility="@{viewModel.accountModel.showTrust ? View.VISIBLE : View.GONE}" app:layout_constraintStart_toStartOf="@id/avatar" app:layout_constraintBottom_toBottomOf="@id/avatar"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 72c34d034..fa6951c82 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -47,6 +47,8 @@ next Start Required + Today + Yesterday %s selected