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.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) {
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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"
|
||||||
|
Reference in New Issue
Block a user