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 searchMenuItem: MenuItem? = null
|
||||||
private var storedShowTabs = 0
|
private var storedShowTabs = 0
|
||||||
private var searchQuery = ""
|
private var searchQuery = ""
|
||||||
|
var cachedContacts = ArrayList<SimpleContact>()
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
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.dialogs.ConfirmationDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.*
|
import com.simplemobiletools.commons.helpers.*
|
||||||
|
import com.simplemobiletools.commons.models.SimpleContact
|
||||||
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.MainActivity
|
||||||
import com.simplemobiletools.dialer.activities.SimpleActivity
|
import com.simplemobiletools.dialer.activities.SimpleActivity
|
||||||
import com.simplemobiletools.dialer.dialogs.ShowGroupedCallsDialog
|
import com.simplemobiletools.dialer.dialogs.ShowGroupedCallsDialog
|
||||||
import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable
|
import com.simplemobiletools.dialer.extensions.*
|
||||||
import com.simplemobiletools.dialer.extensions.callContactWithSim
|
|
||||||
import com.simplemobiletools.dialer.extensions.config
|
|
||||||
import com.simplemobiletools.dialer.extensions.startCallIntent
|
|
||||||
import com.simplemobiletools.dialer.helpers.RecentsHelper
|
import com.simplemobiletools.dialer.helpers.RecentsHelper
|
||||||
import com.simplemobiletools.dialer.interfaces.RefreshItemsListener
|
import com.simplemobiletools.dialer.interfaces.RefreshItemsListener
|
||||||
import com.simplemobiletools.dialer.models.RecentCall
|
import com.simplemobiletools.dialer.models.RecentCall
|
||||||
|
@ -61,6 +60,7 @@ class RecentCallsAdapter(
|
||||||
findItem(R.id.cab_add_number).isVisible = isOneItemSelected
|
findItem(R.id.cab_add_number).isVisible = isOneItemSelected
|
||||||
findItem(R.id.cab_copy_number).isVisible = isOneItemSelected
|
findItem(R.id.cab_copy_number).isVisible = isOneItemSelected
|
||||||
findItem(R.id.cab_show_call_details).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_copy_number -> copyNumber()
|
||||||
R.id.cab_remove -> askConfirmRemove()
|
R.id.cab_remove -> askConfirmRemove()
|
||||||
R.id.cab_select_all -> selectAll()
|
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 = "") {
|
fun updateItems(newItems: ArrayList<RecentCall>, highlightText: String = "") {
|
||||||
if (newItems.hashCode() != recentCalls.hashCode()) {
|
if (newItems.hashCode() != recentCalls.hashCode()) {
|
||||||
recentCalls = newItems.clone() as ArrayList<RecentCall>
|
recentCalls = newItems.clone() as ArrayList<RecentCall>
|
||||||
|
@ -319,6 +330,7 @@ class RecentCallsAdapter(
|
||||||
finishActMode()
|
finishActMode()
|
||||||
val theme = activity.getPopupMenuTheme()
|
val theme = activity.getPopupMenuTheme()
|
||||||
val contextTheme = ContextThemeWrapper(activity, theme)
|
val contextTheme = ContextThemeWrapper(activity, theme)
|
||||||
|
val contact = findContactByCall(call)
|
||||||
|
|
||||||
PopupMenu(contextTheme, view, Gravity.END).apply {
|
PopupMenu(contextTheme, view, Gravity.END).apply {
|
||||||
inflate(R.menu.menu_recent_item_options)
|
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).isVisible = !areMultipleSIMsAvailable
|
||||||
findItem(R.id.cab_call_sim_1).isVisible = areMultipleSIMsAvailable
|
findItem(R.id.cab_call_sim_1).isVisible = areMultipleSIMsAvailable
|
||||||
findItem(R.id.cab_call_sim_2).isVisible = areMultipleSIMsAvailable
|
findItem(R.id.cab_call_sim_2).isVisible = areMultipleSIMsAvailable
|
||||||
|
findItem(R.id.cab_view_details).isVisible = contact != null
|
||||||
}
|
}
|
||||||
setOnMenuItemClickListener { item ->
|
setOnMenuItemClickListener { item ->
|
||||||
val callId = call.id
|
val callId = call.id
|
||||||
|
@ -351,6 +364,11 @@ class RecentCallsAdapter(
|
||||||
sendSMS()
|
sendSMS()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
R.id.cab_view_details -> {
|
||||||
|
executeItemMenuOperation(callId) {
|
||||||
|
launchContactDetailsIntent(contact)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
||||||
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
|
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
|
||||||
import com.simplemobiletools.commons.models.SimpleContact
|
import com.simplemobiletools.commons.models.SimpleContact
|
||||||
import com.simplemobiletools.dialer.R
|
import com.simplemobiletools.dialer.R
|
||||||
|
import com.simplemobiletools.dialer.activities.MainActivity
|
||||||
import com.simplemobiletools.dialer.activities.SimpleActivity
|
import com.simplemobiletools.dialer.activities.SimpleActivity
|
||||||
import com.simplemobiletools.dialer.adapters.ContactsAdapter
|
import com.simplemobiletools.dialer.adapters.ContactsAdapter
|
||||||
import com.simplemobiletools.dialer.extensions.startContactDetailsIntent
|
import com.simplemobiletools.dialer.extensions.startContactDetailsIntent
|
||||||
|
@ -83,6 +84,8 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
|
||||||
allContacts.sort()
|
allContacts.sort()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(activity as MainActivity).cacheContacts(allContacts)
|
||||||
|
|
||||||
activity?.runOnUiThread {
|
activity?.runOnUiThread {
|
||||||
gotContacts(contacts)
|
gotContacts(contacts)
|
||||||
callback?.invoke()
|
callback?.invoke()
|
||||||
|
|
|
@ -18,6 +18,11 @@
|
||||||
android:icon="@drawable/ic_delete_vector"
|
android:icon="@drawable/ic_delete_vector"
|
||||||
android:title="@string/delete"
|
android:title="@string/delete"
|
||||||
app:showAsAction="always" />
|
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
|
<item
|
||||||
android:id="@+id/cab_add_number"
|
android:id="@+id/cab_add_number"
|
||||||
android:icon="@drawable/ic_add_person_vector"
|
android:icon="@drawable/ic_add_person_vector"
|
||||||
|
|
|
@ -16,4 +16,8 @@
|
||||||
android:id="@+id/cab_send_sms"
|
android:id="@+id/cab_send_sms"
|
||||||
android:icon="@drawable/ic_sms_vector"
|
android:icon="@drawable/ic_sms_vector"
|
||||||
android:title="@string/send_sms" />
|
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>
|
</menu>
|
||||||
|
|
Loading…
Reference in New Issue