From 4071ecbf16d0ff1cef1b30a62445c6122e93941a Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 6 Jan 2019 11:29:24 +0100 Subject: [PATCH] convert letters to numbers at search only if we show letters at dialpad --- .../contacts/pro/activities/DialpadActivity.kt | 4 ++-- .../contacts/pro/fragments/MyViewPagerFragment.kt | 3 ++- .../com/simplemobiletools/contacts/pro/models/Contact.kt | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialpadActivity.kt index 92ddb569..56ee61cd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialpadActivity.kt @@ -169,10 +169,10 @@ class DialpadActivity : SimpleActivity() { (dialpad_list.adapter as? ContactsAdapter)?.finishActMode() val filtered = contacts.filter { val convertedName = PhoneNumberUtils.convertKeypadLettersToDigits(it.getNameToDisplay()) - it.doesContainPhoneNumber(text) || (showLetters && convertedName.contains(text, true)) + it.doesContainPhoneNumber(text, showLetters) || (showLetters && convertedName.contains(text, true)) }.sortedWith(compareBy { if (showLetters) { - !it.doesContainPhoneNumber(text) + !it.doesContainPhoneNumber(text, showLetters) } else { true } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/fragments/MyViewPagerFragment.kt index b2c1e422..27446be4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/fragments/MyViewPagerFragment.kt @@ -228,11 +228,12 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) fun onSearchQueryChanged(text: String) { val shouldNormalize = text.normalizeString() == text + val convertLetters = config.showDialpadLetters (fragment_list.adapter as? ContactsAdapter)?.apply { val filtered = contactsIgnoringSearch.filter { getProperText(it.getNameToDisplay(), shouldNormalize).contains(text, true) || getProperText(it.nickname, shouldNormalize).contains(text, true) || - it.doesContainPhoneNumber(text) || + it.doesContainPhoneNumber(text, convertLetters) || 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) } || diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/Contact.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/Contact.kt index c3851d83..e602c289 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/Contact.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/Contact.kt @@ -127,9 +127,9 @@ data class Contact(var id: Int, var prefix: String, var firstName: String, var m fun isABusinessContact() = prefix.isEmpty() && firstName.isEmpty() && middleName.isEmpty() && surname.isEmpty() && suffix.isEmpty() && organization.isNotEmpty() - fun doesContainPhoneNumber(text: String): Boolean { + fun doesContainPhoneNumber(text: String, convertLetters: Boolean): Boolean { return if (text.isNotEmpty()) { - val normalizedText = text.normalizeNumber() + val normalizedText = if (convertLetters) text.normalizeNumber() else text phoneNumbers.any { PhoneNumberUtils.compare(it.normalizedNumber, normalizedText) || it.value.contains(text) ||