show which SIM was used at the Recents tab

This commit is contained in:
tibbi
2020-05-12 11:34:21 +02:00
parent 9d87e8e934
commit ba34830449
6 changed files with 56 additions and 8 deletions

View File

@ -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<Re
private lateinit var incomingCallIcon: Drawable
private lateinit var outgoingCallIcon: Drawable
private var fontSize = activity.getTextSize()
private val areMultipleSIMsAvailable = activity.areMultipleSIMsAvailable()
init {
initDrawables()
@ -178,6 +179,14 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize * 0.8f)
}
item_recents_sim_image.beVisibleIf(areMultipleSIMsAvailable)
item_recents_sim_id.beVisibleIf(areMultipleSIMsAvailable)
if (areMultipleSIMsAvailable) {
item_recents_sim_image.applyColorFilter(textColor)
item_recents_sim_id.setTextColor(textColor.getContrastColor())
item_recents_sim_id.text = call.simID.toString()
}
SimpleContactsHelper(context).loadContactImage(call.photoUri, item_recents_image, call.name)
val drawable = if (call.type == Calls.OUTGOING_TYPE) {

View File

@ -23,8 +23,11 @@ fun Context.getAvailableSIMCardLabels(): ArrayList<SIMAccount> {
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

View File

@ -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<String, Int>()
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<Int>()
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) {

View File

@ -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<Int>)
var neighbourIDs: ArrayList<Int>, val simID: Int)

View File

@ -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)