diff --git a/app/src/main/java/org/linphone/activities/main/history/fragments/DetailCallLogFragment.kt b/app/src/main/java/org/linphone/activities/main/history/fragments/DetailCallLogFragment.kt index df9ca3e57..12a2d670a 100644 --- a/app/src/main/java/org/linphone/activities/main/history/fragments/DetailCallLogFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/history/fragments/DetailCallLogFragment.kt @@ -61,15 +61,17 @@ class DetailCallLogFragment : Fragment() { ViewModelProvider(this).get(SharedMainViewModel::class.java) } ?: throw Exception("Invalid Activity") - val callLog = sharedViewModel.selectedCallLog.value - callLog ?: return + val callLogGroup = sharedViewModel.selectedCallLogGroup.value + callLogGroup ?: return viewModel = ViewModelProvider( this, - CallLogViewModelFactory(callLog) + CallLogViewModelFactory(callLogGroup.lastCallLog) )[CallLogViewModel::class.java] binding.viewModel = viewModel + viewModel.relatedCallLogs.value = callLogGroup.callLogs + binding.setBackClickListener { findNavController().popBackStack() } diff --git a/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt b/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt index f4da3db1d..dab221378 100644 --- a/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt @@ -156,7 +156,7 @@ class MasterCallLogsFragment : MasterFragment() { adapter.selectedCallLogEvent.observe(viewLifecycleOwner, Observer { it.consume { callLog -> - sharedViewModel.selectedCallLog.value = callLog.lastCallLog + sharedViewModel.selectedCallLogGroup.value = callLog if (!resources.getBoolean(R.bool.isTablet)) { if (findNavController().currentDestination?.id == R.id.masterCallLogsFragment) { findNavController().navigate(R.id.action_masterCallLogsFragment_to_detailCallLogFragment) diff --git a/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt b/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt index 07824adbf..0b972a90f 100644 --- a/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt @@ -25,7 +25,6 @@ import androidx.lifecycle.ViewModelProvider import java.text.SimpleDateFormat import java.util.* import kotlin.collections.ArrayList -import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.contact.GenericContactViewModel import org.linphone.core.* @@ -86,14 +85,14 @@ class CallLogViewModel(val callLog: CallLog) : GenericContactViewModel(callLog.r } val duration: String by lazy { - val dateFormat = SimpleDateFormat("HH:mm:ss", Locale.getDefault()) + val dateFormat = SimpleDateFormat(if (callLog.duration >= 3600) "HH:mm:ss" else "mm:ss", Locale.getDefault()) val cal = Calendar.getInstance() cal[0, 0, 0, 0, 0] = callLog.duration dateFormat.format(cal.time) } val date: String by lazy { - TimestampUtils.toString(callLog.startDate) + TimestampUtils.toString(callLog.startDate, shortDate = false) } val startCallEvent: MutableLiveData> by lazy { @@ -108,6 +107,8 @@ class CallLogViewModel(val callLog: CallLog) : GenericContactViewModel(callLog.r val secureChatAllowed = contact.value?.friend?.getPresenceModelForUriOrTel(peerSipUri)?.hasCapability(FriendCapability.LimeX3Dh) ?: false + val relatedCallLogs = MutableLiveData>() + private val chatRoomListener = object : ChatRoomListenerStub() { override fun onStateChanged(chatRoom: ChatRoom, state: ChatRoom.State) { if (state == ChatRoom.State.Created) { @@ -146,9 +147,8 @@ class CallLogViewModel(val callLog: CallLog) : GenericContactViewModel(callLog.r fun getCallsHistory(): ArrayList { val callsHistory = ArrayList() - val logs = coreContext.core.getCallHistory(callLog.remoteAddress, coreContext.core.defaultProxyConfig?.identityAddress) - for (log in logs) { - callsHistory.add(CallLogViewModel(log)) + for (callLog in relatedCallLogs.value.orEmpty()) { + callsHistory.add(CallLogViewModel(callLog)) } return callsHistory } diff --git a/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt b/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt index 48e70f0d6..a9d8123b9 100644 --- a/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt @@ -21,6 +21,7 @@ package org.linphone.activities.main.viewmodels import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import org.linphone.activities.main.history.viewmodels.GroupedCallLogViewModel import org.linphone.contact.Contact import org.linphone.core.* import org.linphone.utils.Event @@ -30,7 +31,7 @@ class SharedMainViewModel : ViewModel() { /* Call history */ - val selectedCallLog = MutableLiveData() + val selectedCallLogGroup = MutableLiveData() /* Chat */ diff --git a/app/src/main/java/org/linphone/utils/TimestampUtils.kt b/app/src/main/java/org/linphone/utils/TimestampUtils.kt index 43063f2eb..4f9237255 100644 --- a/app/src/main/java/org/linphone/utils/TimestampUtils.kt +++ b/app/src/main/java/org/linphone/utils/TimestampUtils.kt @@ -79,7 +79,7 @@ class TimestampUtils { if (isSameYear(timestamp, timestampInSecs)) { // Remove the year part of the format dateFormat.applyPattern( - dateFormat.toPattern().replace("/?y+/?|\\s?y+\\s?".toRegex(), "") + dateFormat.toPattern().replace("/?y+/?|\\s?y+\\s?".toRegex(), if (shortDate) "" else " ") ) } diff --git a/app/src/main/res/layout/chat_message_list_cell.xml b/app/src/main/res/layout/chat_message_list_cell.xml index cb26dece7..0eddbb6d5 100644 --- a/app/src/main/res/layout/chat_message_list_cell.xml +++ b/app/src/main/res/layout/chat_message_list_cell.xml @@ -31,7 +31,7 @@ + android:text="@string/chat_message_forwarded" + tools:ignore="SmallSp" /> @@ -145,7 +146,7 @@ android:lineSpacingExtra="-1.7sp"/> - - + android:layout_centerHorizontal="true" + android:layout_centerVertical="true" /> - - - - - - - +