add a helper function for a more advanced check if a contact contains some numbers

This commit is contained in:
tibbi 2018-09-25 20:04:42 +02:00
parent 04ce30cdbd
commit 57f2ccf2f9
3 changed files with 21 additions and 7 deletions

View File

@ -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)

View File

@ -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) } ||

View File

@ -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
}
}