From cb88706f7eaf80d3425c0643baad60293ffe3284 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 15 Feb 2021 20:18:37 +0100 Subject: [PATCH] adding some search boilerplate code --- .../smsmessenger/activities/SearchActivity.kt | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SearchActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SearchActivity.kt index e6b4ebc2..d2bb61af 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SearchActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SearchActivity.kt @@ -1,11 +1,20 @@ package com.simplemobiletools.smsmessenger.activities import android.annotation.SuppressLint +import android.app.SearchManager +import android.content.Context import android.os.Bundle import android.view.Menu +import android.view.MenuItem +import androidx.appcompat.widget.SearchView +import androidx.core.view.MenuItemCompat +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.smsmessenger.R class SearchActivity : SimpleActivity() { + private var mIsSearchOpen = false + private var mLastSearchedText = "" + private var mSearchMenuItem: MenuItem? = null @SuppressLint("InlinedApi") override fun onCreate(savedInstanceState: Bundle?) { @@ -15,7 +24,51 @@ class SearchActivity : SimpleActivity() { override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_search, menu) + setupSearch(menu) updateMenuItemColors(menu) return true } + + private fun setupSearch(menu: Menu) { + val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager + mSearchMenuItem = menu.findItem(R.id.search) + (mSearchMenuItem?.actionView as? SearchView)?.apply { + setSearchableInfo(searchManager.getSearchableInfo(componentName)) + isSubmitButtonEnabled = false + setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String) = false + + override fun onQueryTextChange(newText: String): Boolean { + if (mIsSearchOpen) { + mLastSearchedText = newText + textChanged(newText) + } + return true + } + }) + } + + MenuItemCompat.setOnActionExpandListener(mSearchMenuItem, object : MenuItemCompat.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem?): Boolean { + mIsSearchOpen = true + return true + } + + // this triggers on device rotation too, avoid doing anything + override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { + if (mIsSearchOpen) { + mIsSearchOpen = false + mLastSearchedText = "" + } + return true + } + }) + mSearchMenuItem?.expandActionView() + } + + private fun textChanged(text: String) { + ensureBackgroundThread { + + } + } }