determine if a known Contact has been clicked at Recents

This commit is contained in:
tibbi
2018-08-04 21:44:36 +02:00
parent 6044dab0c9
commit c1e6feb82a
4 changed files with 17 additions and 3 deletions

View File

@ -502,6 +502,10 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
favorites_fragment?.refreshContacts(it) favorites_fragment?.refreshContacts(it)
} }
if (refreshTabsMask and RECENTS_TAB_MASK != 0) {
recents_fragment?.refreshContacts(it)
}
if (refreshTabsMask and GROUPS_TAB_MASK != 0) { if (refreshTabsMask and GROUPS_TAB_MASK != 0) {
if (refreshTabsMask == GROUPS_TAB_MASK) { if (refreshTabsMask == GROUPS_TAB_MASK) {
groups_fragment.skipHashComparing = true groups_fragment.skipHashComparing = true

View File

@ -5,6 +5,8 @@ import android.util.AttributeSet
import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.isActivityDestroyed import com.simplemobiletools.commons.extensions.isActivityDestroyed
import com.simplemobiletools.contacts.adapters.RecentCallsAdapter import com.simplemobiletools.contacts.adapters.RecentCallsAdapter
import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN
import com.simplemobiletools.contacts.models.Contact
import com.simplemobiletools.contacts.models.RecentCall import com.simplemobiletools.contacts.models.RecentCall
import kotlinx.android.synthetic.main.fragment_layout.view.* import kotlinx.android.synthetic.main.fragment_layout.view.*
@ -24,7 +26,14 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
val currAdapter = fragment_list.adapter val currAdapter = fragment_list.adapter
if (currAdapter == null) { if (currAdapter == null) {
RecentCallsAdapter(activity!!, recentCalls, activity, fragment_list, fragment_fastscroller) { RecentCallsAdapter(activity!!, recentCalls, activity, fragment_list, fragment_fastscroller) {
val recentCall = (it as RecentCall).number.replace(PHONE_NUMBER_PATTERN.toRegex(), "")
var selectedContact: Contact? = null
for (contact in allContacts) {
if (contact.phoneNumbers.any { it.value.replace(PHONE_NUMBER_PATTERN.toRegex(), "") == recentCall }) {
selectedContact = contact
break
}
}
}.apply { }.apply {
addVerticalDividers(true) addVerticalDividers(true)
fragment_list.adapter = this fragment_list.adapter = this

View File

@ -21,6 +21,7 @@ const val SMT_PRIVATE = "smt_private" // used at the contact source of local c
const val IS_PRIVATE = "is_private" const val IS_PRIVATE = "is_private"
const val GROUP = "group" const val GROUP = "group"
const val FIRST_GROUP_ID = 10000 const val FIRST_GROUP_ID = 10000
const val PHONE_NUMBER_PATTERN = "\\D+"
const val LOCATION_CONTACTS_TAB = 0 const val LOCATION_CONTACTS_TAB = 0
const val LOCATION_FAVORITES_TAB = 1 const val LOCATION_FAVORITES_TAB = 1

View File

@ -4,6 +4,7 @@ import android.graphics.Bitmap
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
import com.simplemobiletools.commons.helpers.SORT_BY_MIDDLE_NAME import com.simplemobiletools.commons.helpers.SORT_BY_MIDDLE_NAME
import com.simplemobiletools.commons.helpers.SORT_DESCENDING import com.simplemobiletools.commons.helpers.SORT_DESCENDING
import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN
data class Contact(val id: Int, var prefix: String, var firstName: String, var middleName: String, var surname: String, var suffix: String, var photoUri: String, data class Contact(val id: Int, var prefix: String, var firstName: String, var middleName: String, var surname: String, var suffix: String, var photoUri: String,
var phoneNumbers: ArrayList<PhoneNumber>, var emails: ArrayList<Email>, var addresses: ArrayList<Address>, var events: ArrayList<Event>, var phoneNumbers: ArrayList<PhoneNumber>, var emails: ArrayList<Email>, var addresses: ArrayList<Address>, var events: ArrayList<Event>,
@ -12,7 +13,6 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
companion object { companion object {
var sorting = 0 var sorting = 0
var startWithSurname = false var startWithSurname = false
val pattern = "\\D+".toRegex()
} }
override fun compareTo(other: Contact): Int { override fun compareTo(other: Contact): Int {
@ -93,7 +93,7 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
fun getHashToCompare(): Int { fun getHashToCompare(): Int {
val newPhoneNumbers = ArrayList<PhoneNumber>() val newPhoneNumbers = ArrayList<PhoneNumber>()
phoneNumbers.mapTo(newPhoneNumbers) { PhoneNumber(it.value.replace(pattern, ""), 0) } phoneNumbers.mapTo(newPhoneNumbers) { PhoneNumber(it.value.replace(PHONE_NUMBER_PATTERN.toRegex(), ""), 0) }
val newEmails = ArrayList<Email>() val newEmails = ArrayList<Email>()
emails.mapTo(newEmails) { Email(it.value, 0) } emails.mapTo(newEmails) { Email(it.value, 0) }