mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	Fix grid columns on tablets, split out common main_activity layout sections
This commit is contained in:
		| @@ -70,7 +70,7 @@ class BrowseController : | ||||
|     override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) { | ||||
|         super.onChangeStarted(handler, type) | ||||
|         if (type.isEnter) { | ||||
|             (activity as? MainActivity)?.binding?.tabs?.apply { | ||||
|             (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.apply { | ||||
|                 setupWithViewPager(binding.pager) | ||||
|  | ||||
|                 // Show badge on tab for extension updates | ||||
| @@ -92,7 +92,7 @@ class BrowseController : | ||||
|     } | ||||
|  | ||||
|     fun setExtensionUpdateBadge() { | ||||
|         (activity as? MainActivity)?.binding?.tabs?.apply { | ||||
|         (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.apply { | ||||
|             val updates = preferences.extensionUpdatesCount().get() | ||||
|             if (updates > 0) { | ||||
|                 val badge: BadgeDrawable? = getTabAt(1)?.orCreateBadge | ||||
|   | ||||
| @@ -218,7 +218,7 @@ class LibraryController( | ||||
|     override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) { | ||||
|         super.onChangeStarted(handler, type) | ||||
|         if (type.isEnter) { | ||||
|             (activity as? MainActivity)?.binding?.tabs?.setupWithViewPager(binding.libraryPager) | ||||
|             (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.setupWithViewPager(binding.libraryPager) | ||||
|             presenter.subscribeLibrary() | ||||
|         } | ||||
|     } | ||||
| @@ -297,7 +297,7 @@ class LibraryController( | ||||
|         // Delay the scroll position to allow the view to be properly measured. | ||||
|         view.post { | ||||
|             if (isAttached) { | ||||
|                 (activity as? MainActivity)?.binding?.tabs?.setScrollPosition(binding.libraryPager.currentItem, 0f, true) | ||||
|                 (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.setScrollPosition(binding.libraryPager.currentItem, 0f, true) | ||||
|             } | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -96,16 +96,16 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|         } | ||||
|  | ||||
|         setContentView(binding.root) | ||||
|         setSupportActionBar(binding.toolbar) | ||||
|         setSupportActionBar(binding.toolbarLayout.toolbar) | ||||
|  | ||||
|         // Draw edge-to-edge | ||||
|         WindowCompat.setDecorFitsSystemWindows(window, false) | ||||
|         binding.appbar.applyInsetter { | ||||
|         binding.toolbarLayout.appbar.applyInsetter { | ||||
|             type(navigationBars = true, statusBars = true) { | ||||
|                 padding(left = true, top = true, right = true) | ||||
|             } | ||||
|         } | ||||
|         binding.rootFab.applyInsetter { | ||||
|         binding.fabLayout.rootFab.applyInsetter { | ||||
|             type(navigationBars = true) { | ||||
|                 margin() | ||||
|             } | ||||
| @@ -131,13 +131,13 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|             insets | ||||
|         } | ||||
|  | ||||
|         tabAnimator = ViewHeightAnimator(binding.tabs, 0L) | ||||
|         tabAnimator = ViewHeightAnimator(binding.toolbarLayout.tabs, 0L) | ||||
|  | ||||
|         if (binding.bottomNav != null) { | ||||
|             bottomNavAnimator = ViewHeightAnimator(binding.bottomNav!!) | ||||
|  | ||||
|             // If bottom nav is hidden, make it visible again when the app bar is expanded | ||||
|             binding.appbar.addOnOffsetChangedListener( | ||||
|             binding.toolbarLayout.appbar.addOnOffsetChangedListener( | ||||
|                 AppBarLayout.OnOffsetChangedListener { _, verticalOffset -> | ||||
|                     if (verticalOffset == 0) { | ||||
|                         showNav(true) | ||||
| @@ -186,7 +186,7 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         binding.toolbar.setNavigationOnClickListener { | ||||
|         binding.toolbarLayout.toolbar.setNavigationOnClickListener { | ||||
|             onBackPressed() | ||||
|         } | ||||
|  | ||||
| @@ -227,13 +227,13 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|             .launchIn(lifecycleScope) | ||||
|  | ||||
|         preferences.downloadedOnly() | ||||
|             .asImmediateFlow { binding.downloadedOnly.isVisible = it } | ||||
|             .asImmediateFlow { binding.toolbarLayout.downloadedOnly.isVisible = it } | ||||
|             .launchIn(lifecycleScope) | ||||
|  | ||||
|         preferences.incognitoMode().asFlow() | ||||
|             .drop(1) | ||||
|             .onEach { | ||||
|                 binding.incognitoMode.isVisible = it | ||||
|                 binding.toolbarLayout.incognitoMode.isVisible = it | ||||
|  | ||||
|                 // Close BrowseSourceController and its MangaController child when incognito mode is disabled | ||||
|                 if (!it) { | ||||
| @@ -355,7 +355,7 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|  | ||||
|         // Binding sometimes isn't actually instantiated yet somehow | ||||
|         nav.setOnItemSelectedListener(null) | ||||
|         binding?.toolbar.setNavigationOnClickListener(null) | ||||
|         binding?.toolbarLayout?.toolbar.setNavigationOnClickListener(null) | ||||
|     } | ||||
|  | ||||
|     override fun onBackPressed() { | ||||
| @@ -408,7 +408,7 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|         supportActionBar?.setDisplayHomeAsUpEnabled(router.backstackSize != 1) | ||||
|  | ||||
|         // Always show appbar again when changing controllers | ||||
|         binding.appbar.setExpanded(true) | ||||
|         binding.toolbarLayout.appbar.setExpanded(true) | ||||
|  | ||||
|         if ((from == null || from is RootController) && to !is RootController) { | ||||
|             showNav(visible = false, collapse = true) | ||||
| @@ -419,34 +419,34 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|         } | ||||
|  | ||||
|         if (from is TabbedController) { | ||||
|             from.cleanupTabs(binding.tabs) | ||||
|             from.cleanupTabs(binding.toolbarLayout.tabs) | ||||
|         } | ||||
|         if (to is TabbedController) { | ||||
|             tabAnimator.expand() | ||||
|             to.configureTabs(binding.tabs) | ||||
|             to.configureTabs(binding.toolbarLayout.tabs) | ||||
|         } else { | ||||
|             tabAnimator.collapse() | ||||
|             binding.tabs.setupWithViewPager(null) | ||||
|             binding.toolbarLayout.tabs.setupWithViewPager(null) | ||||
|         } | ||||
|  | ||||
|         if (from is FabController) { | ||||
|             binding.rootFab.isVisible = false | ||||
|             from.cleanupFab(binding.rootFab) | ||||
|             binding.fabLayout.rootFab.isVisible = false | ||||
|             from.cleanupFab(binding.fabLayout.rootFab) | ||||
|         } | ||||
|         if (to is FabController) { | ||||
|             binding.rootFab.isVisible = true | ||||
|             to.configureFab(binding.rootFab) | ||||
|             binding.fabLayout.rootFab.isVisible = true | ||||
|             to.configureFab(binding.fabLayout.rootFab) | ||||
|         } | ||||
|  | ||||
|         when (to) { | ||||
|             is NoToolbarElevationController -> { | ||||
|                 binding.appbar.disableElevation() | ||||
|                 binding.toolbarLayout.appbar.disableElevation() | ||||
|             } | ||||
|             is ToolbarLiftOnScrollController -> { | ||||
|                 binding.appbar.enableElevation(true) | ||||
|                 binding.toolbarLayout.appbar.enableElevation(true) | ||||
|             } | ||||
|             else -> { | ||||
|                 binding.appbar.enableElevation(false) | ||||
|                 binding.toolbarLayout.appbar.enableElevation(false) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @@ -482,16 +482,16 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() { | ||||
|      */ | ||||
|     fun fixViewToBottom(view: View) { | ||||
|         val listener = AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset -> | ||||
|             val maxAbsOffset = appBarLayout.measuredHeight - binding.tabs.measuredHeight | ||||
|             val maxAbsOffset = appBarLayout.measuredHeight - binding.toolbarLayout.tabs.measuredHeight | ||||
|             view.translationY = -maxAbsOffset - verticalOffset.toFloat() + appBarLayout.marginTop | ||||
|         } | ||||
|         binding.appbar.addOnOffsetChangedListener(listener) | ||||
|         binding.toolbarLayout.appbar.addOnOffsetChangedListener(listener) | ||||
|         fixedViewsToBottom[view] = listener | ||||
|     } | ||||
|  | ||||
|     fun clearFixViewToBottom(view: View) { | ||||
|         val listener = fixedViewsToBottom.remove(view) | ||||
|         binding.appbar.removeOnOffsetChangedListener(listener) | ||||
|         binding.toolbarLayout.appbar.removeOnOffsetChangedListener(listener) | ||||
|     } | ||||
|  | ||||
|     private fun setBottomNavBehaviorOnScroll() { | ||||
|   | ||||
| @@ -277,7 +277,7 @@ class MangaController : | ||||
|             else -> min(binding.recycler.computeVerticalScrollOffset(), 255) | ||||
|         } | ||||
|  | ||||
|         (activity as? MainActivity)?.binding?.toolbar?.setTitleTextColor( | ||||
|         (activity as? MainActivity)?.binding?.toolbarLayout?.toolbar?.setTitleTextColor( | ||||
|             Color.argb( | ||||
|                 calculatedAlpha, | ||||
|                 toolbarTextColor.red, | ||||
|   | ||||
| @@ -1,71 +1,16 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <androidx.coordinatorlayout.widget.CoordinatorLayout 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/root_coordinator" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     android:orientation="vertical"> | ||||
|  | ||||
|     <eu.kanade.tachiyomi.widget.ElevationAppBarLayout | ||||
|         android:id="@+id/appbar" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:fitsSystemWindows="true"> | ||||
|     <include | ||||
|         android:id="@+id/toolbar_layout" | ||||
|         layout="@layout/main_activity_toolbar" /> | ||||
|  | ||||
|         <com.google.android.material.appbar.MaterialToolbar | ||||
|             android:id="@+id/toolbar" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="?attr/actionBarSize" | ||||
|             android:background="?attr/colorPrimary" | ||||
|             android:theme="?attr/actionBarTheme" | ||||
|             app:layout_scrollFlags="scroll|enterAlways" /> | ||||
|  | ||||
|         <com.google.android.material.tabs.TabLayout | ||||
|             android:id="@+id/tabs" | ||||
|             style="@style/Theme.Widget.Tabs" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" /> | ||||
|  | ||||
|         <FrameLayout | ||||
|             android:id="@+id/downloaded_only" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:background="@color/green" | ||||
|             android:visibility="gone" | ||||
|             tools:visibility="visible"> | ||||
|  | ||||
|             <TextView | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_gravity="center" | ||||
|                 android:padding="4dp" | ||||
|                 android:text="@string/label_downloaded_only" | ||||
|                 android:textColor="@color/md_white_1000" /> | ||||
|  | ||||
|         </FrameLayout> | ||||
|  | ||||
|         <FrameLayout | ||||
|             android:id="@+id/incognito_mode" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:background="@color/md_grey_800" | ||||
|             android:visibility="gone" | ||||
|             tools:visibility="visible"> | ||||
|  | ||||
|             <TextView | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_gravity="center" | ||||
|                 android:padding="4dp" | ||||
|                 android:text="@string/pref_incognito_mode" | ||||
|                 android:textColor="@color/md_white_1000" /> | ||||
|  | ||||
|         </FrameLayout> | ||||
|  | ||||
|     </eu.kanade.tachiyomi.widget.ElevationAppBarLayout> | ||||
|  | ||||
|     <LinearLayout | ||||
|     <androidx.constraintlayout.widget.ConstraintLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         app:layout_behavior="@string/appbar_scrolling_view_behavior"> | ||||
| @@ -78,22 +23,24 @@ | ||||
|             app:itemIconTint="@color/nav_selector" | ||||
|             app:itemTextColor="@color/nav_selector" | ||||
|             app:labelVisibilityMode="labeled" | ||||
|             app:layout_constraintBottom_toBottomOf="parent" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toTopOf="parent" | ||||
|             app:menu="@menu/main_nav" /> | ||||
|  | ||||
|         <com.bluelinelabs.conductor.ChangeHandlerFrameLayout | ||||
|             android:id="@+id/controller_container" | ||||
|             android:layout_width="0dp" | ||||
|             android:layout_height="match_parent" | ||||
|             android:layout_weight="1" /> | ||||
|             app:layout_constraintBottom_toBottomOf="parent" | ||||
|             app:layout_constraintEnd_toEndOf="parent" | ||||
|             app:layout_constraintStart_toEndOf="@+id/side_nav" | ||||
|             app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
|     </LinearLayout> | ||||
|     </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|  | ||||
|     <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton | ||||
|         android:id="@+id/root_fab" | ||||
|         style="@style/Theme.Widget.FAB" | ||||
|         android:visibility="gone" | ||||
|         tools:icon="@drawable/ic_add_24dp" | ||||
|         tools:text="Action" | ||||
|         tools:visibility="visible" /> | ||||
|     <include | ||||
|         android:id="@+id/fab_layout" | ||||
|         layout="@layout/main_activity_fab" /> | ||||
|  | ||||
| </androidx.coordinatorlayout.widget.CoordinatorLayout> | ||||
|   | ||||
| @@ -1,69 +1,14 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <androidx.coordinatorlayout.widget.CoordinatorLayout 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/root_coordinator" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     android:orientation="vertical"> | ||||
|  | ||||
|     <eu.kanade.tachiyomi.widget.ElevationAppBarLayout | ||||
|         android:id="@+id/appbar" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:fitsSystemWindows="true"> | ||||
|  | ||||
|         <com.google.android.material.appbar.MaterialToolbar | ||||
|             android:id="@+id/toolbar" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="?attr/actionBarSize" | ||||
|             android:background="?attr/colorPrimary" | ||||
|             android:theme="?attr/actionBarTheme" | ||||
|             app:layout_scrollFlags="scroll|enterAlways" /> | ||||
|  | ||||
|         <com.google.android.material.tabs.TabLayout | ||||
|             android:id="@+id/tabs" | ||||
|             style="@style/Theme.Widget.Tabs" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" /> | ||||
|  | ||||
|         <FrameLayout | ||||
|             android:id="@+id/downloaded_only" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:background="@color/green" | ||||
|             android:visibility="gone" | ||||
|             tools:visibility="visible"> | ||||
|  | ||||
|             <TextView | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_gravity="center" | ||||
|                 android:padding="4dp" | ||||
|                 android:text="@string/label_downloaded_only" | ||||
|                 android:textColor="@color/md_white_1000" /> | ||||
|  | ||||
|         </FrameLayout> | ||||
|  | ||||
|         <FrameLayout | ||||
|             android:id="@+id/incognito_mode" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:background="@color/md_grey_800" | ||||
|             android:visibility="gone" | ||||
|             tools:visibility="visible"> | ||||
|  | ||||
|             <TextView | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_gravity="center" | ||||
|                 android:padding="4dp" | ||||
|                 android:text="@string/pref_incognito_mode" | ||||
|                 android:textColor="@color/md_white_1000" /> | ||||
|  | ||||
|         </FrameLayout> | ||||
|  | ||||
|     </eu.kanade.tachiyomi.widget.ElevationAppBarLayout> | ||||
|     <include | ||||
|         android:id="@+id/toolbar_layout" | ||||
|         layout="@layout/main_activity_toolbar" /> | ||||
|  | ||||
|     <com.bluelinelabs.conductor.ChangeHandlerFrameLayout | ||||
|         android:id="@+id/controller_container" | ||||
| @@ -71,13 +16,9 @@ | ||||
|         android:layout_height="match_parent" | ||||
|         app:layout_behavior="@string/appbar_scrolling_view_behavior" /> | ||||
|  | ||||
|     <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton | ||||
|         android:id="@+id/root_fab" | ||||
|         style="@style/Theme.Widget.FAB" | ||||
|         android:visibility="gone" | ||||
|         tools:icon="@drawable/ic_add_24dp" | ||||
|         tools:text="Action" | ||||
|         tools:visibility="visible" /> | ||||
|     <include | ||||
|         android:id="@+id/fab_layout" | ||||
|         layout="@layout/main_activity_fab" /> | ||||
|  | ||||
|     <com.google.android.material.bottomnavigation.BottomNavigationView | ||||
|         android:id="@+id/bottom_nav" | ||||
|   | ||||
							
								
								
									
										9
									
								
								app/src/main/res/layout/main_activity_fab.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								app/src/main/res/layout/main_activity_fab.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:id="@+id/root_fab" | ||||
|     style="@style/Theme.Widget.FAB" | ||||
|     android:visibility="gone" | ||||
|     tools:icon="@drawable/ic_add_24dp" | ||||
|     tools:text="Action" | ||||
|     tools:visibility="visible" /> | ||||
							
								
								
									
										60
									
								
								app/src/main/res/layout/main_activity_toolbar.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								app/src/main/res/layout/main_activity_toolbar.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <eu.kanade.tachiyomi.widget.ElevationAppBarLayout 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/appbar" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="wrap_content" | ||||
|     android:fitsSystemWindows="true"> | ||||
|  | ||||
|     <com.google.android.material.appbar.MaterialToolbar | ||||
|         android:id="@+id/toolbar" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="?attr/actionBarSize" | ||||
|         android:background="?attr/colorPrimary" | ||||
|         android:theme="?attr/actionBarTheme" | ||||
|         app:layout_scrollFlags="scroll|enterAlways" /> | ||||
|  | ||||
|     <com.google.android.material.tabs.TabLayout | ||||
|         android:id="@+id/tabs" | ||||
|         style="@style/Theme.Widget.Tabs" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" /> | ||||
|  | ||||
|     <FrameLayout | ||||
|         android:id="@+id/downloaded_only" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:background="@color/green" | ||||
|         android:visibility="gone" | ||||
|         tools:visibility="visible"> | ||||
|  | ||||
|         <TextView | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_gravity="center" | ||||
|             android:padding="4dp" | ||||
|             android:text="@string/label_downloaded_only" | ||||
|             android:textColor="@color/md_white_1000" /> | ||||
|  | ||||
|     </FrameLayout> | ||||
|  | ||||
|     <FrameLayout | ||||
|         android:id="@+id/incognito_mode" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:background="@color/md_grey_800" | ||||
|         android:visibility="gone" | ||||
|         tools:visibility="visible"> | ||||
|  | ||||
|         <TextView | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_gravity="center" | ||||
|             android:padding="4dp" | ||||
|             android:text="@string/pref_incognito_mode" | ||||
|             android:textColor="@color/md_white_1000" /> | ||||
|  | ||||
|     </FrameLayout> | ||||
|  | ||||
| </eu.kanade.tachiyomi.widget.ElevationAppBarLayout> | ||||
		Reference in New Issue
	
	Block a user