From b2b12f7b93bf172050ef91c21a2dfe4e68c04058 Mon Sep 17 00:00:00 2001
From: FooIbar <118464521+FooIbar@users.noreply.github.com>
Date: Wed, 25 Oct 2023 23:36:43 +0800
Subject: [PATCH] Migrate from RikkaX Insets to Insetter
---
.../kotlin/com/hippo/ehviewer/ui/EhActivity.kt | 3 ---
.../com/hippo/ehviewer/ui/scene/DownloadsScene.kt | 3 +++
.../com/hippo/ehviewer/ui/scene/FavoritesScene.kt | 5 +++++
.../ehviewer/ui/scene/GalleryCommentsScene.kt | 3 +++
.../hippo/ehviewer/ui/scene/GalleryListScene.kt | 10 +++++++++-
.../com/hippo/ehviewer/ui/scene/SearchBarScene.kt | 2 ++
.../com/hippo/ehviewer/util/WindowInsetsUtil.kt | 10 ++++++++++
app/src/main/res/layout/scene_download.xml | 14 +++++++-------
app/src/main/res/layout/scene_favorites.xml | 3 +--
app/src/main/res/layout/scene_gallery_comments.xml | 12 ++++--------
app/src/main/res/layout/scene_gallery_list.xml | 9 +++------
app/src/main/res/layout/widget_content_layout.xml | 8 ++------
app/src/main/res/values/dimens.xml | 2 +-
gradle/libs.versions.toml | 3 +--
14 files changed, 51 insertions(+), 36 deletions(-)
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/EhActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/EhActivity.kt
index 4d49cf246..2e48bdac9 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/EhActivity.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/EhActivity.kt
@@ -25,8 +25,6 @@ import com.hippo.ehviewer.R
import com.hippo.ehviewer.Settings
import eu.kanade.tachiyomi.util.system.isNightMode
import eu.kanade.tachiyomi.util.view.setSecureScreen
-import rikka.insets.WindowInsetsHelper
-import rikka.layoutinflater.view.LayoutInflaterFactory
abstract class EhActivity : AppCompatActivity() {
@StyleRes
@@ -44,7 +42,6 @@ abstract class EhActivity : AppCompatActivity() {
}
override fun onCreate(savedInstanceState: Bundle?) {
- layoutInflater.factory2 = LayoutInflaterFactory(delegate).addOnViewCreatedListener(WindowInsetsHelper.LISTENER)
super.onCreate(savedInstanceState)
WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = !isNightMode()
WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightNavigationBars = !isNightMode()
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/DownloadsScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/DownloadsScene.kt
index 991681962..51cb7226e 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/DownloadsScene.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/DownloadsScene.kt
@@ -102,6 +102,7 @@ import com.hippo.ehviewer.ui.tools.CropDefaults
import com.hippo.ehviewer.ui.tools.DialogState
import com.hippo.ehviewer.util.FileUtils
import com.hippo.ehviewer.util.LongList
+import com.hippo.ehviewer.util.applyNavigationBarsPadding
import com.hippo.ehviewer.util.containsIgnoreCase
import com.hippo.ehviewer.util.sendTo
import com.hippo.unifile.UniFile
@@ -353,6 +354,8 @@ class DownloadsScene :
mKeyword = it.takeUnless { it.isEmpty() }
updateInfoList()
}
+ binding.fastScroller.applyNavigationBarsPadding()
+ binding.recyclerView.applyNavigationBarsPadding()
return binding.root
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesScene.kt
index 35e376ed2..84d5a1d3d 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesScene.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesScene.kt
@@ -81,11 +81,13 @@ import com.hippo.ehviewer.ui.setMD3Content
import com.hippo.ehviewer.ui.tools.DialogState
import com.hippo.ehviewer.util.ExceptionUtils
import com.hippo.ehviewer.util.SimpleHandler
+import com.hippo.ehviewer.util.applyNavigationBarsPadding
import com.hippo.ehviewer.util.getValue
import com.hippo.ehviewer.util.lazyMut
import com.hippo.ehviewer.util.setValue
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.withIOContext
+import eu.kanade.tachiyomi.util.system.dpToPx
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId
@@ -333,6 +335,7 @@ class FavoritesScene : SearchBarScene() {
drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)
binding.tip.setCompoundDrawables(null, drawable, null, null)
binding.tip.setOnClickListener { mAdapter?.retry() }
+ binding.refreshLayout.setProgressViewOffset(true, 0, 64.dpToPx)
binding.refreshLayout.setOnRefreshListener { switchFav(urlBuilder.favCat) }
val transition = ViewTransition(binding.refreshLayout, binding.progress, binding.tip)
val empty = getString(R.string.gallery_list_empty_hit)
@@ -428,6 +431,8 @@ class FavoritesScene : SearchBarScene() {
}
})
itemTouchHelper.attachToRecyclerView(binding.recyclerView)
+ binding.fastScroller.applyNavigationBarsPadding()
+ binding.recyclerView.applyNavigationBarsPadding()
return binding.root
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt
index a111b853b..29de3e56e 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt
@@ -87,6 +87,7 @@ import com.hippo.ehviewer.util.ReadableTime
import com.hippo.ehviewer.util.SimpleAnimatorListener
import com.hippo.ehviewer.util.TextUrl
import com.hippo.ehviewer.util.addTextToClipboard
+import com.hippo.ehviewer.util.applyNavigationBarsPadding
import com.hippo.ehviewer.util.getParcelableCompat
import com.hippo.ehviewer.util.toBBCode
import eu.kanade.tachiyomi.util.lang.launchIO
@@ -258,6 +259,8 @@ class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefresh
binding.fab.setOnClickListener(this)
mViewTransition = ViewTransition(binding.refreshLayout, tip)
updateView(false)
+ binding.editPanel.applyNavigationBarsPadding()
+ binding.fabLayout.applyNavigationBarsPadding()
return binding.root
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryListScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryListScene.kt
index c86f0f07b..e26bf34c0 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryListScene.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryListScene.kt
@@ -100,6 +100,7 @@ import com.hippo.ehviewer.updater.AppUpdater
import com.hippo.ehviewer.util.AnimationUtils
import com.hippo.ehviewer.util.ExceptionUtils
import com.hippo.ehviewer.util.SimpleAnimatorListener
+import com.hippo.ehviewer.util.applyNavigationBarsPadding
import com.hippo.ehviewer.util.getParcelableCompat
import com.hippo.ehviewer.util.getValue
import com.hippo.ehviewer.util.lazyMut
@@ -107,6 +108,7 @@ import com.hippo.ehviewer.util.setValue
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.withIOContext
import eu.kanade.tachiyomi.util.lang.withUIContext
+import eu.kanade.tachiyomi.util.system.dpToPx
import java.io.File
import java.time.Instant
import java.time.LocalDateTime
@@ -363,6 +365,7 @@ class GalleryListScene : SearchBarScene() {
drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)
binding.tip.setCompoundDrawables(null, drawable, null, null)
binding.tip.setOnClickListener { mAdapter?.retry() }
+ binding.refreshLayout.setProgressViewOffset(true, 0, 64.dpToPx)
binding.refreshLayout.setOnRefreshListener {
mUrlBuilder.setIndex(null, true)
mUrlBuilder.mJumpTo = null
@@ -490,7 +493,12 @@ class GalleryListScene : SearchBarScene() {
}
binding.fabLayout.primaryFab!!.setImageDrawable(actionFabDrawable)
binding.searchFab.setOnClickListener { onApplySearch() }
- (binding.searchFab.parent as View).bringToFront()
+ (binding.searchFab.parent as View).apply {
+ bringToFront()
+ applyNavigationBarsPadding()
+ }
+ binding.fastScroller.applyNavigationBarsPadding()
+ binding.recyclerView.applyNavigationBarsPadding()
// Update list url builder
onUpdateUrlBuilder()
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt
index 73b308c64..92561a3f9 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt
@@ -43,6 +43,7 @@ import com.hippo.ehviewer.ui.legacy.FabLayout
import com.hippo.ehviewer.ui.setMD3Content
import com.hippo.ehviewer.util.AnimationUtils
import com.hippo.ehviewer.util.SimpleAnimatorListener
+import com.hippo.ehviewer.util.applyNavigationBarsPadding
import com.jamal.composeprefs3.ui.ifNotNullThen
import com.jamal.composeprefs3.ui.ifTrueThen
import eu.kanade.tachiyomi.util.lang.launchIO
@@ -116,6 +117,7 @@ abstract class SearchBarScene : BaseScene(), ToolBarScene {
binding.searchview.addTransitionListener(mSearchViewOnBackPressedCallback)
requireActivity().onBackPressedDispatcher.addCallback(mSearchViewOnBackPressedCallback)
binding.appbar.bringToFront()
+ fabLayout.applyNavigationBarsPadding()
return binding.root
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/util/WindowInsetsUtil.kt b/app/src/main/kotlin/com/hippo/ehviewer/util/WindowInsetsUtil.kt
index 8636875a0..a6323d291 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/util/WindowInsetsUtil.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/util/WindowInsetsUtil.kt
@@ -1,11 +1,13 @@
package com.hippo.ehviewer.util
+import android.view.View
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.core.graphics.Insets
import androidx.core.view.WindowInsetsCompat
+import dev.chrisbanes.insetter.applyInsetter
import kotlin.contracts.InvocationKind
import kotlin.contracts.contract
@@ -30,3 +32,11 @@ fun WindowInsetsCompat.Builder.set(type: Int, insets: WindowInsets): WindowInset
),
)
}
+
+fun View.applyNavigationBarsPadding() {
+ applyInsetter {
+ type(navigationBars = true) {
+ padding()
+ }
+ }
+}
diff --git a/app/src/main/res/layout/scene_download.xml b/app/src/main/res/layout/scene_download.xml
index d04502c67..cdac59992 100644
--- a/app/src/main/res/layout/scene_download.xml
+++ b/app/src/main/res/layout/scene_download.xml
@@ -21,25 +21,26 @@
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
- app:layout_behavior="@string/appbar_scrolling_view_behavior">
+ android:clipChildren="false"
+ app:layout_behavior="@string/searchbar_scrolling_view_behavior">
+ android:paddingVertical="@dimen/gallery_list_margin_v" />
+ android:paddingBottom="8dp" />
@@ -58,8 +59,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingEnd="@dimen/corner_fab_margin"
- android:paddingBottom="@dimen/corner_fab_margin"
- app:fitsSystemWindowsInsets="bottom">
+ android:paddingBottom="@dimen/corner_fab_margin">
+ android:paddingBottom="@dimen/corner_fab_margin">
+ android:paddingBottom="@dimen/fab_rv_padding_size" />
@@ -43,8 +42,7 @@
android:layout_gravity="center"
android:drawablePadding="8dp"
android:gravity="center_horizontal"
- android:text="@string/no_one_comments_gallery"
- app:fitsSystemWindowsInsets="bottom" />
+ android:text="@string/no_one_comments_gallery" />
+ android:visibility="invisible">
+ android:paddingBottom="@dimen/corner_fab_margin">
+ android:paddingTop="@dimen/gallery_padding_top_search_bar" />
+ android:paddingBottom="@dimen/corner_fab_margin">
+ android:paddingBottom="@dimen/corner_fab_margin">
+ android:paddingVertical="@dimen/gallery_list_margin_v" />
@@ -67,7 +64,6 @@
android:layout_marginTop="@dimen/gallery_padding_top_search_bar"
android:paddingStart="20dp"
android:paddingEnd="4dp"
- android:paddingVertical="8dp"
- app:fitsSystemWindowsInsets="bottom" />
+ android:paddingVertical="8dp" />
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 2e4c413c3..2f04a581d 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -41,7 +41,7 @@
10dp
- 64dp
+ 80dp
480dp
320dp
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 2b17fba0c..82a9e7c20 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -125,7 +125,6 @@ photoview = "com.github.chrisbanes:PhotoView:2.3.0"
r8 = { module = "com.android.tools:r8", version.ref = "android-tools-r8" }
rikkax-core = "dev.rikka.rikkax.core:core-ktx:1.4.1"
-rikkax-insets = "dev.rikka.rikkax.insets:insets:1.3.0"
rikkax-layoutinflater = "dev.rikka.rikkax.layoutinflater:layoutinflater:1.3.0"
splitties-appctx = { module = "com.louiscad.splitties:splitties-appctx", version.ref = "splitties" }
@@ -144,7 +143,7 @@ cronet = ["cronet-api", "cronet-gms"]
kotlinx-serialization = ["kotlinx-serialization-cbor", "kotlinx-serialization-json", "kotlinx-serialization-json-okio"]
ktor = ["ktor-io-jvm", "ktor-utils-jvm"]
okhttp = ["okhttp-android", "okhttp-coroutines"]
-rikkax = ["rikkax-core", "rikkax-insets", "rikkax-layoutinflater"]
+rikkax = ["rikkax-core", "rikkax-layoutinflater"]
splitties = ["splitties-appctx", "splitties-arch-room", "splitties-preferences", "splitties-systemservices"]
[plugins]