mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	[5893] - Implemented Language Badge (#6050)
* Implemented language badge on library items * Added left margin for better viewing the badge on list view * Adjusting borders on badges, cleaning string interpolation and cleaning code * Improving readability on Holders and removing unused background and text on grid items
This commit is contained in:
		| @@ -197,6 +197,8 @@ object PreferenceKeys { | ||||
|  | ||||
|     const val unreadBadge = "display_unread_badge" | ||||
|  | ||||
|     const val languageBadge = "display_language_badge" | ||||
|  | ||||
|     const val localBadge = "display_local_badge" | ||||
|  | ||||
|     const val categoryTabs = "display_category_tabs" | ||||
|   | ||||
| @@ -253,6 +253,8 @@ class PreferencesHelper(val context: Context) { | ||||
|  | ||||
|     fun unreadBadge() = flowPrefs.getBoolean(Keys.unreadBadge, true) | ||||
|  | ||||
|     fun languageBadge() = flowPrefs.getBoolean(Keys.languageBadge, false) | ||||
|  | ||||
|     fun categoryTabs() = flowPrefs.getBoolean(Keys.categoryTabs, true) | ||||
|  | ||||
|     fun categoryNumberOfItems() = flowPrefs.getBoolean(Keys.categoryNumberOfItems, false) | ||||
|   | ||||
| @@ -39,7 +39,8 @@ class SourceComfortableGridHolder(private val view: View, private val adapter: F | ||||
|         binding.thumbnail.alpha = if (manga.favorite) 0.3f else 1.0f | ||||
|  | ||||
|         // For rounded corners | ||||
|         binding.badges.clipToOutline = true | ||||
|         binding.leftBadges.clipToOutline = true | ||||
|         binding.rightBadges.clipToOutline = true | ||||
|  | ||||
|         // Set favorite badge | ||||
|         binding.favoriteText.isVisible = manga.favorite | ||||
|   | ||||
| @@ -39,7 +39,8 @@ open class SourceGridHolder(private val view: View, private val adapter: Flexibl | ||||
|         binding.thumbnail.alpha = if (manga.favorite) 0.3f else 1.0f | ||||
|  | ||||
|         // For rounded corners | ||||
|         binding.badges.clipToOutline = true | ||||
|         binding.leftBadges.clipToOutline = true | ||||
|         binding.rightBadges.clipToOutline = true | ||||
|  | ||||
|         // Set favorite badge | ||||
|         binding.favoriteText.isVisible = manga.favorite | ||||
|   | ||||
| @@ -36,7 +36,8 @@ class LibraryComfortableGridHolder( | ||||
|         binding.title.text = item.manga.title | ||||
|  | ||||
|         // For rounded corners | ||||
|         binding.badges.clipToOutline = true | ||||
|         binding.leftBadges.clipToOutline = true | ||||
|         binding.rightBadges.clipToOutline = true | ||||
|  | ||||
|         // Update the unread count and its visibility. | ||||
|         with(binding.unreadText) { | ||||
| @@ -48,6 +49,11 @@ class LibraryComfortableGridHolder( | ||||
|             isVisible = item.downloadCount > 0 | ||||
|             text = item.downloadCount.toString() | ||||
|         } | ||||
|         // Update the source language and its visibility | ||||
|         with(binding.languageText) { | ||||
|             isVisible = item.sourceLanguage.isNotEmpty() | ||||
|             text = item.sourceLanguage | ||||
|         } | ||||
|         // set local visibility if its local manga | ||||
|         binding.localText.isVisible = item.isLocal | ||||
|  | ||||
|   | ||||
| @@ -34,7 +34,8 @@ open class LibraryCompactGridHolder( | ||||
|         binding.title.text = item.manga.title | ||||
|  | ||||
|         // For rounded corners | ||||
|         binding.badges.clipToOutline = true | ||||
|         binding.leftBadges.clipToOutline = true | ||||
|         binding.rightBadges.clipToOutline = true | ||||
|  | ||||
|         // Update the unread count and its visibility. | ||||
|         with(binding.unreadText) { | ||||
| @@ -46,6 +47,11 @@ open class LibraryCompactGridHolder( | ||||
|             isVisible = item.downloadCount > 0 | ||||
|             text = item.downloadCount.toString() | ||||
|         } | ||||
|         // Update the source language and its visibility | ||||
|         with(binding.languageText) { | ||||
|             isVisible = item.sourceLanguage.isNotEmpty() | ||||
|             text = item.sourceLanguage | ||||
|         } | ||||
|         // set local visibility if its local manga | ||||
|         binding.localText.isVisible = item.isLocal | ||||
|  | ||||
|   | ||||
| @@ -34,6 +34,7 @@ class LibraryItem( | ||||
|     var downloadCount = -1 | ||||
|     var unreadCount = -1 | ||||
|     var isLocal = false | ||||
|     var sourceLanguage = "" | ||||
|  | ||||
|     private fun getDisplayMode(): DisplayModeSetting { | ||||
|         return if (shouldSetFromCategory.get() && manga.category != 0) { | ||||
|   | ||||
| @@ -46,6 +46,11 @@ class LibraryListHolder( | ||||
|             isVisible = item.downloadCount > 0 | ||||
|             text = "${item.downloadCount}" | ||||
|         } | ||||
|         // Update the source language and its visibility | ||||
|         with(binding.languageText) { | ||||
|             isVisible = item.sourceLanguage.isNotEmpty() | ||||
|             text = item.sourceLanguage | ||||
|         } | ||||
|         // show local text badge if local manga | ||||
|         binding.localText.isVisible = item.isLocal | ||||
|  | ||||
|   | ||||
| @@ -200,6 +200,7 @@ class LibraryPresenter( | ||||
|         val showDownloadBadges = preferences.downloadBadge().get() | ||||
|         val showUnreadBadges = preferences.unreadBadge().get() | ||||
|         val showLocalBadges = preferences.localBadge().get() | ||||
|         val showLanguageBadges = preferences.languageBadge().get() | ||||
|  | ||||
|         for ((_, itemList) in map) { | ||||
|             for (item in itemList) { | ||||
| @@ -223,6 +224,13 @@ class LibraryPresenter( | ||||
|                     // Hide / Unset local badge if not enabled | ||||
|                     false | ||||
|                 } | ||||
|  | ||||
|                 item.sourceLanguage = if (showLanguageBadges) { | ||||
|                     sourceManager.getOrStub(item.manga.source).lang.uppercase() | ||||
|                 } else { | ||||
|                     // Unset source language if not enabled | ||||
|                     "" | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -367,15 +367,17 @@ class LibrarySettingsSheet( | ||||
|             private val downloadBadge = Item.CheckboxGroup(R.string.action_display_download_badge, this) | ||||
|             private val unreadBadge = Item.CheckboxGroup(R.string.action_display_unread_badge, this) | ||||
|             private val localBadge = Item.CheckboxGroup(R.string.action_display_local_badge, this) | ||||
|             private val languageBadge = Item.CheckboxGroup(R.string.action_display_language_badge, this) | ||||
|  | ||||
|             override val header = Item.Header(R.string.badges_header) | ||||
|             override val items = listOf(downloadBadge, unreadBadge, localBadge) | ||||
|             override val items = listOf(downloadBadge, unreadBadge, localBadge, languageBadge) | ||||
|             override val footer = null | ||||
|  | ||||
|             override fun initModels() { | ||||
|                 downloadBadge.checked = preferences.downloadBadge().get() | ||||
|                 unreadBadge.checked = preferences.unreadBadge().get() | ||||
|                 localBadge.checked = preferences.localBadge().get() | ||||
|                 languageBadge.checked = preferences.languageBadge().get() | ||||
|             } | ||||
|  | ||||
|             override fun onItemClicked(item: Item) { | ||||
| @@ -385,6 +387,7 @@ class LibrarySettingsSheet( | ||||
|                     downloadBadge -> preferences.downloadBadge().set((item.checked)) | ||||
|                     unreadBadge -> preferences.unreadBadge().set((item.checked)) | ||||
|                     localBadge -> preferences.localBadge().set((item.checked)) | ||||
|                     languageBadge -> preferences.languageBadge().set((item.checked)) | ||||
|                 } | ||||
|                 adapter.notifyItemChanged(item) | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user