Skip to content

Commit 974ef61

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 3e29fbf + 0795e42 commit 974ef61

File tree

7 files changed

+226
-48
lines changed

7 files changed

+226
-48
lines changed

mirai-api-http/src/main/kotlin/net/mamoe/mirai/api/http/data/common/DTO.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package net.mamoe.mirai.api.http.data.common
22

3-
import kotlinx.serialization.*
4-
import kotlinx.serialization.json.Json
5-
import kotlinx.serialization.modules.SerializersModule
3+
import kotlinx.serialization.Serializable
4+
import kotlinx.serialization.Transient
65
import net.mamoe.mirai.api.http.AuthedSession
76

87
interface DTO
@@ -16,3 +15,8 @@ abstract class VerifyDTO : DTO {
1615
@Transient
1716
lateinit var session: AuthedSession // 反序列化验证成功后传入
1817
}
18+
19+
@Serializable
20+
open class EventDTO : DTO
21+
22+
object IgnoreEventDTO : EventDTO()
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package net.mamoe.mirai.api.http.data.common
2+
3+
import kotlinx.serialization.SerialName
4+
import kotlinx.serialization.Serializable
5+
import net.mamoe.mirai.contact.MemberPermission
6+
import net.mamoe.mirai.event.events.BotEvent
7+
import net.mamoe.mirai.event.events.*
8+
import net.mamoe.mirai.message.MessagePacket
9+
import net.mamoe.mirai.utils.MiraiExperimentalAPI
10+
11+
@Serializable
12+
open class BotEventDTO : EventDTO()
13+
14+
@UseExperimental(MiraiExperimentalAPI::class)
15+
fun BotEvent.toDTO() = when(this) {
16+
is MessagePacket<*, *> -> toDTO()
17+
else -> when(this) {
18+
is BotOnlineEvent -> BotOnlineEventDTO(bot.uin)
19+
is BotOfflineEvent.Active -> BotOfflineEventActiveDTO(bot.uin)
20+
is BotOfflineEvent.Force -> BotOfflineEventForceDTO(bot.uin, title, message)
21+
is BotOfflineEvent.Dropped -> BotOfflineEventDroppedDTO(bot.uin)
22+
is BotReloginEvent -> BotReloginEventDTO(bot.uin)
23+
// is MessageSendEvent.GroupMessageSendEvent -> {}
24+
// is MessageSendEvent.FriendMessageSendEvent -> {}
25+
// is BeforeImageUploadEvent -> {}
26+
// is ImageUploadEvent.Succeed -> {}
27+
is BotGroupPermissionChangeEvent -> BotGroupPermissionChangeEventDTO(origin, new, GroupDTO(group))
28+
is BotMuteEvent -> BotMuteEventDTO(durationSeconds, MemberDTO(operator))
29+
is BotUnmuteEvent -> BotUnmuteEventDTO(MemberDTO(operator))
30+
is BotJoinGroupEvent -> BotJoinGroupEventDTO(GroupDTO(group))
31+
// is GroupSettingChangeEvent<*> -> {} // 不知道会改什么
32+
is GroupNameChangeEvent -> GroupNameChangeEventDTO(origin, new, GroupDTO(group), isByBot)
33+
is GroupEntranceAnnouncementChangeEvent -> GroupEntranceAnnouncementChangeEventDTO(origin, new, GroupDTO(group), operator?.let(::MemberDTO))
34+
is GroupMuteAllEvent -> GroupMuteAllEventDTO(origin, new, GroupDTO(group), operator?.let(::MemberDTO))
35+
is GroupAllowAnonymousChatEvent -> GroupAllowAnonymousChatEventDTO(origin, new, GroupDTO(group), operator?.let(::MemberDTO))
36+
is GroupAllowConfessTalkEvent -> GroupAllowConfessTalkEventDTO(origin, new, GroupDTO(group), isByBot)
37+
is GroupAllowMemberInviteEvent -> GroupAllowMemberInviteEventDTO(origin, new, GroupDTO(group), operator?.let(::MemberDTO))
38+
is MemberJoinEvent -> MemberJoinEventDTO(MemberDTO(member))
39+
is MemberLeaveEvent.Kick -> MemberLeaveEventKickDTO(MemberDTO(member), operator?.let(::MemberDTO))
40+
is MemberLeaveEvent.Quit -> MemberLeaveEventQuitDTO(MemberDTO(member))
41+
is MemberCardChangeEvent -> MemberCardChangeEventDTO(origin, new, GroupDTO(group), operator?.let(::MemberDTO))
42+
is MemberSpecialTitleChangeEvent -> MemberSpecialTitleChangeEventDTO(origin, new, MemberDTO(member))
43+
is MemberPermissionChangeEvent -> MemberPermissionChangeEventDTO(origin, new, MemberDTO(member))
44+
is MemberMuteEvent -> MemberMuteEventDTO(durationSeconds, MemberDTO(member), operator?.let(::MemberDTO))
45+
is MemberUnmuteEvent -> MemberUnmuteEventDTO(MemberDTO(member), operator?.let(::MemberDTO))
46+
else -> IgnoreEventDTO
47+
}
48+
}
49+
50+
@Serializable
51+
@SerialName("BotOnlineEvent")
52+
data class BotOnlineEventDTO(val qq: Long) : BotEventDTO()
53+
@Serializable
54+
@SerialName("BotOfflineEventActive")
55+
data class BotOfflineEventActiveDTO(val qq: Long) : BotEventDTO()
56+
@Serializable
57+
@SerialName("BotOfflineEventForce")
58+
data class BotOfflineEventForceDTO(val qq: Long, val title: String, val message: String) : BotEventDTO()
59+
@Serializable
60+
@SerialName("BotOfflineEventDropped")
61+
data class BotOfflineEventDroppedDTO(val qq: Long) : BotEventDTO()
62+
@Serializable
63+
@SerialName("BotReloginEvent")
64+
data class BotReloginEventDTO(val qq: Long) : BotEventDTO()
65+
@Serializable
66+
@SerialName("BotGroupPermissionChangeEvent")
67+
data class BotGroupPermissionChangeEventDTO(val origin: MemberPermission, val new: MemberPermission, val groupDTO: GroupDTO) : BotEventDTO()
68+
@Serializable
69+
@SerialName("BotMuteEvent")
70+
data class BotMuteEventDTO(val durationSeconds: Int, val operator: MemberDTO) : BotEventDTO()
71+
@Serializable
72+
@SerialName("BotUnmuteEvent")
73+
data class BotUnmuteEventDTO(val operator: MemberDTO) : BotEventDTO()
74+
@Serializable
75+
@SerialName("BotJoinGroupEvent")
76+
data class BotJoinGroupEventDTO(val group: GroupDTO) : BotEventDTO()
77+
@Serializable
78+
@SerialName("GroupNameChangeEvent")
79+
data class GroupNameChangeEventDTO(val origin: String, val new: String, val group: GroupDTO, val isByBot: Boolean) : BotEventDTO()
80+
@Serializable
81+
@SerialName("GroupEntranceAnnouncementChangeEvent")
82+
data class GroupEntranceAnnouncementChangeEventDTO(val origin: String, val new: String, val group: GroupDTO, val operator: MemberDTO?) : BotEventDTO()
83+
@Serializable
84+
@SerialName("GroupMuteAllEvent")
85+
data class GroupMuteAllEventDTO(val origin: Boolean, val new: Boolean, val group: GroupDTO, val operator: MemberDTO?) : BotEventDTO()
86+
@Serializable
87+
@SerialName("GroupAllowAnonymousChatEvent")
88+
data class GroupAllowAnonymousChatEventDTO(val origin: Boolean, val new: Boolean, val group: GroupDTO, val operator: MemberDTO?) : BotEventDTO()
89+
@Serializable
90+
@SerialName("GroupAllowConfessTalkEvent")
91+
data class GroupAllowConfessTalkEventDTO(val origin: Boolean, val new: Boolean, val group: GroupDTO, val isByBot: Boolean) : BotEventDTO()
92+
@Serializable
93+
@SerialName("GroupAllowMemberInviteEvent")
94+
data class GroupAllowMemberInviteEventDTO(val origin: Boolean, val new: Boolean, val group: GroupDTO, val operator: MemberDTO?) : BotEventDTO()
95+
@Serializable
96+
@SerialName("MemberJoinEvent")
97+
data class MemberJoinEventDTO(val member: MemberDTO) : BotEventDTO()
98+
@Serializable
99+
@SerialName("MemberLeaveEventKick")
100+
data class MemberLeaveEventKickDTO(val member: MemberDTO, val operator: MemberDTO?) : BotEventDTO()
101+
@Serializable
102+
@SerialName("MemberLeaveEventQuit")
103+
data class MemberLeaveEventQuitDTO(val member: MemberDTO) : BotEventDTO()
104+
@Serializable
105+
@SerialName("MemberCardChangeEvent")
106+
data class MemberCardChangeEventDTO(val origin: String, val new: String, val group: GroupDTO, val operator: MemberDTO?) : BotEventDTO()
107+
@Serializable
108+
@SerialName("MemberSpecialTitleChangeEvent")
109+
data class MemberSpecialTitleChangeEventDTO(val origin: String, val new: String, val member: MemberDTO) : BotEventDTO()
110+
@Serializable
111+
@SerialName("MemberPermissionChangeEvent")
112+
data class MemberPermissionChangeEventDTO(val origin: MemberPermission, val new: MemberPermission, val member: MemberDTO) : BotEventDTO()
113+
@Serializable
114+
@SerialName("MemberMuteEvent")
115+
data class MemberMuteEventDTO(val durationSeconds: Int, val member: MemberDTO, val operator: MemberDTO?) : BotEventDTO()
116+
@Serializable
117+
@SerialName("MemberUnmuteEvent")
118+
data class MemberUnmuteEventDTO(val member: MemberDTO, val operator: MemberDTO?) : BotEventDTO()
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package net.mamoe.mirai.console.graphical.styleSheet
2+
3+
import javafx.scene.Cursor
4+
import javafx.scene.effect.BlurType
5+
import javafx.scene.effect.DropShadow
6+
import javafx.scene.paint.Color
7+
import javafx.scene.text.FontWeight
8+
import tornadofx.*
9+
10+
class LoginViewStyleSheet : Stylesheet() {
11+
12+
companion object {
13+
val vBox by csselement("VBox")
14+
}
15+
16+
init {
17+
18+
vBox {
19+
maxWidth = 500.px
20+
maxHeight = 500.px
21+
22+
backgroundColor += c("39c5BB", 0.3)
23+
backgroundRadius += box(15.px)
24+
25+
padding = box(50.px, 100.px)
26+
spacing = 25.px
27+
28+
borderRadius += box(15.px)
29+
effect = DropShadow(BlurType.THREE_PASS_BOX, Color.GRAY, 10.0, 0.0, 15.0, 15.0)
30+
}
31+
32+
textField {
33+
prefHeight = 30.px
34+
textFill = Color.BLACK
35+
fontWeight = FontWeight.BOLD
36+
}
37+
38+
button {
39+
backgroundColor += c("00BCD4", 0.8)
40+
padding = box(10.px, 0.px)
41+
prefWidth = 500.px
42+
textFill = Color.WHITE
43+
fontWeight = FontWeight.BOLD
44+
cursor = Cursor.HAND
45+
}
46+
}
47+
}

mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/util/JFoenixAdaptor.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,20 @@ internal fun EventTarget.jfxButton(text: String = "", graphic: Node? = null, op:
1717
if (graphic != null) it.graphic = graphic
1818
}
1919

20-
fun EventTarget.jfxTextfield(value: String? = null, op: TextField.() -> Unit = {}) = JFXTextField().attachTo(this, op) {
20+
fun EventTarget.jfxTextfield(value: String? = null, op: JFXTextField.() -> Unit = {}) = JFXTextField().attachTo(this, op) {
2121
if (value != null) it.text = value
2222
}
2323

24-
fun EventTarget.jfxTextfield(property: ObservableValue<String>, op: TextField.() -> Unit = {}) = jfxTextfield().apply {
24+
fun EventTarget.jfxTextfield(property: ObservableValue<String>, op: JFXTextField.() -> Unit = {}) = jfxTextfield().apply {
2525
bind(property)
2626
op(this)
2727
}
2828

29-
fun EventTarget.jfxPasswordfield(value: String? = null, op: TextField.() -> Unit = {}) = JFXPasswordField().attachTo(this, op) {
29+
fun EventTarget.jfxPasswordfield(value: String? = null, op: JFXPasswordField.() -> Unit = {}) = JFXPasswordField().attachTo(this, op) {
3030
if (value != null) it.text = value
3131
}
3232

33-
fun EventTarget.jfxPasswordfield(property: ObservableValue<String>, op: TextField.() -> Unit = {}) = jfxPasswordfield().apply {
33+
fun EventTarget.jfxPasswordfield(property: ObservableValue<String>, op: JFXPasswordField.() -> Unit = {}) = jfxPasswordfield().apply {
3434
bind(property)
3535
op(this)
3636
}

mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/LoginFragment.kt

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package net.mamoe.mirai.console.graphical.view
2+
3+
import javafx.beans.property.SimpleStringProperty
4+
import javafx.geometry.Pos
5+
import javafx.scene.image.Image
6+
import kotlinx.coroutines.runBlocking
7+
import net.mamoe.mirai.console.graphical.controller.MiraiGraphicalUIController
8+
import net.mamoe.mirai.console.graphical.styleSheet.LoginViewStyleSheet
9+
import net.mamoe.mirai.console.graphical.util.jfxButton
10+
import net.mamoe.mirai.console.graphical.util.jfxPasswordfield
11+
import net.mamoe.mirai.console.graphical.util.jfxTextfield
12+
import tornadofx.*
13+
14+
class LoginView : View("CNM") {
15+
16+
private val controller = find<MiraiGraphicalUIController>()
17+
private val qq = SimpleStringProperty("")
18+
private val psd = SimpleStringProperty("")
19+
20+
override val root = borderpane {
21+
22+
addStylesheet(LoginViewStyleSheet::class)
23+
24+
center = vbox {
25+
26+
imageview(Image(LoginView::class.java.classLoader.getResourceAsStream("character.png"))) {
27+
alignment = Pos.CENTER
28+
}
29+
30+
jfxTextfield(qq) {
31+
promptText = "QQ"
32+
isLabelFloat = true
33+
}
34+
35+
jfxPasswordfield(psd) {
36+
promptText = "Password"
37+
isLabelFloat = true
38+
}
39+
40+
jfxButton("Login").action {
41+
runAsync {
42+
runBlocking { controller.login(qq.value, psd.value) }
43+
}.ui {
44+
qq.value = ""
45+
psd.value = ""
46+
}
47+
}
48+
}
49+
}
50+
}
29.7 KB
Loading

0 commit comments

Comments
 (0)