mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	Add EH and similar specific tag formatting for global and local search
This commit is contained in:
		| @@ -40,13 +40,13 @@ import eu.kanade.tachiyomi.ui.webview.WebViewActivity | ||||
| import eu.kanade.tachiyomi.util.system.copyToClipboard | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| import eu.kanade.tachiyomi.util.view.gone | ||||
| import eu.kanade.tachiyomi.util.view.setChips | ||||
| import eu.kanade.tachiyomi.util.view.snack | ||||
| import eu.kanade.tachiyomi.util.view.visible | ||||
| import eu.kanade.tachiyomi.util.view.visibleIf | ||||
| import exh.EH_SOURCE_ID | ||||
| import exh.EXH_SOURCE_ID | ||||
| import exh.MERGED_SOURCE_ID | ||||
| import exh.util.setChipsExtended | ||||
| import java.text.DateFormat | ||||
| import java.text.DecimalFormat | ||||
| import java.util.Date | ||||
| @@ -395,8 +395,8 @@ class MangaInfoController(private val fromSource: Boolean = false) : | ||||
|  | ||||
|             // Update genres list | ||||
|             if (!manga.genre.isNullOrBlank()) { | ||||
|                 binding.mangaGenresTagsCompactChips.setChips(manga.getGenres(), this::performSearch, this::performGlobalSearch) | ||||
|                 binding.mangaGenresTagsFullChips.setChips(manga.getGenres(), this::performSearch, this::performGlobalSearch) | ||||
|                 binding.mangaGenresTagsCompactChips.setChipsExtended(manga.getGenres(), this::performSearch, this::performGlobalSearch, manga.source) | ||||
|                 binding.mangaGenresTagsFullChips.setChipsExtended(manga.getGenres(), this::performSearch, this::performGlobalSearch, manga.source) | ||||
|             } else { | ||||
|                 binding.mangaGenresTagsWrapper.gone() | ||||
|             } | ||||
|   | ||||
| @@ -5,6 +5,12 @@ import android.view.ViewGroup | ||||
| import android.view.WindowInsets | ||||
| import android.widget.FrameLayout | ||||
| import androidx.annotation.Px | ||||
| import com.google.android.material.chip.Chip | ||||
| import com.google.android.material.chip.ChipGroup | ||||
| import exh.EH_SOURCE_ID | ||||
| import exh.EXH_SOURCE_ID | ||||
| import exh.HITOMI_SOURCE_ID | ||||
| import exh.NHENTAI_SOURCE_ID | ||||
|  | ||||
| inline val View.marginTop: Int | ||||
|     get() = (layoutParams as? ViewGroup.MarginLayoutParams)?.topMargin ?: 0 | ||||
| @@ -99,3 +105,41 @@ object RecyclerWindowInsetsListener : View.OnApplyWindowInsetsListener { | ||||
|         return insets | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Replaces chips in a ChipGroup. | ||||
|  * | ||||
|  * @param items List of strings that are shown as individual chips. | ||||
|  * @param onClick Optional on click listener for each chip. | ||||
|  * @param onLongClick Optional long click listener for each chip. | ||||
|  * @param sourceId Optional source check to determine if we need special search functions for each chip. | ||||
|  */ | ||||
| fun ChipGroup.setChipsExtended(items: List<String>?, onClick: (item: String) -> Unit = {}, onLongClick: (item: String) -> Unit = {}, sourceId: Long = 0L) { | ||||
|     removeAllViews() | ||||
|  | ||||
|     items?.forEach { item -> | ||||
|         val chip = Chip(context).apply { | ||||
|             text = item | ||||
|             var search = item | ||||
|             if (sourceId == EXH_SOURCE_ID || sourceId == EH_SOURCE_ID || sourceId == NHENTAI_SOURCE_ID || sourceId == HITOMI_SOURCE_ID) { | ||||
|                 val parsed = parseTag(search) | ||||
|                 search = wrapTag(parsed.first, parsed.second.substringBefore('|').trim()) | ||||
|             } | ||||
|             setOnClickListener { onClick(search) } | ||||
|             setOnLongClickListener { | ||||
|                 onLongClick(search) | ||||
|                 false | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         addView(chip) | ||||
|     } | ||||
| } | ||||
|  | ||||
| private fun parseTag(tag: String) = tag.substringBefore(':').trim() to tag.substringAfter(':').trim() | ||||
|  | ||||
| private fun wrapTag(namespace: String, tag: String) = if (tag.contains(' ')) { | ||||
|     "$namespace:\"$tag$\"" | ||||
| } else { | ||||
|     "$namespace:$tag$" | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user