From 6d95e6b216df46867affc98d25a0f1eea2c9c973 Mon Sep 17 00:00:00 2001 From: waicool20 Date: Sat, 25 Feb 2017 15:29:03 +0800 Subject: [PATCH] Implemented sub switch replace limit configuration for #18 --- .../kaga/config/KancolleAutoProfile.kt | 4 +- .../kaga/views/tabs/misc/MiscTabView.kt | 22 +++- src/main/resources/views/tabs/tab-misc.fxml | 104 ++++++++++-------- 3 files changed, 77 insertions(+), 53 deletions(-) diff --git a/src/main/kotlin/com/waicool20/kaga/config/KancolleAutoProfile.kt b/src/main/kotlin/com/waicool20/kaga/config/KancolleAutoProfile.kt index 0e86b49..995c4ff 100644 --- a/src/main/kotlin/com/waicool20/kaga/config/KancolleAutoProfile.kt +++ b/src/main/kotlin/com/waicool20/kaga/config/KancolleAutoProfile.kt @@ -267,12 +267,14 @@ class KancolleAutoProfile( @get:JsonProperty var lastNodePush by lastNodePushProperty } - class SubmarineSwitch(enabled: Boolean, enabledSubs: List) { + class SubmarineSwitch(enabled: Boolean, enabledSubs: List, replaceLimit: Int) { @JsonIgnore @IniConfig(key = "Enabled") val enabledProperty = SimpleBooleanProperty(enabled) @JsonIgnore @IniConfig(key = "EnabledSubs") val enabledSubsProperty = SimpleListProperty(FXCollections.observableArrayList(enabledSubs)) + @JsonIgnore @IniConfig(key = "ReplaceLimit") val replaceLimitProperty = SimpleIntegerProperty(replaceLimit) @get:JsonProperty var enabled by enabledProperty @get:JsonProperty var enabledSubs by enabledSubsProperty + @get:JsonProperty var replaceLimit by replaceLimitProperty } class Lbas( diff --git a/src/main/kotlin/com/waicool20/kaga/views/tabs/misc/MiscTabView.kt b/src/main/kotlin/com/waicool20/kaga/views/tabs/misc/MiscTabView.kt index 38b6cfc..fe760e5 100644 --- a/src/main/kotlin/com/waicool20/kaga/views/tabs/misc/MiscTabView.kt +++ b/src/main/kotlin/com/waicool20/kaga/views/tabs/misc/MiscTabView.kt @@ -1,6 +1,7 @@ package com.waicool20.kaga.views.tabs.misc import com.waicool20.kaga.Kaga +import com.waicool20.kaga.util.bind import javafx.beans.binding.Bindings import javafx.collections.SetChangeListener import javafx.fxml.FXML @@ -8,15 +9,17 @@ import javafx.fxml.FXMLLoader import javafx.scene.Scene import javafx.scene.control.Button import javafx.scene.control.CheckBox +import javafx.scene.control.ComboBox import javafx.scene.layout.GridPane import javafx.stage.Modality import javafx.stage.Stage -import tornadofx.bind -import tornadofx.find +import javafx.util.StringConverter +import tornadofx.* class MiscTabView { @FXML private lateinit var enableSubSwitchButton: CheckBox @FXML private lateinit var configSubSwitchBtn: Button + @FXML private lateinit var replaceLimitComboBox: ComboBox @FXML private lateinit var enableLbasButton: CheckBox @FXML private lateinit var group1CheckBox: CheckBox @FXML private lateinit var group2CheckBox: CheckBox @@ -25,7 +28,8 @@ class MiscTabView { @FXML private lateinit var configGrp2NodesBtn: Button @FXML private lateinit var configGrp3NodesBtn: Button - @FXML private lateinit var content: GridPane + @FXML private lateinit var lbasContent: GridPane + @FXML private lateinit var subSwitchContent: GridPane @FXML fun initialize() { setValues() @@ -34,20 +38,30 @@ class MiscTabView { private fun setValues() { updateGroupCheckBoxes(Kaga.PROFILE!!.lbas.enabledGroups) + val damageLevels = listOf("Light damage", "Moderate damage", "Critical damage", "Null") + val damageConverter = object : StringConverter() { + override fun toString(int: Int?): String = damageLevels[int ?: 3] + + override fun fromString(string: String?): Int = damageLevels.indexOf(string) + } + replaceLimitComboBox.items.setAll((0..2).toList()) + replaceLimitComboBox.converter = damageConverter } private fun createBindings() { with(Kaga.PROFILE!!) { enableSubSwitchButton.bind(submarineSwitch.enabledProperty) + replaceLimitComboBox.bind(submarineSwitch.replaceLimitProperty) with(lbas) { enableLbasButton.bind(enabledProperty) enabledGroups.addListener(SetChangeListener { change -> updateGroupCheckBoxes(change.set) }) } } + subSwitchContent.disableProperty().bind(Bindings.not(enableSubSwitchButton.selectedProperty())) group1CheckBox.selectedProperty().addListener({ obs, oldVal, newVal -> setGroups(newVal, 1) }) group2CheckBox.selectedProperty().addListener({ obs, oldVal, newVal -> setGroups(newVal, 2) }) group3CheckBox.selectedProperty().addListener({ obs, oldVal, newVal -> setGroups(newVal, 3) }) - content.disableProperty().bind(Bindings.not(enableLbasButton.selectedProperty())) + lbasContent.disableProperty().bind(Bindings.not(enableLbasButton.selectedProperty())) configGrp1NodesBtn.disableProperty().bind(Bindings.not(group1CheckBox.selectedProperty())) configGrp2NodesBtn.disableProperty().bind(Bindings.not(group2CheckBox.selectedProperty())) configGrp3NodesBtn.disableProperty().bind(Bindings.not(group3CheckBox.selectedProperty())) diff --git a/src/main/resources/views/tabs/tab-misc.fxml b/src/main/resources/views/tabs/tab-misc.fxml index d5e879b..8296977 100644 --- a/src/main/resources/views/tabs/tab-misc.fxml +++ b/src/main/resources/views/tabs/tab-misc.fxml @@ -1,101 +1,109 @@ - - - + + + + + + + + + + + - + - - - + + + + - + - - + + - - - + + + - - - - -