Delay Autofill by 5 seconds

This commit is contained in:
Naveen
2023-05-05 14:12:35 +05:30
parent 4003246483
commit 01c771da91
2 changed files with 26 additions and 13 deletions

View File

@ -10,6 +10,7 @@ import android.media.AudioManager
import android.media.RingtoneManager
import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.provider.ContactsContract.CommonDataKinds
import android.provider.ContactsContract.CommonDataKinds.*
import android.provider.MediaStore
@ -19,6 +20,7 @@ import android.view.ViewGroup
import android.view.WindowManager
import android.widget.*
import androidx.core.content.ContextCompat
import androidx.core.widget.doAfterTextChanged
import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.dialogs.SelectAlarmSoundDialog
@ -57,6 +59,8 @@ class EditContactActivity : ContactActivity() {
private val CHOOSE_PHOTO = 2
private val REMOVE_PHOTO = 3
private val AUTO_FILL_DELAY = 5000L
private var mLastSavePromptTS = 0L
private var wasActivityInitialized = false
private var lastPhotoIntentUri: Uri? = null
@ -1534,6 +1538,7 @@ class EditContactActivity : ContactActivity() {
private fun setupAutofill(nameTextViews: List<MyAutoCompleteTextView>) {
ContactsHelper(this).getContacts { contacts ->
val adapter = AutoCompleteTextViewAdapter(this, contacts)
val handler = Handler(mainLooper)
nameTextViews.forEach { view ->
view.setAdapter(adapter)
view.setOnItemClickListener { _, _, position, _ ->
@ -1549,6 +1554,12 @@ class EditContactActivity : ContactActivity() {
contact_surname.setText(selectedContact.surname)
}
}
view.doAfterTextChanged {
handler.postDelayed({
adapter.enableAutoFill = true
adapter.filter.filter(it)
}, AUTO_FILL_DELAY)
}
}
}
}

View File

@ -21,7 +21,7 @@ import kotlinx.android.synthetic.main.item_autocomplete_name_number.view.item_au
import kotlinx.android.synthetic.main.item_autocomplete_name_number.view.item_autocomplete_name
import kotlinx.android.synthetic.main.item_autocomplete_name_number.view.item_autocomplete_number
class AutoCompleteTextViewAdapter(val activity: SimpleActivity, val contacts: ArrayList<Contact>) : ArrayAdapter<Contact>(activity, 0, contacts) {
class AutoCompleteTextViewAdapter(val activity: SimpleActivity, val contacts: ArrayList<Contact>, var enableAutoFill: Boolean = false) : ArrayAdapter<Contact>(activity, 0, contacts) {
var resultList = ArrayList<Contact>()
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
@ -67,20 +67,22 @@ class AutoCompleteTextViewAdapter(val activity: SimpleActivity, val contacts: Ar
val filterResults = FilterResults()
if (constraint != null) {
resultList.clear()
val searchString = constraint.toString().normalizeString()
contacts.forEach {
if (it.name.contains(searchString, true)) {
resultList.add(it)
if (enableAutoFill) {
val searchString = constraint.toString().normalizeString()
contacts.forEach {
if (it.name.contains(searchString, true)) {
resultList.add(it)
}
}
resultList.sortWith(compareBy<Contact>
{ it.name.startsWith(searchString, true) }.thenBy
{ it.name.contains(searchString, true) })
resultList.reverse()
filterResults.values = resultList
filterResults.count = resultList.size
}
resultList.sortWith(compareBy<Contact>
{ it.name.startsWith(searchString, true) }.thenBy
{ it.name.contains(searchString, true) })
resultList.reverse()
filterResults.values = resultList
filterResults.count = resultList.size
}
return filterResults
}