mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Global Search click title to search in Source (#3265)
* Global Search click to search in source * Add requested changes
This commit is contained in:
		| @@ -67,9 +67,13 @@ open class BrowseSourceController(bundle: Bundle) : | ||||
|     FlexibleAdapter.EndlessScrollListener, | ||||
|     ChangeMangaCategoriesDialog.Listener { | ||||
|  | ||||
|     constructor(source: CatalogueSource) : this( | ||||
|     constructor(source: CatalogueSource, searchQuery: String? = null) : this( | ||||
|         Bundle().apply { | ||||
|             putLong(SOURCE_ID_KEY, source.id) | ||||
|  | ||||
|             if (searchQuery != null) { | ||||
|                 putString(SEARCH_QUERY_KEY, searchQuery) | ||||
|             } | ||||
|         } | ||||
|     ) | ||||
|  | ||||
| @@ -114,7 +118,7 @@ open class BrowseSourceController(bundle: Bundle) : | ||||
|     } | ||||
|  | ||||
|     override fun createPresenter(): BrowseSourcePresenter { | ||||
|         return BrowseSourcePresenter(args.getLong(SOURCE_ID_KEY)) | ||||
|         return BrowseSourcePresenter(args.getLong(SOURCE_ID_KEY), args.getString(SEARCH_QUERY_KEY)) | ||||
|     } | ||||
|  | ||||
|     override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { | ||||
| @@ -604,5 +608,6 @@ open class BrowseSourceController(bundle: Bundle) : | ||||
|  | ||||
|     protected companion object { | ||||
|         const val SOURCE_ID_KEY = "sourceId" | ||||
|         const val SEARCH_QUERY_KEY = "searchQuery" | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -44,6 +44,7 @@ import uy.kohesive.injekt.api.get | ||||
|  */ | ||||
| open class BrowseSourcePresenter( | ||||
|     private val sourceId: Long, | ||||
|     private val searchQuery: String? = null, | ||||
|     private val sourceManager: SourceManager = Injekt.get(), | ||||
|     private val db: DatabaseHelper = Injekt.get(), | ||||
|     private val prefs: PreferencesHelper = Injekt.get(), | ||||
| @@ -58,7 +59,7 @@ open class BrowseSourcePresenter( | ||||
|     /** | ||||
|      * Query from the view. | ||||
|      */ | ||||
|     var query = "" | ||||
|     var query = searchQuery ?: "" | ||||
|         private set | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import android.os.Parcelable | ||||
| import android.util.SparseArray | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.kanade.tachiyomi.source.CatalogueSource | ||||
|  | ||||
| /** | ||||
|  * Adapter that holds the search cards. | ||||
| @@ -14,6 +15,8 @@ import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| class GlobalSearchAdapter(val controller: GlobalSearchController) : | ||||
|     FlexibleAdapter<GlobalSearchItem>(null, controller, true) { | ||||
|  | ||||
|     val titleClickListener: OnTitleClickListener = controller | ||||
|  | ||||
|     /** | ||||
|      * Bundle where the view state of the holders is saved. | ||||
|      */ | ||||
| @@ -68,6 +71,10 @@ class GlobalSearchAdapter(val controller: GlobalSearchController) : | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     interface OnTitleClickListener { | ||||
|         fun onTitleClick(source: CatalogueSource) | ||||
|     } | ||||
|  | ||||
|     private companion object { | ||||
|         const val HOLDER_BUNDLE_KEY = "holder_bundle" | ||||
|     } | ||||
|   | ||||
| @@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.databinding.GlobalSearchControllerBinding | ||||
| import eu.kanade.tachiyomi.source.CatalogueSource | ||||
| import eu.kanade.tachiyomi.ui.base.controller.NucleusController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController | ||||
| import eu.kanade.tachiyomi.ui.manga.MangaController | ||||
| import kotlinx.coroutines.flow.filterIsInstance | ||||
| import kotlinx.coroutines.flow.launchIn | ||||
| @@ -31,7 +32,8 @@ open class GlobalSearchController( | ||||
|     protected val initialQuery: String? = null, | ||||
|     protected val extensionFilter: String? = null | ||||
| ) : NucleusController<GlobalSearchControllerBinding, GlobalSearchPresenter>(), | ||||
|     GlobalSearchCardAdapter.OnMangaClickListener { | ||||
|     GlobalSearchCardAdapter.OnMangaClickListener, | ||||
|     GlobalSearchAdapter.OnTitleClickListener { | ||||
|  | ||||
|     /** | ||||
|      * Adapter containing search results grouped by lang. | ||||
| @@ -190,4 +192,12 @@ open class GlobalSearchController( | ||||
|     fun onMangaInitialized(source: CatalogueSource, manga: Manga) { | ||||
|         getHolder(source)?.setImage(manga) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Opens a catalogue with the given search. | ||||
|      */ | ||||
|     override fun onTitleClick(source: CatalogueSource) { | ||||
|         presenter.preferences.lastUsedCatalogueSource().set(source.id) | ||||
|         router.pushController(BrowseSourceController(source, presenter.query).withFadeTransaction()) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -31,6 +31,12 @@ class GlobalSearchHolder(view: View, val adapter: GlobalSearchAdapter) : | ||||
|         // Set layout horizontal. | ||||
|         recycler.layoutManager = LinearLayoutManager(view.context, LinearLayoutManager.HORIZONTAL, false) | ||||
|         recycler.adapter = mangaAdapter | ||||
|  | ||||
|         title.setOnClickListener { | ||||
|             adapter.getItem(bindingAdapterPosition)?.let { | ||||
|                 adapter.titleClickListener.onTitleClick(it.source) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user