commit ad048082898d4fd49d1cb4d3c087d891bb397538
parent f16eb3a009a30c6347927a6bfdfe04baa6edfae6
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Sat, 18 Nov 2023 11:43:25 +0100
fix(core/ui): hide download icon for opera viewer with toolbar
Diffstat:
2 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewAppearanceHelper.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewAppearanceHelper.kt
@@ -16,6 +16,7 @@ import android.os.SystemClock
import android.view.Gravity
import android.view.MotionEvent
import android.view.View
+import android.view.ViewGroup
import android.widget.Switch
import android.widget.TextView
import me.rhunk.snapenhance.core.util.ktx.getDimens
@@ -69,6 +70,14 @@ fun View.triggerCloseTouchEvent() {
}
}
+fun ViewGroup.children(): List<View> {
+ val children = mutableListOf<View>()
+ for (i in 0 until childCount) {
+ children.add(getChildAt(i))
+ }
+ return children
+}
+
fun View.iterateParent(predicate: (View) -> Boolean) {
var parent = this.parent as? View ?: return
while (true) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/OperaDownloadIconMenu.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/OperaDownloadIconMenu.kt
@@ -7,6 +7,7 @@ import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.ImageView
import me.rhunk.snapenhance.core.features.impl.downloader.MediaDownloader
+import me.rhunk.snapenhance.core.ui.children
import me.rhunk.snapenhance.core.ui.menu.AbstractMenu
import me.rhunk.snapenhance.core.util.ktx.getDimens
import me.rhunk.snapenhance.core.util.ktx.getDrawable
@@ -34,6 +35,19 @@ class OperaDownloadIconMenu : AbstractMenu() {
setOnClickListener {
this@OperaDownloadIconMenu.context.feature(MediaDownloader::class).downloadLastOperaMediaAsync()
}
+ addOnAttachStateChangeListener(object: View.OnAttachStateChangeListener {
+ override fun onViewAttachedToWindow(v: View) {
+ v.visibility = View.VISIBLE
+ (parent.parent as? ViewGroup)?.children()?.forEach { child ->
+ if (child !is ViewGroup) return@forEach
+ child.children().forEach {
+ if (it::class.java.name.endsWith("PreviewToolbar")) v.visibility = View.GONE
+ }
+ }
+ }
+
+ override fun onViewDetachedFromWindow(v: View) {}
+ })
}, 0)
}
}
\ No newline at end of file