Skip to content

Commit

Permalink
Fix expandable view method not found issue
Browse files Browse the repository at this point in the history
Signed-off-by: DrDisagree <29881338+Mahmud0808@users.noreply.github.com>
  • Loading branch information
Mahmud0808 committed Feb 5, 2025
1 parent 914ed98 commit f3195d3
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import android.provider.Settings
import android.view.View
import com.drdisagree.iconify.common.Const.SYSTEMUI_PACKAGE
import com.drdisagree.iconify.xposed.ModPack
import com.drdisagree.iconify.xposed.modules.extras.utils.ViewHelper.getExpandableView
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.XposedHook.Companion.findClass
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.callMethod
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.callStaticMethod
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.getField
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.getFieldSilently
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.hookConstructor
Expand Down Expand Up @@ -415,7 +415,7 @@ class ControllersProvider(context: Context) : ModPack(context) {
"create",
accessPointController.callMethod("canConfigMobileData"),
accessPointController.callMethod("canConfigWifi"),
expandableClass.callStaticMethod("fromView", view)
view.getExpandableView()
)
return true
}
Expand All @@ -433,7 +433,7 @@ class ControllersProvider(context: Context) : ModPack(context) {
true,
accessPointController.callMethod("canConfigMobileData"),
accessPointController.callMethod("canConfigWifi"),
expandableClass.callStaticMethod("fromView", view)
view.getExpandableView()
)
return true
}
Expand All @@ -460,10 +460,7 @@ class ControllersProvider(context: Context) : ModPack(context) {
"handleClick",
expandableClass!!
) -> {
cellularTile.callMethod(
"handleClick",
expandableClass.callStaticMethod("fromView", view)
)
cellularTile.callMethod("handleClick", view.getExpandableView())
return true
}

Expand Down Expand Up @@ -534,7 +531,7 @@ class ControllersProvider(context: Context) : ModPack(context) {
instance.mExpandableClass!!
).invoke(
instance.mBluetoothTileDialogViewModel!!,
expandableClass.callStaticMethod("fromView", view)
view.getExpandableView()
)
true
} catch (e: Exception) {
Expand All @@ -557,10 +554,7 @@ class ControllersProvider(context: Context) : ModPack(context) {
"handleClick",
expandableClass!!
) -> {
instance.mBluetoothTile.callMethod(
"handleClick",
expandableClass.callStaticMethod("fromView", view)
)
instance.mBluetoothTile.callMethod("handleClick", view.getExpandableView())
return true
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,13 @@ import android.widget.ProgressBar
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import com.drdisagree.iconify.common.Const.SYSTEMUI_PACKAGE
import com.drdisagree.iconify.common.Preferences.DEPTH_WALLPAPER_SWITCH
import com.drdisagree.iconify.common.Preferences.ICONIFY_DEPTH_WALLPAPER_FOREGROUND_TAG
import com.drdisagree.iconify.common.Preferences.ICONIFY_LOCKSCREEN_CONTAINER_TAG
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.XposedHook.Companion.findClass
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.callStaticMethod
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.isMethodAvailable
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.log
import com.drdisagree.iconify.xposed.utils.XPrefs.Xprefs

Expand Down Expand Up @@ -575,4 +579,26 @@ object ViewHelper {
addView(view, index.coerceAtMost(childCount))
}
}
}

fun View?.getExpandableView(): Any? {
if (this == null) {
log("getExpandableView", "View is null")
return null
}

val expandableClass = findClass("$SYSTEMUI_PACKAGE.animation.Expandable")
val expandableCompanionFromViewClass = findClass(
"$SYSTEMUI_PACKAGE.animation.Expandable\$Companion\$fromView",
"$SYSTEMUI_PACKAGE.animation.Expandable\$Companion\$fromView\$1",
"$SYSTEMUI_PACKAGE.animation.Expandable\$Companion\$fromView\$2",
"$SYSTEMUI_PACKAGE.animation.Expandable\$Companion\$fromView\$3",
suppressError = true
)

return if (isMethodAvailable(expandableClass, "fromView", View::class.java)) {
expandableClass!!.callStaticMethod("fromView", this)
} else {
expandableCompanionFromViewClass!!.getConstructor(View::class.java).newInstance(this)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,11 @@ import com.drdisagree.iconify.xposed.HookRes.Companion.modRes
import com.drdisagree.iconify.xposed.modules.extras.callbacks.ControllersProvider
import com.drdisagree.iconify.xposed.modules.extras.callbacks.ThemeChange
import com.drdisagree.iconify.xposed.modules.extras.utils.ActivityLauncherUtils
import com.drdisagree.iconify.xposed.modules.extras.utils.ViewHelper.getExpandableView
import com.drdisagree.iconify.xposed.modules.extras.utils.ViewHelper.toPx
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.callMethod
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.callStaticMethod
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.getField
import com.drdisagree.iconify.xposed.modules.extras.utils.toolkit.log
import com.drdisagree.iconify.xposed.modules.lockscreen.widgets.LockscreenWidgets.Companion.expandableClass
import com.drdisagree.iconify.xposed.modules.lockscreen.widgets.LockscreenWidgets.Companion.launchableImageViewClass
import com.drdisagree.iconify.xposed.modules.lockscreen.widgets.LockscreenWidgets.Companion.launchableLinearLayoutClass
import java.lang.reflect.Method
Expand Down Expand Up @@ -1128,7 +1127,7 @@ class LockscreenWidgetsView(context: Context, activityStarter: Any?) :
} catch (ignored: Throwable) {
controlsTile.callMethod(
"handleClick",
expandableClass!!.callStaticMethod("fromView", finalView)
finalView.getExpandableView()
)
}
}
Expand All @@ -1148,7 +1147,7 @@ class LockscreenWidgetsView(context: Context, activityStarter: Any?) :
} catch (ignored: Throwable) {
mWalletTile.callMethod(
"handleClick",
expandableClass!!.callStaticMethod("fromView", finalView)
finalView.getExpandableView()
)
}
}
Expand Down Expand Up @@ -1182,7 +1181,7 @@ class LockscreenWidgetsView(context: Context, activityStarter: Any?) :
} catch (ignored: Throwable) {
ControllersProvider.mHotspotController!!.callMethod(
"handleClick",
expandableClass!!.callStaticMethod("fromView", finalView)
finalView.getExpandableView()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,6 @@ class LockscreenWidgets(context: Context) : ModPack(context) {
launchableLinearLayoutClass =
findClass("$SYSTEMUI_PACKAGE.animation.view.LaunchableLinearLayout")

expandableClass = findClass("$SYSTEMUI_PACKAGE.animation.Expandable")

val keyguardQuickAffordanceInteractor =
findClass("$SYSTEMUI_PACKAGE.keyguard.domain.interactor.KeyguardQuickAffordanceInteractor")

Expand Down Expand Up @@ -378,6 +376,5 @@ class LockscreenWidgets(context: Context) : ModPack(context) {
companion object {
var launchableImageViewClass: Class<*>? = null
var launchableLinearLayoutClass: Class<*>? = null
var expandableClass: Class<*>? = null
}
}

0 comments on commit f3195d3

Please sign in to comment.