From 8be39a68717afcfb4435c00d61299acc8ca95279 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 16 Aug 2023 16:39:50 +0200 Subject: [PATCH] Updated list of call log icon depending on status and dir + text color --- .../main/calls/model/CallLogHistoryModel.kt | 11 +++++++ .../ui/main/calls/model/CallLogModel.kt | 9 ++++- .../java/org/linphone/utils/LinphoneUtils.kt | 33 +++++++++++++++++++ .../res/drawable/incoming_call_missed.xml | 13 ++++++++ ...bounced.xml => incoming_call_rejected.xml} | 0 .../res/drawable/outgoing_call_missed.xml | 13 ++++++++ ...bounced.xml => outgoing_call_rejected.xml} | 0 .../res/layout/call_history_list_cell.xml | 3 +- app/src/main/res/layout/call_list_cell.xml | 2 +- 9 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/drawable/incoming_call_missed.xml rename app/src/main/res/drawable/{incoming_call_bounced.xml => incoming_call_rejected.xml} (100%) create mode 100644 app/src/main/res/drawable/outgoing_call_missed.xml rename app/src/main/res/drawable/{outgoing_call_bounced.xml => outgoing_call_rejected.xml} (100%) diff --git a/app/src/main/java/org/linphone/ui/main/calls/model/CallLogHistoryModel.kt b/app/src/main/java/org/linphone/ui/main/calls/model/CallLogHistoryModel.kt index b376019aa..a672bedc5 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/model/CallLogHistoryModel.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/model/CallLogHistoryModel.kt @@ -1,17 +1,25 @@ package org.linphone.ui.main.calls.model +import androidx.annotation.IntegerRes import androidx.lifecycle.MutableLiveData +import org.linphone.core.Call import org.linphone.core.Call.Dir import org.linphone.core.CallLog +import org.linphone.utils.LinphoneUtils import org.linphone.utils.TimestampUtils class CallLogHistoryModel(callLog: CallLog) { val isOutgoing = MutableLiveData() + val isSuccessful = MutableLiveData() + val dateTime = MutableLiveData() val duration = MutableLiveData() + @IntegerRes + val iconResId = MutableLiveData() + init { // Core thread isOutgoing.postValue(callLog.dir == Dir.Outgoing) @@ -30,5 +38,8 @@ class CallLogHistoryModel(callLog: CallLog) { duration.postValue( TimestampUtils.durationToString(callLog.duration) ) + + isSuccessful.postValue(callLog.status == Call.Status.Success) + iconResId.postValue(LinphoneUtils.getIconResId(callLog.status, callLog.dir)) } } diff --git a/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt b/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt index 5defbeb76..3bc1d0980 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt @@ -1,13 +1,15 @@ package org.linphone.ui.main.calls.model +import androidx.annotation.IntegerRes import androidx.lifecycle.MutableLiveData import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.core.Call.Dir import org.linphone.core.CallLog import org.linphone.ui.main.contacts.model.ContactAvatarModel +import org.linphone.utils.LinphoneUtils import org.linphone.utils.TimestampUtils -class CallLogModel(val callLog: CallLog) { +class CallLogModel(private val callLog: CallLog) { val id = callLog.callId ?: callLog.refKey val address = if (callLog.dir == Dir.Outgoing) callLog.remoteAddress else callLog.fromAddress @@ -18,6 +20,9 @@ class CallLogModel(val callLog: CallLog) { val isOutgoing = MutableLiveData() + @IntegerRes + val iconResId = MutableLiveData() + val dateTime = MutableLiveData() init { @@ -42,6 +47,8 @@ class CallLogModel(val callLog: CallLog) { fakeFriend.address = address avatarModel = ContactAvatarModel(fakeFriend) } + + iconResId.postValue(LinphoneUtils.getIconResId(callLog.status, callLog.dir)) } fun delete() { diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 26c796fe1..ae91a2a57 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -19,11 +19,15 @@ */ package org.linphone.utils +import androidx.annotation.IntegerRes import androidx.emoji2.text.EmojiCompat import java.util.Locale import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.R import org.linphone.core.Address import org.linphone.core.Call +import org.linphone.core.Call.Dir +import org.linphone.core.Call.Status import org.linphone.core.ChatRoom import org.linphone.core.tools.Log @@ -93,6 +97,35 @@ class LinphoneUtils { } } + @IntegerRes + fun getIconResId(callStatus: Status, callDir: Dir): Int { + return when (callStatus) { + Status.Missed -> { + if (callDir == Dir.Outgoing) { + R.drawable.outgoing_call_missed + } else { + R.drawable.incoming_call_missed + } + } + + Status.Success -> { + if (callDir == Dir.Outgoing) { + R.drawable.outgoing_call + } else { + R.drawable.incoming_call + } + } + + else -> { + if (callDir == Dir.Outgoing) { + R.drawable.outgoing_call_rejected + } else { + R.drawable.incoming_call_rejected + } + } + } + } + private fun getChatRoomId(localAddress: Address, remoteAddress: Address): String { val localSipUri = localAddress.clone() localSipUri.clean() diff --git a/app/src/main/res/drawable/incoming_call_missed.xml b/app/src/main/res/drawable/incoming_call_missed.xml new file mode 100644 index 000000000..e9a9720e7 --- /dev/null +++ b/app/src/main/res/drawable/incoming_call_missed.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/incoming_call_bounced.xml b/app/src/main/res/drawable/incoming_call_rejected.xml similarity index 100% rename from app/src/main/res/drawable/incoming_call_bounced.xml rename to app/src/main/res/drawable/incoming_call_rejected.xml diff --git a/app/src/main/res/drawable/outgoing_call_missed.xml b/app/src/main/res/drawable/outgoing_call_missed.xml new file mode 100644 index 000000000..b1be1cfed --- /dev/null +++ b/app/src/main/res/drawable/outgoing_call_missed.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/outgoing_call_bounced.xml b/app/src/main/res/drawable/outgoing_call_rejected.xml similarity index 100% rename from app/src/main/res/drawable/outgoing_call_bounced.xml rename to app/src/main/res/drawable/outgoing_call_rejected.xml diff --git a/app/src/main/res/layout/call_history_list_cell.xml b/app/src/main/res/layout/call_history_list_cell.xml index 87d495152..b4b4fe113 100644 --- a/app/src/main/res/layout/call_history_list_cell.xml +++ b/app/src/main/res/layout/call_history_list_cell.xml @@ -24,7 +24,7 @@ android:layout_height="16dp" android:layout_marginTop="20dp" android:layout_marginStart="2dp" - android:src="@{model.isOutgoing() ? @drawable/outgoing_call : @drawable/incoming_call, default=@drawable/outgoing_call}" + android:src="@{model.iconResId, default=@drawable/outgoing_call}" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -51,6 +51,7 @@ android:gravity="center" android:text="@{model.dateTime, default=`13 aout 2023 | 19:47`}" android:textSize="12sp" + android:textColor="@{model.isSuccessful ? @color/gray_9 : @color/red_danger, default=@color/gray_9}" app:layout_constraintStart_toEndOf="@id/call_status" app:layout_constraintTop_toBottomOf="@id/direction_label" app:layout_constraintBottom_toTopOf="@id/separator"/> diff --git a/app/src/main/res/layout/call_list_cell.xml b/app/src/main/res/layout/call_list_cell.xml index 14f27e112..f660dfd7a 100644 --- a/app/src/main/res/layout/call_list_cell.xml +++ b/app/src/main/res/layout/call_list_cell.xml @@ -67,7 +67,7 @@ android:layout_width="12dp" android:layout_height="12dp" android:layout_marginBottom="10dp" - android:src="@{model.isOutgoing() ? @drawable/outgoing_call : @drawable/incoming_call, default=@drawable/outgoing_call}" + android:src="@{model.iconResId, default=@drawable/outgoing_call}" app:layout_constraintStart_toStartOf="@id/name" app:layout_constraintTop_toBottomOf="@id/name" app:layout_constraintBottom_toTopOf="@id/separator" />