diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 30579b9b..5eb9b0f2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -144,8 +144,7 @@ + android:label="@string/select_contact"> + + + + + + diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SelectContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SelectContactActivity.kt index 5199c704..7b02031f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SelectContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SelectContactActivity.kt @@ -1,11 +1,15 @@ package com.simplemobiletools.contacts.pro.activities +import android.app.SearchManager +import android.content.Context import android.content.Intent import android.net.Uri import android.os.Bundle import android.provider.ContactsContract import android.view.Menu import android.view.MenuItem +import androidx.appcompat.widget.SearchView +import androidx.core.view.MenuItemCompat import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS @@ -22,6 +26,9 @@ import kotlinx.android.synthetic.main.activity_select_contact.* class SelectContactActivity : SimpleActivity() { private var specialMimeType: String? = null + private var isSearchOpen = false + private var searchMenuItem: MenuItem? = null + private var contactsIgnoringSearch = ArrayList() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -55,8 +62,14 @@ class SelectContactActivity : SimpleActivity() { } } + override fun onStop() { + super.onStop() + searchMenuItem?.collapseActionView() + } + override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_select_activity, menu) + setupSearch(menu) updateMenuItemColors(menu) return true } @@ -70,6 +83,52 @@ class SelectContactActivity : SimpleActivity() { return true } + private fun setupSearch(menu: Menu) { + val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager + searchMenuItem = menu.findItem(R.id.search) + (searchMenuItem!!.actionView as SearchView).apply { + setSearchableInfo(searchManager.getSearchableInfo(componentName)) + isSubmitButtonEnabled = false + queryHint = getString(R.string.search_contacts) + setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String) = false + + override fun onQueryTextChange(newText: String): Boolean { + if (isSearchOpen) { + onSearchQueryChanged(newText) + } + return true + } + }) + } + + MenuItemCompat.setOnActionExpandListener(searchMenuItem, object : MenuItemCompat.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem?): Boolean { + onSearchOpened() + isSearchOpen = true + return true + } + + override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { + onSearchClosed() + isSearchOpen = false + return true + } + }) + } + + private fun onSearchQueryChanged(text: String) { + + } + + private fun onSearchOpened() { + contactsIgnoringSearch = (select_contact_list.adapter as? SelectContactsAdapter)?.contacts ?: ArrayList() + } + + private fun onSearchClosed() { + + } + private fun showSortingDialog() { ChangeSortingDialog(this) { initContacts() diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt index 2aeec38c..d8c4e1fa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt @@ -22,7 +22,7 @@ import com.simplemobiletools.contacts.pro.models.Contact import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.* import java.util.* -class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List, private val selectedContacts: ArrayList, private val allowPickMultiple: Boolean, +class SelectContactsAdapter(val activity: SimpleActivity, val contacts: ArrayList, private val selectedContacts: ArrayList, private val allowPickMultiple: Boolean, private val recyclerView: MyRecyclerView, private val itemClick: ((Contact) -> Unit)? = null) : RecyclerView.Adapter() { private val itemViews = SparseArray() private val selectedPositions = HashSet() diff --git a/app/src/main/res/menu/menu_select_activity.xml b/app/src/main/res/menu/menu_select_activity.xml index ed3d4291..78fa6907 100644 --- a/app/src/main/res/menu/menu_select_activity.xml +++ b/app/src/main/res/menu/menu_select_activity.xml @@ -1,6 +1,12 @@ +