From e7bd9ad81ea2669cba7cbe017ebaa35575fa9cb7 Mon Sep 17 00:00:00 2001 From: Andries Smit Date: Thu, 7 Jul 2022 11:38:36 +0200 Subject: [PATCH] feat: preference search in actionbar --- .../activities/PreferencesActivity.kt | 37 +++++++++++-------- .../main/res/layout/activity_preferences.xml | 22 ----------- app/src/main/res/menu/menu_preferences.xml | 11 ++++++ app/src/main/res/values/strings.xml | 3 +- 4 files changed, 34 insertions(+), 39 deletions(-) create mode 100644 app/src/main/res/menu/menu_preferences.xml diff --git a/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.kt index 60f0f5006a..7725617e88 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.kt @@ -2,9 +2,9 @@ package info.nightscout.androidaps.activities import android.content.Context import android.os.Bundle -import android.text.Editable -import android.text.TextWatcher +import android.view.Menu import android.view.MenuItem +import androidx.appcompat.widget.SearchView import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceScreen import info.nightscout.androidaps.R @@ -15,6 +15,7 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa private var preferenceId = 0 private var myPreferenceFragment: MyPreferenceFragment? = null + private var searchView: SearchView? = null private lateinit var binding: ActivityPreferencesBinding @@ -24,15 +25,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa binding = ActivityPreferencesBinding.inflate(layoutInflater) setContentView(binding.root) - binding.prefFilter.addTextChangedListener(object : TextWatcher { - override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} - override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { - filterPreferences() - } - - override fun afterTextChanged(s: Editable) {} - }) - title = rh.gs(R.string.nav_preferences) supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) @@ -40,12 +32,29 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa preferenceId = intent.getIntExtra("id", -1) myPreferenceFragment?.arguments = Bundle().also { it.putInt("id", preferenceId) - it.putString("filter", binding.prefFilter.text.toString()) } if (savedInstanceState == null) supportFragmentManager.beginTransaction().replace(R.id.frame_layout, myPreferenceFragment!!).commit() } + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_preferences, menu) + val searchItem = menu.findItem(R.id.menu_search) + searchView = searchItem.actionView as SearchView + searchView?.setOnQueryTextListener(object : SearchView.OnQueryTextListener { + + override fun onQueryTextChange(newText: String): Boolean { + myPreferenceFragment?.setFilter(newText) + return false + } + + override fun onQueryTextSubmit(query: String): Boolean { + return false + } + }) + return super.onCreateOptionsMenu(menu) + } + override fun onPreferenceStartScreen(caller: PreferenceFragmentCompat, pref: PreferenceScreen): Boolean { val fragment = MyPreferenceFragment() fragment.arguments = Bundle().also { @@ -60,10 +69,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa super.attachBaseContext(LocaleHelper.wrap(newBase)) } - private fun filterPreferences() { - myPreferenceFragment?.setFilter(binding.prefFilter.text.toString()) - } - override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { android.R.id.home -> { diff --git a/app/src/main/res/layout/activity_preferences.xml b/app/src/main/res/layout/activity_preferences.xml index 2ff946628a..ae72eaf113 100644 --- a/app/src/main/res/layout/activity_preferences.xml +++ b/app/src/main/res/layout/activity_preferences.xml @@ -5,28 +5,6 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - - - - + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b4bb05b480..7bc428a968 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1242,8 +1242,9 @@ only on watch only on phone drag and drop handle + Search - + GlucoRx Aidex Aidex Receive BG values from GlucoRx Aidex CGMS.