1
1
package li.songe.gkd.service
2
2
3
3
import androidx.compose.foundation.background
4
+ import androidx.compose.foundation.clickable
4
5
import androidx.compose.foundation.layout.Box
5
6
import androidx.compose.foundation.layout.Column
7
+ import androidx.compose.foundation.layout.Row
8
+ import androidx.compose.foundation.layout.Spacer
6
9
import androidx.compose.foundation.layout.padding
10
+ import androidx.compose.foundation.layout.width
7
11
import androidx.compose.material3.LocalContentColor
8
12
import androidx.compose.material3.MaterialTheme
9
13
import androidx.compose.material3.Text
@@ -29,8 +33,11 @@ import li.songe.gkd.permission.canDrawOverlaysState
29
33
import li.songe.gkd.shizuku.SafeTaskListener
30
34
import li.songe.gkd.shizuku.shizukuContextFlow
31
35
import li.songe.gkd.ui.component.AppNameText
36
+ import li.songe.gkd.ui.component.PerfIcon
32
37
import li.songe.gkd.ui.style.AppTheme
38
+ import li.songe.gkd.ui.style.iconTextSize
33
39
import li.songe.gkd.util.appInfoMapFlow
40
+ import li.songe.gkd.util.copyText
34
41
import li.songe.gkd.util.startForegroundServiceByClass
35
42
import li.songe.gkd.util.stopServiceByClass
36
43
@@ -40,7 +47,7 @@ class RecordService : OverlayWindowService(
40
47
) {
41
48
42
49
val topAppInfoFlow by lazy {
43
- appInfoMapFlow. combine(topActivityFlow) { map, topActivity ->
50
+ combine(appInfoMapFlow, topActivityFlow) { map, topActivity ->
44
51
map[topActivity.appId]
45
52
}.stateIn(lifecycleScope, SharingStarted .Eagerly , null )
46
53
}
@@ -58,7 +65,7 @@ class RecordService : OverlayWindowService(
58
65
modifier = Modifier
59
66
.clip(MaterialTheme .shapes.small)
60
67
.background(bgColor.copy(alpha = 0.9f ))
61
- .padding(horizontal = 4 .dp, vertical = 2 .dp)
68
+ .padding(4 .dp)
62
69
) {
63
70
CompositionLocalProvider (LocalContentColor provides contentColorFor(bgColor)) {
64
71
if (activityOkFlow.collectAsState().value) {
@@ -77,7 +84,10 @@ class RecordService : OverlayWindowService(
77
84
topAppInfoFlow.collectAsState().value?.let {
78
85
AppNameText (appInfo = it)
79
86
}
80
- Text (text = " ${topActivity.appId} \n ${topActivity.shortActivityId} " )
87
+ RowText (text = topActivity.appId)
88
+ topActivity.shortActivityId?.let {
89
+ RowText (text = it)
90
+ }
81
91
}
82
92
} else {
83
93
Column {
@@ -113,4 +123,21 @@ class RecordService : OverlayWindowService(
113
123
114
124
fun stop () = stopServiceByClass(RecordService ::class )
115
125
}
116
- }
126
+ }
127
+
128
+ @Composable
129
+ private fun RowText (text : String ) {
130
+ Row {
131
+ Text (text = text, modifier = Modifier .weight(1f , false ))
132
+ Spacer (modifier = Modifier .width(4 .dp))
133
+ PerfIcon (
134
+ imageVector = PerfIcon .ContentCopy ,
135
+ modifier = Modifier
136
+ .clip(MaterialTheme .shapes.extraSmall)
137
+ .clickable(onClick = {
138
+ copyText(text)
139
+ })
140
+ .iconTextSize(),
141
+ )
142
+ }
143
+ }
0 commit comments