mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-24 23:20:09 +08:00
Graphical logout bot
This commit is contained in:
parent
baddc1117b
commit
62e71ef3a5
@ -5,6 +5,7 @@ import javafx.collections.ObservableList
|
||||
import javafx.stage.Modality
|
||||
import javafx.stage.StageStyle
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.isActive
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.console.command.CommandManager
|
||||
import net.mamoe.mirai.console.command.CommandManager.runCommand
|
||||
@ -42,6 +43,15 @@ class MiraiGraphicalUIController : Controller(), MiraiConsoleUI {
|
||||
CommandManager.runCommand(ConsoleCommandSender, "/login $qq $psd")
|
||||
}
|
||||
|
||||
fun logout(qq: Long) {
|
||||
cache.remove(qq)?.apply {
|
||||
botList.remove(this)
|
||||
if (botProperty.value != null && bot.isActive) {
|
||||
bot.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun sendCommand(command: String) = runCommand(ConsoleCommandSender, command)
|
||||
|
||||
override fun pushLog(identity: Long, message: String) = Platform.runLater {
|
||||
|
@ -69,9 +69,21 @@ class PrimaryStyleSheet : BaseStyleSheet() {
|
||||
backgroundColor += c(100, 100, 100, 0.4)
|
||||
backgroundRadius += box(5.px)
|
||||
|
||||
textFill = c(fontColor)
|
||||
fontWeight = FontWeight.BOLD
|
||||
label {
|
||||
textFill = c(fontColor)
|
||||
fontWeight = FontWeight.BOLD
|
||||
}
|
||||
|
||||
button {
|
||||
opacity = 0.0
|
||||
backgroundRadius += box(10.px)
|
||||
backgroundColor += c(fontColor, 0.1)
|
||||
cursor = Cursor.HAND
|
||||
|
||||
and(hover) {
|
||||
opacity = 1.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,15 @@
|
||||
package net.mamoe.mirai.console.graphical.util
|
||||
|
||||
import com.jfoenix.svg.SVGGlyph
|
||||
import javafx.scene.paint.Color
|
||||
|
||||
class SVG {
|
||||
companion object {
|
||||
var close = SVGGlyph(
|
||||
0,
|
||||
"CLOSE",
|
||||
"M810 274l-238 238 238 238-60 60-238-238-238 238-60-60 238-238-238-238 60-60 238 238 238-238z",
|
||||
Color.WHITE
|
||||
).apply { setSize(8.0, 8.0) }
|
||||
}
|
||||
}
|
@ -5,18 +5,21 @@ import com.jfoenix.controls.JFXListCell
|
||||
import javafx.collections.ObservableList
|
||||
import javafx.geometry.Insets
|
||||
import javafx.geometry.Pos
|
||||
import javafx.scene.control.Alert
|
||||
import javafx.scene.control.ButtonType
|
||||
import javafx.scene.control.Tab
|
||||
import javafx.scene.control.TabPane
|
||||
import javafx.scene.image.Image
|
||||
import javafx.scene.input.KeyCode
|
||||
import javafx.scene.layout.Priority
|
||||
import javafx.stage.FileChooser
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import net.mamoe.mirai.console.graphical.controller.MiraiGraphicalUIController
|
||||
import net.mamoe.mirai.console.graphical.model.BotModel
|
||||
import net.mamoe.mirai.console.graphical.util.*
|
||||
import net.mamoe.mirai.console.graphical.util.jfxButton
|
||||
import net.mamoe.mirai.console.graphical.util.jfxListView
|
||||
import net.mamoe.mirai.console.graphical.util.jfxTabPane
|
||||
import net.mamoe.mirai.console.graphical.util.myButtonBar
|
||||
import tornadofx.*
|
||||
|
||||
class PrimaryView : View() {
|
||||
@ -72,8 +75,27 @@ class PrimaryView : View() {
|
||||
override fun updateItem(item: BotModel?, empty: Boolean) {
|
||||
super.updateItem(item, empty)
|
||||
if (item != null && !empty) {
|
||||
graphic = null
|
||||
text = item.uin.toString()
|
||||
graphic = hbox {
|
||||
|
||||
alignment = Pos.CENTER_LEFT
|
||||
|
||||
label(item.uin.toString())
|
||||
pane {
|
||||
hgrow = Priority.ALWAYS
|
||||
}
|
||||
jfxButton(graphic = SVG.close) {
|
||||
buttonType = JFXButton.ButtonType.FLAT
|
||||
tooltip("退出登录")
|
||||
}.action {
|
||||
alert(Alert.AlertType.CONFIRMATION, "${item.uin}将会退出登录,是否确认") {
|
||||
if (it == ButtonType.OK) {
|
||||
tab?.close()
|
||||
controller.logout(item.uin)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
text = ""
|
||||
} else {
|
||||
graphic = null
|
||||
text = ""
|
||||
|
Loading…
Reference in New Issue
Block a user