mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Hide manga title in toolbar when at top
This commit is contained in:
		| @@ -74,7 +74,7 @@ abstract class BaseController<VB : ViewBinding>(bundle: Bundle? = null) : | ||||
|         return null | ||||
|     } | ||||
|  | ||||
|     fun setTitle() { | ||||
|     fun setTitle(title: String? = null) { | ||||
|         var parentController = parentController | ||||
|         while (parentController != null) { | ||||
|             if (parentController is BaseController<*> && parentController.getTitle() != null) { | ||||
| @@ -83,7 +83,7 @@ abstract class BaseController<VB : ViewBinding>(bundle: Bundle? = null) : | ||||
|             parentController = parentController.parentController | ||||
|         } | ||||
|  | ||||
|         (activity as? AppCompatActivity)?.supportActionBar?.title = getTitle() | ||||
|         (activity as? AppCompatActivity)?.supportActionBar?.title = title ?: getTitle() | ||||
|     } | ||||
|  | ||||
|     private fun Controller.instance(): String { | ||||
|   | ||||
| @@ -130,7 +130,7 @@ class LibraryController( | ||||
|         retainViewMode = RetainViewMode.RETAIN_DETACH | ||||
|     } | ||||
|  | ||||
|     private var title: String? = null | ||||
|     private var currentTitle: String? = null | ||||
|         set(value) { | ||||
|             if (field != value) { | ||||
|                 field = value | ||||
| @@ -139,15 +139,15 @@ class LibraryController( | ||||
|         } | ||||
|  | ||||
|     override fun getTitle(): String? { | ||||
|         return title ?: resources?.getString(R.string.label_library) | ||||
|         return currentTitle ?: resources?.getString(R.string.label_library) | ||||
|     } | ||||
|  | ||||
|     private fun updateTitle() { | ||||
|         if (preferences.categoryTabs().get()) { | ||||
|             title = resources?.getString(R.string.label_library) | ||||
|             currentTitle = resources?.getString(R.string.label_library) | ||||
|         } else { | ||||
|             adapter?.categories?.get(binding.libraryPager.currentItem)?.let { | ||||
|                 title = it.name | ||||
|                 currentTitle = it.name | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -4,6 +4,7 @@ import android.animation.Animator | ||||
| import android.animation.AnimatorListenerAdapter | ||||
| import android.app.Activity | ||||
| import android.content.Intent | ||||
| import android.graphics.Color | ||||
| import android.os.Bundle | ||||
| import android.view.LayoutInflater | ||||
| import android.view.Menu | ||||
| @@ -61,16 +62,20 @@ import eu.kanade.tachiyomi.ui.recent.history.HistoryController | ||||
| import eu.kanade.tachiyomi.ui.recent.updates.UpdatesController | ||||
| import eu.kanade.tachiyomi.ui.webview.WebViewActivity | ||||
| import eu.kanade.tachiyomi.util.hasCustomCover | ||||
| import eu.kanade.tachiyomi.util.system.getResourceColor | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| import eu.kanade.tachiyomi.util.view.getCoordinates | ||||
| import eu.kanade.tachiyomi.util.view.gone | ||||
| import eu.kanade.tachiyomi.util.view.shrinkOnScroll | ||||
| import eu.kanade.tachiyomi.util.view.snack | ||||
| import eu.kanade.tachiyomi.util.view.visible | ||||
| import kotlin.math.min | ||||
| import kotlinx.android.synthetic.main.main_activity.root_coordinator | ||||
| import kotlinx.android.synthetic.main.main_activity.toolbar | ||||
| import kotlinx.coroutines.flow.launchIn | ||||
| import kotlinx.coroutines.flow.onEach | ||||
| import reactivecircus.flowbinding.android.view.clicks | ||||
| import reactivecircus.flowbinding.recyclerview.scrollEvents | ||||
| import reactivecircus.flowbinding.swiperefreshlayout.refreshes | ||||
| import timber.log.Timber | ||||
| import uy.kohesive.injekt.Injekt | ||||
| @@ -118,6 +123,9 @@ class MangaController : | ||||
|     private val preferences: PreferencesHelper by injectLazy() | ||||
|     private val coverCache: CoverCache by injectLazy() | ||||
|  | ||||
|     private val toolbarTextColor by lazy { view!!.context.getResourceColor(R.attr.colorOnPrimary) } | ||||
|     private var toolbarTextAlpha = 255 | ||||
|  | ||||
|     private var mangaInfoAdapter: MangaInfoHeaderAdapter? = null | ||||
|     private var chaptersHeaderAdapter: MangaChaptersHeaderAdapter? = null | ||||
|     private var chaptersAdapter: ChaptersAdapter? = null | ||||
| @@ -151,10 +159,6 @@ class MangaController : | ||||
|         setHasOptionsMenu(true) | ||||
|     } | ||||
|  | ||||
|     override fun getTitle(): String? { | ||||
|         return manga?.title | ||||
|     } | ||||
|  | ||||
|     override fun onChangeEnded(handler: ControllerChangeHandler, type: ControllerChangeType) { | ||||
|         super.onChangeEnded(handler, type) | ||||
|         if (manga == null || source == null) { | ||||
| @@ -198,8 +202,18 @@ class MangaController : | ||||
|             if (!fromSource && preferences.jumpToChapters()) { | ||||
|                 (binding.recycler.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(1, 0) | ||||
|             } | ||||
|  | ||||
|             // Delayed in case we need to jump to chapters | ||||
|             binding.recycler.post { | ||||
|                 updateToolbarTitleAlpha() | ||||
|                 setTitle(manga?.title) | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         binding.recycler.scrollEvents() | ||||
|             .onEach { updateToolbarTitleAlpha() } | ||||
|             .launchIn(scope) | ||||
|  | ||||
|         binding.swipeRefresh.refreshes() | ||||
|             .onEach { | ||||
|                 fetchMangaInfoFromSource(manualFetch = true) | ||||
| @@ -219,6 +233,32 @@ class MangaController : | ||||
|         updateFilterIconState() | ||||
|     } | ||||
|  | ||||
|     private fun updateToolbarTitleAlpha(alpha: Int? = null) { | ||||
|         val calculatedAlpha = when { | ||||
|             // Specific alpha provided | ||||
|             alpha != null -> alpha | ||||
|  | ||||
|             // First item isn't in view, full opacity | ||||
|             ((binding.recycler.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition() > 0) -> 255 | ||||
|  | ||||
|             // Based on scroll amount when first item is in view | ||||
|             else -> min(binding.recycler.computeVerticalScrollOffset(), 255) | ||||
|         } | ||||
|  | ||||
|         if (calculatedAlpha != toolbarTextAlpha) { | ||||
|             toolbarTextAlpha = calculatedAlpha | ||||
|  | ||||
|             activity?.toolbar?.setTitleTextColor( | ||||
|                 Color.argb( | ||||
|                     toolbarTextAlpha, | ||||
|                     Color.red(toolbarTextColor), | ||||
|                     Color.green(toolbarTextColor), | ||||
|                     Color.blue(toolbarTextColor) | ||||
|                 ) | ||||
|             ) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun updateFilterIconState() { | ||||
|         chaptersHeaderAdapter?.setHasActiveFilters(settingsSheet?.filters?.hasActiveFilters() == true) | ||||
|     } | ||||
| @@ -268,6 +308,7 @@ class MangaController : | ||||
|         chaptersHeaderAdapter = null | ||||
|         chaptersAdapter = null | ||||
|         settingsSheet = null | ||||
|         updateToolbarTitleAlpha(255) | ||||
|         super.onDestroyView(view) | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user