allow viewing contact details from call log

This commit is contained in:
Pavel Poley 2022-06-03 17:09:50 +03:00
parent 7329a9376a
commit 2c128caf68
5 changed files with 40 additions and 4 deletions

View File

@ -47,6 +47,7 @@ class MainActivity : SimpleActivity() {
private var searchMenuItem: MenuItem? = null
private var storedShowTabs = 0
private var searchQuery = ""
var cachedContacts = ArrayList<SimpleContact>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -491,4 +492,9 @@ class MainActivity : SimpleActivity() {
}
}
}
fun cacheContacts(contacts: List<SimpleContact>) {
cachedContacts.clear()
cachedContacts.addAll(contacts)
}
}

View File

@ -13,14 +13,13 @@ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.views.MyRecyclerView
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.MainActivity
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.dialogs.ShowGroupedCallsDialog
import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable
import com.simplemobiletools.dialer.extensions.callContactWithSim
import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.extensions.startCallIntent
import com.simplemobiletools.dialer.extensions.*
import com.simplemobiletools.dialer.helpers.RecentsHelper
import com.simplemobiletools.dialer.interfaces.RefreshItemsListener
import com.simplemobiletools.dialer.models.RecentCall
@ -61,6 +60,7 @@ class RecentCallsAdapter(
findItem(R.id.cab_add_number).isVisible = isOneItemSelected
findItem(R.id.cab_copy_number).isVisible = isOneItemSelected
findItem(R.id.cab_show_call_details).isVisible = isOneItemSelected
findItem(R.id.cab_view_details).isVisible = isOneItemSelected && findContactByCall(selectedItems.first()) != null
}
}
@ -80,6 +80,7 @@ class RecentCallsAdapter(
R.id.cab_copy_number -> copyNumber()
R.id.cab_remove -> askConfirmRemove()
R.id.cab_select_all -> selectAll()
R.id.cab_view_details -> launchContactDetailsIntent(findContactByCall(getSelectedItems().first()))
}
}
@ -230,6 +231,16 @@ class RecentCallsAdapter(
}
}
private fun findContactByCall(recentCall: RecentCall): SimpleContact? {
return (activity as MainActivity).cachedContacts.find { it.name == recentCall.name && it.doesHavePhoneNumber(recentCall.phoneNumber) }
}
private fun launchContactDetailsIntent(contact: SimpleContact?) {
if (contact != null) {
activity.startContactDetailsIntent(contact)
}
}
fun updateItems(newItems: ArrayList<RecentCall>, highlightText: String = "") {
if (newItems.hashCode() != recentCalls.hashCode()) {
recentCalls = newItems.clone() as ArrayList<RecentCall>
@ -319,6 +330,7 @@ class RecentCallsAdapter(
finishActMode()
val theme = activity.getPopupMenuTheme()
val contextTheme = ContextThemeWrapper(activity, theme)
val contact = findContactByCall(call)
PopupMenu(contextTheme, view, Gravity.END).apply {
inflate(R.menu.menu_recent_item_options)
@ -327,6 +339,7 @@ class RecentCallsAdapter(
findItem(R.id.cab_call).isVisible = !areMultipleSIMsAvailable
findItem(R.id.cab_call_sim_1).isVisible = areMultipleSIMsAvailable
findItem(R.id.cab_call_sim_2).isVisible = areMultipleSIMsAvailable
findItem(R.id.cab_view_details).isVisible = contact != null
}
setOnMenuItemClickListener { item ->
val callId = call.id
@ -351,6 +364,11 @@ class RecentCallsAdapter(
sendSMS()
}
}
R.id.cab_view_details -> {
executeItemMenuOperation(callId) {
launchContactDetailsIntent(contact)
}
}
}
true
}

View File

@ -12,6 +12,7 @@ import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.MainActivity
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.adapters.ContactsAdapter
import com.simplemobiletools.dialer.extensions.startContactDetailsIntent
@ -83,6 +84,8 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
allContacts.sort()
}
(activity as MainActivity).cacheContacts(allContacts)
activity?.runOnUiThread {
gotContacts(contacts)
callback?.invoke()

View File

@ -18,6 +18,11 @@
android:icon="@drawable/ic_delete_vector"
android:title="@string/delete"
app:showAsAction="always" />
<item
android:id="@+id/cab_view_details"
android:icon="@drawable/ic_view_contact_details_vector"
android:title="@string/view_contact_details"
app:showAsAction="always" />
<item
android:id="@+id/cab_add_number"
android:icon="@drawable/ic_add_person_vector"

View File

@ -16,4 +16,8 @@
android:id="@+id/cab_send_sms"
android:icon="@drawable/ic_sms_vector"
android:title="@string/send_sms" />
<item
android:id="@+id/cab_view_details"
android:icon="@drawable/ic_view_contact_details_vector"
android:title="@string/view_contact_details" />
</menu>