mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-03-20 13:10:07 +01:00
add a helper function for a more advanced check if a contact contains some numbers
This commit is contained in:
parent
04ce30cdbd
commit
57f2ccf2f9
@ -15,7 +15,6 @@ import com.simplemobiletools.contacts.extensions.callContact
|
||||
import com.simplemobiletools.contacts.extensions.config
|
||||
import com.simplemobiletools.contacts.helpers.ContactsHelper
|
||||
import com.simplemobiletools.contacts.helpers.LOCATION_DIALPAD
|
||||
import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN
|
||||
import com.simplemobiletools.contacts.models.Contact
|
||||
import kotlinx.android.synthetic.main.activity_dialpad.*
|
||||
|
||||
@ -97,11 +96,7 @@ class DialpadActivity : SimpleActivity() {
|
||||
|
||||
private fun dialpadValueChanged(text: String) {
|
||||
(dialpad_list.adapter as? ContactsAdapter)?.finishActMode()
|
||||
val numericOnly = text.replace(PHONE_NUMBER_PATTERN.toRegex(), "")
|
||||
val filtered = contacts.filter {
|
||||
it.phoneNumbers.any { (text.isNotEmpty() && it.value.contains(text)) || (numericOnly.isNotEmpty() && it.value.contains(numericOnly)) } ||
|
||||
it.cleanPhoneNumbers.any { (text.isNotEmpty() && it.value.contains(text)) || (numericOnly.isNotEmpty() && it.value.contains(numericOnly)) }
|
||||
} as ArrayList<Contact>
|
||||
val filtered = contacts.filter { it.doesContainPhoneNumber(text) } as ArrayList<Contact>
|
||||
|
||||
ContactsAdapter(this, filtered, null, LOCATION_DIALPAD, null, dialpad_list, dialpad_fastscroller, text) {
|
||||
callContact(it as Contact)
|
||||
|
@ -241,7 +241,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
val filtered = contactsIgnoringSearch.filter {
|
||||
getProperText(it.getFullName(), shouldNormalize).contains(text, true) ||
|
||||
getProperText(it.nickname, shouldNormalize).contains(text, true) ||
|
||||
it.phoneNumbers.any { it.value.contains(text, true) } ||
|
||||
it.doesContainPhoneNumber(text) ||
|
||||
it.emails.any { it.value.contains(text, true) } ||
|
||||
it.addresses.any { getProperText(it.value, shouldNormalize).contains(text, true) } ||
|
||||
it.IMs.any { it.value.contains(text, true) } ||
|
||||
|
@ -5,6 +5,7 @@ import com.simplemobiletools.commons.extensions.normalizeString
|
||||
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
|
||||
import com.simplemobiletools.commons.helpers.SORT_BY_MIDDLE_NAME
|
||||
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 nickname: String,
|
||||
var photoUri: String, var phoneNumbers: ArrayList<PhoneNumber>, var emails: ArrayList<Email>, var addresses: ArrayList<Address>,
|
||||
@ -104,4 +105,22 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
|
||||
}
|
||||
|
||||
fun getHashToCompare() = getStringToCompare().hashCode()
|
||||
|
||||
// do a more advanced phone number check here, compare numbers and and search query with dashes, spaces and everything but numbers removed
|
||||
fun doesContainPhoneNumber(text: String): Boolean {
|
||||
if (text.isNotEmpty()) {
|
||||
if (phoneNumbers.any { it.value.contains(text) } || cleanPhoneNumbers.any { it.value.contains(text) }) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
val numericOnly = text.replace(PHONE_NUMBER_PATTERN.toRegex(), "")
|
||||
if (numericOnly.isNotEmpty()) {
|
||||
if (phoneNumbers.any { it.value.contains(numericOnly) } || cleanPhoneNumbers.any { it.value.contains(numericOnly) }) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user