Skip to content

Commit 78d00e6

Browse files
committed
feat: 卡片消息展示
Signed-off-by: java30433 <[email protected]>
1 parent 6675c9f commit 78d00e6

23 files changed

+189
-30
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.tencent.qqnt.kernel.nativeinterface;
2+
3+
public class ArkElement {
4+
public String bytesData;
5+
}

app/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MsgElement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
public final class MsgElement {
44
//public AdelieActionBarElement actionBarElement;
5-
//public ArkElement arkElement;
5+
public ArkElement arkElement;
66
//public AVRecordElement avRecordElement;
77
//public CalendarElement calendarElement;
88
public long elementId;

app/src/main/java/momoi/mod/qqpro/Settings.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package momoi.mod.qqpro
22

33
import android.content.SharedPreferences
44
import androidx.core.content.edit
5+
import momoi.mod.qqpro.util.Utils
56

67
object Settings {
78
val sp: SharedPreferences = Utils.application.getSharedPreferences("qqpro", 0)

app/src/main/java/momoi/mod/qqpro/hook/action/CurrentMsgList.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import com.tencent.watch.aio_impl.coreImpl.vb.WatchAIOListVB
1414
import com.tencent.watch.aio_impl.data.WatchAIOMsgItem
1515
import com.tencent.watch.aio_impl.ext.MsgListUtilKt
1616
import momoi.anno.mixin.Mixin
17-
import momoi.mod.qqpro.Utils
17+
import momoi.mod.qqpro.util.Utils
1818
import momoi.mod.qqpro.lib.Observable
1919

2020
object CurrentMsgList {

app/src/main/java/momoi/mod/qqpro/hook/action/RecentContacts.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import com.tencent.qqnt.kernel.nativeinterface.RecentContactInfo
1010
import com.tencent.qqnt.watch.chat.list.WatchRecentContactHolder
1111
import com.tencent.qqnt.watch.chat.list.WatchRecentItemBuilder
1212
import momoi.anno.mixin.Mixin
13-
import momoi.mod.qqpro.Utils
13+
import momoi.mod.qqpro.util.Utils
1414
import mqq.app.AppRuntime
1515

1616
object RecentContacts {

app/src/main/java/momoi/mod/qqpro/hook/aio_cell/AIOCell.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ object AIOCell {
3838
loadData(CurrentContact, msg.forwardData!!)
3939
},
4040
)
41+
addHook<CardMsgView>(
42+
type = NTMsgType.ARKSTRUCT,
43+
onBind = { msg, widget ->
44+
loadData(msg.elements.firstNotNullOf { it.arkElement })
45+
}
46+
)
4147
}
4248
inline fun <reified T : View> addHook(
4349
type: Int,
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package momoi.mod.qqpro.hook.aio_cell
2+
3+
import android.content.Context
4+
import android.view.View
5+
import android.widget.ImageView
6+
import android.widget.LinearLayout
7+
import android.widget.TextView
8+
import com.tencent.qqnt.kernel.nativeinterface.ArkElement
9+
import loadPicUrl
10+
import momoi.mod.qqpro.Settings
11+
import momoi.mod.qqpro.lib.FILL
12+
import momoi.mod.qqpro.lib.WRAP
13+
import momoi.mod.qqpro.lib.background
14+
import momoi.mod.qqpro.lib.clickable
15+
import momoi.mod.qqpro.lib.content
16+
import momoi.mod.qqpro.lib.dp
17+
import momoi.mod.qqpro.lib.height
18+
import momoi.mod.qqpro.lib.margin
19+
import momoi.mod.qqpro.lib.marginVertical
20+
import momoi.mod.qqpro.lib.padding
21+
import momoi.mod.qqpro.lib.scaleType
22+
import momoi.mod.qqpro.lib.size
23+
import momoi.mod.qqpro.lib.textColor
24+
import momoi.mod.qqpro.lib.textSize
25+
import momoi.mod.qqpro.lib.vertical
26+
import momoi.mod.qqpro.lib.width
27+
import momoi.mod.qqpro.util.Json
28+
import momoi.mod.qqpro.util.Utils
29+
import org.json.JSONObject
30+
31+
class CardMsgView(context: Context) : LinearLayout(context) {
32+
private lateinit var mTvTitle: TextView
33+
private lateinit var mTvTag: TextView
34+
private lateinit var mTvDesc: TextView
35+
private lateinit var mIvIcon: ImageView
36+
private lateinit var mIvPreview: ImageView
37+
38+
init {
39+
vertical()
40+
padding(2.dp)
41+
content {
42+
mTvTitle = add<TextView>()
43+
.textSize(12f * Settings.chatScale.value)
44+
.textColor(0xFF_FFFFFF.toInt())
45+
mTvDesc = add<TextView>()
46+
.textSize(10f * Settings.chatScale.value)
47+
.textColor(0xFF_CCCCCC.toInt())
48+
mIvPreview = add<ImageView>()
49+
.width(FILL)
50+
add<View>()
51+
.size(width = FILL, height = 1)
52+
.background(0xFF_AAAAAA.toInt())
53+
.marginVertical(1.dp)
54+
add<LinearLayout>()
55+
.width(FILL)
56+
.content {
57+
mIvIcon = add<ImageView>()
58+
.size(WRAP, FILL)
59+
.scaleType(ImageView.ScaleType.CENTER_CROP)
60+
mTvTag = add<TextView>()
61+
.textSize(9f * Settings.chatScale.value)
62+
.textColor(0xFF_FFFFFF.toInt())
63+
.weight(1f)
64+
.margin(left = 2.dp)
65+
}
66+
}
67+
}
68+
69+
fun loadData(ark: ArkElement) {
70+
try {
71+
val json = Json(ark.bytesData)
72+
val meta = json.json("meta")!!
73+
val data = meta.json(meta.keys.first())!!
74+
val desc = data.str("desc")
75+
val title = data.str("title")!!
76+
mTvTitle.text = title
77+
mTvDesc.text = desc
78+
val icon = data.str("icon")
79+
if (!icon.isNullOrEmpty()) {
80+
mIvIcon.loadPicUrl(icon)
81+
}
82+
val tag = data.str("tag")
83+
if (!tag.isNullOrEmpty()) {
84+
mTvTag.visibility = VISIBLE
85+
mTvTag.text = tag
86+
mIvIcon.loadPicUrl(data.str("tagIcon"))
87+
} else {
88+
mTvTag.visibility = GONE
89+
}
90+
val preview = data.str("preview")
91+
if (!preview.isNullOrEmpty() && json.str("view") != "news") {
92+
mIvPreview.loadPicUrl(preview)
93+
}
94+
clickable {
95+
(data.str("jumpUrl") ?: data.str("qqdocurl"))?.let {
96+
Utils.openUrl(it)
97+
}
98+
}
99+
} catch (e: Exception) {
100+
e.printStackTrace()
101+
}
102+
}
103+
}

app/src/main/java/momoi/mod/qqpro/hook/aio_cell/ForwardMsgView.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.view.View
55
import android.widget.LinearLayout
66
import android.widget.TextView
77
import com.tencent.qqnt.kernel.nativeinterface.Contact
8+
import momoi.mod.qqpro.Settings
89
import momoi.mod.qqpro.lib.FILL
910
import momoi.mod.qqpro.lib.background
1011
import momoi.mod.qqpro.lib.clickable
@@ -35,17 +36,17 @@ class ForwardMsgView(context: Context) : LinearLayout(context) {
3536
.padding(2.dp)
3637
.content {
3738
mTvTitle = add<TextView>()
38-
.textSize(13f)
39+
.textSize(13f * Settings.chatScale.value)
3940
.textColor(0xFF_FFFFFF.toInt())
4041
mTvPreview = add<TextView>()
41-
.textSize(12f)
42+
.textSize(12f * Settings.chatScale.value)
4243
.textColor(0xFF_CCCCCC.toInt())
4344
add<View>()
4445
.size(width = FILL, height = 1)
4546
.background(0xFF_AAAAAA.toInt())
4647
.marginVertical(1.dp)
4748
mTvSummary = add<TextView>()
48-
.textSize(10f)
49+
.textSize(10f * Settings.chatScale.value)
4950
.textColor(0xFF_CCCCCC.toInt())
5051
}
5152
}

app/src/main/java/momoi/mod/qqpro/hook/aio_cell/ReplyView.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import com.tencent.qqnt.kernel.nativeinterface.ReplyElement
99
import momoi.anno.mixin.Mixin
1010
import momoi.mod.qqpro.Colors
1111
import momoi.mod.qqpro.MsgUtil
12-
import momoi.mod.qqpro.Utils
12+
import momoi.mod.qqpro.Settings
13+
import momoi.mod.qqpro.util.Utils
1314
import momoi.mod.qqpro.join
1415
import momoi.mod.qqpro.lib.background
1516
import momoi.mod.qqpro.lib.content
@@ -38,10 +39,10 @@ class ReplyView(context: Context) : LinearLayout(context) {
3839
.paddingHorizontal(2.dp)
3940
.content {
4041
mTvName = add<TextView>()
41-
.textSize(10f)
42+
.textSize(10f * Settings.chatScale.value)
4243
.textColor(Colors.replyText)
4344
mTvContent = add<TextView>()
44-
.textSize(12f)
45+
.textSize(12f * Settings.chatScale.value)
4546
.textColor(Colors.replyText)
4647
.apply {
4748
maxLines = 2

app/src/main/java/momoi/mod/qqpro/hook/style/聊天底部按钮调整.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.tencent.mobileqq.app.ThreadManagerV2
1313
import com.tencent.watch.aio_impl.coreImpl.vb.`InputBarController$inputContent$2`
1414
import momoi.anno.mixin.Mixin
1515
import momoi.mod.qqpro.Settings
16-
import momoi.mod.qqpro.Utils
16+
import momoi.mod.qqpro.util.Utils
1717
import momoi.mod.qqpro.asGroup
1818
import momoi.mod.qqpro.drawable.roundCornerDrawable
1919
import momoi.mod.qqpro.lib.FILL

0 commit comments

Comments
 (0)