diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt index 72571e08..a3a42267 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt @@ -11,12 +11,12 @@ import com.bumptech.glide.Glide import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.extensions.* -import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALL_LOG import com.simplemobiletools.commons.helpers.SimpleContactsHelper import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.activities.SimpleActivity +import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.helpers.KEY_PHONE import com.simplemobiletools.dialer.helpers.RecentsHelper @@ -31,6 +31,7 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList { address = Uri.decode(address.substringAfter("tel:")) label += " ($address)" } - val SIM = SIMAccount(index + 1, phoneAccount.accountHandle, label) + val SIM = SIMAccount(index + 1, phoneAccount.accountHandle, label, address.substringAfter("tel:")) SIMAccounts.add(SIM) } return SIMAccounts } + +@SuppressLint("MissingPermission") +fun Context.areMultipleSIMsAvailable() = telecomManager.callCapablePhoneAccounts.size > 1 diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt index d01541e1..aec3ee6f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt @@ -7,6 +7,7 @@ import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.overloads.times +import com.simplemobiletools.dialer.extensions.getAvailableSIMCardLabels import com.simplemobiletools.dialer.models.RecentCall class RecentsHelper(private val context: Context) { @@ -27,13 +28,19 @@ class RecentsHelper(private val context: Context) { Calls.CACHED_PHOTO_URI, Calls.DATE, Calls.DURATION, - Calls.TYPE + Calls.TYPE, + "phone_account_address" ) + val numberToSimIDMap = HashMap() + context.getAvailableSIMCardLabels().forEach { + numberToSimIDMap[it.phoneNumber] = it.id + } + val sortOrder = "${Calls._ID} DESC LIMIT 100" var previousRecentCallFrom = "" - context.queryCursor(uri, projection, sortOrder = sortOrder) { cursor -> + context.queryCursor(uri, projection, sortOrder = sortOrder, showErrors = true) { cursor -> val id = cursor.getIntValue(Calls._ID) val number = cursor.getStringValue(Calls.NUMBER) val name = cursor.getStringValue(Calls.CACHED_NAME) ?: number @@ -41,8 +48,10 @@ class RecentsHelper(private val context: Context) { val startTS = (cursor.getLongValue(Calls.DATE) / 1000L).toInt() val duration = cursor.getIntValue(Calls.DURATION) val type = cursor.getIntValue(Calls.TYPE) + val accountAddress = cursor.getStringValue("phone_account_address") + val simID = numberToSimIDMap[accountAddress] ?: 1 val neighbourIDs = ArrayList() - val recentCall = RecentCall(id, number, name, photoUri, startTS, duration, type, neighbourIDs) + val recentCall = RecentCall(id, number, name, photoUri, startTS, duration, type, neighbourIDs, simID) // if we have 3 missed calls from the same number, show it just once if ("$number$name" != previousRecentCallFrom) { diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt index bdfd8d6b..04107a20 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt @@ -1,4 +1,4 @@ package com.simplemobiletools.dialer.models data class RecentCall(var id: Int, var phoneNumber: String, var name: String, var photoUri: String, var startTS: Int, var duration: Int, var type: Int, - var neighbourIDs: ArrayList) + var neighbourIDs: ArrayList, val simID: Int) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/models/SIMAccount.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/models/SIMAccount.kt index ab4bdc0a..168f6adb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/models/SIMAccount.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/models/SIMAccount.kt @@ -2,4 +2,4 @@ package com.simplemobiletools.dialer.models import android.telecom.PhoneAccountHandle -data class SIMAccount(val id: Int, val handle: PhoneAccountHandle, val label: String) +data class SIMAccount(val id: Int, val handle: PhoneAccountHandle, val label: String, val phoneNumber: String) diff --git a/app/src/main/res/layout/item_recent_call.xml b/app/src/main/res/layout/item_recent_call.xml index 0adf02a3..62dae7bd 100644 --- a/app/src/main/res/layout/item_recent_call.xml +++ b/app/src/main/res/layout/item_recent_call.xml @@ -37,6 +37,33 @@ android:textSize="@dimen/bigger_text_size" tools:text="John Doe" /> + + + +