StatusBarMaxStaticIcons: Fully managed by us if enabled else do nothing (#199)

* StatusBarMaxStaticIcons: Fully managed by us if enabled else do nothing

Signed-off-by: hamjin <jinham@qq.com>

* Fix restore original count and enhance manage on HyperOS

* Remove unused code

---------

Signed-off-by: hamjin <jinham@qq.com>
This commit is contained in:
hamjin
2024-03-05 14:49:13 +08:00
committed by GitHub
parent c5b5fcfe35
commit d2f8ef69c6

View File

@@ -194,6 +194,9 @@ object SystemUIHooker : YukiBaseHooker() {
/** 状态栏原始通知图标最大个数限制 */
private var statusBarMaxStaticIcons = -1
/** 模块上次设置的通知图标最大个数限制 */
private var moduleLastSetStatusBarMaxStaticIcons = -1
/** 是否已经使用过缓存刷新功能 */
private var isUsingCachingMethod = false
@@ -664,11 +667,24 @@ object SystemUIHooker : YukiBaseHooker() {
*/
private fun hookStatusBarMaxStaticIcons(fieldName: String, instance: Any) {
val maxStaticIconsField = NotificationIconContainerClass.field { name = fieldName }.get(instance)
if (statusBarMaxStaticIcons == -1) statusBarMaxStaticIcons = maxStaticIconsField.int()
if (statusBarMaxStaticIcons == -1 ||
/** 系统设置内修改,模块同步更新 */
moduleLastSetStatusBarMaxStaticIcons != maxStaticIconsField.int()) {
statusBarMaxStaticIcons = maxStaticIconsField.int()
}
if (!ConfigData.isEnableLiftedStatusIconCount) {
maxStaticIconsField.set(statusBarMaxStaticIcons)
return
}
/** 解除状态栏通知图标个数限制 */
if (isShowNotificationIcons && ConfigData.isEnableLiftedStatusIconCount)
maxStaticIconsField.set(ConfigData.liftedStatusIconCount.let { if (it in 0..100) it else 5 })
else maxStaticIconsField.set(if (isShowNotificationIcons) statusBarMaxStaticIcons else 0)
if (isShowNotificationIcons) {
moduleLastSetStatusBarMaxStaticIcons = ConfigData.liftedStatusIconCount.let { if (it in 0..100) it else 5 }
maxStaticIconsField.set(moduleLastSetStatusBarMaxStaticIcons)
} else {
maxStaticIconsField.set(0)
moduleLastSetStatusBarMaxStaticIcons = 0
}
}
/**
@@ -947,7 +963,11 @@ object SystemUIHooker : YukiBaseHooker() {
}.hook().after { updateStatusBarIconsAlpha(instance()) }
method {
name = "resetViewStates"
}.hook().after { updateStatusBarIconsAlpha(instance()) }
}.hook().after {
updateStatusBarIconsAlpha(instance())
/** HyperOS系统设置修改通知图标个数触发此方法 */
hookStatusBarMaxStaticIcons("mMaxStaticIcons", instance)
}
method {
name { it == "calculateIconTranslations" || it == "calculateIconXTranslations" }
}.hook().after {