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:
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewAppearanceHelper.kt | 9+++++++++
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/OperaDownloadIconMenu.kt | 14++++++++++++++
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