mirror of
https://git.mihon.tech/mihonapp/mihon
synced 2024-11-24 22:25:53 +03:00
Minor settings search code cleanup
This commit is contained in:
parent
766f9e37b5
commit
3bce07e873
10 changed files with 68 additions and 62 deletions
|
@ -253,9 +253,7 @@ class PreferencesHelper(val context: Context) {
|
|||
|
||||
fun enableDoh() = prefs.getBoolean(Keys.enableDoh, false)
|
||||
|
||||
fun lastSearchQuerySearchSettings() = prefs.getString("last_search_query", "")
|
||||
|
||||
fun lastSearchQuerySearchSettings(query: String) = prefs.edit { putString("last_search_query", query) }
|
||||
fun lastSearchQuerySearchSettings() = flowPrefs.getString("last_search_query", "")
|
||||
|
||||
fun filterChapterByRead() = prefs.getInt(Keys.defaultChapterFilterByRead, Manga.SHOW_ALL)
|
||||
|
||||
|
|
|
@ -100,16 +100,18 @@ class SettingsMainController : SettingsController() {
|
|||
// Change hint to show global search.
|
||||
searchView.queryHint = applicationContext?.getString(R.string.action_search_settings)
|
||||
|
||||
searchItem.setOnActionExpandListener(object : MenuItem.OnActionExpandListener {
|
||||
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
|
||||
preferences.lastSearchQuerySearchSettings("") // reset saved search query
|
||||
router.pushController(SettingsSearchController().withFadeTransaction())
|
||||
return true
|
||||
}
|
||||
searchItem.setOnActionExpandListener(
|
||||
object : MenuItem.OnActionExpandListener {
|
||||
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
|
||||
preferences.lastSearchQuerySearchSettings().set("") // reset saved search query
|
||||
router.pushController(SettingsSearchController().withFadeTransaction())
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
|
||||
return true
|
||||
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
|
||||
return true
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,11 @@ class SettingsSearchAdapter(val controller: SettingsSearchController) :
|
|||
*/
|
||||
private var bundle = Bundle()
|
||||
|
||||
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int, payloads: List<Any?>) {
|
||||
override fun onBindViewHolder(
|
||||
holder: RecyclerView.ViewHolder,
|
||||
position: Int,
|
||||
payloads: List<Any?>
|
||||
) {
|
||||
super.onBindViewHolder(holder, position, payloads)
|
||||
restoreHolderState(holder)
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ class SettingsSearchController :
|
|||
* Adapter containing search results grouped by lang.
|
||||
*/
|
||||
protected var adapter: SettingsSearchAdapter? = null
|
||||
lateinit var searchView: SearchView
|
||||
private lateinit var searchView: SearchView
|
||||
|
||||
init {
|
||||
setHasOptionsMenu(true)
|
||||
|
@ -79,30 +79,34 @@ class SettingsSearchController :
|
|||
searchItem.expandActionView()
|
||||
setItems(getResultSet())
|
||||
|
||||
searchItem.setOnActionExpandListener(object : MenuItem.OnActionExpandListener {
|
||||
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
|
||||
return true
|
||||
}
|
||||
searchItem.setOnActionExpandListener(
|
||||
object : MenuItem.OnActionExpandListener {
|
||||
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
|
||||
router.popCurrentController()
|
||||
return false
|
||||
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
|
||||
router.popCurrentController()
|
||||
return false
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||
override fun onQueryTextSubmit(query: String?): Boolean {
|
||||
setItems(getResultSet(query))
|
||||
return false
|
||||
searchView.setOnQueryTextListener(
|
||||
object : SearchView.OnQueryTextListener {
|
||||
override fun onQueryTextSubmit(query: String?): Boolean {
|
||||
setItems(getResultSet(query))
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onQueryTextChange(newText: String?): Boolean {
|
||||
setItems(getResultSet(newText))
|
||||
return false
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
override fun onQueryTextChange(newText: String?): Boolean {
|
||||
setItems(getResultSet(newText))
|
||||
return false
|
||||
}
|
||||
})
|
||||
|
||||
searchView.setQuery(presenter.preferences.lastSearchQuerySearchSettings(), true)
|
||||
searchView.setQuery(presenter.preferences.lastSearchQuerySearchSettings().get(), true)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View) {
|
||||
|
@ -160,7 +164,7 @@ class SettingsSearchController :
|
|||
*/
|
||||
override fun onTitleClick(ctrl: SettingsController) {
|
||||
searchView.query.let {
|
||||
presenter.preferences.lastSearchQuerySearchSettings(it.toString())
|
||||
presenter.preferences.lastSearchQuerySearchSettings().set(it.toString())
|
||||
}
|
||||
|
||||
router.pushController(ctrl.withFadeTransaction())
|
||||
|
|
|
@ -24,8 +24,7 @@ import kotlin.reflect.KClass
|
|||
import kotlin.reflect.full.createInstance
|
||||
|
||||
object SettingsSearchHelper {
|
||||
var prefSearchResultList: MutableList<SettingsSearchResult> = mutableListOf()
|
||||
private set
|
||||
private var prefSearchResultList: MutableList<SettingsSearchResult> = mutableListOf()
|
||||
|
||||
/**
|
||||
* All subclasses of `SettingsController` should be listed here, in order to have their preferences searchable.
|
||||
|
@ -79,7 +78,11 @@ object SettingsSearchHelper {
|
|||
* Extracts the data needed from a `Preference` to create a `SettingsSearchResult`, and then adds it to `prefSearchResultList`
|
||||
* Future enhancement: make bold the text matched by the search query.
|
||||
*/
|
||||
private fun getSettingSearchResult(ctrl: SettingsController, pref: Preference, breadcrumbs: String = "") {
|
||||
private fun getSettingSearchResult(
|
||||
ctrl: SettingsController,
|
||||
pref: Preference,
|
||||
breadcrumbs: String = ""
|
||||
) {
|
||||
when (pref) {
|
||||
is PreferenceGroup -> {
|
||||
val breadcrumbsStr = addLocalizedBreadcrumb(breadcrumbs, "${pref.title}")
|
||||
|
|
|
@ -2,11 +2,11 @@ package eu.kanade.tachiyomi.ui.setting.settingssearch
|
|||
|
||||
import android.view.View
|
||||
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
||||
import kotlin.reflect.full.createInstance
|
||||
import kotlinx.android.synthetic.main.settings_search_controller_card.search_result_pref_breadcrumb
|
||||
import kotlinx.android.synthetic.main.settings_search_controller_card.search_result_pref_summary
|
||||
import kotlinx.android.synthetic.main.settings_search_controller_card.search_result_pref_title
|
||||
import kotlinx.android.synthetic.main.settings_search_controller_card.title_wrapper
|
||||
import kotlin.reflect.full.createInstance
|
||||
|
||||
/**
|
||||
* Holder that binds the [SettingsSearchItem] containing catalogue cards.
|
||||
|
|
|
@ -13,7 +13,10 @@ import eu.kanade.tachiyomi.R
|
|||
* @param pref the source for the search results.
|
||||
* @param results the search results.
|
||||
*/
|
||||
class SettingsSearchItem(val settingsSearchResult: SettingsSearchHelper.SettingsSearchResult, val results: List<SettingsSearchItem>?) :
|
||||
class SettingsSearchItem(
|
||||
val settingsSearchResult: SettingsSearchHelper.SettingsSearchResult,
|
||||
val results: List<SettingsSearchItem>?
|
||||
) :
|
||||
AbstractFlexibleItem<SettingsSearchHolder>() {
|
||||
|
||||
override fun getLayoutRes(): Int {
|
||||
|
@ -25,7 +28,10 @@ class SettingsSearchItem(val settingsSearchResult: SettingsSearchHelper.Settings
|
|||
*
|
||||
* @return holder of view.
|
||||
*/
|
||||
override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): SettingsSearchHolder {
|
||||
override fun createViewHolder(
|
||||
view: View,
|
||||
adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>
|
||||
): SettingsSearchHolder {
|
||||
return SettingsSearchHolder(view, adapter as SettingsSearchAdapter)
|
||||
}
|
||||
|
||||
|
|
|
@ -22,8 +22,8 @@
|
|||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorSurface"
|
||||
android:alpha="0.75" />
|
||||
android:alpha="0.75"
|
||||
android:background="?attr/colorSurface" />
|
||||
|
||||
<ProgressBar
|
||||
style="?android:attr/progressBarStyleLarge"
|
||||
|
|
|
@ -1,45 +1,35 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/title_wrapper"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="48dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:background="?attr/selectableItemBackground">
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/search_result_pref_title"
|
||||
style="@style/TextAppearance.Regular.SubHeading"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/search_result_pref_summary"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/search_result_pref_title"
|
||||
tools:text="Summary" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/search_result_pref_breadcrumb"
|
||||
style="@style/TextAppearance.Regular.Caption"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/search_result_pref_summary"
|
||||
tools:text="Location" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -412,7 +412,6 @@
|
|||
<string name="licenses">Open source licenses</string>
|
||||
<string name="check_for_updates">Check for updates</string>
|
||||
<string name="updated_version">Updated to v%1$s</string>
|
||||
<string name="about_resources">Resources</string>
|
||||
|
||||
<!-- ACRA -->
|
||||
<string name="pref_enable_acra">Send crash reports</string>
|
||||
|
|
Loading…
Reference in a new issue