mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-06-05 21:59:27 +02:00
Delay Autofill by 5 seconds
This commit is contained in:
@ -10,6 +10,7 @@ import android.media.AudioManager
|
|||||||
import android.media.RingtoneManager
|
import android.media.RingtoneManager
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.os.Handler
|
||||||
import android.provider.ContactsContract.CommonDataKinds
|
import android.provider.ContactsContract.CommonDataKinds
|
||||||
import android.provider.ContactsContract.CommonDataKinds.*
|
import android.provider.ContactsContract.CommonDataKinds.*
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
@ -19,6 +20,7 @@ import android.view.ViewGroup
|
|||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.core.widget.doAfterTextChanged
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog
|
import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||||
import com.simplemobiletools.commons.dialogs.SelectAlarmSoundDialog
|
import com.simplemobiletools.commons.dialogs.SelectAlarmSoundDialog
|
||||||
@ -57,6 +59,8 @@ class EditContactActivity : ContactActivity() {
|
|||||||
private val CHOOSE_PHOTO = 2
|
private val CHOOSE_PHOTO = 2
|
||||||
private val REMOVE_PHOTO = 3
|
private val REMOVE_PHOTO = 3
|
||||||
|
|
||||||
|
private val AUTO_FILL_DELAY = 5000L
|
||||||
|
|
||||||
private var mLastSavePromptTS = 0L
|
private var mLastSavePromptTS = 0L
|
||||||
private var wasActivityInitialized = false
|
private var wasActivityInitialized = false
|
||||||
private var lastPhotoIntentUri: Uri? = null
|
private var lastPhotoIntentUri: Uri? = null
|
||||||
@ -1534,6 +1538,7 @@ class EditContactActivity : ContactActivity() {
|
|||||||
private fun setupAutofill(nameTextViews: List<MyAutoCompleteTextView>) {
|
private fun setupAutofill(nameTextViews: List<MyAutoCompleteTextView>) {
|
||||||
ContactsHelper(this).getContacts { contacts ->
|
ContactsHelper(this).getContacts { contacts ->
|
||||||
val adapter = AutoCompleteTextViewAdapter(this, contacts)
|
val adapter = AutoCompleteTextViewAdapter(this, contacts)
|
||||||
|
val handler = Handler(mainLooper)
|
||||||
nameTextViews.forEach { view ->
|
nameTextViews.forEach { view ->
|
||||||
view.setAdapter(adapter)
|
view.setAdapter(adapter)
|
||||||
view.setOnItemClickListener { _, _, position, _ ->
|
view.setOnItemClickListener { _, _, position, _ ->
|
||||||
@ -1549,6 +1554,12 @@ class EditContactActivity : ContactActivity() {
|
|||||||
contact_surname.setText(selectedContact.surname)
|
contact_surname.setText(selectedContact.surname)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
view.doAfterTextChanged {
|
||||||
|
handler.postDelayed({
|
||||||
|
adapter.enableAutoFill = true
|
||||||
|
adapter.filter.filter(it)
|
||||||
|
}, AUTO_FILL_DELAY)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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_name
|
||||||
import kotlinx.android.synthetic.main.item_autocomplete_name_number.view.item_autocomplete_number
|
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>()
|
var resultList = ArrayList<Contact>()
|
||||||
|
|
||||||
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
|
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()
|
val filterResults = FilterResults()
|
||||||
if (constraint != null) {
|
if (constraint != null) {
|
||||||
resultList.clear()
|
resultList.clear()
|
||||||
val searchString = constraint.toString().normalizeString()
|
if (enableAutoFill) {
|
||||||
contacts.forEach {
|
val searchString = constraint.toString().normalizeString()
|
||||||
if (it.name.contains(searchString, true)) {
|
contacts.forEach {
|
||||||
resultList.add(it)
|
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
|
return filterResults
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user