Эх сурвалжийг харах

Fix grid columns on tablets, split out common main_activity layout sections

arkon 3 жил өмнө
parent
commit
ef53d4ec07

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt

@@ -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

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt

@@ -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)
             }
         }
 

+ 23 - 23
app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt

@@ -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() {

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt

@@ -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,

+ 15 - 68
app/src/main/res/layout-sw600dp/main_activity.xml

@@ -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">
-
-        <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" />
 
-    <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>

+ 6 - 65
app/src/main/res/layout/main_activity.xml

@@ -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 - 0
app/src/main/res/layout/main_activity_fab.xml

@@ -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 - 0
app/src/main/res/layout/main_activity_toolbar.xml

@@ -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>