mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-02-21 22:07:44 +01:00
allow viewing contact details from call log
This commit is contained in:
parent
7329a9376a
commit
2c128caf68
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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()
|
||||
|
@ -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"
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user