fix #288, add an option to show letters at dialpad

This commit is contained in:
tibbi
2019-01-05 19:50:48 +01:00
parent 9adc9ff7bf
commit 8d12becafb
7 changed files with 155 additions and 2 deletions

View File

@ -7,6 +7,7 @@ import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Telephony.Sms.Intents.SECRET_CODE_ACTION
import android.telephony.PhoneNumberUtils
import android.telephony.TelephonyManager
import android.view.KeyEvent
import android.view.Menu
@ -58,6 +59,11 @@ class DialpadActivity : SimpleActivity() {
val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_huge, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE)
dialpad_call_button.setImageDrawable(callIcon)
dialpad_call_button.background.applyColorFilter(getAdjustedPrimaryColor())
val showLetters = config.showDialpadLetters
arrayOf(dialpad_2_letters, dialpad_3_letters, dialpad_4_letters, dialpad_5_letters, dialpad_6_letters, dialpad_7_letters, dialpad_8_letters, dialpad_9_letters).forEach {
it.beVisibleIf(showLetters)
}
}
override fun onResume() {
@ -159,8 +165,18 @@ class DialpadActivity : SimpleActivity() {
return
}
val showLetters = config.showDialpadLetters
(dialpad_list.adapter as? ContactsAdapter)?.finishActMode()
val filtered = contacts.filter { it.doesContainPhoneNumber(text) } as ArrayList<Contact>
val filtered = contacts.filter {
val convertedName = PhoneNumberUtils.convertKeypadLettersToDigits(it.getNameToDisplay())
it.doesContainPhoneNumber(text) || (showLetters && convertedName.contains(text, true))
}.sortedWith(compareBy {
if (showLetters) {
!it.doesContainPhoneNumber(text)
} else {
true
}
}).toMutableList() as ArrayList<Contact>
ContactsAdapter(this, filtered, null, LOCATION_DIALPAD, null, dialpad_list, dialpad_fastscroller, text) {
callContact(it as Contact)

View File

@ -42,6 +42,7 @@ class SettingsActivity : SimpleActivity() {
setupFilterDuplicates()
setupShowCallConfirmation()
setupShowDialpadButton()
setupShowDialpadLetters()
setupOnContactClick()
updateTextColors(settings_holder)
}
@ -147,6 +148,14 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupShowDialpadLetters() {
settings_show_dialpad_letters.isChecked = config.showDialpadLetters
settings_show_dialpad_letters_holder.setOnClickListener {
settings_show_dialpad_letters.toggle()
config.showDialpadLetters = settings_show_dialpad_letters.isChecked
}
}
private fun setupOnContactClick() {
settings_on_contact_click.text = getOnContactClickText()
settings_on_contact_click_holder.setOnClickListener {

View File

@ -64,4 +64,8 @@ class Config(context: Context) : BaseConfig(context) {
var showDialpadButton: Boolean
get() = prefs.getBoolean(SHOW_DIALPAD_BUTTON, true)
set(showDialpadButton) = prefs.edit().putBoolean(SHOW_DIALPAD_BUTTON, showDialpadButton).apply()
var showDialpadLetters: Boolean
get() = prefs.getBoolean(SHOW_DIALPAD_LETTERS, false)
set(showDialpadLetters) = prefs.edit().putBoolean(SHOW_DIALPAD_LETTERS, showDialpadLetters).apply()
}

View File

@ -18,6 +18,7 @@ const val SHOW_TABS = "show_tabs"
const val FILTER_DUPLICATES = "filter_duplicates"
const val SHOW_CALL_CONFIRMATION = "show_call_confirmation"
const val SHOW_DIALPAD_BUTTON = "show_dialpad_button"
const val SHOW_DIALPAD_LETTERS = "show_dialpad_letters"
const val CONTACT_ID = "contact_id"
const val SMT_PRIVATE = "smt_private" // used at the contact source of local contacts hidden from other apps