From 91928f7930fbd7afad5c2186542dbd520d33c0b4 Mon Sep 17 00:00:00 2001 From: Walter Huf Date: Sat, 4 May 2024 16:08:35 -0700 Subject: [PATCH] Keep RaGaugeModel as a subclass of RaIntModel --- .../io/bimmergestalt/idriveconnectkit/rhmi/RHMIModel.kt | 9 ++------- .../bimmergestalt/idriveconnectkit/rhmi/RHMIModelLive.kt | 7 ++++++- .../io/bimmergestalt/idriveconnectkit/TestXMLParsing.kt | 1 + 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/core/src/commonMain/kotlin/io/bimmergestalt/idriveconnectkit/rhmi/RHMIModel.kt b/core/src/commonMain/kotlin/io/bimmergestalt/idriveconnectkit/rhmi/RHMIModel.kt index d7b6a51..20348af 100644 --- a/core/src/commonMain/kotlin/io/bimmergestalt/idriveconnectkit/rhmi/RHMIModel.kt +++ b/core/src/commonMain/kotlin/io/bimmergestalt/idriveconnectkit/rhmi/RHMIModel.kt @@ -28,18 +28,13 @@ abstract class RHMIModel protected constructor(val id: Int) { open var value: Int = 0 } - open class RaGaugeModel(id: Int, raIntModel: RaIntModel? = null): RHMIModel(id) { + open class RaGaugeModel(id: Int): RaIntModel(id) { var modelType: String = "" var min: Int = 0 var max: Int = 100 var increment: Int = 1 - // has a value from RaIntModel - // so subclasses can pass in their own raIntModel to enable live functionality - private val raIntModel = raIntModel ?: RaIntModel(id) - var value: Int - get() = raIntModel.value - set(value) { raIntModel.value = value } + // inherits value from RaIntModel } open class FormatDataModel(id: Int, val submodels: List): RHMIModel(id) { diff --git a/core/src/jvmMain/kotlin/io/bimmergestalt/idriveconnectkit/rhmi/RHMIModelLive.kt b/core/src/jvmMain/kotlin/io/bimmergestalt/idriveconnectkit/rhmi/RHMIModelLive.kt index 97db831..458d0ea 100644 --- a/core/src/jvmMain/kotlin/io/bimmergestalt/idriveconnectkit/rhmi/RHMIModelLive.kt +++ b/core/src/jvmMain/kotlin/io/bimmergestalt/idriveconnectkit/rhmi/RHMIModelLive.kt @@ -39,7 +39,12 @@ class RHMIModelLive { get() = app.getModel(id) as? Int ?: 0 set(value) = app.setModel(id, value) } - open class RaGaugeModel(app: RHMIApplication, id: Int): RHMIModel.RaGaugeModel(id, RaIntModel(app, id)) + open class RaGaugeModel(val app: RHMIApplication, id: Int): RHMIModel.RaGaugeModel(id) { + override var value: Int + get() = app.getModel(id) as? Int ?: 0 + set(value) = app.setModel(id, value) + + } open class FormatDataModel(app: RHMIApplication, id: Int, submodels: List): RHMIModel.FormatDataModel(id, submodels) { } diff --git a/core/src/jvmTest/kotlin/io/bimmergestalt/idriveconnectkit/TestXMLParsing.kt b/core/src/jvmTest/kotlin/io/bimmergestalt/idriveconnectkit/TestXMLParsing.kt index 3f25dfb..bf8528c 100644 --- a/core/src/jvmTest/kotlin/io/bimmergestalt/idriveconnectkit/TestXMLParsing.kt +++ b/core/src/jvmTest/kotlin/io/bimmergestalt/idriveconnectkit/TestXMLParsing.kt @@ -316,6 +316,7 @@ class TestXMLParsing { @Test fun raGaugeModel() { val model = RHMIModel.loadFromXML(app, models.getChildNamed("raGaugeModel") as Node) assertNotNull(model) + assertTrue(model is RHMIModel.RaIntModel) // subclass with the same value behavior assertTrue(model is RHMIModel.RaGaugeModel) assertEquals(null, app.modelData[model?.id]) assertEquals(8, model?.id)