mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-06-05 21:49:23 +02:00
show which SIM was used at the Recents tab
This commit is contained in:
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user