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.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.extensions.* 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.PERMISSION_WRITE_CALL_LOG
import com.simplemobiletools.commons.helpers.SimpleContactsHelper import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.commons.views.MyRecyclerView
import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable
import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.helpers.KEY_PHONE import com.simplemobiletools.dialer.helpers.KEY_PHONE
import com.simplemobiletools.dialer.helpers.RecentsHelper 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 incomingCallIcon: Drawable
private lateinit var outgoingCallIcon: Drawable private lateinit var outgoingCallIcon: Drawable
private var fontSize = activity.getTextSize() private var fontSize = activity.getTextSize()
private val areMultipleSIMsAvailable = activity.areMultipleSIMsAvailable()
init { init {
initDrawables() initDrawables()
@ -178,6 +179,14 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize * 0.8f) 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) SimpleContactsHelper(context).loadContactImage(call.photoUri, item_recents_image, call.name)
val drawable = if (call.type == Calls.OUTGOING_TYPE) { 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:")) address = Uri.decode(address.substringAfter("tel:"))
label += " ($address)" label += " ($address)"
} }
val SIM = SIMAccount(index + 1, phoneAccount.accountHandle, label) val SIM = SIMAccount(index + 1, phoneAccount.accountHandle, label, address.substringAfter("tel:"))
SIMAccounts.add(SIM) SIMAccounts.add(SIM)
} }
return SIMAccounts 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.PERMISSION_READ_CALL_LOG
import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.overloads.times import com.simplemobiletools.commons.overloads.times
import com.simplemobiletools.dialer.extensions.getAvailableSIMCardLabels
import com.simplemobiletools.dialer.models.RecentCall import com.simplemobiletools.dialer.models.RecentCall
class RecentsHelper(private val context: Context) { class RecentsHelper(private val context: Context) {
@ -27,13 +28,19 @@ class RecentsHelper(private val context: Context) {
Calls.CACHED_PHOTO_URI, Calls.CACHED_PHOTO_URI,
Calls.DATE, Calls.DATE,
Calls.DURATION, 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" val sortOrder = "${Calls._ID} DESC LIMIT 100"
var previousRecentCallFrom = "" 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 id = cursor.getIntValue(Calls._ID)
val number = cursor.getStringValue(Calls.NUMBER) val number = cursor.getStringValue(Calls.NUMBER)
val name = cursor.getStringValue(Calls.CACHED_NAME) ?: 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 startTS = (cursor.getLongValue(Calls.DATE) / 1000L).toInt()
val duration = cursor.getIntValue(Calls.DURATION) val duration = cursor.getIntValue(Calls.DURATION)
val type = cursor.getIntValue(Calls.TYPE) val type = cursor.getIntValue(Calls.TYPE)
val accountAddress = cursor.getStringValue("phone_account_address")
val simID = numberToSimIDMap[accountAddress] ?: 1
val neighbourIDs = ArrayList<Int>() 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 we have 3 missed calls from the same number, show it just once
if ("$number$name" != previousRecentCallFrom) { if ("$number$name" != previousRecentCallFrom) {

View File

@ -1,4 +1,4 @@
package com.simplemobiletools.dialer.models 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, 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 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)

View File

@ -37,6 +37,33 @@
android:textSize="@dimen/bigger_text_size" android:textSize="@dimen/bigger_text_size"
tools:text="John Doe" /> tools:text="John Doe" />
<ImageView
android:id="@+id/item_recents_sim_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/item_recents_date_time"
android:layout_alignBottom="@+id/item_recents_date_time"
android:layout_toEndOf="@+id/item_recents_image"
android:alpha="0.6"
android:paddingTop="@dimen/tiny_margin"
android:paddingBottom="@dimen/tiny_margin"
android:src="@drawable/ic_sim_vector"
android:visibility="gone" />
<TextView
android:id="@+id/item_recents_sim_id"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignStart="@+id/item_recents_sim_image"
android:layout_alignTop="@+id/item_recents_sim_image"
android:layout_alignEnd="@+id/item_recents_sim_image"
android:layout_alignBottom="@+id/item_recents_sim_image"
android:gravity="center"
android:textColor="@color/md_grey_black"
android:textSize="@dimen/small_text_size"
android:visibility="gone"
tools:text="1" />
<ImageView <ImageView
android:id="@+id/item_recents_type" android:id="@+id/item_recents_type"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -44,7 +71,7 @@
android:layout_alignTop="@+id/item_recents_date_time" android:layout_alignTop="@+id/item_recents_date_time"
android:layout_alignBottom="@+id/item_recents_date_time" android:layout_alignBottom="@+id/item_recents_date_time"
android:layout_marginEnd="@dimen/tiny_margin" android:layout_marginEnd="@dimen/tiny_margin"
android:layout_toEndOf="@+id/item_recents_image" android:layout_toEndOf="@+id/item_recents_sim_image"
android:alpha="0.6" android:alpha="0.6"
android:paddingTop="@dimen/tiny_margin" android:paddingTop="@dimen/tiny_margin"
android:paddingBottom="@dimen/tiny_margin" android:paddingBottom="@dimen/tiny_margin"