Skip to content

Commit 01c771d

Browse files
committed
Delay Autofill by 5 seconds
1 parent 4003246 commit 01c771d

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import android.media.AudioManager
1010
import android.media.RingtoneManager
1111
import android.net.Uri
1212
import android.os.Bundle
13+
import android.os.Handler
1314
import android.provider.ContactsContract.CommonDataKinds
1415
import android.provider.ContactsContract.CommonDataKinds.*
1516
import android.provider.MediaStore
@@ -19,6 +20,7 @@ import android.view.ViewGroup
1920
import android.view.WindowManager
2021
import android.widget.*
2122
import androidx.core.content.ContextCompat
23+
import androidx.core.widget.doAfterTextChanged
2224
import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog
2325
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
2426
import com.simplemobiletools.commons.dialogs.SelectAlarmSoundDialog
@@ -57,6 +59,8 @@ class EditContactActivity : ContactActivity() {
5759
private val CHOOSE_PHOTO = 2
5860
private val REMOVE_PHOTO = 3
5961

62+
private val AUTO_FILL_DELAY = 5000L
63+
6064
private var mLastSavePromptTS = 0L
6165
private var wasActivityInitialized = false
6266
private var lastPhotoIntentUri: Uri? = null
@@ -1534,6 +1538,7 @@ class EditContactActivity : ContactActivity() {
15341538
private fun setupAutofill(nameTextViews: List<MyAutoCompleteTextView>) {
15351539
ContactsHelper(this).getContacts { contacts ->
15361540
val adapter = AutoCompleteTextViewAdapter(this, contacts)
1541+
val handler = Handler(mainLooper)
15371542
nameTextViews.forEach { view ->
15381543
view.setAdapter(adapter)
15391544
view.setOnItemClickListener { _, _, position, _ ->
@@ -1549,6 +1554,12 @@ class EditContactActivity : ContactActivity() {
15491554
contact_surname.setText(selectedContact.surname)
15501555
}
15511556
}
1557+
view.doAfterTextChanged {
1558+
handler.postDelayed({
1559+
adapter.enableAutoFill = true
1560+
adapter.filter.filter(it)
1561+
}, AUTO_FILL_DELAY)
1562+
}
15521563
}
15531564
}
15541565
}

app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/AutoCompleteTextViewAdapter.kt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import kotlinx.android.synthetic.main.item_autocomplete_name_number.view.item_au
2121
import kotlinx.android.synthetic.main.item_autocomplete_name_number.view.item_autocomplete_name
2222
import kotlinx.android.synthetic.main.item_autocomplete_name_number.view.item_autocomplete_number
2323

24-
class AutoCompleteTextViewAdapter(val activity: SimpleActivity, val contacts: ArrayList<Contact>) : ArrayAdapter<Contact>(activity, 0, contacts) {
24+
class AutoCompleteTextViewAdapter(val activity: SimpleActivity, val contacts: ArrayList<Contact>, var enableAutoFill: Boolean = false) : ArrayAdapter<Contact>(activity, 0, contacts) {
2525
var resultList = ArrayList<Contact>()
2626

2727
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
@@ -67,20 +67,22 @@ class AutoCompleteTextViewAdapter(val activity: SimpleActivity, val contacts: Ar
6767
val filterResults = FilterResults()
6868
if (constraint != null) {
6969
resultList.clear()
70-
val searchString = constraint.toString().normalizeString()
71-
contacts.forEach {
72-
if (it.name.contains(searchString, true)) {
73-
resultList.add(it)
70+
if (enableAutoFill) {
71+
val searchString = constraint.toString().normalizeString()
72+
contacts.forEach {
73+
if (it.name.contains(searchString, true)) {
74+
resultList.add(it)
75+
}
7476
}
75-
}
7677

77-
resultList.sortWith(compareBy<Contact>
78-
{ it.name.startsWith(searchString, true) }.thenBy
79-
{ it.name.contains(searchString, true) })
80-
resultList.reverse()
78+
resultList.sortWith(compareBy<Contact>
79+
{ it.name.startsWith(searchString, true) }.thenBy
80+
{ it.name.contains(searchString, true) })
81+
resultList.reverse()
8182

82-
filterResults.values = resultList
83-
filterResults.count = resultList.size
83+
filterResults.values = resultList
84+
filterResults.count = resultList.size
85+
}
8486
}
8587
return filterResults
8688
}

0 commit comments

Comments
 (0)