fix: ShowMsgCount bottom num > 1w display width

Closes #1100
This commit is contained in:
hd
2024-07-25 11:52:16 +08:00
parent db426e8bcc
commit e4a3898c38

View File

@@ -53,9 +53,9 @@ import xyz.nextalone.util.throwOrTrue
@UiItemAgentEntry @UiItemAgentEntry
object ShowMsgCount : CommonSwitchFunctionHook( object ShowMsgCount : CommonSwitchFunctionHook(
targets = arrayOf( targets = arrayOf(
NCustomWidgetUtil_updateCustomNoteTxt,
AIOTitleVB_updateLeftTopBack_NT,
CCustomWidgetUtil_updateCustomNoteTxt_NT, CCustomWidgetUtil_updateCustomNoteTxt_NT,
AIOTitleVB_updateLeftTopBack_NT,
NCustomWidgetUtil_updateCustomNoteTxt,
) )
) { ) {
@@ -64,8 +64,8 @@ object ShowMsgCount : CommonSwitchFunctionHook(
override fun initOnce() = throwOrTrue { override fun initOnce() = throwOrTrue {
// 群消息数量
if (requireMinQQVersion(QQVersion.QQ_9_0_8)) { if (requireMinQQVersion(QQVersion.QQ_9_0_8)) {
// 群消息数量 + 群聊左上角返回消息数量
val clz = Initiator.loadClass("com.tencent.mobileqq.quibadge.QUIBadge") val clz = Initiator.loadClass("com.tencent.mobileqq.quibadge.QUIBadge")
val (updateNumName, mNumName, mTextName) = if (requireMinQQVersion(QQVersion.QQ_9_0_15)) { val (updateNumName, mNumName, mTextName) = if (requireMinQQVersion(QQVersion.QQ_9_0_15)) {
Triple("updateNum", "mNum", "mText") Triple("updateNum", "mNum", "mText")
@@ -83,25 +83,7 @@ object ShowMsgCount : CommonSwitchFunctionHook(
} }
} else { } else {
if (requireMinQQVersion(QQVersion.QQ_8_9_63)) { if (requireMinQQVersion(QQVersion.QQ_8_9_63)) {
// 群聊左上角返回(8.9.63~9.0.0) // 群消息数量
DexKit.requireMethodFromCache(AIOTitleVB_updateLeftTopBack_NT).hookAfter {
if (it.args[0] is Int) {
val count = it.args[0] as Int
if (count > 0) {
val (mTitleBinding, unreadTv) = when {
requireMinQQVersion(QQVersion.QQ_9_0_0) -> Pair("e", "v")
requireMinQQVersion(QQVersion.QQ_8_9_80) -> Pair("e", "s")
requireMinQQVersion(QQVersion.QQ_8_9_70) -> Pair("e", "t")
requireMinQQVersion(QQVersion.QQ_8_9_63) -> Pair("e", "s")
else -> Pair("", "")
}
if (mTitleBinding.isNotEmpty() && unreadTv.isNotEmpty()) {
(it.thisObject.get(mTitleBinding).get(unreadTv) as TextView).text = count.toString()
}
}
}
}
val clz = DexKit.requireClassFromCache(CCustomWidgetUtil_updateCustomNoteTxt_NT) val clz = DexKit.requireClassFromCache(CCustomWidgetUtil_updateCustomNoteTxt_NT)
val updateNum = clz.declaredMethods.single { method -> val updateNum = clz.declaredMethods.single { method ->
val params = method.parameterTypes val params = method.parameterTypes
@@ -124,11 +106,29 @@ object ShowMsgCount : CommonSwitchFunctionHook(
tv.layoutParams = lp tv.layoutParams = lp
} }
}) })
// 群聊左上角返回消息数量
DexKit.requireMethodFromCache(AIOTitleVB_updateLeftTopBack_NT).hookAfter {
if (it.args[0] is Int) {
val count = it.args[0] as Int
if (count > 0) {
val (mTitleBinding, unreadTv) = when {
requireMinQQVersion(QQVersion.QQ_9_0_0) -> Pair("e", "v")
requireMinQQVersion(QQVersion.QQ_8_9_80) -> Pair("e", "s")
requireMinQQVersion(QQVersion.QQ_8_9_70) -> Pair("e", "t")
requireMinQQVersion(QQVersion.QQ_8_9_63) -> Pair("e", "s")
else -> Pair("", "")
}
if (mTitleBinding.isNotEmpty() && unreadTv.isNotEmpty()) {
(it.thisObject.get(mTitleBinding).get(unreadTv) as TextView).text = count.toString()
}
}
}
}
} }
} }
// 总消息数量
if (requireMinQQVersion(QQVersion.QQ_9_0_8)) { if (requireMinQQVersion(QQVersion.QQ_9_0_8)) {
// 总消息数量
val clz = DexKit.requireClassFromCache(NCustomWidgetUtil_updateCustomNoteTxt) val clz = DexKit.requireClassFromCache(NCustomWidgetUtil_updateCustomNoteTxt)
val method = clz.declaredMethods.single { method -> val method = clz.declaredMethods.single { method ->
val params = method.parameterTypes val params = method.parameterTypes
@@ -140,6 +140,7 @@ object ShowMsgCount : CommonSwitchFunctionHook(
param.args[3] = Int.MAX_VALUE param.args[3] = Int.MAX_VALUE
} }
} else { } else {
// 总消息数量(QQ[9.0.8]之前) + 群消息数量(QQNT[8.9.63]之前)
val clz = DexKit.requireClassFromCache(NCustomWidgetUtil_updateCustomNoteTxt) val clz = DexKit.requireClassFromCache(NCustomWidgetUtil_updateCustomNoteTxt)
val method = clz.declaredMethods.single { method -> val method = clz.declaredMethods.single { method ->
val params = method.parameterTypes val params = method.parameterTypes
@@ -161,11 +162,11 @@ object ShowMsgCount : CommonSwitchFunctionHook(
} }
override fun afterHookedMethod(param: MethodHookParam) { override fun afterHookedMethod(param: MethodHookParam) {
val tv = param.args[0] as TextView (param.args[0] as TextView).apply {
tv.maxWidth = Int.MAX_VALUE maxWidth = Int.MAX_VALUE
val lp = tv.layoutParams layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT
lp.width = ViewGroup.LayoutParams.WRAP_CONTENT setPadding(0, 0, 0, 0)
tv.layoutParams = lp }
} }
}) })
} }