From 0e28121182d97eac11aec88cade4743abac030aa Mon Sep 17 00:00:00 2001 From: ryoii <ryoii@foxmail.com> Date: Tue, 17 Mar 2020 23:59:18 +0800 Subject: [PATCH] Trim log size --- .../controller/MiraiGraphicalUIController.kt | 24 +++++++++++---- .../console/graphical/model/GlobalSetting.kt | 17 +++++++++++ .../console/graphical/view/SettingsView.kt | 29 ++++++++++++------- 3 files changed, 53 insertions(+), 17 deletions(-) create mode 100644 mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/GlobalSetting.kt diff --git a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiGraphicalUIController.kt b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiGraphicalUIController.kt index 03abb928c..cdeae3e5e 100644 --- a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiGraphicalUIController.kt +++ b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiGraphicalUIController.kt @@ -5,10 +5,7 @@ import javafx.collections.ObservableList import javafx.stage.Modality import net.mamoe.mirai.Bot import net.mamoe.mirai.console.MiraiConsole -import net.mamoe.mirai.console.graphical.model.BotModel -import net.mamoe.mirai.console.graphical.model.ConsoleInfo -import net.mamoe.mirai.console.graphical.model.PluginModel -import net.mamoe.mirai.console.graphical.model.VerificationCodeModel +import net.mamoe.mirai.console.graphical.model.* import net.mamoe.mirai.console.graphical.view.VerificationCodeFragment import net.mamoe.mirai.console.plugins.PluginManager import net.mamoe.mirai.console.utils.MiraiConsoleUI @@ -17,6 +14,7 @@ import tornadofx.* class MiraiGraphicalUIController : Controller(), MiraiConsoleUI { + private val settingModel = find<GlobalSettingModel>() private val loginSolver = GraphicalLoginSolver() private val cache = mutableMapOf<Long, BotModel>() val mainLog = observableListOf<String>() @@ -34,9 +32,23 @@ class MiraiGraphicalUIController : Controller(), MiraiConsoleUI { fun sendCommand(command: String) = MiraiConsole.CommandProcessor.runConsoleCommandBlocking(command) override fun pushLog(identity: Long, message: String) = Platform.runLater { + fun ObservableList<*>.trim() { + println(size) + println(settingModel.item.maxLongNum) + if (size > settingModel.item.maxLongNum) { + this.removeAt(0) + } + } + when (identity) { - 0L -> mainLog.add(message) - else -> cache[identity]?.logHistory?.add(message) + 0L -> mainLog.apply { + add(message) + mainLog.trim() + } + else -> cache[identity]?.logHistory?.apply { + add(message) + trim() + } } } diff --git a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/GlobalSetting.kt b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/GlobalSetting.kt new file mode 100644 index 000000000..0bb792e5a --- /dev/null +++ b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/GlobalSetting.kt @@ -0,0 +1,17 @@ +package net.mamoe.mirai.console.graphical.model + +import javafx.beans.property.SimpleLongProperty +import tornadofx.ItemViewModel +import tornadofx.getValue +import tornadofx.setValue + +class GlobalSetting { + val maxLogNumProperty = SimpleLongProperty(4096) + var maxLongNum: Long by maxLogNumProperty +} + +class GlobalSettingModel(setting: GlobalSetting) : ItemViewModel<GlobalSetting>(setting) { + constructor() : this(GlobalSetting()) + + val maxLogNum = bind(GlobalSetting::maxLogNumProperty) +} diff --git a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt index d7d2d8302..fca431caa 100644 --- a/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt +++ b/mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/SettingsView.kt @@ -1,38 +1,45 @@ package net.mamoe.mirai.console.graphical.view import net.mamoe.mirai.console.graphical.controller.MiraiGraphicalUIController +import net.mamoe.mirai.console.graphical.model.GlobalSettingModel import net.mamoe.mirai.console.graphical.util.jfxButton import net.mamoe.mirai.console.graphical.util.jfxTextfield -import tornadofx.View -import tornadofx.field -import tornadofx.fieldset -import tornadofx.form +import tornadofx.* +import java.awt.Desktop +import java.io.File class SettingsView : View() { private val controller = find<MiraiGraphicalUIController>() + private val settingModel = find<GlobalSettingModel>() override val root = form { fieldset { field { - jfxButton("撤掉") { } - jfxButton("保存") { } + jfxButton("撤掉").action { + settingModel.rollback() + } + jfxButton("保存").action { + settingModel.commit() + } } } fieldset("插件目录") { field { - jfxTextfield("...") { isEditable = false } - jfxButton("打开目录") + jfxTextfield((System.getProperty("user.dir") + "/plugins/").replace("//", "/")) { isEditable = false } + jfxButton("打开目录").action { + (System.getProperty("user.dir") + "/plugins/").replace("//", "/").also { path -> + Desktop.getDesktop().takeIf { it.isSupported(Desktop.Action.OPEN) }?.open(File(path)) + } + } } } fieldset("最大日志容量") { field { - jfxTextfield("...") { - - } + jfxTextfield().bind(settingModel.maxLogNum) } } }