diff --git a/ExtTransferSwitch.py b/ExtTransferSwitch.py index 96acbe08..70a5bef4 100755 --- a/ExtTransferSwitch.py +++ b/ExtTransferSwitch.py @@ -123,7 +123,6 @@ def getVeBusObjects (self): transferSwitchLocation = 0 elif self.numberOfAcInputs == 1: transferSwitchLocation = 1 - self.numberOfAcInputs > 1 and self.DbusSettings['transferSwitchOnAc2'] == 1 elif self.DbusSettings['transferSwitchOnAc2'] == 1: transferSwitchLocation = 2 else: diff --git a/FileSets/v2.71/MbEditBox.qml b/FileSets/v2.71/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.71/MbEditBox.qml +++ b/FileSets/v2.71/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.71/MbEditBoxDateTime.qml b/FileSets/v2.71/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.71/MbEditBoxDateTime.qml +++ b/FileSets/v2.71/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.71/MbSubMenu.qml b/FileSets/v2.71/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.71/MbSubMenu.qml +++ b/FileSets/v2.71/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.71/Multi.qml b/FileSets/v2.71/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.71/Multi.qml +++ b/FileSets/v2.71/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.71/OverviewBox.qml b/FileSets/v2.71/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.71/OverviewBox.qml +++ b/FileSets/v2.71/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.71/OverviewConnection.qml b/FileSets/v2.71/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.71/OverviewConnection.qml +++ b/FileSets/v2.71/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.71/OverviewConnectionEnd.qml b/FileSets/v2.71/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.71/OverviewConnectionEnd.qml +++ b/FileSets/v2.71/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.71/OverviewSolarCharger.qml b/FileSets/v2.71/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.71/OverviewSolarCharger.qml +++ b/FileSets/v2.71/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.71/OverviewTankDelegate.qml b/FileSets/v2.71/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.71/OverviewTankDelegate.qml +++ b/FileSets/v2.71/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.71/OverviewTanks.qml b/FileSets/v2.71/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.71/OverviewTanks.qml +++ b/FileSets/v2.71/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.71/TileText.qml b/FileSets/v2.71/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.71/TileText.qml +++ b/FileSets/v2.71/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.71/styles.css b/FileSets/v2.71/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.71/styles.css +++ b/FileSets/v2.71/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.72/MbEditBox.qml b/FileSets/v2.72/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.72/MbEditBox.qml +++ b/FileSets/v2.72/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.72/MbEditBoxDateTime.qml b/FileSets/v2.72/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.72/MbEditBoxDateTime.qml +++ b/FileSets/v2.72/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.72/MbSubMenu.qml b/FileSets/v2.72/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.72/MbSubMenu.qml +++ b/FileSets/v2.72/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.72/Multi.qml b/FileSets/v2.72/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.72/Multi.qml +++ b/FileSets/v2.72/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.72/OverviewBox.qml b/FileSets/v2.72/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.72/OverviewBox.qml +++ b/FileSets/v2.72/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.72/OverviewConnection.qml b/FileSets/v2.72/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.72/OverviewConnection.qml +++ b/FileSets/v2.72/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.72/OverviewConnectionEnd.qml b/FileSets/v2.72/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.72/OverviewConnectionEnd.qml +++ b/FileSets/v2.72/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.72/OverviewSolarCharger.qml b/FileSets/v2.72/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.72/OverviewSolarCharger.qml +++ b/FileSets/v2.72/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.72/OverviewTankDelegate.qml b/FileSets/v2.72/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.72/OverviewTankDelegate.qml +++ b/FileSets/v2.72/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.72/OverviewTanks.qml b/FileSets/v2.72/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.72/OverviewTanks.qml +++ b/FileSets/v2.72/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.72/TileText.qml b/FileSets/v2.72/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.72/TileText.qml +++ b/FileSets/v2.72/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.72/styles.css b/FileSets/v2.72/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.72/styles.css +++ b/FileSets/v2.72/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.73/MbEditBox.qml b/FileSets/v2.73/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.73/MbEditBox.qml +++ b/FileSets/v2.73/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.73/MbEditBoxDateTime.qml b/FileSets/v2.73/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.73/MbEditBoxDateTime.qml +++ b/FileSets/v2.73/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.73/MbSubMenu.qml b/FileSets/v2.73/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.73/MbSubMenu.qml +++ b/FileSets/v2.73/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.73/Multi.qml b/FileSets/v2.73/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.73/Multi.qml +++ b/FileSets/v2.73/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.73/OverviewBox.qml b/FileSets/v2.73/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.73/OverviewBox.qml +++ b/FileSets/v2.73/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.73/OverviewConnection.qml b/FileSets/v2.73/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.73/OverviewConnection.qml +++ b/FileSets/v2.73/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.73/OverviewConnectionEnd.qml b/FileSets/v2.73/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.73/OverviewConnectionEnd.qml +++ b/FileSets/v2.73/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.73/OverviewHubEnhanced.qml b/FileSets/v2.73/OverviewHubEnhanced.qml index e89b0241..17b51b71 100644 --- a/FileSets/v2.73/OverviewHubEnhanced.qml +++ b/FileSets/v2.73/OverviewHubEnhanced.qml @@ -189,22 +189,24 @@ OverviewPage { height: showStatusBar ? 100 : 120 title: { - // input 2 is active - if (! acActiveInput.valid || acActiveInput.value == 1) + // input 1 is active + if (acActiveInput.value == 0) { - if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) - return qsTr ("AC In 2 Ignored") + if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("AC In 1 Ignored") else return getAcSourceName(sys.acSource) } - // input 1 is active - else + // input 2 is active + else if (acActiveInput.value == 1) { - if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) - return qsTr ("AC In 1 Ignored") + if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("AC In 2 Ignored") else return getAcSourceName(sys.acSource) } + else + return "no input" } anchors { top: multi.top diff --git a/FileSets/v2.73/OverviewSolarCharger.qml b/FileSets/v2.73/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.73/OverviewSolarCharger.qml +++ b/FileSets/v2.73/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.73/OverviewTankDelegate.qml b/FileSets/v2.73/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.73/OverviewTankDelegate.qml +++ b/FileSets/v2.73/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.73/OverviewTanks.qml b/FileSets/v2.73/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.73/OverviewTanks.qml +++ b/FileSets/v2.73/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.73/TileText.qml b/FileSets/v2.73/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.73/TileText.qml +++ b/FileSets/v2.73/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.73/styles.css b/FileSets/v2.73/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.73/styles.css +++ b/FileSets/v2.73/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.80/MbEditBox.qml b/FileSets/v2.80/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.80/MbEditBox.qml +++ b/FileSets/v2.80/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.80/MbEditBoxDateTime.qml b/FileSets/v2.80/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.80/MbEditBoxDateTime.qml +++ b/FileSets/v2.80/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.80/MbSubMenu.qml b/FileSets/v2.80/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.80/MbSubMenu.qml +++ b/FileSets/v2.80/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.80/Multi.qml b/FileSets/v2.80/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.80/Multi.qml +++ b/FileSets/v2.80/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.80/OverviewBox.qml b/FileSets/v2.80/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.80/OverviewBox.qml +++ b/FileSets/v2.80/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.80/OverviewConnection.qml b/FileSets/v2.80/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.80/OverviewConnection.qml +++ b/FileSets/v2.80/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.80/OverviewConnectionEnd.qml b/FileSets/v2.80/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.80/OverviewConnectionEnd.qml +++ b/FileSets/v2.80/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.80/OverviewSolarCharger.qml b/FileSets/v2.80/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.80/OverviewSolarCharger.qml +++ b/FileSets/v2.80/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.80/OverviewTankDelegate.qml b/FileSets/v2.80/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.80/OverviewTankDelegate.qml +++ b/FileSets/v2.80/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.80/OverviewTanks.qml b/FileSets/v2.80/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.80/OverviewTanks.qml +++ b/FileSets/v2.80/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.80/TileText.qml b/FileSets/v2.80/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.80/TileText.qml +++ b/FileSets/v2.80/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.80/styles.css b/FileSets/v2.80/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.80/styles.css +++ b/FileSets/v2.80/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.81/MbEditBox.qml b/FileSets/v2.81/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.81/MbEditBox.qml +++ b/FileSets/v2.81/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.81/MbEditBoxDateTime.qml b/FileSets/v2.81/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.81/MbEditBoxDateTime.qml +++ b/FileSets/v2.81/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.81/MbSubMenu.qml b/FileSets/v2.81/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.81/MbSubMenu.qml +++ b/FileSets/v2.81/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.81/Multi.qml b/FileSets/v2.81/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.81/Multi.qml +++ b/FileSets/v2.81/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.81/OverviewBox.qml b/FileSets/v2.81/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.81/OverviewBox.qml +++ b/FileSets/v2.81/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.81/OverviewConnection.qml b/FileSets/v2.81/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.81/OverviewConnection.qml +++ b/FileSets/v2.81/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.81/OverviewConnectionEnd.qml b/FileSets/v2.81/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.81/OverviewConnectionEnd.qml +++ b/FileSets/v2.81/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.81/OverviewSolarCharger.qml b/FileSets/v2.81/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.81/OverviewSolarCharger.qml +++ b/FileSets/v2.81/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.81/OverviewTankDelegate.qml b/FileSets/v2.81/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.81/OverviewTankDelegate.qml +++ b/FileSets/v2.81/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.81/OverviewTanks.qml b/FileSets/v2.81/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.81/OverviewTanks.qml +++ b/FileSets/v2.81/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.81/TileText.qml b/FileSets/v2.81/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.81/TileText.qml +++ b/FileSets/v2.81/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.81/styles.css b/FileSets/v2.81/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.81/styles.css +++ b/FileSets/v2.81/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.82/MbEditBox.qml b/FileSets/v2.82/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.82/MbEditBox.qml +++ b/FileSets/v2.82/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.82/MbEditBoxDateTime.qml b/FileSets/v2.82/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.82/MbEditBoxDateTime.qml +++ b/FileSets/v2.82/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.82/MbSubMenu.qml b/FileSets/v2.82/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.82/MbSubMenu.qml +++ b/FileSets/v2.82/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.82/Multi.qml b/FileSets/v2.82/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.82/Multi.qml +++ b/FileSets/v2.82/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.82/OverviewBox.qml b/FileSets/v2.82/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.82/OverviewBox.qml +++ b/FileSets/v2.82/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.82/OverviewConnection.qml b/FileSets/v2.82/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.82/OverviewConnection.qml +++ b/FileSets/v2.82/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.82/OverviewConnectionEnd.qml b/FileSets/v2.82/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.82/OverviewConnectionEnd.qml +++ b/FileSets/v2.82/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.82/OverviewSolarCharger.qml b/FileSets/v2.82/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.82/OverviewSolarCharger.qml +++ b/FileSets/v2.82/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.82/OverviewTankDelegate.qml b/FileSets/v2.82/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.82/OverviewTankDelegate.qml +++ b/FileSets/v2.82/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.82/OverviewTanks.qml b/FileSets/v2.82/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.82/OverviewTanks.qml +++ b/FileSets/v2.82/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.82/TileText.qml b/FileSets/v2.82/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.82/TileText.qml +++ b/FileSets/v2.82/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.82/styles.css b/FileSets/v2.82/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.82/styles.css +++ b/FileSets/v2.82/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.83/MbEditBox.qml b/FileSets/v2.83/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.83/MbEditBox.qml +++ b/FileSets/v2.83/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.83/MbEditBoxDateTime.qml b/FileSets/v2.83/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.83/MbEditBoxDateTime.qml +++ b/FileSets/v2.83/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.83/MbSubMenu.qml b/FileSets/v2.83/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.83/MbSubMenu.qml +++ b/FileSets/v2.83/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.83/Multi.qml b/FileSets/v2.83/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.83/Multi.qml +++ b/FileSets/v2.83/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.83/OverviewBox.qml b/FileSets/v2.83/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.83/OverviewBox.qml +++ b/FileSets/v2.83/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.83/OverviewConnection.qml b/FileSets/v2.83/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.83/OverviewConnection.qml +++ b/FileSets/v2.83/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.83/OverviewConnectionEnd.qml b/FileSets/v2.83/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.83/OverviewConnectionEnd.qml +++ b/FileSets/v2.83/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.83/OverviewSolarCharger.qml b/FileSets/v2.83/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.83/OverviewSolarCharger.qml +++ b/FileSets/v2.83/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.83/OverviewTankDelegate.qml b/FileSets/v2.83/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.83/OverviewTankDelegate.qml +++ b/FileSets/v2.83/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.83/OverviewTanks.qml b/FileSets/v2.83/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.83/OverviewTanks.qml +++ b/FileSets/v2.83/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.83/TileText.qml b/FileSets/v2.83/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.83/TileText.qml +++ b/FileSets/v2.83/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.83/styles.css b/FileSets/v2.83/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.83/styles.css +++ b/FileSets/v2.83/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.84/MbEditBox.qml b/FileSets/v2.84/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.84/MbEditBox.qml +++ b/FileSets/v2.84/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.84/MbEditBoxDateTime.qml b/FileSets/v2.84/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.84/MbEditBoxDateTime.qml +++ b/FileSets/v2.84/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.84/MbSubMenu.qml b/FileSets/v2.84/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.84/MbSubMenu.qml +++ b/FileSets/v2.84/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.84/Multi.qml b/FileSets/v2.84/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.84/Multi.qml +++ b/FileSets/v2.84/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.84/OverviewBox.qml b/FileSets/v2.84/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.84/OverviewBox.qml +++ b/FileSets/v2.84/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.84/OverviewConnection.qml b/FileSets/v2.84/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.84/OverviewConnection.qml +++ b/FileSets/v2.84/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.84/OverviewConnectionEnd.qml b/FileSets/v2.84/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.84/OverviewConnectionEnd.qml +++ b/FileSets/v2.84/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.84/OverviewSolarCharger.qml b/FileSets/v2.84/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.84/OverviewSolarCharger.qml +++ b/FileSets/v2.84/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.84/OverviewTankDelegate.qml b/FileSets/v2.84/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.84/OverviewTankDelegate.qml +++ b/FileSets/v2.84/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.84/OverviewTanks.qml b/FileSets/v2.84/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.84/OverviewTanks.qml +++ b/FileSets/v2.84/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.84/TileText.qml b/FileSets/v2.84/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.84/TileText.qml +++ b/FileSets/v2.84/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.84/styles.css b/FileSets/v2.84/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.84/styles.css +++ b/FileSets/v2.84/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.85/MbEditBox.qml b/FileSets/v2.85/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.85/MbEditBox.qml +++ b/FileSets/v2.85/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.85/MbEditBoxDateTime.qml b/FileSets/v2.85/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.85/MbEditBoxDateTime.qml +++ b/FileSets/v2.85/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.85/MbSubMenu.qml b/FileSets/v2.85/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.85/MbSubMenu.qml +++ b/FileSets/v2.85/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.85/Multi.qml b/FileSets/v2.85/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.85/Multi.qml +++ b/FileSets/v2.85/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.85/OverviewBox.qml b/FileSets/v2.85/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.85/OverviewBox.qml +++ b/FileSets/v2.85/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.85/OverviewConnection.qml b/FileSets/v2.85/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.85/OverviewConnection.qml +++ b/FileSets/v2.85/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.85/OverviewConnectionEnd.qml b/FileSets/v2.85/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.85/OverviewConnectionEnd.qml +++ b/FileSets/v2.85/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.85/OverviewSolarCharger.qml b/FileSets/v2.85/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.85/OverviewSolarCharger.qml +++ b/FileSets/v2.85/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.85/OverviewTankDelegate.qml b/FileSets/v2.85/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.85/OverviewTankDelegate.qml +++ b/FileSets/v2.85/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.85/OverviewTanks.qml b/FileSets/v2.85/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.85/OverviewTanks.qml +++ b/FileSets/v2.85/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.85/TileText.qml b/FileSets/v2.85/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.85/TileText.qml +++ b/FileSets/v2.85/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.85/styles.css b/FileSets/v2.85/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.85/styles.css +++ b/FileSets/v2.85/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.86/MbEditBox.qml b/FileSets/v2.86/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.86/MbEditBox.qml +++ b/FileSets/v2.86/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.86/MbEditBoxDateTime.qml b/FileSets/v2.86/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.86/MbEditBoxDateTime.qml +++ b/FileSets/v2.86/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.86/MbSubMenu.qml b/FileSets/v2.86/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.86/MbSubMenu.qml +++ b/FileSets/v2.86/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.86/Multi.qml b/FileSets/v2.86/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.86/Multi.qml +++ b/FileSets/v2.86/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.86/OverviewBox.qml b/FileSets/v2.86/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.86/OverviewBox.qml +++ b/FileSets/v2.86/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.86/OverviewConnection.qml b/FileSets/v2.86/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.86/OverviewConnection.qml +++ b/FileSets/v2.86/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.86/OverviewConnectionEnd.qml b/FileSets/v2.86/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.86/OverviewConnectionEnd.qml +++ b/FileSets/v2.86/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.86/OverviewSolarCharger.qml b/FileSets/v2.86/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.86/OverviewSolarCharger.qml +++ b/FileSets/v2.86/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.86/OverviewTankDelegate.qml b/FileSets/v2.86/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.86/OverviewTankDelegate.qml +++ b/FileSets/v2.86/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.86/OverviewTanks.qml b/FileSets/v2.86/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.86/OverviewTanks.qml +++ b/FileSets/v2.86/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.86/TileText.qml b/FileSets/v2.86/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.86/TileText.qml +++ b/FileSets/v2.86/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.86/styles.css b/FileSets/v2.86/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.86/styles.css +++ b/FileSets/v2.86/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.87/MbEditBox.qml b/FileSets/v2.87/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.87/MbEditBox.qml +++ b/FileSets/v2.87/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.87/MbEditBoxDateTime.qml b/FileSets/v2.87/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.87/MbEditBoxDateTime.qml +++ b/FileSets/v2.87/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.87/MbSubMenu.qml b/FileSets/v2.87/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.87/MbSubMenu.qml +++ b/FileSets/v2.87/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.87/Multi.qml b/FileSets/v2.87/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.87/Multi.qml +++ b/FileSets/v2.87/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.87/OverviewBox.qml b/FileSets/v2.87/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.87/OverviewBox.qml +++ b/FileSets/v2.87/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.87/OverviewConnection.qml b/FileSets/v2.87/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.87/OverviewConnection.qml +++ b/FileSets/v2.87/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.87/OverviewConnectionEnd.qml b/FileSets/v2.87/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.87/OverviewConnectionEnd.qml +++ b/FileSets/v2.87/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.87/OverviewSolarCharger.qml b/FileSets/v2.87/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.87/OverviewSolarCharger.qml +++ b/FileSets/v2.87/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.87/OverviewTankDelegate.qml b/FileSets/v2.87/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.87/OverviewTankDelegate.qml +++ b/FileSets/v2.87/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.87/OverviewTanks.qml b/FileSets/v2.87/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.87/OverviewTanks.qml +++ b/FileSets/v2.87/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.87/TileText.qml b/FileSets/v2.87/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.87/TileText.qml +++ b/FileSets/v2.87/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.87/styles.css b/FileSets/v2.87/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.87/styles.css +++ b/FileSets/v2.87/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.89/MbEditBox.qml b/FileSets/v2.89/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.89/MbEditBox.qml +++ b/FileSets/v2.89/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.89/MbEditBoxDateTime.qml b/FileSets/v2.89/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.89/MbEditBoxDateTime.qml +++ b/FileSets/v2.89/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.89/MbSubMenu.qml b/FileSets/v2.89/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.89/MbSubMenu.qml +++ b/FileSets/v2.89/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.89/Multi.qml b/FileSets/v2.89/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.89/Multi.qml +++ b/FileSets/v2.89/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.89/OverviewBox.qml b/FileSets/v2.89/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.89/OverviewBox.qml +++ b/FileSets/v2.89/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.89/OverviewConnection.qml b/FileSets/v2.89/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.89/OverviewConnection.qml +++ b/FileSets/v2.89/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.89/OverviewConnectionEnd.qml b/FileSets/v2.89/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.89/OverviewConnectionEnd.qml +++ b/FileSets/v2.89/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.89/OverviewSolarCharger.qml b/FileSets/v2.89/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.89/OverviewSolarCharger.qml +++ b/FileSets/v2.89/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.89/OverviewTankDelegate.qml b/FileSets/v2.89/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.89/OverviewTankDelegate.qml +++ b/FileSets/v2.89/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.89/OverviewTanks.qml b/FileSets/v2.89/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.89/OverviewTanks.qml +++ b/FileSets/v2.89/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.89/TileText.qml b/FileSets/v2.89/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.89/TileText.qml +++ b/FileSets/v2.89/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.89/styles.css b/FileSets/v2.89/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.89/styles.css +++ b/FileSets/v2.89/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.90/MbEditBox.qml b/FileSets/v2.90/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.90/MbEditBox.qml +++ b/FileSets/v2.90/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.90/MbEditBoxDateTime.qml b/FileSets/v2.90/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.90/MbEditBoxDateTime.qml +++ b/FileSets/v2.90/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.90/MbSpinBox.qml b/FileSets/v2.90/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v2.90/MbSpinBox.qml +++ b/FileSets/v2.90/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v2.90/MbSubMenu.qml b/FileSets/v2.90/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.90/MbSubMenu.qml +++ b/FileSets/v2.90/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.90/Multi.qml b/FileSets/v2.90/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.90/Multi.qml +++ b/FileSets/v2.90/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.90/OverviewBox.qml b/FileSets/v2.90/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.90/OverviewBox.qml +++ b/FileSets/v2.90/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.90/OverviewConnection.qml b/FileSets/v2.90/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.90/OverviewConnection.qml +++ b/FileSets/v2.90/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.90/OverviewConnectionEnd.qml b/FileSets/v2.90/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.90/OverviewConnectionEnd.qml +++ b/FileSets/v2.90/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.90/OverviewSolarCharger.qml b/FileSets/v2.90/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.90/OverviewSolarCharger.qml +++ b/FileSets/v2.90/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.90/OverviewTankDelegate.qml b/FileSets/v2.90/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.90/OverviewTankDelegate.qml +++ b/FileSets/v2.90/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.90/OverviewTanks.qml b/FileSets/v2.90/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.90/OverviewTanks.qml +++ b/FileSets/v2.90/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.90/TileText.qml b/FileSets/v2.90/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.90/TileText.qml +++ b/FileSets/v2.90/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.90/styles.css b/FileSets/v2.90/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.90/styles.css +++ b/FileSets/v2.90/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.91/MbEditBox.qml b/FileSets/v2.91/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.91/MbEditBox.qml +++ b/FileSets/v2.91/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.91/MbEditBoxDateTime.qml b/FileSets/v2.91/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.91/MbEditBoxDateTime.qml +++ b/FileSets/v2.91/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.91/MbSpinBox.qml b/FileSets/v2.91/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v2.91/MbSpinBox.qml +++ b/FileSets/v2.91/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v2.91/MbSubMenu.qml b/FileSets/v2.91/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.91/MbSubMenu.qml +++ b/FileSets/v2.91/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.91/Multi.qml b/FileSets/v2.91/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.91/Multi.qml +++ b/FileSets/v2.91/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.91/OverviewBox.qml b/FileSets/v2.91/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.91/OverviewBox.qml +++ b/FileSets/v2.91/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.91/OverviewConnection.qml b/FileSets/v2.91/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.91/OverviewConnection.qml +++ b/FileSets/v2.91/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.91/OverviewConnectionEnd.qml b/FileSets/v2.91/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.91/OverviewConnectionEnd.qml +++ b/FileSets/v2.91/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.91/OverviewSolarCharger.qml b/FileSets/v2.91/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.91/OverviewSolarCharger.qml +++ b/FileSets/v2.91/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.91/OverviewTankDelegate.qml b/FileSets/v2.91/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.91/OverviewTankDelegate.qml +++ b/FileSets/v2.91/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.91/OverviewTanks.qml b/FileSets/v2.91/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.91/OverviewTanks.qml +++ b/FileSets/v2.91/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.91/TileText.qml b/FileSets/v2.91/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.91/TileText.qml +++ b/FileSets/v2.91/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.91/styles.css b/FileSets/v2.91/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.91/styles.css +++ b/FileSets/v2.91/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.92/MbEditBox.qml b/FileSets/v2.92/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.92/MbEditBox.qml +++ b/FileSets/v2.92/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.92/MbEditBoxDateTime.qml b/FileSets/v2.92/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.92/MbEditBoxDateTime.qml +++ b/FileSets/v2.92/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.92/MbSpinBox.qml b/FileSets/v2.92/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v2.92/MbSpinBox.qml +++ b/FileSets/v2.92/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v2.92/MbSubMenu.qml b/FileSets/v2.92/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.92/MbSubMenu.qml +++ b/FileSets/v2.92/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.92/Multi.qml b/FileSets/v2.92/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.92/Multi.qml +++ b/FileSets/v2.92/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.92/OverviewBox.qml b/FileSets/v2.92/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.92/OverviewBox.qml +++ b/FileSets/v2.92/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.92/OverviewConnection.qml b/FileSets/v2.92/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.92/OverviewConnection.qml +++ b/FileSets/v2.92/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.92/OverviewConnectionEnd.qml b/FileSets/v2.92/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.92/OverviewConnectionEnd.qml +++ b/FileSets/v2.92/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.92/OverviewSolarCharger.qml b/FileSets/v2.92/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.92/OverviewSolarCharger.qml +++ b/FileSets/v2.92/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.92/OverviewTankDelegate.qml b/FileSets/v2.92/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.92/OverviewTankDelegate.qml +++ b/FileSets/v2.92/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.92/OverviewTanks.qml b/FileSets/v2.92/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.92/OverviewTanks.qml +++ b/FileSets/v2.92/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.92/TileText.qml b/FileSets/v2.92/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.92/TileText.qml +++ b/FileSets/v2.92/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.92/styles.css b/FileSets/v2.92/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.92/styles.css +++ b/FileSets/v2.92/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.93/MbEditBox.qml b/FileSets/v2.93/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.93/MbEditBox.qml +++ b/FileSets/v2.93/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.93/MbEditBoxDateTime.qml b/FileSets/v2.93/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.93/MbEditBoxDateTime.qml +++ b/FileSets/v2.93/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.93/MbSpinBox.qml b/FileSets/v2.93/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v2.93/MbSpinBox.qml +++ b/FileSets/v2.93/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v2.93/MbSubMenu.qml b/FileSets/v2.93/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.93/MbSubMenu.qml +++ b/FileSets/v2.93/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.93/Multi.qml b/FileSets/v2.93/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.93/Multi.qml +++ b/FileSets/v2.93/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.93/OverviewBox.qml b/FileSets/v2.93/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.93/OverviewBox.qml +++ b/FileSets/v2.93/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.93/OverviewConnection.qml b/FileSets/v2.93/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.93/OverviewConnection.qml +++ b/FileSets/v2.93/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.93/OverviewConnectionEnd.qml b/FileSets/v2.93/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.93/OverviewConnectionEnd.qml +++ b/FileSets/v2.93/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.93/OverviewSolarCharger.qml b/FileSets/v2.93/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.93/OverviewSolarCharger.qml +++ b/FileSets/v2.93/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.93/OverviewTankDelegate.qml b/FileSets/v2.93/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.93/OverviewTankDelegate.qml +++ b/FileSets/v2.93/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.93/OverviewTanks.qml b/FileSets/v2.93/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.93/OverviewTanks.qml +++ b/FileSets/v2.93/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.93/TileText.qml b/FileSets/v2.93/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.93/TileText.qml +++ b/FileSets/v2.93/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.93/styles.css b/FileSets/v2.93/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.93/styles.css +++ b/FileSets/v2.93/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v2.94/MbEditBox.qml b/FileSets/v2.94/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v2.94/MbEditBox.qml +++ b/FileSets/v2.94/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v2.94/MbEditBoxDateTime.qml b/FileSets/v2.94/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v2.94/MbEditBoxDateTime.qml +++ b/FileSets/v2.94/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v2.94/MbSpinBox.qml b/FileSets/v2.94/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v2.94/MbSpinBox.qml +++ b/FileSets/v2.94/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v2.94/MbSubMenu.qml b/FileSets/v2.94/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v2.94/MbSubMenu.qml +++ b/FileSets/v2.94/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v2.94/Multi.qml b/FileSets/v2.94/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v2.94/Multi.qml +++ b/FileSets/v2.94/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v2.94/OverviewBox.qml b/FileSets/v2.94/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v2.94/OverviewBox.qml +++ b/FileSets/v2.94/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v2.94/OverviewConnection.qml b/FileSets/v2.94/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v2.94/OverviewConnection.qml +++ b/FileSets/v2.94/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v2.94/OverviewConnectionEnd.qml b/FileSets/v2.94/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v2.94/OverviewConnectionEnd.qml +++ b/FileSets/v2.94/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v2.94/OverviewGeneratorEnhanced.qml b/FileSets/v2.94/OverviewGeneratorEnhanced.qml index 79af935a..50f7590d 100644 --- a/FileSets/v2.94/OverviewGeneratorEnhanced.qml +++ b/FileSets/v2.94/OverviewGeneratorEnhanced.qml @@ -53,6 +53,13 @@ OverviewPage { property bool showServiceInfo: timeSinceService.valid && generatorServiceInterval.valid && generatorServiceInterval.value > 0 property bool serviceOverdue: showServiceInfo && timeSinceService.value > generatorServiceInterval.value + //////// add to display AC input ignored + VBusItem { id: ignoreAcInput1; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn1") } + VBusItem { id: ignoreAcInput2; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn2") } + VBusItem { id: acActiveInput; bind: Utils.path(sys.vebusPrefix, "/Ac/ActiveIn/ActiveInput") } + VBusItem { id: ac1source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput1") } + VBusItem { id: ac2source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput2") } + title: qsTr("Generator") property bool autoStartSelected: false @@ -326,33 +333,55 @@ OverviewPage { visible: showAcIn values: [ - OverviewAcValuesEnhanced { connection: sys.genset }, + OverviewAcValuesEnhanced + { + connection: sys.genset + visible: sys.genset.power.valid + }, TileText { width: acInTile.width - 5 - text: qsTr ("--") - font.pixelSize: 22 + text: + { + if (ac1source.valid && ac1source.value == 2) + { + if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("\nAC In Ignored\nduring\ngenerator\nstart / stop") + else + return "" + } + else if (ac2source.valid && ac2source.value == 2) + { + if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("\nAC In Ignored\nduring\ngenerator\nstart / stop") + else + return "" + } + else + return qsTr ("\nAC In\nis not\ngenerator") + } visible: !sys.genset.power.valid } ] ////// add power bar graph - PowerGauge - { - id: acInBar - width: parent.width - height: 12 - anchors - { - top: parent.top; topMargin: 20 - horizontalCenter: parent.horizontalCenter - } + PowerGauge + { + id: acInBar + width: parent.width + height: 12 + anchors + { + top: parent.top; topMargin: 20 + horizontalCenter: parent.horizontalCenter + } connection: sys.genset useInputCurrentLimit: true - maxForwardPowerParameter: "" - maxReversePowerParameter: "" - visible: showGauges - } + maxForwardPowerParameter: "" + maxReversePowerParameter: "" + visible: showGauges && sys.genset.power.valid + } } + //////// added to show alternator in place of AC generator Tile { id: alternatorTile diff --git a/FileSets/v2.94/OverviewSolarCharger.qml b/FileSets/v2.94/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v2.94/OverviewSolarCharger.qml +++ b/FileSets/v2.94/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v2.94/OverviewTankDelegate.qml b/FileSets/v2.94/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v2.94/OverviewTankDelegate.qml +++ b/FileSets/v2.94/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v2.94/OverviewTanks.qml b/FileSets/v2.94/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v2.94/OverviewTanks.qml +++ b/FileSets/v2.94/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v2.94/TileText.qml b/FileSets/v2.94/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v2.94/TileText.qml +++ b/FileSets/v2.94/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v2.94/styles.css b/FileSets/v2.94/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v2.94/styles.css +++ b/FileSets/v2.94/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.00/MbEditBox.qml b/FileSets/v3.00/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.00/MbEditBox.qml +++ b/FileSets/v3.00/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.00/MbEditBoxDateTime.qml b/FileSets/v3.00/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.00/MbEditBoxDateTime.qml +++ b/FileSets/v3.00/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.00/MbItem.qml b/FileSets/v3.00/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.00/MbItem.qml +++ b/FileSets/v3.00/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.00/MbItemDigitalInput.qml b/FileSets/v3.00/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.00/MbItemDigitalInput.qml +++ b/FileSets/v3.00/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.00/MbSpinBox.qml b/FileSets/v3.00/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.00/MbSpinBox.qml +++ b/FileSets/v3.00/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.00/MbStyle.qml b/FileSets/v3.00/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.00/MbStyle.qml +++ b/FileSets/v3.00/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.00/MbSubMenu.qml b/FileSets/v3.00/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.00/MbSubMenu.qml +++ b/FileSets/v3.00/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.00/Multi.qml b/FileSets/v3.00/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.00/Multi.qml +++ b/FileSets/v3.00/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewBox.qml b/FileSets/v3.00/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.00/OverviewBox.qml +++ b/FileSets/v3.00/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewConnection.qml b/FileSets/v3.00/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.00/OverviewConnection.qml +++ b/FileSets/v3.00/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewConnectionEnd.qml b/FileSets/v3.00/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.00/OverviewConnectionEnd.qml +++ b/FileSets/v3.00/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.00/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.00/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.00/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewMobileEnhanced.qml b/FileSets/v3.00/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.00/OverviewMobileEnhanced.qml +++ b/FileSets/v3.00/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewSolarCharger.qml b/FileSets/v3.00/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.00/OverviewSolarCharger.qml +++ b/FileSets/v3.00/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewSolarInverter.qml b/FileSets/v3.00/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.00/OverviewSolarInverter.qml +++ b/FileSets/v3.00/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewTankDelegate.qml b/FileSets/v3.00/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.00/OverviewTankDelegate.qml +++ b/FileSets/v3.00/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewTanks.qml b/FileSets/v3.00/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.00/OverviewTanks.qml +++ b/FileSets/v3.00/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.00/OverviewTanksTempsDigInputs.qml b/FileSets/v3.00/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.00/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.00/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.00/PageSettingsRelay.qml b/FileSets/v3.00/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.00/PageSettingsRelay.qml +++ b/FileSets/v3.00/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.00/Tile.qml b/FileSets/v3.00/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.00/Tile.qml +++ b/FileSets/v3.00/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.00/TileRelay.qml b/FileSets/v3.00/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.00/TileRelay.qml +++ b/FileSets/v3.00/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.00/TileText.qml b/FileSets/v3.00/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.00/TileText.qml +++ b/FileSets/v3.00/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.00/styles.css b/FileSets/v3.00/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.00/styles.css +++ b/FileSets/v3.00/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.00~32/MbEditBox.qml b/FileSets/v3.00~32/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.00~32/MbEditBox.qml +++ b/FileSets/v3.00~32/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/MbEditBoxDateTime.qml b/FileSets/v3.00~32/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.00~32/MbEditBoxDateTime.qml +++ b/FileSets/v3.00~32/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/MbItem.qml b/FileSets/v3.00~32/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.00~32/MbItem.qml +++ b/FileSets/v3.00~32/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/MbItemDigitalInput.qml b/FileSets/v3.00~32/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.00~32/MbItemDigitalInput.qml +++ b/FileSets/v3.00~32/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/MbSpinBox.qml b/FileSets/v3.00~32/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.00~32/MbSpinBox.qml +++ b/FileSets/v3.00~32/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/MbStyle.qml b/FileSets/v3.00~32/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.00~32/MbStyle.qml +++ b/FileSets/v3.00~32/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/MbSubMenu.qml b/FileSets/v3.00~32/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.00~32/MbSubMenu.qml +++ b/FileSets/v3.00~32/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/Multi.qml b/FileSets/v3.00~32/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.00~32/Multi.qml +++ b/FileSets/v3.00~32/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/OverviewBox.qml b/FileSets/v3.00~32/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.00~32/OverviewBox.qml +++ b/FileSets/v3.00~32/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/OverviewConnection.qml b/FileSets/v3.00~32/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.00~32/OverviewConnection.qml +++ b/FileSets/v3.00~32/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/OverviewConnectionEnd.qml b/FileSets/v3.00~32/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.00~32/OverviewConnectionEnd.qml +++ b/FileSets/v3.00~32/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/OverviewGeneratorEnhanced.qml b/FileSets/v3.00~32/OverviewGeneratorEnhanced.qml index 79af935a..63042aae 100644 --- a/FileSets/v3.00~32/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.00~32/OverviewGeneratorEnhanced.qml @@ -53,6 +53,13 @@ OverviewPage { property bool showServiceInfo: timeSinceService.valid && generatorServiceInterval.valid && generatorServiceInterval.value > 0 property bool serviceOverdue: showServiceInfo && timeSinceService.value > generatorServiceInterval.value + //////// add to display AC input ignored + VBusItem { id: ignoreAcInput1; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn1") } + VBusItem { id: ignoreAcInput2; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn2") } + VBusItem { id: acActiveInput; bind: Utils.path(sys.vebusPrefix, "/Ac/ActiveIn/ActiveInput") } + VBusItem { id: ac1source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput1") } + VBusItem { id: ac2source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput2") } + title: qsTr("Generator") property bool autoStartSelected: false @@ -326,33 +333,65 @@ OverviewPage { visible: showAcIn values: [ - OverviewAcValuesEnhanced { connection: sys.genset }, + OverviewAcValuesEnhanced + { + connection: sys.genset + visible: sys.genset.power.valid + }, TileText { width: acInTile.width - 5 - text: qsTr ("--") - font.pixelSize: 22 + text: + { + // input 1 is active + if (acActiveInput.value == 0) + { + if (! ac1source.valid) + return qsTr ("\nno AC 1 In") + else if (ac1source.value != 2) + return qsTr ("AC In 1\nis not\ngenerator") + else if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("AC In 1\nIgnored") + else + return "" + } + // input 2 is active + else if (acActiveInput.value == 1) + { + if (! ac2source.valid) + return qsTr ("\nno AC 2 In") + else if (ac2source.value != 2) + return qsTr ("AC In 2\nis not\ngenerator") + else if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("AC In 2\nIgnored") + else + return "" + } + else + return "no\nactive\ninput" + } visible: !sys.genset.power.valid } ] ////// add power bar graph - PowerGauge - { - id: acInBar - width: parent.width - height: 12 - anchors - { - top: parent.top; topMargin: 20 - horizontalCenter: parent.horizontalCenter - } + PowerGauge + { + id: acInBar + width: parent.width + height: 12 + anchors + { + top: parent.top; topMargin: 20 + horizontalCenter: parent.horizontalCenter + } connection: sys.genset useInputCurrentLimit: true - maxForwardPowerParameter: "" - maxReversePowerParameter: "" - visible: showGauges - } + maxForwardPowerParameter: "" + maxReversePowerParameter: "" + visible: showGauges && sys.genset.power.valid + } } + //////// added to show alternator in place of AC generator Tile { id: alternatorTile diff --git a/FileSets/v3.00~32/OverviewMobileEnhanced.qml b/FileSets/v3.00~32/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.00~32/OverviewMobileEnhanced.qml +++ b/FileSets/v3.00~32/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/OverviewSolarCharger.qml b/FileSets/v3.00~32/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.00~32/OverviewSolarCharger.qml +++ b/FileSets/v3.00~32/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/OverviewTankDelegate.qml b/FileSets/v3.00~32/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.00~32/OverviewTankDelegate.qml +++ b/FileSets/v3.00~32/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/OverviewTanks.qml b/FileSets/v3.00~32/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.00~32/OverviewTanks.qml +++ b/FileSets/v3.00~32/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/OverviewTanksTempsDigInputs.qml b/FileSets/v3.00~32/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.00~32/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.00~32/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/PageSettingsRelay.qml b/FileSets/v3.00~32/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.00~32/PageSettingsRelay.qml +++ b/FileSets/v3.00~32/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/Tile.qml b/FileSets/v3.00~32/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.00~32/Tile.qml +++ b/FileSets/v3.00~32/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/TileRelay.qml b/FileSets/v3.00~32/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.00~32/TileRelay.qml +++ b/FileSets/v3.00~32/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/TileText.qml b/FileSets/v3.00~32/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.00~32/TileText.qml +++ b/FileSets/v3.00~32/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.00~32/styles.css b/FileSets/v3.00~32/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.00~32/styles.css +++ b/FileSets/v3.00~32/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.01/MbEditBox.qml b/FileSets/v3.01/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.01/MbEditBox.qml +++ b/FileSets/v3.01/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.01/MbEditBoxDateTime.qml b/FileSets/v3.01/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.01/MbEditBoxDateTime.qml +++ b/FileSets/v3.01/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.01/MbItem.qml b/FileSets/v3.01/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.01/MbItem.qml +++ b/FileSets/v3.01/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.01/MbItemDigitalInput.qml b/FileSets/v3.01/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.01/MbItemDigitalInput.qml +++ b/FileSets/v3.01/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.01/MbSpinBox.qml b/FileSets/v3.01/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.01/MbSpinBox.qml +++ b/FileSets/v3.01/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.01/MbStyle.qml b/FileSets/v3.01/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.01/MbStyle.qml +++ b/FileSets/v3.01/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.01/MbSubMenu.qml b/FileSets/v3.01/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.01/MbSubMenu.qml +++ b/FileSets/v3.01/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.01/Multi.qml b/FileSets/v3.01/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.01/Multi.qml +++ b/FileSets/v3.01/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewBox.qml b/FileSets/v3.01/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.01/OverviewBox.qml +++ b/FileSets/v3.01/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewConnection.qml b/FileSets/v3.01/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.01/OverviewConnection.qml +++ b/FileSets/v3.01/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewConnectionEnd.qml b/FileSets/v3.01/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.01/OverviewConnectionEnd.qml +++ b/FileSets/v3.01/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewFlowComplex.qml b/FileSets/v3.01/OverviewFlowComplex.qml index 5dc74c89..8d1c480d 100644 --- a/FileSets/v3.01/OverviewFlowComplex.qml +++ b/FileSets/v3.01/OverviewFlowComplex.qml @@ -148,22 +148,24 @@ OverviewPage { height: inOutTileHeight title: { - // input 2 is active - if (! acActiveInput.valid || acActiveInput.value == 1) + // input 1 is active + if (acActiveInput.value == 0) { - if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) - return qsTr ("AC In 2 Ignored") + if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("AC In 1 Ignored") else return getAcSourceName(sys.acSource) } - // input 1 is active - else + // input 2 is active + else if (acActiveInput.value == 1) { - if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) - return qsTr ("AC In 1 Ignored") + if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("AC In 2 Ignored") else return getAcSourceName(sys.acSource) } + else + return "no input" } ////// GuiMods — DarkMode titleColor: !darkMode ? "#E74c3c" : "#73261E" diff --git a/FileSets/v3.01/OverviewGeneratorEnhanced.qml b/FileSets/v3.01/OverviewGeneratorEnhanced.qml index 803bf89e..63e81367 100644 --- a/FileSets/v3.01/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.01/OverviewGeneratorEnhanced.qml @@ -53,6 +53,13 @@ OverviewPage { property bool showServiceInfo: timeSinceService.valid && generatorServiceInterval.valid && generatorServiceInterval.value > 0 property bool serviceOverdue: showServiceInfo && timeSinceService.value > generatorServiceInterval.value + //////// add to display AC input ignored + VBusItem { id: ignoreAcInput1; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn1") } + VBusItem { id: ignoreAcInput2; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn2") } + VBusItem { id: acActiveInput; bind: Utils.path(sys.vebusPrefix, "/Ac/ActiveIn/ActiveInput") } + VBusItem { id: ac1source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput1") } + VBusItem { id: ac2source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput2") } + title: qsTr("Generator") property bool autoStartSelected: false @@ -326,33 +333,55 @@ OverviewPage { visible: showAcIn values: [ - OverviewAcValuesEnhanced { connection: sys.genset }, + OverviewAcValuesEnhanced + { + connection: sys.genset + visible: sys.genset.power.valid + }, TileText { width: acInTile.width - 5 - text: qsTr ("--") - font.pixelSize: 22 + text: + { + if (ac1source.valid && ac1source.value == 2) + { + if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("\nAC In Ignored\nduring\ngenerator\nstart / stop") + else + return "" + } + else if (ac2source.valid && ac2source.value == 2) + { + if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("\nAC In Ignored\nduring\ngenerator\nstart / stop") + else + return "" + } + else + return qsTr ("\nAC In\nis not\ngenerator") + } visible: !sys.genset.power.valid } ] ////// add power bar graph - PowerGauge - { - id: acInBar - width: parent.width - height: 12 - anchors - { - top: parent.top; topMargin: 20 - horizontalCenter: parent.horizontalCenter - } + PowerGauge + { + id: acInBar + width: parent.width + height: 12 + anchors + { + top: parent.top; topMargin: 20 + horizontalCenter: parent.horizontalCenter + } connection: sys.genset useInputCurrentLimit: true - maxForwardPowerParameter: "" - maxReversePowerParameter: "" - visible: showGauges - } + maxForwardPowerParameter: "" + maxReversePowerParameter: "" + visible: showGauges && sys.genset.power.valid + } } + //////// added to show alternator in place of AC generator Tile { id: alternatorTile diff --git a/FileSets/v3.01/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.01/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.01/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.01/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewHubEnhanced.qml b/FileSets/v3.01/OverviewHubEnhanced.qml index 5f56ea60..de3fbe9b 100644 --- a/FileSets/v3.01/OverviewHubEnhanced.qml +++ b/FileSets/v3.01/OverviewHubEnhanced.qml @@ -197,22 +197,24 @@ OverviewPage { height: showStatusBar ? 100 : 120 title: { - // input 2 is active - if (! acActiveInput.valid || acActiveInput.value == 1) + // input 1 is active + if (acActiveInput.value == 0) { - if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) - return qsTr ("AC In 2 Ignored") + if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("AC In 1 Ignored") else return getAcSourceName(sys.acSource) } - // input 1 is active - else + // input 2 is active + else if (acActiveInput.value == 1) { - if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) - return qsTr ("AC In 1 Ignored") + if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("AC In 2 Ignored") else return getAcSourceName(sys.acSource) } + else + return "no input" } anchors { top: multi.top diff --git a/FileSets/v3.01/OverviewMobileEnhanced.qml b/FileSets/v3.01/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.01/OverviewMobileEnhanced.qml +++ b/FileSets/v3.01/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewSolarCharger.qml b/FileSets/v3.01/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.01/OverviewSolarCharger.qml +++ b/FileSets/v3.01/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewSolarInverter.qml b/FileSets/v3.01/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.01/OverviewSolarInverter.qml +++ b/FileSets/v3.01/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewTankDelegate.qml b/FileSets/v3.01/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.01/OverviewTankDelegate.qml +++ b/FileSets/v3.01/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewTanks.qml b/FileSets/v3.01/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.01/OverviewTanks.qml +++ b/FileSets/v3.01/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.01/OverviewTanksTempsDigInputs.qml b/FileSets/v3.01/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.01/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.01/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.01/PageSettingsRelay.qml b/FileSets/v3.01/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.01/PageSettingsRelay.qml +++ b/FileSets/v3.01/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.01/Tile.qml b/FileSets/v3.01/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.01/Tile.qml +++ b/FileSets/v3.01/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.01/TileRelay.qml b/FileSets/v3.01/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.01/TileRelay.qml +++ b/FileSets/v3.01/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.01/TileText.qml b/FileSets/v3.01/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.01/TileText.qml +++ b/FileSets/v3.01/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.01/styles.css b/FileSets/v3.01/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.01/styles.css +++ b/FileSets/v3.01/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.10/Battery.qml b/FileSets/v3.10/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.10/Battery.qml +++ b/FileSets/v3.10/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.10/DetailAcInput.qml b/FileSets/v3.10/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.10/DetailAcInput.qml +++ b/FileSets/v3.10/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.10/DetailInverter.qml b/FileSets/v3.10/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.10/DetailInverter.qml +++ b/FileSets/v3.10/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.10/DetailLoadsCombined.qml b/FileSets/v3.10/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.10/DetailLoadsCombined.qml +++ b/FileSets/v3.10/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.10/DetailLoadsOnInput.qml b/FileSets/v3.10/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.10/DetailLoadsOnInput.qml +++ b/FileSets/v3.10/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.10/DetailLoadsOnOutput.qml b/FileSets/v3.10/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.10/DetailLoadsOnOutput.qml +++ b/FileSets/v3.10/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.10/HubData.qml b/FileSets/v3.10/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.10/HubData.qml +++ b/FileSets/v3.10/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.10/MbEditBox.qml b/FileSets/v3.10/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.10/MbEditBox.qml +++ b/FileSets/v3.10/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.10/MbEditBoxDateTime.qml b/FileSets/v3.10/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.10/MbEditBoxDateTime.qml +++ b/FileSets/v3.10/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.10/MbItem.qml b/FileSets/v3.10/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.10/MbItem.qml +++ b/FileSets/v3.10/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.10/MbItemDigitalInput.qml b/FileSets/v3.10/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.10/MbItemDigitalInput.qml +++ b/FileSets/v3.10/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.10/MbSpinBox.qml b/FileSets/v3.10/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.10/MbSpinBox.qml +++ b/FileSets/v3.10/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.10/MbStyle.qml b/FileSets/v3.10/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.10/MbStyle.qml +++ b/FileSets/v3.10/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.10/MbSubMenu.qml b/FileSets/v3.10/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.10/MbSubMenu.qml +++ b/FileSets/v3.10/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.10/Multi.qml b/FileSets/v3.10/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.10/Multi.qml +++ b/FileSets/v3.10/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.10/ObjectAcConnection.qml b/FileSets/v3.10/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.10/ObjectAcConnection.qml +++ b/FileSets/v3.10/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewAcValuesEnhanced.qml b/FileSets/v3.10/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.10/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.10/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewBox.qml b/FileSets/v3.10/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.10/OverviewBox.qml +++ b/FileSets/v3.10/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewConnection.qml b/FileSets/v3.10/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.10/OverviewConnection.qml +++ b/FileSets/v3.10/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewConnectionEnd.qml b/FileSets/v3.10/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.10/OverviewConnectionEnd.qml +++ b/FileSets/v3.10/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewFlowComplex.qml b/FileSets/v3.10/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.10/OverviewFlowComplex.qml +++ b/FileSets/v3.10/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewGeneratorEnhanced.qml b/FileSets/v3.10/OverviewGeneratorEnhanced.qml index 5210a265..170a8b9c 100644 --- a/FileSets/v3.10/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.10/OverviewGeneratorEnhanced.qml @@ -53,6 +53,13 @@ OverviewPage { property bool showServiceInfo: serviceCounterItem.valid && serviceInterval.valid && serviceInterval.value > 0 property bool serviceOverdue: showServiceInfo && serviceCounterItem.value < 0 + //////// add to display AC input ignored + VBusItem { id: ignoreAcInput1; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn1") } + VBusItem { id: ignoreAcInput2; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn2") } + VBusItem { id: acActiveInput; bind: Utils.path(sys.vebusPrefix, "/Ac/ActiveIn/ActiveInput") } + VBusItem { id: ac1source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput1") } + VBusItem { id: ac2source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput2") } + title: qsTr("Generator") property bool autoStartSelected: false @@ -328,33 +335,55 @@ OverviewPage { visible: showAcIn values: [ - OverviewAcValuesEnhanced { connection: sys.genset }, + OverviewAcValuesEnhanced + { + connection: sys.genset + visible: sys.genset.power.valid + }, TileText { width: acInTile.width - 5 - text: qsTr ("--") - font.pixelSize: 22 + text: + { + if (ac1source.valid && ac1source.value == 2) + { + if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("\nAC In Ignored\nduring\ngenerator\nstart / stop") + else + return "" + } + else if (ac2source.valid && ac2source.value == 2) + { + if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("\nAC In Ignored\nduring\ngenerator\nstart / stop") + else + return "" + } + else + return qsTr ("\nAC In\nis not\ngenerator") + } visible: !sys.genset.power.valid } ] ////// add power bar graph - PowerGauge - { - id: acInBar - width: parent.width - height: 12 - anchors - { - top: parent.top; topMargin: 20 - horizontalCenter: parent.horizontalCenter - } + PowerGauge + { + id: acInBar + width: parent.width + height: 12 + anchors + { + top: parent.top; topMargin: 20 + horizontalCenter: parent.horizontalCenter + } connection: sys.genset useInputCurrentLimit: true - maxForwardPowerParameter: "" - maxReversePowerParameter: "" - visible: showGauges - } + maxForwardPowerParameter: "" + maxReversePowerParameter: "" + visible: showGauges && sys.genset.power.valid + } } + //////// added to show alternator in place of AC generator Tile { id: alternatorTile diff --git a/FileSets/v3.10/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.10/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.10/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.10/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewGridParallel.qml b/FileSets/v3.10/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.10/OverviewGridParallel.qml +++ b/FileSets/v3.10/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewHub.qml b/FileSets/v3.10/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.10/OverviewHub.qml +++ b/FileSets/v3.10/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewHubEnhanced.qml b/FileSets/v3.10/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.10/OverviewHubEnhanced.qml +++ b/FileSets/v3.10/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewMobileEnhanced.qml b/FileSets/v3.10/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.10/OverviewMobileEnhanced.qml +++ b/FileSets/v3.10/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewSolarCharger.qml b/FileSets/v3.10/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.10/OverviewSolarCharger.qml +++ b/FileSets/v3.10/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewSolarInverter.qml b/FileSets/v3.10/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.10/OverviewSolarInverter.qml +++ b/FileSets/v3.10/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewTankDelegate.qml b/FileSets/v3.10/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.10/OverviewTankDelegate.qml +++ b/FileSets/v3.10/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewTanks.qml b/FileSets/v3.10/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.10/OverviewTanks.qml +++ b/FileSets/v3.10/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.10/OverviewTanksTempsDigInputs.qml b/FileSets/v3.10/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.10/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.10/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.10/PageDigitalInput.qml b/FileSets/v3.10/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.10/PageDigitalInput.qml +++ b/FileSets/v3.10/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.10/PageSettingsRelay.qml b/FileSets/v3.10/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.10/PageSettingsRelay.qml +++ b/FileSets/v3.10/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.10/PowerGauge.qml b/FileSets/v3.10/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.10/PowerGauge.qml +++ b/FileSets/v3.10/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.10/Tile.qml b/FileSets/v3.10/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.10/Tile.qml +++ b/FileSets/v3.10/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.10/TileDigIn.qml b/FileSets/v3.10/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.10/TileDigIn.qml +++ b/FileSets/v3.10/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.10/TileRelay.qml b/FileSets/v3.10/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.10/TileRelay.qml +++ b/FileSets/v3.10/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.10/TileText.qml b/FileSets/v3.10/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.10/TileText.qml +++ b/FileSets/v3.10/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.10/dbus_digitalinputs.py b/FileSets/v3.10/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.10/dbus_digitalinputs.py +++ b/FileSets/v3.10/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.10/styles.css b/FileSets/v3.10/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.10/styles.css +++ b/FileSets/v3.10/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.11/Battery.qml b/FileSets/v3.11/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.11/Battery.qml +++ b/FileSets/v3.11/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.11/DetailAcInput.qml b/FileSets/v3.11/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.11/DetailAcInput.qml +++ b/FileSets/v3.11/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.11/DetailInverter.qml b/FileSets/v3.11/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.11/DetailInverter.qml +++ b/FileSets/v3.11/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.11/DetailLoadsCombined.qml b/FileSets/v3.11/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.11/DetailLoadsCombined.qml +++ b/FileSets/v3.11/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.11/DetailLoadsOnInput.qml b/FileSets/v3.11/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.11/DetailLoadsOnInput.qml +++ b/FileSets/v3.11/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.11/DetailLoadsOnOutput.qml b/FileSets/v3.11/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.11/DetailLoadsOnOutput.qml +++ b/FileSets/v3.11/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.11/HubData.qml b/FileSets/v3.11/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.11/HubData.qml +++ b/FileSets/v3.11/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.11/MbEditBox.qml b/FileSets/v3.11/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.11/MbEditBox.qml +++ b/FileSets/v3.11/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.11/MbEditBoxDateTime.qml b/FileSets/v3.11/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.11/MbEditBoxDateTime.qml +++ b/FileSets/v3.11/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.11/MbItem.qml b/FileSets/v3.11/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.11/MbItem.qml +++ b/FileSets/v3.11/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.11/MbItemDigitalInput.qml b/FileSets/v3.11/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.11/MbItemDigitalInput.qml +++ b/FileSets/v3.11/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.11/MbSpinBox.qml b/FileSets/v3.11/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.11/MbSpinBox.qml +++ b/FileSets/v3.11/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.11/MbStyle.qml b/FileSets/v3.11/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.11/MbStyle.qml +++ b/FileSets/v3.11/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.11/MbSubMenu.qml b/FileSets/v3.11/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.11/MbSubMenu.qml +++ b/FileSets/v3.11/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.11/Multi.qml b/FileSets/v3.11/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.11/Multi.qml +++ b/FileSets/v3.11/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.11/ObjectAcConnection.qml b/FileSets/v3.11/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.11/ObjectAcConnection.qml +++ b/FileSets/v3.11/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewAcValuesEnhanced.qml b/FileSets/v3.11/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.11/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.11/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewBox.qml b/FileSets/v3.11/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.11/OverviewBox.qml +++ b/FileSets/v3.11/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewConnection.qml b/FileSets/v3.11/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.11/OverviewConnection.qml +++ b/FileSets/v3.11/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewConnectionEnd.qml b/FileSets/v3.11/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.11/OverviewConnectionEnd.qml +++ b/FileSets/v3.11/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewFlowComplex.qml b/FileSets/v3.11/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.11/OverviewFlowComplex.qml +++ b/FileSets/v3.11/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewGeneratorEnhanced.qml b/FileSets/v3.11/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.11/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.11/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.11/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.11/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.11/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewGridParallel.qml b/FileSets/v3.11/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.11/OverviewGridParallel.qml +++ b/FileSets/v3.11/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewHub.qml b/FileSets/v3.11/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.11/OverviewHub.qml +++ b/FileSets/v3.11/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewHubEnhanced.qml b/FileSets/v3.11/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.11/OverviewHubEnhanced.qml +++ b/FileSets/v3.11/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewMobileEnhanced.qml b/FileSets/v3.11/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.11/OverviewMobileEnhanced.qml +++ b/FileSets/v3.11/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewSolarCharger.qml b/FileSets/v3.11/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.11/OverviewSolarCharger.qml +++ b/FileSets/v3.11/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewSolarInverter.qml b/FileSets/v3.11/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.11/OverviewSolarInverter.qml +++ b/FileSets/v3.11/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewTankDelegate.qml b/FileSets/v3.11/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.11/OverviewTankDelegate.qml +++ b/FileSets/v3.11/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewTanks.qml b/FileSets/v3.11/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.11/OverviewTanks.qml +++ b/FileSets/v3.11/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.11/OverviewTanksTempsDigInputs.qml b/FileSets/v3.11/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.11/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.11/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.11/PageDigitalInput.qml b/FileSets/v3.11/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.11/PageDigitalInput.qml +++ b/FileSets/v3.11/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.11/PageGenerator.qml b/FileSets/v3.11/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.11/PageGenerator.qml +++ b/FileSets/v3.11/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.11/PageSettingsRelay.qml b/FileSets/v3.11/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.11/PageSettingsRelay.qml +++ b/FileSets/v3.11/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.11/PowerGauge.qml b/FileSets/v3.11/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.11/PowerGauge.qml +++ b/FileSets/v3.11/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.11/Tile.qml b/FileSets/v3.11/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.11/Tile.qml +++ b/FileSets/v3.11/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.11/TileDigIn.qml b/FileSets/v3.11/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.11/TileDigIn.qml +++ b/FileSets/v3.11/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.11/TileRelay.qml b/FileSets/v3.11/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.11/TileRelay.qml +++ b/FileSets/v3.11/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.11/TileText.qml b/FileSets/v3.11/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.11/TileText.qml +++ b/FileSets/v3.11/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.11/dbus_digitalinputs.py b/FileSets/v3.11/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.11/dbus_digitalinputs.py +++ b/FileSets/v3.11/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.11/main.qml b/FileSets/v3.11/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.11/main.qml +++ b/FileSets/v3.11/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.11/styles.css b/FileSets/v3.11/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.11/styles.css +++ b/FileSets/v3.11/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.12/Battery.qml b/FileSets/v3.12/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.12/Battery.qml +++ b/FileSets/v3.12/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.12/DetailAcInput.qml b/FileSets/v3.12/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.12/DetailAcInput.qml +++ b/FileSets/v3.12/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.12/DetailInverter.qml b/FileSets/v3.12/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.12/DetailInverter.qml +++ b/FileSets/v3.12/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.12/DetailLoadsCombined.qml b/FileSets/v3.12/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.12/DetailLoadsCombined.qml +++ b/FileSets/v3.12/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.12/DetailLoadsOnInput.qml b/FileSets/v3.12/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.12/DetailLoadsOnInput.qml +++ b/FileSets/v3.12/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.12/DetailLoadsOnOutput.qml b/FileSets/v3.12/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.12/DetailLoadsOnOutput.qml +++ b/FileSets/v3.12/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.12/HubData.qml b/FileSets/v3.12/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.12/HubData.qml +++ b/FileSets/v3.12/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.12/MbEditBox.qml b/FileSets/v3.12/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.12/MbEditBox.qml +++ b/FileSets/v3.12/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.12/MbEditBoxDateTime.qml b/FileSets/v3.12/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.12/MbEditBoxDateTime.qml +++ b/FileSets/v3.12/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.12/MbItem.qml b/FileSets/v3.12/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.12/MbItem.qml +++ b/FileSets/v3.12/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.12/MbItemDigitalInput.qml b/FileSets/v3.12/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.12/MbItemDigitalInput.qml +++ b/FileSets/v3.12/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.12/MbSpinBox.qml b/FileSets/v3.12/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.12/MbSpinBox.qml +++ b/FileSets/v3.12/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.12/MbStyle.qml b/FileSets/v3.12/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.12/MbStyle.qml +++ b/FileSets/v3.12/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.12/MbSubMenu.qml b/FileSets/v3.12/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.12/MbSubMenu.qml +++ b/FileSets/v3.12/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.12/Multi.qml b/FileSets/v3.12/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.12/Multi.qml +++ b/FileSets/v3.12/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.12/ObjectAcConnection.qml b/FileSets/v3.12/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.12/ObjectAcConnection.qml +++ b/FileSets/v3.12/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewAcValuesEnhanced.qml b/FileSets/v3.12/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.12/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.12/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewBox.qml b/FileSets/v3.12/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.12/OverviewBox.qml +++ b/FileSets/v3.12/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewConnection.qml b/FileSets/v3.12/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.12/OverviewConnection.qml +++ b/FileSets/v3.12/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewConnectionEnd.qml b/FileSets/v3.12/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.12/OverviewConnectionEnd.qml +++ b/FileSets/v3.12/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewFlowComplex.qml b/FileSets/v3.12/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.12/OverviewFlowComplex.qml +++ b/FileSets/v3.12/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewGeneratorEnhanced.qml b/FileSets/v3.12/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.12/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.12/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.12/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.12/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.12/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewGridParallel.qml b/FileSets/v3.12/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.12/OverviewGridParallel.qml +++ b/FileSets/v3.12/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewHub.qml b/FileSets/v3.12/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.12/OverviewHub.qml +++ b/FileSets/v3.12/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewHubEnhanced.qml b/FileSets/v3.12/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.12/OverviewHubEnhanced.qml +++ b/FileSets/v3.12/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewMobileEnhanced.qml b/FileSets/v3.12/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.12/OverviewMobileEnhanced.qml +++ b/FileSets/v3.12/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewSolarCharger.qml b/FileSets/v3.12/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.12/OverviewSolarCharger.qml +++ b/FileSets/v3.12/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewSolarInverter.qml b/FileSets/v3.12/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.12/OverviewSolarInverter.qml +++ b/FileSets/v3.12/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewTankDelegate.qml b/FileSets/v3.12/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.12/OverviewTankDelegate.qml +++ b/FileSets/v3.12/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewTanks.qml b/FileSets/v3.12/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.12/OverviewTanks.qml +++ b/FileSets/v3.12/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.12/OverviewTanksTempsDigInputs.qml b/FileSets/v3.12/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.12/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.12/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.12/PageDigitalInput.qml b/FileSets/v3.12/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.12/PageDigitalInput.qml +++ b/FileSets/v3.12/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.12/PageGenerator.qml b/FileSets/v3.12/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.12/PageGenerator.qml +++ b/FileSets/v3.12/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.12/PageSettingsRelay.qml b/FileSets/v3.12/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.12/PageSettingsRelay.qml +++ b/FileSets/v3.12/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.12/PowerGauge.qml b/FileSets/v3.12/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.12/PowerGauge.qml +++ b/FileSets/v3.12/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.12/Tile.qml b/FileSets/v3.12/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.12/Tile.qml +++ b/FileSets/v3.12/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.12/TileDigIn.qml b/FileSets/v3.12/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.12/TileDigIn.qml +++ b/FileSets/v3.12/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.12/TileRelay.qml b/FileSets/v3.12/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.12/TileRelay.qml +++ b/FileSets/v3.12/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.12/TileText.qml b/FileSets/v3.12/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.12/TileText.qml +++ b/FileSets/v3.12/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.12/dbus_digitalinputs.py b/FileSets/v3.12/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.12/dbus_digitalinputs.py +++ b/FileSets/v3.12/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.12/main.qml b/FileSets/v3.12/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.12/main.qml +++ b/FileSets/v3.12/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.12/styles.css b/FileSets/v3.12/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.12/styles.css +++ b/FileSets/v3.12/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.13/Battery.qml b/FileSets/v3.13/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.13/Battery.qml +++ b/FileSets/v3.13/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.13/DetailAcInput.qml b/FileSets/v3.13/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.13/DetailAcInput.qml +++ b/FileSets/v3.13/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.13/DetailInverter.qml b/FileSets/v3.13/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.13/DetailInverter.qml +++ b/FileSets/v3.13/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.13/DetailLoadsCombined.qml b/FileSets/v3.13/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.13/DetailLoadsCombined.qml +++ b/FileSets/v3.13/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.13/DetailLoadsOnInput.qml b/FileSets/v3.13/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.13/DetailLoadsOnInput.qml +++ b/FileSets/v3.13/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.13/DetailLoadsOnOutput.qml b/FileSets/v3.13/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.13/DetailLoadsOnOutput.qml +++ b/FileSets/v3.13/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.13/HubData.qml b/FileSets/v3.13/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.13/HubData.qml +++ b/FileSets/v3.13/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.13/MbEditBox.qml b/FileSets/v3.13/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.13/MbEditBox.qml +++ b/FileSets/v3.13/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.13/MbEditBoxDateTime.qml b/FileSets/v3.13/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.13/MbEditBoxDateTime.qml +++ b/FileSets/v3.13/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.13/MbItem.qml b/FileSets/v3.13/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.13/MbItem.qml +++ b/FileSets/v3.13/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.13/MbItemDigitalInput.qml b/FileSets/v3.13/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.13/MbItemDigitalInput.qml +++ b/FileSets/v3.13/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.13/MbSpinBox.qml b/FileSets/v3.13/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.13/MbSpinBox.qml +++ b/FileSets/v3.13/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.13/MbStyle.qml b/FileSets/v3.13/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.13/MbStyle.qml +++ b/FileSets/v3.13/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.13/MbSubMenu.qml b/FileSets/v3.13/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.13/MbSubMenu.qml +++ b/FileSets/v3.13/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.13/Multi.qml b/FileSets/v3.13/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.13/Multi.qml +++ b/FileSets/v3.13/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.13/ObjectAcConnection.qml b/FileSets/v3.13/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.13/ObjectAcConnection.qml +++ b/FileSets/v3.13/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewAcValuesEnhanced.qml b/FileSets/v3.13/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.13/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.13/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewBox.qml b/FileSets/v3.13/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.13/OverviewBox.qml +++ b/FileSets/v3.13/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewConnection.qml b/FileSets/v3.13/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.13/OverviewConnection.qml +++ b/FileSets/v3.13/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewConnectionEnd.qml b/FileSets/v3.13/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.13/OverviewConnectionEnd.qml +++ b/FileSets/v3.13/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewFlowComplex.qml b/FileSets/v3.13/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.13/OverviewFlowComplex.qml +++ b/FileSets/v3.13/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewGeneratorEnhanced.qml b/FileSets/v3.13/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.13/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.13/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.13/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.13/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.13/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewGridParallel.qml b/FileSets/v3.13/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.13/OverviewGridParallel.qml +++ b/FileSets/v3.13/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewHub.qml b/FileSets/v3.13/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.13/OverviewHub.qml +++ b/FileSets/v3.13/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewHubEnhanced.qml b/FileSets/v3.13/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.13/OverviewHubEnhanced.qml +++ b/FileSets/v3.13/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewMobileEnhanced.qml b/FileSets/v3.13/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.13/OverviewMobileEnhanced.qml +++ b/FileSets/v3.13/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewSolarCharger.qml b/FileSets/v3.13/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.13/OverviewSolarCharger.qml +++ b/FileSets/v3.13/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewSolarInverter.qml b/FileSets/v3.13/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.13/OverviewSolarInverter.qml +++ b/FileSets/v3.13/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewTankDelegate.qml b/FileSets/v3.13/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.13/OverviewTankDelegate.qml +++ b/FileSets/v3.13/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewTanks.qml b/FileSets/v3.13/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.13/OverviewTanks.qml +++ b/FileSets/v3.13/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.13/OverviewTanksTempsDigInputs.qml b/FileSets/v3.13/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.13/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.13/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.13/PageDigitalInput.qml b/FileSets/v3.13/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.13/PageDigitalInput.qml +++ b/FileSets/v3.13/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.13/PageGenerator.qml b/FileSets/v3.13/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.13/PageGenerator.qml +++ b/FileSets/v3.13/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.13/PageSettingsRelay.qml b/FileSets/v3.13/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.13/PageSettingsRelay.qml +++ b/FileSets/v3.13/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.13/PowerGauge.qml b/FileSets/v3.13/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.13/PowerGauge.qml +++ b/FileSets/v3.13/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.13/Tile.qml b/FileSets/v3.13/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.13/Tile.qml +++ b/FileSets/v3.13/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.13/TileDigIn.qml b/FileSets/v3.13/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.13/TileDigIn.qml +++ b/FileSets/v3.13/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.13/TileRelay.qml b/FileSets/v3.13/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.13/TileRelay.qml +++ b/FileSets/v3.13/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.13/TileText.qml b/FileSets/v3.13/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.13/TileText.qml +++ b/FileSets/v3.13/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.13/dbus_digitalinputs.py b/FileSets/v3.13/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.13/dbus_digitalinputs.py +++ b/FileSets/v3.13/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.13/main.qml b/FileSets/v3.13/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.13/main.qml +++ b/FileSets/v3.13/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.13/styles.css b/FileSets/v3.13/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.13/styles.css +++ b/FileSets/v3.13/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.14/Battery.qml b/FileSets/v3.14/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.14/Battery.qml +++ b/FileSets/v3.14/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.14/DetailAcInput.qml b/FileSets/v3.14/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.14/DetailAcInput.qml +++ b/FileSets/v3.14/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.14/DetailInverter.qml b/FileSets/v3.14/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.14/DetailInverter.qml +++ b/FileSets/v3.14/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.14/DetailLoadsCombined.qml b/FileSets/v3.14/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.14/DetailLoadsCombined.qml +++ b/FileSets/v3.14/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.14/DetailLoadsOnInput.qml b/FileSets/v3.14/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.14/DetailLoadsOnInput.qml +++ b/FileSets/v3.14/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.14/DetailLoadsOnOutput.qml b/FileSets/v3.14/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.14/DetailLoadsOnOutput.qml +++ b/FileSets/v3.14/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.14/HubData.qml b/FileSets/v3.14/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.14/HubData.qml +++ b/FileSets/v3.14/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.14/MbEditBox.qml b/FileSets/v3.14/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.14/MbEditBox.qml +++ b/FileSets/v3.14/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.14/MbEditBoxDateTime.qml b/FileSets/v3.14/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.14/MbEditBoxDateTime.qml +++ b/FileSets/v3.14/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.14/MbItem.qml b/FileSets/v3.14/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.14/MbItem.qml +++ b/FileSets/v3.14/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.14/MbItemDigitalInput.qml b/FileSets/v3.14/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.14/MbItemDigitalInput.qml +++ b/FileSets/v3.14/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.14/MbSpinBox.qml b/FileSets/v3.14/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.14/MbSpinBox.qml +++ b/FileSets/v3.14/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.14/MbStyle.qml b/FileSets/v3.14/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.14/MbStyle.qml +++ b/FileSets/v3.14/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.14/MbSubMenu.qml b/FileSets/v3.14/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.14/MbSubMenu.qml +++ b/FileSets/v3.14/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.14/Multi.qml b/FileSets/v3.14/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.14/Multi.qml +++ b/FileSets/v3.14/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.14/ObjectAcConnection.qml b/FileSets/v3.14/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.14/ObjectAcConnection.qml +++ b/FileSets/v3.14/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewAcValuesEnhanced.qml b/FileSets/v3.14/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.14/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.14/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewBox.qml b/FileSets/v3.14/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.14/OverviewBox.qml +++ b/FileSets/v3.14/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewConnection.qml b/FileSets/v3.14/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.14/OverviewConnection.qml +++ b/FileSets/v3.14/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewConnectionEnd.qml b/FileSets/v3.14/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.14/OverviewConnectionEnd.qml +++ b/FileSets/v3.14/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewFlowComplex.qml b/FileSets/v3.14/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.14/OverviewFlowComplex.qml +++ b/FileSets/v3.14/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewGeneratorEnhanced.qml b/FileSets/v3.14/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.14/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.14/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.14/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.14/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.14/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewGridParallel.qml b/FileSets/v3.14/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.14/OverviewGridParallel.qml +++ b/FileSets/v3.14/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewHub.qml b/FileSets/v3.14/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.14/OverviewHub.qml +++ b/FileSets/v3.14/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewHubEnhanced.qml b/FileSets/v3.14/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.14/OverviewHubEnhanced.qml +++ b/FileSets/v3.14/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewMobileEnhanced.qml b/FileSets/v3.14/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.14/OverviewMobileEnhanced.qml +++ b/FileSets/v3.14/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewSolarCharger.qml b/FileSets/v3.14/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.14/OverviewSolarCharger.qml +++ b/FileSets/v3.14/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewSolarInverter.qml b/FileSets/v3.14/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.14/OverviewSolarInverter.qml +++ b/FileSets/v3.14/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewTankDelegate.qml b/FileSets/v3.14/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.14/OverviewTankDelegate.qml +++ b/FileSets/v3.14/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewTanks.qml b/FileSets/v3.14/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.14/OverviewTanks.qml +++ b/FileSets/v3.14/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.14/OverviewTanksTempsDigInputs.qml b/FileSets/v3.14/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.14/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.14/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.14/PageDigitalInput.qml b/FileSets/v3.14/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.14/PageDigitalInput.qml +++ b/FileSets/v3.14/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.14/PageGenerator.qml b/FileSets/v3.14/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.14/PageGenerator.qml +++ b/FileSets/v3.14/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.14/PageSettingsRelay.qml b/FileSets/v3.14/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.14/PageSettingsRelay.qml +++ b/FileSets/v3.14/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.14/PowerGauge.qml b/FileSets/v3.14/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.14/PowerGauge.qml +++ b/FileSets/v3.14/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.14/Tile.qml b/FileSets/v3.14/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.14/Tile.qml +++ b/FileSets/v3.14/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.14/TileDigIn.qml b/FileSets/v3.14/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.14/TileDigIn.qml +++ b/FileSets/v3.14/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.14/TileRelay.qml b/FileSets/v3.14/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.14/TileRelay.qml +++ b/FileSets/v3.14/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.14/TileText.qml b/FileSets/v3.14/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.14/TileText.qml +++ b/FileSets/v3.14/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.14/dbus_digitalinputs.py b/FileSets/v3.14/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.14/dbus_digitalinputs.py +++ b/FileSets/v3.14/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.14/main.qml b/FileSets/v3.14/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.14/main.qml +++ b/FileSets/v3.14/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.14/styles.css b/FileSets/v3.14/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.14/styles.css +++ b/FileSets/v3.14/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~26/Battery.qml b/FileSets/v3.20~26/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~26/Battery.qml +++ b/FileSets/v3.20~26/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/DetailAcInput.qml b/FileSets/v3.20~26/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~26/DetailAcInput.qml +++ b/FileSets/v3.20~26/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/DetailInverter.qml b/FileSets/v3.20~26/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~26/DetailInverter.qml +++ b/FileSets/v3.20~26/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/DetailLoadsCombined.qml b/FileSets/v3.20~26/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~26/DetailLoadsCombined.qml +++ b/FileSets/v3.20~26/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/DetailLoadsOnInput.qml b/FileSets/v3.20~26/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~26/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~26/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/DetailLoadsOnOutput.qml b/FileSets/v3.20~26/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~26/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~26/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/HubData.qml b/FileSets/v3.20~26/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~26/HubData.qml +++ b/FileSets/v3.20~26/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/MbEditBox.qml b/FileSets/v3.20~26/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~26/MbEditBox.qml +++ b/FileSets/v3.20~26/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/MbEditBoxDateTime.qml b/FileSets/v3.20~26/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~26/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~26/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/MbItem.qml b/FileSets/v3.20~26/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~26/MbItem.qml +++ b/FileSets/v3.20~26/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/MbItemDigitalInput.qml b/FileSets/v3.20~26/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~26/MbItemDigitalInput.qml +++ b/FileSets/v3.20~26/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/MbSpinBox.qml b/FileSets/v3.20~26/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~26/MbSpinBox.qml +++ b/FileSets/v3.20~26/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/MbStyle.qml b/FileSets/v3.20~26/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~26/MbStyle.qml +++ b/FileSets/v3.20~26/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/MbSubMenu.qml b/FileSets/v3.20~26/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~26/MbSubMenu.qml +++ b/FileSets/v3.20~26/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/Multi.qml b/FileSets/v3.20~26/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~26/Multi.qml +++ b/FileSets/v3.20~26/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/ObjectAcConnection.qml b/FileSets/v3.20~26/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~26/ObjectAcConnection.qml +++ b/FileSets/v3.20~26/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~26/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~26/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~26/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewBox.qml b/FileSets/v3.20~26/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~26/OverviewBox.qml +++ b/FileSets/v3.20~26/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewConnection.qml b/FileSets/v3.20~26/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~26/OverviewConnection.qml +++ b/FileSets/v3.20~26/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewConnectionEnd.qml b/FileSets/v3.20~26/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~26/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~26/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewFlowComplex.qml b/FileSets/v3.20~26/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~26/OverviewFlowComplex.qml +++ b/FileSets/v3.20~26/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~26/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~26/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~26/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~26/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~26/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~26/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewGridParallel.qml b/FileSets/v3.20~26/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~26/OverviewGridParallel.qml +++ b/FileSets/v3.20~26/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewHub.qml b/FileSets/v3.20~26/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~26/OverviewHub.qml +++ b/FileSets/v3.20~26/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewHubEnhanced.qml b/FileSets/v3.20~26/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~26/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~26/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewMobileEnhanced.qml b/FileSets/v3.20~26/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~26/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~26/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewSolarCharger.qml b/FileSets/v3.20~26/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~26/OverviewSolarCharger.qml +++ b/FileSets/v3.20~26/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewSolarInverter.qml b/FileSets/v3.20~26/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~26/OverviewSolarInverter.qml +++ b/FileSets/v3.20~26/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewTankDelegate.qml b/FileSets/v3.20~26/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~26/OverviewTankDelegate.qml +++ b/FileSets/v3.20~26/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewTanks.qml b/FileSets/v3.20~26/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~26/OverviewTanks.qml +++ b/FileSets/v3.20~26/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~26/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~26/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~26/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/PageDigitalInput.qml b/FileSets/v3.20~26/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~26/PageDigitalInput.qml +++ b/FileSets/v3.20~26/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/PageGenerator.qml b/FileSets/v3.20~26/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~26/PageGenerator.qml +++ b/FileSets/v3.20~26/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/PageSettingsDisplay.qml b/FileSets/v3.20~26/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~26/PageSettingsDisplay.qml +++ b/FileSets/v3.20~26/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/PageSettingsRelay.qml b/FileSets/v3.20~26/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~26/PageSettingsRelay.qml +++ b/FileSets/v3.20~26/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/PowerGauge.qml b/FileSets/v3.20~26/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~26/PowerGauge.qml +++ b/FileSets/v3.20~26/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/Tile.qml b/FileSets/v3.20~26/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~26/Tile.qml +++ b/FileSets/v3.20~26/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/TileDigIn.qml b/FileSets/v3.20~26/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~26/TileDigIn.qml +++ b/FileSets/v3.20~26/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/TileRelay.qml b/FileSets/v3.20~26/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~26/TileRelay.qml +++ b/FileSets/v3.20~26/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/TileText.qml b/FileSets/v3.20~26/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~26/TileText.qml +++ b/FileSets/v3.20~26/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/dbus_digitalinputs.py b/FileSets/v3.20~26/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~26/dbus_digitalinputs.py +++ b/FileSets/v3.20~26/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~26/main.qml b/FileSets/v3.20~26/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~26/main.qml +++ b/FileSets/v3.20~26/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~26/styles.css b/FileSets/v3.20~26/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~26/styles.css +++ b/FileSets/v3.20~26/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~29/Battery.qml b/FileSets/v3.20~29/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~29/Battery.qml +++ b/FileSets/v3.20~29/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/DetailAcInput.qml b/FileSets/v3.20~29/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~29/DetailAcInput.qml +++ b/FileSets/v3.20~29/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/DetailInverter.qml b/FileSets/v3.20~29/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~29/DetailInverter.qml +++ b/FileSets/v3.20~29/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/DetailLoadsCombined.qml b/FileSets/v3.20~29/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~29/DetailLoadsCombined.qml +++ b/FileSets/v3.20~29/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/DetailLoadsOnInput.qml b/FileSets/v3.20~29/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~29/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~29/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/DetailLoadsOnOutput.qml b/FileSets/v3.20~29/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~29/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~29/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/HubData.qml b/FileSets/v3.20~29/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~29/HubData.qml +++ b/FileSets/v3.20~29/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/MbEditBox.qml b/FileSets/v3.20~29/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~29/MbEditBox.qml +++ b/FileSets/v3.20~29/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/MbEditBoxDateTime.qml b/FileSets/v3.20~29/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~29/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~29/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/MbItem.qml b/FileSets/v3.20~29/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~29/MbItem.qml +++ b/FileSets/v3.20~29/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/MbItemDigitalInput.qml b/FileSets/v3.20~29/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~29/MbItemDigitalInput.qml +++ b/FileSets/v3.20~29/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/MbSpinBox.qml b/FileSets/v3.20~29/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~29/MbSpinBox.qml +++ b/FileSets/v3.20~29/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/MbStyle.qml b/FileSets/v3.20~29/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~29/MbStyle.qml +++ b/FileSets/v3.20~29/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/MbSubMenu.qml b/FileSets/v3.20~29/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~29/MbSubMenu.qml +++ b/FileSets/v3.20~29/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/Multi.qml b/FileSets/v3.20~29/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~29/Multi.qml +++ b/FileSets/v3.20~29/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/ObjectAcConnection.qml b/FileSets/v3.20~29/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~29/ObjectAcConnection.qml +++ b/FileSets/v3.20~29/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~29/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~29/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~29/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewBox.qml b/FileSets/v3.20~29/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~29/OverviewBox.qml +++ b/FileSets/v3.20~29/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewConnection.qml b/FileSets/v3.20~29/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~29/OverviewConnection.qml +++ b/FileSets/v3.20~29/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewConnectionEnd.qml b/FileSets/v3.20~29/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~29/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~29/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewFlowComplex.qml b/FileSets/v3.20~29/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~29/OverviewFlowComplex.qml +++ b/FileSets/v3.20~29/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~29/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~29/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~29/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~29/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~29/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~29/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewGridParallel.qml b/FileSets/v3.20~29/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~29/OverviewGridParallel.qml +++ b/FileSets/v3.20~29/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewHub.qml b/FileSets/v3.20~29/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~29/OverviewHub.qml +++ b/FileSets/v3.20~29/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewHubEnhanced.qml b/FileSets/v3.20~29/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~29/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~29/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewMobileEnhanced.qml b/FileSets/v3.20~29/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~29/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~29/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewSolarCharger.qml b/FileSets/v3.20~29/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~29/OverviewSolarCharger.qml +++ b/FileSets/v3.20~29/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewSolarInverter.qml b/FileSets/v3.20~29/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~29/OverviewSolarInverter.qml +++ b/FileSets/v3.20~29/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewTankDelegate.qml b/FileSets/v3.20~29/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~29/OverviewTankDelegate.qml +++ b/FileSets/v3.20~29/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewTanks.qml b/FileSets/v3.20~29/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~29/OverviewTanks.qml +++ b/FileSets/v3.20~29/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~29/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~29/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~29/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/PageDigitalInput.qml b/FileSets/v3.20~29/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~29/PageDigitalInput.qml +++ b/FileSets/v3.20~29/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/PageGenerator.qml b/FileSets/v3.20~29/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~29/PageGenerator.qml +++ b/FileSets/v3.20~29/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/PageSettingsDisplay.qml b/FileSets/v3.20~29/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~29/PageSettingsDisplay.qml +++ b/FileSets/v3.20~29/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/PageSettingsRelay.qml b/FileSets/v3.20~29/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~29/PageSettingsRelay.qml +++ b/FileSets/v3.20~29/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/PowerGauge.qml b/FileSets/v3.20~29/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~29/PowerGauge.qml +++ b/FileSets/v3.20~29/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/Tile.qml b/FileSets/v3.20~29/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~29/Tile.qml +++ b/FileSets/v3.20~29/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/TileDigIn.qml b/FileSets/v3.20~29/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~29/TileDigIn.qml +++ b/FileSets/v3.20~29/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/TileRelay.qml b/FileSets/v3.20~29/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~29/TileRelay.qml +++ b/FileSets/v3.20~29/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/TileText.qml b/FileSets/v3.20~29/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~29/TileText.qml +++ b/FileSets/v3.20~29/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/dbus_digitalinputs.py b/FileSets/v3.20~29/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~29/dbus_digitalinputs.py +++ b/FileSets/v3.20~29/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~29/main.qml b/FileSets/v3.20~29/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~29/main.qml +++ b/FileSets/v3.20~29/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~29/styles.css b/FileSets/v3.20~29/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~29/styles.css +++ b/FileSets/v3.20~29/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~30/Battery.qml b/FileSets/v3.20~30/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~30/Battery.qml +++ b/FileSets/v3.20~30/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/DetailAcInput.qml b/FileSets/v3.20~30/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~30/DetailAcInput.qml +++ b/FileSets/v3.20~30/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/DetailInverter.qml b/FileSets/v3.20~30/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~30/DetailInverter.qml +++ b/FileSets/v3.20~30/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/DetailLoadsCombined.qml b/FileSets/v3.20~30/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~30/DetailLoadsCombined.qml +++ b/FileSets/v3.20~30/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/DetailLoadsOnInput.qml b/FileSets/v3.20~30/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~30/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~30/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/DetailLoadsOnOutput.qml b/FileSets/v3.20~30/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~30/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~30/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/HubData.qml b/FileSets/v3.20~30/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~30/HubData.qml +++ b/FileSets/v3.20~30/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/MbEditBox.qml b/FileSets/v3.20~30/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~30/MbEditBox.qml +++ b/FileSets/v3.20~30/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/MbEditBoxDateTime.qml b/FileSets/v3.20~30/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~30/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~30/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/MbItem.qml b/FileSets/v3.20~30/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~30/MbItem.qml +++ b/FileSets/v3.20~30/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/MbItemDigitalInput.qml b/FileSets/v3.20~30/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~30/MbItemDigitalInput.qml +++ b/FileSets/v3.20~30/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/MbSpinBox.qml b/FileSets/v3.20~30/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~30/MbSpinBox.qml +++ b/FileSets/v3.20~30/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/MbStyle.qml b/FileSets/v3.20~30/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~30/MbStyle.qml +++ b/FileSets/v3.20~30/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/MbSubMenu.qml b/FileSets/v3.20~30/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~30/MbSubMenu.qml +++ b/FileSets/v3.20~30/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/Multi.qml b/FileSets/v3.20~30/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~30/Multi.qml +++ b/FileSets/v3.20~30/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/ObjectAcConnection.qml b/FileSets/v3.20~30/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~30/ObjectAcConnection.qml +++ b/FileSets/v3.20~30/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~30/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~30/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~30/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewBox.qml b/FileSets/v3.20~30/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~30/OverviewBox.qml +++ b/FileSets/v3.20~30/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewConnection.qml b/FileSets/v3.20~30/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~30/OverviewConnection.qml +++ b/FileSets/v3.20~30/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewConnectionEnd.qml b/FileSets/v3.20~30/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~30/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~30/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewFlowComplex.qml b/FileSets/v3.20~30/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~30/OverviewFlowComplex.qml +++ b/FileSets/v3.20~30/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~30/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~30/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~30/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~30/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~30/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~30/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewGridParallel.qml b/FileSets/v3.20~30/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~30/OverviewGridParallel.qml +++ b/FileSets/v3.20~30/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewHub.qml b/FileSets/v3.20~30/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~30/OverviewHub.qml +++ b/FileSets/v3.20~30/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewHubEnhanced.qml b/FileSets/v3.20~30/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~30/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~30/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewMobileEnhanced.qml b/FileSets/v3.20~30/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~30/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~30/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewSolarCharger.qml b/FileSets/v3.20~30/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~30/OverviewSolarCharger.qml +++ b/FileSets/v3.20~30/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewSolarInverter.qml b/FileSets/v3.20~30/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~30/OverviewSolarInverter.qml +++ b/FileSets/v3.20~30/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewTankDelegate.qml b/FileSets/v3.20~30/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~30/OverviewTankDelegate.qml +++ b/FileSets/v3.20~30/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewTanks.qml b/FileSets/v3.20~30/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~30/OverviewTanks.qml +++ b/FileSets/v3.20~30/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~30/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~30/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~30/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/PageDigitalInput.qml b/FileSets/v3.20~30/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~30/PageDigitalInput.qml +++ b/FileSets/v3.20~30/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/PageGenerator.qml b/FileSets/v3.20~30/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~30/PageGenerator.qml +++ b/FileSets/v3.20~30/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/PageSettingsDisplay.qml b/FileSets/v3.20~30/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~30/PageSettingsDisplay.qml +++ b/FileSets/v3.20~30/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/PageSettingsRelay.qml b/FileSets/v3.20~30/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~30/PageSettingsRelay.qml +++ b/FileSets/v3.20~30/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/PowerGauge.qml b/FileSets/v3.20~30/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~30/PowerGauge.qml +++ b/FileSets/v3.20~30/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/Tile.qml b/FileSets/v3.20~30/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~30/Tile.qml +++ b/FileSets/v3.20~30/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/TileDigIn.qml b/FileSets/v3.20~30/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~30/TileDigIn.qml +++ b/FileSets/v3.20~30/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/TileRelay.qml b/FileSets/v3.20~30/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~30/TileRelay.qml +++ b/FileSets/v3.20~30/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/TileText.qml b/FileSets/v3.20~30/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~30/TileText.qml +++ b/FileSets/v3.20~30/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/dbus_digitalinputs.py b/FileSets/v3.20~30/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~30/dbus_digitalinputs.py +++ b/FileSets/v3.20~30/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~30/main.qml b/FileSets/v3.20~30/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~30/main.qml +++ b/FileSets/v3.20~30/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~30/styles.css b/FileSets/v3.20~30/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~30/styles.css +++ b/FileSets/v3.20~30/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~33/Battery.qml b/FileSets/v3.20~33/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~33/Battery.qml +++ b/FileSets/v3.20~33/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/DetailAcInput.qml b/FileSets/v3.20~33/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~33/DetailAcInput.qml +++ b/FileSets/v3.20~33/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/DetailInverter.qml b/FileSets/v3.20~33/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~33/DetailInverter.qml +++ b/FileSets/v3.20~33/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/DetailLoadsCombined.qml b/FileSets/v3.20~33/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~33/DetailLoadsCombined.qml +++ b/FileSets/v3.20~33/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/DetailLoadsOnInput.qml b/FileSets/v3.20~33/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~33/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~33/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/DetailLoadsOnOutput.qml b/FileSets/v3.20~33/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~33/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~33/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/HubData.qml b/FileSets/v3.20~33/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~33/HubData.qml +++ b/FileSets/v3.20~33/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/MbEditBox.qml b/FileSets/v3.20~33/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~33/MbEditBox.qml +++ b/FileSets/v3.20~33/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/MbEditBoxDateTime.qml b/FileSets/v3.20~33/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~33/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~33/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/MbItem.qml b/FileSets/v3.20~33/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~33/MbItem.qml +++ b/FileSets/v3.20~33/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/MbItemDigitalInput.qml b/FileSets/v3.20~33/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~33/MbItemDigitalInput.qml +++ b/FileSets/v3.20~33/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/MbSpinBox.qml b/FileSets/v3.20~33/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~33/MbSpinBox.qml +++ b/FileSets/v3.20~33/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/MbStyle.qml b/FileSets/v3.20~33/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~33/MbStyle.qml +++ b/FileSets/v3.20~33/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/MbSubMenu.qml b/FileSets/v3.20~33/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~33/MbSubMenu.qml +++ b/FileSets/v3.20~33/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/Multi.qml b/FileSets/v3.20~33/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~33/Multi.qml +++ b/FileSets/v3.20~33/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/ObjectAcConnection.qml b/FileSets/v3.20~33/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~33/ObjectAcConnection.qml +++ b/FileSets/v3.20~33/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~33/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~33/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~33/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewBox.qml b/FileSets/v3.20~33/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~33/OverviewBox.qml +++ b/FileSets/v3.20~33/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewConnection.qml b/FileSets/v3.20~33/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~33/OverviewConnection.qml +++ b/FileSets/v3.20~33/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewConnectionEnd.qml b/FileSets/v3.20~33/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~33/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~33/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewFlowComplex.qml b/FileSets/v3.20~33/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~33/OverviewFlowComplex.qml +++ b/FileSets/v3.20~33/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~33/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~33/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~33/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~33/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~33/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~33/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewGridParallel.qml b/FileSets/v3.20~33/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~33/OverviewGridParallel.qml +++ b/FileSets/v3.20~33/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewHub.qml b/FileSets/v3.20~33/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~33/OverviewHub.qml +++ b/FileSets/v3.20~33/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewHubEnhanced.qml b/FileSets/v3.20~33/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~33/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~33/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewMobileEnhanced.qml b/FileSets/v3.20~33/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~33/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~33/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewSolarCharger.qml b/FileSets/v3.20~33/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~33/OverviewSolarCharger.qml +++ b/FileSets/v3.20~33/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewSolarInverter.qml b/FileSets/v3.20~33/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~33/OverviewSolarInverter.qml +++ b/FileSets/v3.20~33/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewTankDelegate.qml b/FileSets/v3.20~33/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~33/OverviewTankDelegate.qml +++ b/FileSets/v3.20~33/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewTanks.qml b/FileSets/v3.20~33/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~33/OverviewTanks.qml +++ b/FileSets/v3.20~33/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~33/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~33/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~33/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/PageDigitalInput.qml b/FileSets/v3.20~33/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~33/PageDigitalInput.qml +++ b/FileSets/v3.20~33/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/PageGenerator.qml b/FileSets/v3.20~33/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~33/PageGenerator.qml +++ b/FileSets/v3.20~33/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/PageSettingsDisplay.qml b/FileSets/v3.20~33/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~33/PageSettingsDisplay.qml +++ b/FileSets/v3.20~33/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/PageSettingsRelay.qml b/FileSets/v3.20~33/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~33/PageSettingsRelay.qml +++ b/FileSets/v3.20~33/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/PowerGauge.qml b/FileSets/v3.20~33/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~33/PowerGauge.qml +++ b/FileSets/v3.20~33/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/Tile.qml b/FileSets/v3.20~33/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~33/Tile.qml +++ b/FileSets/v3.20~33/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/TileDigIn.qml b/FileSets/v3.20~33/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~33/TileDigIn.qml +++ b/FileSets/v3.20~33/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/TileRelay.qml b/FileSets/v3.20~33/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~33/TileRelay.qml +++ b/FileSets/v3.20~33/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/TileText.qml b/FileSets/v3.20~33/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~33/TileText.qml +++ b/FileSets/v3.20~33/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/dbus_digitalinputs.py b/FileSets/v3.20~33/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~33/dbus_digitalinputs.py +++ b/FileSets/v3.20~33/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~33/main.qml b/FileSets/v3.20~33/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~33/main.qml +++ b/FileSets/v3.20~33/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~33/styles.css b/FileSets/v3.20~33/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~33/styles.css +++ b/FileSets/v3.20~33/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~35/Battery.qml b/FileSets/v3.20~35/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~35/Battery.qml +++ b/FileSets/v3.20~35/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/DetailAcInput.qml b/FileSets/v3.20~35/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~35/DetailAcInput.qml +++ b/FileSets/v3.20~35/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/DetailInverter.qml b/FileSets/v3.20~35/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~35/DetailInverter.qml +++ b/FileSets/v3.20~35/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/DetailLoadsCombined.qml b/FileSets/v3.20~35/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~35/DetailLoadsCombined.qml +++ b/FileSets/v3.20~35/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/DetailLoadsOnInput.qml b/FileSets/v3.20~35/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~35/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~35/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/DetailLoadsOnOutput.qml b/FileSets/v3.20~35/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~35/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~35/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/HubData.qml b/FileSets/v3.20~35/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~35/HubData.qml +++ b/FileSets/v3.20~35/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/MbEditBox.qml b/FileSets/v3.20~35/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~35/MbEditBox.qml +++ b/FileSets/v3.20~35/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/MbEditBoxDateTime.qml b/FileSets/v3.20~35/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~35/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~35/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/MbItem.qml b/FileSets/v3.20~35/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~35/MbItem.qml +++ b/FileSets/v3.20~35/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/MbItemDigitalInput.qml b/FileSets/v3.20~35/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~35/MbItemDigitalInput.qml +++ b/FileSets/v3.20~35/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/MbSpinBox.qml b/FileSets/v3.20~35/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~35/MbSpinBox.qml +++ b/FileSets/v3.20~35/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/MbStyle.qml b/FileSets/v3.20~35/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~35/MbStyle.qml +++ b/FileSets/v3.20~35/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/MbSubMenu.qml b/FileSets/v3.20~35/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~35/MbSubMenu.qml +++ b/FileSets/v3.20~35/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/Multi.qml b/FileSets/v3.20~35/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~35/Multi.qml +++ b/FileSets/v3.20~35/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/ObjectAcConnection.qml b/FileSets/v3.20~35/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~35/ObjectAcConnection.qml +++ b/FileSets/v3.20~35/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~35/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~35/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~35/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewBox.qml b/FileSets/v3.20~35/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~35/OverviewBox.qml +++ b/FileSets/v3.20~35/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewConnection.qml b/FileSets/v3.20~35/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~35/OverviewConnection.qml +++ b/FileSets/v3.20~35/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewConnectionEnd.qml b/FileSets/v3.20~35/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~35/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~35/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewFlowComplex.qml b/FileSets/v3.20~35/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~35/OverviewFlowComplex.qml +++ b/FileSets/v3.20~35/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~35/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~35/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~35/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~35/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~35/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~35/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewGridParallel.qml b/FileSets/v3.20~35/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~35/OverviewGridParallel.qml +++ b/FileSets/v3.20~35/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewHub.qml b/FileSets/v3.20~35/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~35/OverviewHub.qml +++ b/FileSets/v3.20~35/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewHubEnhanced.qml b/FileSets/v3.20~35/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~35/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~35/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewMobileEnhanced.qml b/FileSets/v3.20~35/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~35/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~35/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewSolarCharger.qml b/FileSets/v3.20~35/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~35/OverviewSolarCharger.qml +++ b/FileSets/v3.20~35/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewSolarInverter.qml b/FileSets/v3.20~35/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~35/OverviewSolarInverter.qml +++ b/FileSets/v3.20~35/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewTankDelegate.qml b/FileSets/v3.20~35/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~35/OverviewTankDelegate.qml +++ b/FileSets/v3.20~35/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewTanks.qml b/FileSets/v3.20~35/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~35/OverviewTanks.qml +++ b/FileSets/v3.20~35/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~35/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~35/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~35/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/PageDigitalInput.qml b/FileSets/v3.20~35/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~35/PageDigitalInput.qml +++ b/FileSets/v3.20~35/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/PageGenerator.qml b/FileSets/v3.20~35/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~35/PageGenerator.qml +++ b/FileSets/v3.20~35/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/PageMain.qml b/FileSets/v3.20~35/PageMain.qml index 6bcbcd1a..a2458566 120000 --- a/FileSets/v3.20~35/PageMain.qml +++ b/FileSets/v3.20~35/PageMain.qml @@ -1 +1 @@ -../v3.20~45/PageMain.qml \ No newline at end of file +../v3.20~49/PageMain.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/PageSettingsDisplay.qml b/FileSets/v3.20~35/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~35/PageSettingsDisplay.qml +++ b/FileSets/v3.20~35/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/PageSettingsRelay.qml b/FileSets/v3.20~35/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~35/PageSettingsRelay.qml +++ b/FileSets/v3.20~35/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/PowerGauge.qml b/FileSets/v3.20~35/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~35/PowerGauge.qml +++ b/FileSets/v3.20~35/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/Tile.qml b/FileSets/v3.20~35/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~35/Tile.qml +++ b/FileSets/v3.20~35/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/TileDigIn.qml b/FileSets/v3.20~35/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~35/TileDigIn.qml +++ b/FileSets/v3.20~35/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/TileRelay.qml b/FileSets/v3.20~35/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~35/TileRelay.qml +++ b/FileSets/v3.20~35/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/TileText.qml b/FileSets/v3.20~35/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~35/TileText.qml +++ b/FileSets/v3.20~35/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/attributes.csv b/FileSets/v3.20~35/attributes.csv index 60c4d4d5..cfa16f00 120000 --- a/FileSets/v3.20~35/attributes.csv +++ b/FileSets/v3.20~35/attributes.csv @@ -1 +1 @@ -../v3.30~1/attributes.csv \ No newline at end of file +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~35/dbus_digitalinputs.py b/FileSets/v3.20~35/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~35/dbus_digitalinputs.py +++ b/FileSets/v3.20~35/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~35/main.qml b/FileSets/v3.20~35/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~35/main.qml +++ b/FileSets/v3.20~35/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~35/styles.css b/FileSets/v3.20~35/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~35/styles.css +++ b/FileSets/v3.20~35/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~36/Battery.qml b/FileSets/v3.20~36/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~36/Battery.qml +++ b/FileSets/v3.20~36/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/DetailAcInput.qml b/FileSets/v3.20~36/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~36/DetailAcInput.qml +++ b/FileSets/v3.20~36/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/DetailInverter.qml b/FileSets/v3.20~36/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~36/DetailInverter.qml +++ b/FileSets/v3.20~36/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/DetailLoadsCombined.qml b/FileSets/v3.20~36/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~36/DetailLoadsCombined.qml +++ b/FileSets/v3.20~36/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/DetailLoadsOnInput.qml b/FileSets/v3.20~36/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~36/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~36/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/DetailLoadsOnOutput.qml b/FileSets/v3.20~36/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~36/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~36/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/HubData.qml b/FileSets/v3.20~36/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~36/HubData.qml +++ b/FileSets/v3.20~36/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/MbEditBox.qml b/FileSets/v3.20~36/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~36/MbEditBox.qml +++ b/FileSets/v3.20~36/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/MbEditBoxDateTime.qml b/FileSets/v3.20~36/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~36/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~36/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/MbItem.qml b/FileSets/v3.20~36/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~36/MbItem.qml +++ b/FileSets/v3.20~36/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/MbItemDigitalInput.qml b/FileSets/v3.20~36/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~36/MbItemDigitalInput.qml +++ b/FileSets/v3.20~36/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/MbSpinBox.qml b/FileSets/v3.20~36/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~36/MbSpinBox.qml +++ b/FileSets/v3.20~36/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/MbStyle.qml b/FileSets/v3.20~36/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~36/MbStyle.qml +++ b/FileSets/v3.20~36/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/MbSubMenu.qml b/FileSets/v3.20~36/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~36/MbSubMenu.qml +++ b/FileSets/v3.20~36/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/Multi.qml b/FileSets/v3.20~36/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~36/Multi.qml +++ b/FileSets/v3.20~36/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/ObjectAcConnection.qml b/FileSets/v3.20~36/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~36/ObjectAcConnection.qml +++ b/FileSets/v3.20~36/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~36/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~36/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~36/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewBox.qml b/FileSets/v3.20~36/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~36/OverviewBox.qml +++ b/FileSets/v3.20~36/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewConnection.qml b/FileSets/v3.20~36/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~36/OverviewConnection.qml +++ b/FileSets/v3.20~36/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewConnectionEnd.qml b/FileSets/v3.20~36/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~36/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~36/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewFlowComplex.qml b/FileSets/v3.20~36/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~36/OverviewFlowComplex.qml +++ b/FileSets/v3.20~36/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~36/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~36/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~36/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~36/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~36/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~36/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewGridParallel.qml b/FileSets/v3.20~36/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~36/OverviewGridParallel.qml +++ b/FileSets/v3.20~36/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewHub.qml b/FileSets/v3.20~36/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~36/OverviewHub.qml +++ b/FileSets/v3.20~36/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewHubEnhanced.qml b/FileSets/v3.20~36/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~36/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~36/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewMobileEnhanced.qml b/FileSets/v3.20~36/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~36/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~36/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewSolarCharger.qml b/FileSets/v3.20~36/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~36/OverviewSolarCharger.qml +++ b/FileSets/v3.20~36/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewSolarInverter.qml b/FileSets/v3.20~36/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~36/OverviewSolarInverter.qml +++ b/FileSets/v3.20~36/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewTankDelegate.qml b/FileSets/v3.20~36/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~36/OverviewTankDelegate.qml +++ b/FileSets/v3.20~36/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewTanks.qml b/FileSets/v3.20~36/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~36/OverviewTanks.qml +++ b/FileSets/v3.20~36/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~36/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~36/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~36/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/PageDigitalInput.qml b/FileSets/v3.20~36/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~36/PageDigitalInput.qml +++ b/FileSets/v3.20~36/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/PageGenerator.qml b/FileSets/v3.20~36/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~36/PageGenerator.qml +++ b/FileSets/v3.20~36/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/PageMain.qml b/FileSets/v3.20~36/PageMain.qml index 6bcbcd1a..a2458566 120000 --- a/FileSets/v3.20~36/PageMain.qml +++ b/FileSets/v3.20~36/PageMain.qml @@ -1 +1 @@ -../v3.20~45/PageMain.qml \ No newline at end of file +../v3.20~49/PageMain.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/PageSettingsDisplay.qml b/FileSets/v3.20~36/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~36/PageSettingsDisplay.qml +++ b/FileSets/v3.20~36/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/PageSettingsRelay.qml b/FileSets/v3.20~36/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~36/PageSettingsRelay.qml +++ b/FileSets/v3.20~36/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/PowerGauge.qml b/FileSets/v3.20~36/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~36/PowerGauge.qml +++ b/FileSets/v3.20~36/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/Tile.qml b/FileSets/v3.20~36/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~36/Tile.qml +++ b/FileSets/v3.20~36/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/TileDigIn.qml b/FileSets/v3.20~36/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~36/TileDigIn.qml +++ b/FileSets/v3.20~36/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/TileRelay.qml b/FileSets/v3.20~36/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~36/TileRelay.qml +++ b/FileSets/v3.20~36/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/TileText.qml b/FileSets/v3.20~36/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~36/TileText.qml +++ b/FileSets/v3.20~36/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/attributes.csv b/FileSets/v3.20~36/attributes.csv index 60c4d4d5..cfa16f00 120000 --- a/FileSets/v3.20~36/attributes.csv +++ b/FileSets/v3.20~36/attributes.csv @@ -1 +1 @@ -../v3.30~1/attributes.csv \ No newline at end of file +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~36/dbus_digitalinputs.py b/FileSets/v3.20~36/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~36/dbus_digitalinputs.py +++ b/FileSets/v3.20~36/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~36/main.qml b/FileSets/v3.20~36/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~36/main.qml +++ b/FileSets/v3.20~36/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~36/styles.css b/FileSets/v3.20~36/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~36/styles.css +++ b/FileSets/v3.20~36/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~37/Battery.qml b/FileSets/v3.20~37/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~37/Battery.qml +++ b/FileSets/v3.20~37/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/DetailAcInput.qml b/FileSets/v3.20~37/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~37/DetailAcInput.qml +++ b/FileSets/v3.20~37/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/DetailInverter.qml b/FileSets/v3.20~37/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~37/DetailInverter.qml +++ b/FileSets/v3.20~37/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/DetailLoadsCombined.qml b/FileSets/v3.20~37/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~37/DetailLoadsCombined.qml +++ b/FileSets/v3.20~37/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/DetailLoadsOnInput.qml b/FileSets/v3.20~37/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~37/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~37/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/DetailLoadsOnOutput.qml b/FileSets/v3.20~37/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~37/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~37/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/HubData.qml b/FileSets/v3.20~37/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~37/HubData.qml +++ b/FileSets/v3.20~37/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/MbEditBox.qml b/FileSets/v3.20~37/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~37/MbEditBox.qml +++ b/FileSets/v3.20~37/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/MbEditBoxDateTime.qml b/FileSets/v3.20~37/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~37/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~37/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/MbItem.qml b/FileSets/v3.20~37/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~37/MbItem.qml +++ b/FileSets/v3.20~37/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/MbItemDigitalInput.qml b/FileSets/v3.20~37/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~37/MbItemDigitalInput.qml +++ b/FileSets/v3.20~37/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/MbSpinBox.qml b/FileSets/v3.20~37/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~37/MbSpinBox.qml +++ b/FileSets/v3.20~37/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/MbStyle.qml b/FileSets/v3.20~37/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~37/MbStyle.qml +++ b/FileSets/v3.20~37/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/MbSubMenu.qml b/FileSets/v3.20~37/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~37/MbSubMenu.qml +++ b/FileSets/v3.20~37/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/Multi.qml b/FileSets/v3.20~37/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~37/Multi.qml +++ b/FileSets/v3.20~37/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/ObjectAcConnection.qml b/FileSets/v3.20~37/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~37/ObjectAcConnection.qml +++ b/FileSets/v3.20~37/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~37/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~37/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~37/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewBox.qml b/FileSets/v3.20~37/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~37/OverviewBox.qml +++ b/FileSets/v3.20~37/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewConnection.qml b/FileSets/v3.20~37/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~37/OverviewConnection.qml +++ b/FileSets/v3.20~37/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewConnectionEnd.qml b/FileSets/v3.20~37/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~37/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~37/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewFlowComplex.qml b/FileSets/v3.20~37/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~37/OverviewFlowComplex.qml +++ b/FileSets/v3.20~37/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~37/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~37/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~37/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~37/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~37/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~37/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewGridParallel.qml b/FileSets/v3.20~37/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~37/OverviewGridParallel.qml +++ b/FileSets/v3.20~37/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewHub.qml b/FileSets/v3.20~37/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~37/OverviewHub.qml +++ b/FileSets/v3.20~37/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewHubEnhanced.qml b/FileSets/v3.20~37/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~37/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~37/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewMobileEnhanced.qml b/FileSets/v3.20~37/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~37/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~37/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewSolarCharger.qml b/FileSets/v3.20~37/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~37/OverviewSolarCharger.qml +++ b/FileSets/v3.20~37/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewSolarInverter.qml b/FileSets/v3.20~37/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~37/OverviewSolarInverter.qml +++ b/FileSets/v3.20~37/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewTankDelegate.qml b/FileSets/v3.20~37/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~37/OverviewTankDelegate.qml +++ b/FileSets/v3.20~37/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewTanks.qml b/FileSets/v3.20~37/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~37/OverviewTanks.qml +++ b/FileSets/v3.20~37/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~37/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~37/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~37/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/PageDigitalInput.qml b/FileSets/v3.20~37/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~37/PageDigitalInput.qml +++ b/FileSets/v3.20~37/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/PageGenerator.qml b/FileSets/v3.20~37/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~37/PageGenerator.qml +++ b/FileSets/v3.20~37/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/PageMain.qml b/FileSets/v3.20~37/PageMain.qml index 6bcbcd1a..a2458566 120000 --- a/FileSets/v3.20~37/PageMain.qml +++ b/FileSets/v3.20~37/PageMain.qml @@ -1 +1 @@ -../v3.20~45/PageMain.qml \ No newline at end of file +../v3.20~49/PageMain.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/PageSettingsDisplay.qml b/FileSets/v3.20~37/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~37/PageSettingsDisplay.qml +++ b/FileSets/v3.20~37/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/PageSettingsRelay.qml b/FileSets/v3.20~37/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~37/PageSettingsRelay.qml +++ b/FileSets/v3.20~37/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/PowerGauge.qml b/FileSets/v3.20~37/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~37/PowerGauge.qml +++ b/FileSets/v3.20~37/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/Tile.qml b/FileSets/v3.20~37/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~37/Tile.qml +++ b/FileSets/v3.20~37/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/TileDigIn.qml b/FileSets/v3.20~37/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~37/TileDigIn.qml +++ b/FileSets/v3.20~37/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/TileRelay.qml b/FileSets/v3.20~37/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~37/TileRelay.qml +++ b/FileSets/v3.20~37/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/TileText.qml b/FileSets/v3.20~37/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~37/TileText.qml +++ b/FileSets/v3.20~37/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/attributes.csv b/FileSets/v3.20~37/attributes.csv index 60c4d4d5..cfa16f00 120000 --- a/FileSets/v3.20~37/attributes.csv +++ b/FileSets/v3.20~37/attributes.csv @@ -1 +1 @@ -../v3.30~1/attributes.csv \ No newline at end of file +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~37/dbus_digitalinputs.py b/FileSets/v3.20~37/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~37/dbus_digitalinputs.py +++ b/FileSets/v3.20~37/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~37/main.qml b/FileSets/v3.20~37/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~37/main.qml +++ b/FileSets/v3.20~37/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~37/styles.css b/FileSets/v3.20~37/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~37/styles.css +++ b/FileSets/v3.20~37/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~38/Battery.qml b/FileSets/v3.20~38/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~38/Battery.qml +++ b/FileSets/v3.20~38/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/DetailAcInput.qml b/FileSets/v3.20~38/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~38/DetailAcInput.qml +++ b/FileSets/v3.20~38/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/DetailInverter.qml b/FileSets/v3.20~38/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~38/DetailInverter.qml +++ b/FileSets/v3.20~38/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/DetailLoadsCombined.qml b/FileSets/v3.20~38/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~38/DetailLoadsCombined.qml +++ b/FileSets/v3.20~38/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/DetailLoadsOnInput.qml b/FileSets/v3.20~38/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~38/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~38/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/DetailLoadsOnOutput.qml b/FileSets/v3.20~38/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~38/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~38/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/HubData.qml b/FileSets/v3.20~38/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~38/HubData.qml +++ b/FileSets/v3.20~38/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/MbEditBox.qml b/FileSets/v3.20~38/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~38/MbEditBox.qml +++ b/FileSets/v3.20~38/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/MbEditBoxDateTime.qml b/FileSets/v3.20~38/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~38/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~38/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/MbItem.qml b/FileSets/v3.20~38/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~38/MbItem.qml +++ b/FileSets/v3.20~38/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/MbItemDigitalInput.qml b/FileSets/v3.20~38/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~38/MbItemDigitalInput.qml +++ b/FileSets/v3.20~38/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/MbSpinBox.qml b/FileSets/v3.20~38/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~38/MbSpinBox.qml +++ b/FileSets/v3.20~38/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/MbStyle.qml b/FileSets/v3.20~38/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~38/MbStyle.qml +++ b/FileSets/v3.20~38/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/MbSubMenu.qml b/FileSets/v3.20~38/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~38/MbSubMenu.qml +++ b/FileSets/v3.20~38/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/Multi.qml b/FileSets/v3.20~38/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~38/Multi.qml +++ b/FileSets/v3.20~38/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/ObjectAcConnection.qml b/FileSets/v3.20~38/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~38/ObjectAcConnection.qml +++ b/FileSets/v3.20~38/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~38/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~38/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~38/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewBox.qml b/FileSets/v3.20~38/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~38/OverviewBox.qml +++ b/FileSets/v3.20~38/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewConnection.qml b/FileSets/v3.20~38/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~38/OverviewConnection.qml +++ b/FileSets/v3.20~38/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewConnectionEnd.qml b/FileSets/v3.20~38/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~38/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~38/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewFlowComplex.qml b/FileSets/v3.20~38/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~38/OverviewFlowComplex.qml +++ b/FileSets/v3.20~38/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~38/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~38/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~38/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~38/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~38/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~38/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewGridParallel.qml b/FileSets/v3.20~38/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~38/OverviewGridParallel.qml +++ b/FileSets/v3.20~38/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewHub.qml b/FileSets/v3.20~38/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~38/OverviewHub.qml +++ b/FileSets/v3.20~38/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewHubEnhanced.qml b/FileSets/v3.20~38/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~38/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~38/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewMobileEnhanced.qml b/FileSets/v3.20~38/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~38/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~38/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewSolarCharger.qml b/FileSets/v3.20~38/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~38/OverviewSolarCharger.qml +++ b/FileSets/v3.20~38/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewSolarInverter.qml b/FileSets/v3.20~38/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~38/OverviewSolarInverter.qml +++ b/FileSets/v3.20~38/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewTankDelegate.qml b/FileSets/v3.20~38/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~38/OverviewTankDelegate.qml +++ b/FileSets/v3.20~38/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewTanks.qml b/FileSets/v3.20~38/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~38/OverviewTanks.qml +++ b/FileSets/v3.20~38/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~38/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~38/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~38/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/PageDigitalInput.qml b/FileSets/v3.20~38/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~38/PageDigitalInput.qml +++ b/FileSets/v3.20~38/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/PageGenerator.qml b/FileSets/v3.20~38/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~38/PageGenerator.qml +++ b/FileSets/v3.20~38/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/PageMain.qml b/FileSets/v3.20~38/PageMain.qml index 6bcbcd1a..a2458566 120000 --- a/FileSets/v3.20~38/PageMain.qml +++ b/FileSets/v3.20~38/PageMain.qml @@ -1 +1 @@ -../v3.20~45/PageMain.qml \ No newline at end of file +../v3.20~49/PageMain.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/PageSettingsDisplay.qml b/FileSets/v3.20~38/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~38/PageSettingsDisplay.qml +++ b/FileSets/v3.20~38/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/PageSettingsRelay.qml b/FileSets/v3.20~38/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~38/PageSettingsRelay.qml +++ b/FileSets/v3.20~38/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/PowerGauge.qml b/FileSets/v3.20~38/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~38/PowerGauge.qml +++ b/FileSets/v3.20~38/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/Tile.qml b/FileSets/v3.20~38/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~38/Tile.qml +++ b/FileSets/v3.20~38/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/TileDigIn.qml b/FileSets/v3.20~38/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~38/TileDigIn.qml +++ b/FileSets/v3.20~38/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/TileRelay.qml b/FileSets/v3.20~38/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~38/TileRelay.qml +++ b/FileSets/v3.20~38/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/TileText.qml b/FileSets/v3.20~38/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~38/TileText.qml +++ b/FileSets/v3.20~38/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/attributes.csv b/FileSets/v3.20~38/attributes.csv index 60c4d4d5..cfa16f00 120000 --- a/FileSets/v3.20~38/attributes.csv +++ b/FileSets/v3.20~38/attributes.csv @@ -1 +1 @@ -../v3.30~1/attributes.csv \ No newline at end of file +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~38/dbus_digitalinputs.py b/FileSets/v3.20~38/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~38/dbus_digitalinputs.py +++ b/FileSets/v3.20~38/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~38/main.qml b/FileSets/v3.20~38/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~38/main.qml +++ b/FileSets/v3.20~38/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~38/styles.css b/FileSets/v3.20~38/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~38/styles.css +++ b/FileSets/v3.20~38/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~40/Battery.qml b/FileSets/v3.20~40/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~40/Battery.qml +++ b/FileSets/v3.20~40/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/DetailAcInput.qml b/FileSets/v3.20~40/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~40/DetailAcInput.qml +++ b/FileSets/v3.20~40/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/DetailInverter.qml b/FileSets/v3.20~40/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~40/DetailInverter.qml +++ b/FileSets/v3.20~40/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/DetailLoadsCombined.qml b/FileSets/v3.20~40/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~40/DetailLoadsCombined.qml +++ b/FileSets/v3.20~40/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/DetailLoadsOnInput.qml b/FileSets/v3.20~40/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~40/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~40/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/DetailLoadsOnOutput.qml b/FileSets/v3.20~40/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~40/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~40/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/HubData.qml b/FileSets/v3.20~40/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~40/HubData.qml +++ b/FileSets/v3.20~40/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/MbEditBox.qml b/FileSets/v3.20~40/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~40/MbEditBox.qml +++ b/FileSets/v3.20~40/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/MbEditBoxDateTime.qml b/FileSets/v3.20~40/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~40/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~40/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/MbItem.qml b/FileSets/v3.20~40/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~40/MbItem.qml +++ b/FileSets/v3.20~40/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/MbItemDigitalInput.qml b/FileSets/v3.20~40/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~40/MbItemDigitalInput.qml +++ b/FileSets/v3.20~40/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/MbSpinBox.qml b/FileSets/v3.20~40/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~40/MbSpinBox.qml +++ b/FileSets/v3.20~40/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/MbStyle.qml b/FileSets/v3.20~40/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~40/MbStyle.qml +++ b/FileSets/v3.20~40/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/MbSubMenu.qml b/FileSets/v3.20~40/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~40/MbSubMenu.qml +++ b/FileSets/v3.20~40/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/Multi.qml b/FileSets/v3.20~40/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~40/Multi.qml +++ b/FileSets/v3.20~40/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/ObjectAcConnection.qml b/FileSets/v3.20~40/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~40/ObjectAcConnection.qml +++ b/FileSets/v3.20~40/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~40/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~40/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~40/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewBox.qml b/FileSets/v3.20~40/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~40/OverviewBox.qml +++ b/FileSets/v3.20~40/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewConnection.qml b/FileSets/v3.20~40/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~40/OverviewConnection.qml +++ b/FileSets/v3.20~40/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewConnectionEnd.qml b/FileSets/v3.20~40/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~40/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~40/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewFlowComplex.qml b/FileSets/v3.20~40/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~40/OverviewFlowComplex.qml +++ b/FileSets/v3.20~40/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~40/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~40/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~40/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~40/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~40/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~40/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewGridParallel.qml b/FileSets/v3.20~40/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~40/OverviewGridParallel.qml +++ b/FileSets/v3.20~40/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewHub.qml b/FileSets/v3.20~40/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~40/OverviewHub.qml +++ b/FileSets/v3.20~40/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewHubEnhanced.qml b/FileSets/v3.20~40/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~40/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~40/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewMobileEnhanced.qml b/FileSets/v3.20~40/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~40/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~40/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewSolarCharger.qml b/FileSets/v3.20~40/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~40/OverviewSolarCharger.qml +++ b/FileSets/v3.20~40/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewSolarInverter.qml b/FileSets/v3.20~40/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~40/OverviewSolarInverter.qml +++ b/FileSets/v3.20~40/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewTankDelegate.qml b/FileSets/v3.20~40/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~40/OverviewTankDelegate.qml +++ b/FileSets/v3.20~40/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewTanks.qml b/FileSets/v3.20~40/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~40/OverviewTanks.qml +++ b/FileSets/v3.20~40/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~40/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~40/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~40/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/PageDigitalInput.qml b/FileSets/v3.20~40/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~40/PageDigitalInput.qml +++ b/FileSets/v3.20~40/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/PageGenerator.qml b/FileSets/v3.20~40/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~40/PageGenerator.qml +++ b/FileSets/v3.20~40/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/PageMain.qml b/FileSets/v3.20~40/PageMain.qml index 6bcbcd1a..a2458566 120000 --- a/FileSets/v3.20~40/PageMain.qml +++ b/FileSets/v3.20~40/PageMain.qml @@ -1 +1 @@ -../v3.20~45/PageMain.qml \ No newline at end of file +../v3.20~49/PageMain.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/PageSettingsDisplay.qml b/FileSets/v3.20~40/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~40/PageSettingsDisplay.qml +++ b/FileSets/v3.20~40/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/PageSettingsGuiMods.qml b/FileSets/v3.20~40/PageSettingsGuiMods.qml index c3d81573..5d7de5ce 120000 --- a/FileSets/v3.20~40/PageSettingsGuiMods.qml +++ b/FileSets/v3.20~40/PageSettingsGuiMods.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsGuiMods.qml \ No newline at end of file +../v3.30~3/PageSettingsGuiMods.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/PageSettingsRelay.qml b/FileSets/v3.20~40/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~40/PageSettingsRelay.qml +++ b/FileSets/v3.20~40/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/PowerGauge.qml b/FileSets/v3.20~40/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~40/PowerGauge.qml +++ b/FileSets/v3.20~40/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/Tile.qml b/FileSets/v3.20~40/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~40/Tile.qml +++ b/FileSets/v3.20~40/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/TileDigIn.qml b/FileSets/v3.20~40/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~40/TileDigIn.qml +++ b/FileSets/v3.20~40/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/TileRelay.qml b/FileSets/v3.20~40/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~40/TileRelay.qml +++ b/FileSets/v3.20~40/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/TileText.qml b/FileSets/v3.20~40/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~40/TileText.qml +++ b/FileSets/v3.20~40/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/attributes.csv b/FileSets/v3.20~40/attributes.csv index 60c4d4d5..cfa16f00 120000 --- a/FileSets/v3.20~40/attributes.csv +++ b/FileSets/v3.20~40/attributes.csv @@ -1 +1 @@ -../v3.30~1/attributes.csv \ No newline at end of file +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~40/dbus_digitalinputs.py b/FileSets/v3.20~40/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~40/dbus_digitalinputs.py +++ b/FileSets/v3.20~40/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~40/main.qml b/FileSets/v3.20~40/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~40/main.qml +++ b/FileSets/v3.20~40/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~40/styles.css b/FileSets/v3.20~40/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~40/styles.css +++ b/FileSets/v3.20~40/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~41/Battery.qml b/FileSets/v3.20~41/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~41/Battery.qml +++ b/FileSets/v3.20~41/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/DetailAcInput.qml b/FileSets/v3.20~41/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~41/DetailAcInput.qml +++ b/FileSets/v3.20~41/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/DetailInverter.qml b/FileSets/v3.20~41/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~41/DetailInverter.qml +++ b/FileSets/v3.20~41/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/DetailLoadsCombined.qml b/FileSets/v3.20~41/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~41/DetailLoadsCombined.qml +++ b/FileSets/v3.20~41/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/DetailLoadsOnInput.qml b/FileSets/v3.20~41/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~41/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~41/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/DetailLoadsOnOutput.qml b/FileSets/v3.20~41/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~41/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~41/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/HubData.qml b/FileSets/v3.20~41/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~41/HubData.qml +++ b/FileSets/v3.20~41/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/MbEditBox.qml b/FileSets/v3.20~41/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~41/MbEditBox.qml +++ b/FileSets/v3.20~41/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/MbEditBoxDateTime.qml b/FileSets/v3.20~41/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~41/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~41/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/MbItem.qml b/FileSets/v3.20~41/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~41/MbItem.qml +++ b/FileSets/v3.20~41/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/MbItemDigitalInput.qml b/FileSets/v3.20~41/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~41/MbItemDigitalInput.qml +++ b/FileSets/v3.20~41/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/MbSpinBox.qml b/FileSets/v3.20~41/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~41/MbSpinBox.qml +++ b/FileSets/v3.20~41/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/MbStyle.qml b/FileSets/v3.20~41/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~41/MbStyle.qml +++ b/FileSets/v3.20~41/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/MbSubMenu.qml b/FileSets/v3.20~41/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~41/MbSubMenu.qml +++ b/FileSets/v3.20~41/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/Multi.qml b/FileSets/v3.20~41/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~41/Multi.qml +++ b/FileSets/v3.20~41/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/ObjectAcConnection.qml b/FileSets/v3.20~41/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~41/ObjectAcConnection.qml +++ b/FileSets/v3.20~41/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~41/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~41/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~41/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewBox.qml b/FileSets/v3.20~41/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~41/OverviewBox.qml +++ b/FileSets/v3.20~41/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewConnection.qml b/FileSets/v3.20~41/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~41/OverviewConnection.qml +++ b/FileSets/v3.20~41/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewConnectionEnd.qml b/FileSets/v3.20~41/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~41/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~41/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewFlowComplex.qml b/FileSets/v3.20~41/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~41/OverviewFlowComplex.qml +++ b/FileSets/v3.20~41/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~41/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~41/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~41/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~41/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~41/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~41/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewGridParallel.qml b/FileSets/v3.20~41/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~41/OverviewGridParallel.qml +++ b/FileSets/v3.20~41/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewHub.qml b/FileSets/v3.20~41/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~41/OverviewHub.qml +++ b/FileSets/v3.20~41/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewHubEnhanced.qml b/FileSets/v3.20~41/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~41/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~41/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewMobileEnhanced.qml b/FileSets/v3.20~41/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~41/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~41/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewSolarCharger.qml b/FileSets/v3.20~41/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~41/OverviewSolarCharger.qml +++ b/FileSets/v3.20~41/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewSolarInverter.qml b/FileSets/v3.20~41/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~41/OverviewSolarInverter.qml +++ b/FileSets/v3.20~41/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewTankDelegate.qml b/FileSets/v3.20~41/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~41/OverviewTankDelegate.qml +++ b/FileSets/v3.20~41/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewTanks.qml b/FileSets/v3.20~41/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~41/OverviewTanks.qml +++ b/FileSets/v3.20~41/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~41/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~41/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~41/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/PageDigitalInput.qml b/FileSets/v3.20~41/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~41/PageDigitalInput.qml +++ b/FileSets/v3.20~41/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/PageGenerator.qml b/FileSets/v3.20~41/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~41/PageGenerator.qml +++ b/FileSets/v3.20~41/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/PageMain.qml b/FileSets/v3.20~41/PageMain.qml index 6bcbcd1a..a2458566 120000 --- a/FileSets/v3.20~41/PageMain.qml +++ b/FileSets/v3.20~41/PageMain.qml @@ -1 +1 @@ -../v3.20~45/PageMain.qml \ No newline at end of file +../v3.20~49/PageMain.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/PageSettingsDisplay.qml b/FileSets/v3.20~41/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~41/PageSettingsDisplay.qml +++ b/FileSets/v3.20~41/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/PageSettingsGuiMods.qml b/FileSets/v3.20~41/PageSettingsGuiMods.qml index c3d81573..5d7de5ce 120000 --- a/FileSets/v3.20~41/PageSettingsGuiMods.qml +++ b/FileSets/v3.20~41/PageSettingsGuiMods.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsGuiMods.qml \ No newline at end of file +../v3.30~3/PageSettingsGuiMods.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/PageSettingsRelay.qml b/FileSets/v3.20~41/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~41/PageSettingsRelay.qml +++ b/FileSets/v3.20~41/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/PowerGauge.qml b/FileSets/v3.20~41/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~41/PowerGauge.qml +++ b/FileSets/v3.20~41/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/Tile.qml b/FileSets/v3.20~41/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~41/Tile.qml +++ b/FileSets/v3.20~41/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/TileDigIn.qml b/FileSets/v3.20~41/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~41/TileDigIn.qml +++ b/FileSets/v3.20~41/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/TileRelay.qml b/FileSets/v3.20~41/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~41/TileRelay.qml +++ b/FileSets/v3.20~41/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/TileText.qml b/FileSets/v3.20~41/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~41/TileText.qml +++ b/FileSets/v3.20~41/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/attributes.csv b/FileSets/v3.20~41/attributes.csv index 60c4d4d5..cfa16f00 120000 --- a/FileSets/v3.20~41/attributes.csv +++ b/FileSets/v3.20~41/attributes.csv @@ -1 +1 @@ -../v3.30~1/attributes.csv \ No newline at end of file +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~41/dbus_digitalinputs.py b/FileSets/v3.20~41/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~41/dbus_digitalinputs.py +++ b/FileSets/v3.20~41/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~41/main.qml b/FileSets/v3.20~41/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~41/main.qml +++ b/FileSets/v3.20~41/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~41/styles.css b/FileSets/v3.20~41/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~41/styles.css +++ b/FileSets/v3.20~41/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~43/Battery.qml b/FileSets/v3.20~43/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~43/Battery.qml +++ b/FileSets/v3.20~43/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/DetailAcInput.qml b/FileSets/v3.20~43/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~43/DetailAcInput.qml +++ b/FileSets/v3.20~43/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/DetailInverter.qml b/FileSets/v3.20~43/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~43/DetailInverter.qml +++ b/FileSets/v3.20~43/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/DetailLoadsCombined.qml b/FileSets/v3.20~43/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~43/DetailLoadsCombined.qml +++ b/FileSets/v3.20~43/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/DetailLoadsOnInput.qml b/FileSets/v3.20~43/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~43/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~43/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/DetailLoadsOnOutput.qml b/FileSets/v3.20~43/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~43/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~43/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/HubData.qml b/FileSets/v3.20~43/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~43/HubData.qml +++ b/FileSets/v3.20~43/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/MbEditBox.qml b/FileSets/v3.20~43/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~43/MbEditBox.qml +++ b/FileSets/v3.20~43/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/MbEditBoxDateTime.qml b/FileSets/v3.20~43/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~43/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~43/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/MbItem.qml b/FileSets/v3.20~43/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~43/MbItem.qml +++ b/FileSets/v3.20~43/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/MbItemDigitalInput.qml b/FileSets/v3.20~43/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~43/MbItemDigitalInput.qml +++ b/FileSets/v3.20~43/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/MbSpinBox.qml b/FileSets/v3.20~43/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~43/MbSpinBox.qml +++ b/FileSets/v3.20~43/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/MbStyle.qml b/FileSets/v3.20~43/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~43/MbStyle.qml +++ b/FileSets/v3.20~43/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/MbSubMenu.qml b/FileSets/v3.20~43/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~43/MbSubMenu.qml +++ b/FileSets/v3.20~43/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/Multi.qml b/FileSets/v3.20~43/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~43/Multi.qml +++ b/FileSets/v3.20~43/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/ObjectAcConnection.qml b/FileSets/v3.20~43/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~43/ObjectAcConnection.qml +++ b/FileSets/v3.20~43/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~43/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~43/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~43/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewBox.qml b/FileSets/v3.20~43/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~43/OverviewBox.qml +++ b/FileSets/v3.20~43/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewConnection.qml b/FileSets/v3.20~43/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~43/OverviewConnection.qml +++ b/FileSets/v3.20~43/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewConnectionEnd.qml b/FileSets/v3.20~43/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~43/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~43/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewFlowComplex.qml b/FileSets/v3.20~43/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~43/OverviewFlowComplex.qml +++ b/FileSets/v3.20~43/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~43/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~43/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~43/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~43/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~43/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~43/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewGridParallel.qml b/FileSets/v3.20~43/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~43/OverviewGridParallel.qml +++ b/FileSets/v3.20~43/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewHub.qml b/FileSets/v3.20~43/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~43/OverviewHub.qml +++ b/FileSets/v3.20~43/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewHubEnhanced.qml b/FileSets/v3.20~43/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~43/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~43/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewMobileEnhanced.qml b/FileSets/v3.20~43/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~43/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~43/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewSolarCharger.qml b/FileSets/v3.20~43/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~43/OverviewSolarCharger.qml +++ b/FileSets/v3.20~43/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewSolarInverter.qml b/FileSets/v3.20~43/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~43/OverviewSolarInverter.qml +++ b/FileSets/v3.20~43/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewTankDelegate.qml b/FileSets/v3.20~43/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~43/OverviewTankDelegate.qml +++ b/FileSets/v3.20~43/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewTanks.qml b/FileSets/v3.20~43/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~43/OverviewTanks.qml +++ b/FileSets/v3.20~43/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~43/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~43/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~43/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/PageDigitalInput.qml b/FileSets/v3.20~43/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~43/PageDigitalInput.qml +++ b/FileSets/v3.20~43/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/PageGenerator.qml b/FileSets/v3.20~43/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~43/PageGenerator.qml +++ b/FileSets/v3.20~43/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/PageMain.qml b/FileSets/v3.20~43/PageMain.qml index 6bcbcd1a..a2458566 120000 --- a/FileSets/v3.20~43/PageMain.qml +++ b/FileSets/v3.20~43/PageMain.qml @@ -1 +1 @@ -../v3.20~45/PageMain.qml \ No newline at end of file +../v3.20~49/PageMain.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/PageSettingsDisplay.qml b/FileSets/v3.20~43/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~43/PageSettingsDisplay.qml +++ b/FileSets/v3.20~43/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/PageSettingsGuiMods.qml b/FileSets/v3.20~43/PageSettingsGuiMods.qml index c3d81573..5d7de5ce 120000 --- a/FileSets/v3.20~43/PageSettingsGuiMods.qml +++ b/FileSets/v3.20~43/PageSettingsGuiMods.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsGuiMods.qml \ No newline at end of file +../v3.30~3/PageSettingsGuiMods.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/PageSettingsRelay.qml b/FileSets/v3.20~43/PageSettingsRelay.qml index 97e3819f..88c4e288 120000 --- a/FileSets/v3.20~43/PageSettingsRelay.qml +++ b/FileSets/v3.20~43/PageSettingsRelay.qml @@ -1 +1 @@ -../v3.20~45/PageSettingsRelay.qml \ No newline at end of file +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/PowerGauge.qml b/FileSets/v3.20~43/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~43/PowerGauge.qml +++ b/FileSets/v3.20~43/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/Tile.qml b/FileSets/v3.20~43/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~43/Tile.qml +++ b/FileSets/v3.20~43/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/TileDigIn.qml b/FileSets/v3.20~43/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~43/TileDigIn.qml +++ b/FileSets/v3.20~43/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/TileRelay.qml b/FileSets/v3.20~43/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~43/TileRelay.qml +++ b/FileSets/v3.20~43/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/TileText.qml b/FileSets/v3.20~43/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~43/TileText.qml +++ b/FileSets/v3.20~43/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/attributes.csv b/FileSets/v3.20~43/attributes.csv index 60c4d4d5..cfa16f00 120000 --- a/FileSets/v3.20~43/attributes.csv +++ b/FileSets/v3.20~43/attributes.csv @@ -1 +1 @@ -../v3.30~1/attributes.csv \ No newline at end of file +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~43/dbus_digitalinputs.py b/FileSets/v3.20~43/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~43/dbus_digitalinputs.py +++ b/FileSets/v3.20~43/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~43/main.qml b/FileSets/v3.20~43/main.qml index 3643ba23..4a7bfdf7 120000 --- a/FileSets/v3.20~43/main.qml +++ b/FileSets/v3.20~43/main.qml @@ -1 +1 @@ -../v3.20~45/main.qml \ No newline at end of file +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~43/styles.css b/FileSets/v3.20~43/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~43/styles.css +++ b/FileSets/v3.20~43/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~45/Battery.qml b/FileSets/v3.20~45/Battery.qml index c7149e0b..b8b3eac7 120000 --- a/FileSets/v3.20~45/Battery.qml +++ b/FileSets/v3.20~45/Battery.qml @@ -1 +1 @@ -../v3.30~1/Battery.qml \ No newline at end of file +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/DetailAcInput.qml b/FileSets/v3.20~45/DetailAcInput.qml index eafc88e8..d3f6768e 120000 --- a/FileSets/v3.20~45/DetailAcInput.qml +++ b/FileSets/v3.20~45/DetailAcInput.qml @@ -1 +1 @@ -../v3.30~1/DetailAcInput.qml \ No newline at end of file +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/DetailInverter.qml b/FileSets/v3.20~45/DetailInverter.qml index f51d2a5f..9b210604 120000 --- a/FileSets/v3.20~45/DetailInverter.qml +++ b/FileSets/v3.20~45/DetailInverter.qml @@ -1 +1 @@ -../v3.30~1/DetailInverter.qml \ No newline at end of file +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/DetailLoadsCombined.qml b/FileSets/v3.20~45/DetailLoadsCombined.qml index 8b48e62a..1e660dfd 120000 --- a/FileSets/v3.20~45/DetailLoadsCombined.qml +++ b/FileSets/v3.20~45/DetailLoadsCombined.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsCombined.qml \ No newline at end of file +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/DetailLoadsOnInput.qml b/FileSets/v3.20~45/DetailLoadsOnInput.qml index dede455b..48593558 120000 --- a/FileSets/v3.20~45/DetailLoadsOnInput.qml +++ b/FileSets/v3.20~45/DetailLoadsOnInput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnInput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/DetailLoadsOnOutput.qml b/FileSets/v3.20~45/DetailLoadsOnOutput.qml index 431fc2d5..55830b7c 120000 --- a/FileSets/v3.20~45/DetailLoadsOnOutput.qml +++ b/FileSets/v3.20~45/DetailLoadsOnOutput.qml @@ -1 +1 @@ -../v3.30~1/DetailLoadsOnOutput.qml \ No newline at end of file +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/HubData.qml b/FileSets/v3.20~45/HubData.qml index 3c632321..2cf76fc5 120000 --- a/FileSets/v3.20~45/HubData.qml +++ b/FileSets/v3.20~45/HubData.qml @@ -1 +1 @@ -../v3.30~1/HubData.qml \ No newline at end of file +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.30~1/COMPLETE b/FileSets/v3.20~45/LINKS_ONLY similarity index 100% rename from FileSets/v3.30~1/COMPLETE rename to FileSets/v3.20~45/LINKS_ONLY diff --git a/FileSets/v3.20~45/MbEditBox.qml b/FileSets/v3.20~45/MbEditBox.qml index 1667d1ec..cdef216b 120000 --- a/FileSets/v3.20~45/MbEditBox.qml +++ b/FileSets/v3.20~45/MbEditBox.qml @@ -1 +1 @@ -../v3.30~1/MbEditBox.qml \ No newline at end of file +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/MbEditBoxDateTime.qml b/FileSets/v3.20~45/MbEditBoxDateTime.qml index ae8e4115..2395f459 120000 --- a/FileSets/v3.20~45/MbEditBoxDateTime.qml +++ b/FileSets/v3.20~45/MbEditBoxDateTime.qml @@ -1 +1 @@ -../v3.30~1/MbEditBoxDateTime.qml \ No newline at end of file +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/MbItem.qml b/FileSets/v3.20~45/MbItem.qml index a67db29c..b9d9a145 120000 --- a/FileSets/v3.20~45/MbItem.qml +++ b/FileSets/v3.20~45/MbItem.qml @@ -1 +1 @@ -../v3.30~1/MbItem.qml \ No newline at end of file +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/MbItemDigitalInput.qml b/FileSets/v3.20~45/MbItemDigitalInput.qml index d72702aa..206a42f1 120000 --- a/FileSets/v3.20~45/MbItemDigitalInput.qml +++ b/FileSets/v3.20~45/MbItemDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/MbItemDigitalInput.qml \ No newline at end of file +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/MbSpinBox.qml b/FileSets/v3.20~45/MbSpinBox.qml index a485feef..f016a38d 120000 --- a/FileSets/v3.20~45/MbSpinBox.qml +++ b/FileSets/v3.20~45/MbSpinBox.qml @@ -1 +1 @@ -../v3.30~1/MbSpinBox.qml \ No newline at end of file +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/MbStyle.qml b/FileSets/v3.20~45/MbStyle.qml index 93b051ea..d8e963e2 120000 --- a/FileSets/v3.20~45/MbStyle.qml +++ b/FileSets/v3.20~45/MbStyle.qml @@ -1 +1 @@ -../v3.30~1/MbStyle.qml \ No newline at end of file +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/MbSubMenu.qml b/FileSets/v3.20~45/MbSubMenu.qml index a48ff284..a06201d7 120000 --- a/FileSets/v3.20~45/MbSubMenu.qml +++ b/FileSets/v3.20~45/MbSubMenu.qml @@ -1 +1 @@ -../v3.30~1/MbSubMenu.qml \ No newline at end of file +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/Multi.qml b/FileSets/v3.20~45/Multi.qml index 2c7111e5..2d2550aa 120000 --- a/FileSets/v3.20~45/Multi.qml +++ b/FileSets/v3.20~45/Multi.qml @@ -1 +1 @@ -../v3.30~1/Multi.qml \ No newline at end of file +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/ObjectAcConnection.qml b/FileSets/v3.20~45/ObjectAcConnection.qml index d56c08b7..ff70c34a 120000 --- a/FileSets/v3.20~45/ObjectAcConnection.qml +++ b/FileSets/v3.20~45/ObjectAcConnection.qml @@ -1 +1 @@ -../v3.30~1/ObjectAcConnection.qml \ No newline at end of file +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~45/OverviewAcValuesEnhanced.qml index 74f5a60c..f55dea21 120000 --- a/FileSets/v3.20~45/OverviewAcValuesEnhanced.qml +++ b/FileSets/v3.20~45/OverviewAcValuesEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewAcValuesEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewBox.qml b/FileSets/v3.20~45/OverviewBox.qml index eb491c22..edafad16 120000 --- a/FileSets/v3.20~45/OverviewBox.qml +++ b/FileSets/v3.20~45/OverviewBox.qml @@ -1 +1 @@ -../v3.30~1/OverviewBox.qml \ No newline at end of file +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewConnection.qml b/FileSets/v3.20~45/OverviewConnection.qml index 30f98775..cbc21d5c 120000 --- a/FileSets/v3.20~45/OverviewConnection.qml +++ b/FileSets/v3.20~45/OverviewConnection.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnection.qml \ No newline at end of file +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewConnectionEnd.qml b/FileSets/v3.20~45/OverviewConnectionEnd.qml index b075cf89..56d04b7d 120000 --- a/FileSets/v3.20~45/OverviewConnectionEnd.qml +++ b/FileSets/v3.20~45/OverviewConnectionEnd.qml @@ -1 +1 @@ -../v3.30~1/OverviewConnectionEnd.qml \ No newline at end of file +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewFlowComplex.qml b/FileSets/v3.20~45/OverviewFlowComplex.qml index b999d865..df60b754 120000 --- a/FileSets/v3.20~45/OverviewFlowComplex.qml +++ b/FileSets/v3.20~45/OverviewFlowComplex.qml @@ -1 +1 @@ -../v3.30~1/OverviewFlowComplex.qml \ No newline at end of file +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~45/OverviewGeneratorEnhanced.qml index 8e49ae38..6fc0641d 120000 --- a/FileSets/v3.20~45/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.20~45/OverviewGeneratorEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~45/OverviewGeneratorRelayEnhanced.qml index 89ec5c80..3e103671 120000 --- a/FileSets/v3.20~45/OverviewGeneratorRelayEnhanced.qml +++ b/FileSets/v3.20~45/OverviewGeneratorRelayEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewGridParallel.qml b/FileSets/v3.20~45/OverviewGridParallel.qml index 8805f49b..51daafd3 120000 --- a/FileSets/v3.20~45/OverviewGridParallel.qml +++ b/FileSets/v3.20~45/OverviewGridParallel.qml @@ -1 +1 @@ -../v3.30~1/OverviewGridParallel.qml \ No newline at end of file +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewHub.qml b/FileSets/v3.20~45/OverviewHub.qml index 4f783368..78e92833 120000 --- a/FileSets/v3.20~45/OverviewHub.qml +++ b/FileSets/v3.20~45/OverviewHub.qml @@ -1 +1 @@ -../v3.30~1/OverviewHub.qml \ No newline at end of file +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewHubEnhanced.qml b/FileSets/v3.20~45/OverviewHubEnhanced.qml index 1313cd6d..90bbde0c 120000 --- a/FileSets/v3.20~45/OverviewHubEnhanced.qml +++ b/FileSets/v3.20~45/OverviewHubEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewHubEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewMobileEnhanced.qml b/FileSets/v3.20~45/OverviewMobileEnhanced.qml index cf10db90..d5387aa1 120000 --- a/FileSets/v3.20~45/OverviewMobileEnhanced.qml +++ b/FileSets/v3.20~45/OverviewMobileEnhanced.qml @@ -1 +1 @@ -../v3.30~1/OverviewMobileEnhanced.qml \ No newline at end of file +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewSolarCharger.qml b/FileSets/v3.20~45/OverviewSolarCharger.qml index c91bd340..88c80efe 120000 --- a/FileSets/v3.20~45/OverviewSolarCharger.qml +++ b/FileSets/v3.20~45/OverviewSolarCharger.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarCharger.qml \ No newline at end of file +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewSolarInverter.qml b/FileSets/v3.20~45/OverviewSolarInverter.qml index 7b5882bd..ee8efeaa 120000 --- a/FileSets/v3.20~45/OverviewSolarInverter.qml +++ b/FileSets/v3.20~45/OverviewSolarInverter.qml @@ -1 +1 @@ -../v3.30~1/OverviewSolarInverter.qml \ No newline at end of file +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewTankDelegate.qml b/FileSets/v3.20~45/OverviewTankDelegate.qml index d04fbe81..c171c8af 120000 --- a/FileSets/v3.20~45/OverviewTankDelegate.qml +++ b/FileSets/v3.20~45/OverviewTankDelegate.qml @@ -1 +1 @@ -../v3.30~1/OverviewTankDelegate.qml \ No newline at end of file +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewTanks.qml b/FileSets/v3.20~45/OverviewTanks.qml index fbfd8158..5e40af81 120000 --- a/FileSets/v3.20~45/OverviewTanks.qml +++ b/FileSets/v3.20~45/OverviewTanks.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanks.qml \ No newline at end of file +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~45/OverviewTanksTempsDigInputs.qml index 90d6f2b8..8528c853 120000 --- a/FileSets/v3.20~45/OverviewTanksTempsDigInputs.qml +++ b/FileSets/v3.20~45/OverviewTanksTempsDigInputs.qml @@ -1 +1 @@ -../v3.30~1/OverviewTanksTempsDigInputs.qml \ No newline at end of file +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/PageDigitalInput.qml b/FileSets/v3.20~45/PageDigitalInput.qml index e5dc5c51..a76de031 120000 --- a/FileSets/v3.20~45/PageDigitalInput.qml +++ b/FileSets/v3.20~45/PageDigitalInput.qml @@ -1 +1 @@ -../v3.30~1/PageDigitalInput.qml \ No newline at end of file +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/PageGenerator.qml b/FileSets/v3.20~45/PageGenerator.qml index 67c2caf8..024675a9 120000 --- a/FileSets/v3.20~45/PageGenerator.qml +++ b/FileSets/v3.20~45/PageGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageGenerator.qml \ No newline at end of file +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/PageMain.qml b/FileSets/v3.20~45/PageMain.qml deleted file mode 100644 index 9156b68c..00000000 --- a/FileSets/v3.20~45/PageMain.qml +++ /dev/null @@ -1,293 +0,0 @@ -//////// GuiMods modified order to put Settings, then Notifications at top of list - -import QtQuick 1.1 -import "utils.js" as Utils -import com.victron.velib 1.0 - -MbPage { - id: root - title: qsTr("Device List") - -//////// GuiMods put Settings, Notifications, Remove disconnected... at top of list - property VBusItem moveSettings: VBusItem { id: moveSettings; bind: Utils.path("com.victronenergy.settings", "/Settings/GuiMods/MoveSettings")} - property bool settingsAtTop: moveSettings.valid && moveSettings.value === 1 - - model: VisualModels { -//////// GuiMods put Settings, Notifications, Remove disconnected... at top of list - VisibleItemModel { - MbSubMenu { - description: qsTr("Settings") - subpage: Component { PageSettings {} } - show: settingsAtTop - } - - MbSubMenu { - id: menuNotificationsTop - description: qsTr("Notifications") - item: VBusItem { - property variant active: NotificationCenter.notifications.filter( - function isActive(obj) { return obj.active} ) - value: active.length > 0 ? active.length : "" - } - subpage: Component { PageNotifications {} } - show: settingsAtTop - } - - MbOK { - description: qsTr("Remove disconnected devices") - value: qsTr("Press to remove") - show: settingsAtTop && deviceList.disconnectedDevices != 0 - editable: true - - function clicked() { - listview.decrementCurrentIndex() - deviceList.removeDisconnected() - } - } - } -//////// end GuiMods put Settings, Notifications, Remove disconnected... at top of list - - VisualDataModel { - model: VeSortFilterProxyModel { - model: DeviceList { - id: deviceList - onRowsAboutToBeRemoved: { - for (var i = first; i <= last; i++) - deviceList.page(i).destroy() - } - } - sortRole: DeviceList.DescriptionRole - dynamicSortFilter: true - naturalSort: true - sortCaseSensitivity: Qt.CaseInsensitive - } - - delegate: MbDevice { - iconId: "icon-toolbar-enter" - service: model.page.service - subpage: model.page - } - } - VisibleItemModel { - MbSubMenu { - id: menuNotifications - description: qsTr("Notifications") - item: VBusItem { - property variant active: NotificationCenter.notifications.filter( - function isActive(obj) { return obj.active} ) - value: active.length > 0 ? active.length : "" - } - subpage: Component { PageNotifications {} } -//////// GuiMods hide this if added at top - show: !settingsAtTop - } - - MbSubMenu { - description: qsTr("Settings") - subpage: Component { PageSettings {} } -//////// GuiMods hide this if added at top - show: !settingsAtTop - } - - MbOK { - description: qsTr("Remove disconnected devices") - value: qsTr("Press to remove") -//////// GuiMods hide this if added at top - show: !settingsAtTop && deviceList.disconnectedDevices != 0 - editable: true - - function clicked() { - listview.decrementCurrentIndex() - deviceList.removeDisconnected() - } - } - } - } - - Component { - id: vebusPage - PageVebus {} - } - - Component { - id: multiRsPage - PageMultiRs {} - } - - Component { - id: batteryPage - PageBattery {} - } - - Component { - id: solarChargerPage - PageSolarCharger {} - } - - Component { - id: acInPage - PageAcIn {} - } - - Component { - id: acChargerPage - PageAcCharger {} - } - - Component { - id: tankPage - PageTankSensor {} - } - - Component { - id: motorDrivePage - PageMotorDrive {} - } - - Component { - id: inverterPage - PageInverter {} - } - - Component { - id: pulseCounterPage - PagePulseCounter {} - } - - Component { - id: digitalInputPage - PageDigitalInput {} - } - - Component { - id: temperatureSensorPage - PageTemperatureSensor {} - } - - Component { - id: unsupportedDevicePage - PageUnsupportedDevice {} - } - - Component { - id: meteoDevicePage - PageMeteo {} - } - - Component { - id: evChargerPage - PageEvCharger {} - } - - Component { - id: dcMeterPage - PageDcMeter {} - } - - Component { - id: alternatorPage - PageAlternator {} - } - - Component { - id: dcDcConverterPage - PageDcDcConverter {} - } - - function addService(service) - { - var name = service.name - - var page - switch(service.type) - { - case DBusService.DBUS_SERVICE_MULTI: - page = vebusPage - break; - case DBusService.DBUS_SERVICE_MULTI_RS: - page = multiRsPage - break; - case DBusService.DBUS_SERVICE_BATTERY: - page = batteryPage - break; - case DBusService.DBUS_SERVICE_SOLAR_CHARGER: - page = solarChargerPage - break; - case DBusService.DBUS_SERVICE_PV_INVERTER: - page = acInPage - break; - case DBusService.DBUS_SERVICE_AC_CHARGER: - page = acChargerPage - break; - case DBusService.DBUS_SERVICE_TANK: - page = tankPage - break; - case DBusService.DBUS_SERVICE_GRIDMETER: - page = acInPage - break - case DBusService.DBUS_SERVICE_GENSET: - page = acInPage - break - case DBusService.DBUS_SERVICE_MOTOR_DRIVE: - page = motorDrivePage - break - case DBusService.DBUS_SERVICE_INVERTER: - page = inverterPage - break; - case DBusService.DBUS_SERVICE_TEMPERATURE_SENSOR: - page = temperatureSensorPage - break; - case DBusService.DBUS_SERVICE_SYSTEM_CALC: - return; - case DBusService.DBUS_SERVICE_DIGITAL_INPUT: - page = digitalInputPage - break; - case DBusService.DBUS_SERVICE_PULSE_COUNTER: - page = pulseCounterPage - break; - case DBusService.DBUS_SERVICE_UNSUPPORTED: - page = unsupportedDevicePage - break; - case DBusService.DBUS_SERVICE_METEO: - page = meteoDevicePage - break; - case DBusService.DBUS_SERVICE_VECAN: - return; - case DBusService.DBUS_SERVICE_EVCHARGER: - page = evChargerPage - break - case DBusService.DBUS_SERVICE_ACLOAD: - page = acInPage - break - case DBusService.DBUS_SERVICE_HUB4: - return; - case DBusService.DBUS_SERVICE_FUELCELL: - case DBusService.DBUS_SERVICE_DCSOURCE: - case DBusService.DBUS_SERVICE_DCLOAD: - case DBusService.DBUS_SERVICE_DCSYSTEM: - page = dcMeterPage - break - case DBusService.DBUS_SERVICE_ALTERNATOR: - page = alternatorPage - break - case DBusService.DBUS_SERVICE_DCDC: - page = dcDcConverterPage - break - default: - console.log("unknown service " + name) - return; - } - - deviceList.append(service, page.createObject(root, {service: service, bindPrefix: service.name})) - } - - Component.onCompleted: { - for (var i = 0; i < DBusServices.count; i++) - addService(DBusServices.at(i)) - } - - Connections { - target: DBusServices - onDbusServiceFound: addService(service) - } -} diff --git a/FileSets/v3.20~45/PageMain.qml b/FileSets/v3.20~45/PageMain.qml new file mode 120000 index 00000000..a2458566 --- /dev/null +++ b/FileSets/v3.20~45/PageMain.qml @@ -0,0 +1 @@ +../v3.20~49/PageMain.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/PageSettingsDisplay.qml b/FileSets/v3.20~45/PageSettingsDisplay.qml index a7f4a2c4..390750b9 120000 --- a/FileSets/v3.20~45/PageSettingsDisplay.qml +++ b/FileSets/v3.20~45/PageSettingsDisplay.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsDisplay.qml \ No newline at end of file +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/PageSettingsGenerator.qml b/FileSets/v3.20~45/PageSettingsGenerator.qml index 6d1da4a1..4edff025 120000 --- a/FileSets/v3.20~45/PageSettingsGenerator.qml +++ b/FileSets/v3.20~45/PageSettingsGenerator.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsGenerator.qml \ No newline at end of file +../v3.30~3/PageSettingsGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/PageSettingsGuiMods.qml b/FileSets/v3.20~45/PageSettingsGuiMods.qml index c3d81573..5d7de5ce 120000 --- a/FileSets/v3.20~45/PageSettingsGuiMods.qml +++ b/FileSets/v3.20~45/PageSettingsGuiMods.qml @@ -1 +1 @@ -../v3.30~1/PageSettingsGuiMods.qml \ No newline at end of file +../v3.30~3/PageSettingsGuiMods.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/PageSettingsRelay.qml b/FileSets/v3.20~45/PageSettingsRelay.qml deleted file mode 100644 index e3292a36..00000000 --- a/FileSets/v3.20~45/PageSettingsRelay.qml +++ /dev/null @@ -1,243 +0,0 @@ -//////// modified to -//////// add 6 relays for Raspberry PI -//////// custom relay name for Relay Overview -//////// show/hide relay in Relay Overview - -import QtQuick 1.1 -import com.victron.velib 1.0 -import "utils.js" as Utils - -MbPage { - id: pageRelaySettings - title: qsTr("Relay") - property string bindPrefix: "com.victronenergy.settings" - property VBusItem relay1Item: VBusItem { bind: "com.victronenergy.system/Relay/1/State" } - property bool hasRelay1: relay1Item.valid - - property VBusItem relay2Item: VBusItem { bind: "com.victronenergy.system/Relay/2/State" } - property bool hasRelay2: relay2Item.valid - property VBusItem relay3Item: VBusItem { bind: "com.victronenergy.system/Relay/3/State" } - property bool hasRelay3: relay3Item.valid - property VBusItem relay4Item: VBusItem { bind: "com.victronenergy.system/Relay/4/State" } - property bool hasRelay4: relay4Item.valid - property VBusItem relay5Item: VBusItem { bind: "com.victronenergy.system/Relay/5/State" } - property bool hasRelay5: relay5Item.valid - - property VBusItem relay0NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/0/CustomName") } - property VBusItem relay1NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/1/CustomName") } - property VBusItem relay2NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/2/CustomName") } - property VBusItem relay3NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/3/CustomName") } - property VBusItem relay4NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/4/CustomName") } - property VBusItem relay5NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/5/CustomName") } - - function relayName (nameItem, relayNumber) - { - var prefix, suffix - if (nameItem.valid && nameItem.value != "") - { - prefix = nameItem.value + " (" - suffix = ")" - } - else - { - prefix = "" - suffix = "" - } - if (relayNumber == 1) - return prefix + (hasRelay1 ? qsTr("Relay 1") : qsTr("Relay")) + suffix + " " + qsTr("On") - else - return prefix + qsTr("Relay") + " " + relayNumber + suffix + " " + qsTr("On") - } - - model: VisibleItemModel { - MbItemOptions { - id: relayFunction - description: hasRelay1 ? qsTr("Function (Relay 1)") : qsTr("Function") - bind: Utils.path(bindPrefix, "/Settings/Relay/Function") - possibleValues:[ - MbOption { description: qsTr("Alarm relay"); value: 0 }, - MbOption { description: qsTr("Generator start/stop"); value: 1 }, - MbOption { description: qsTr("Tank pump"); value: 3 }, - MbOption { description: qsTr("Manual"); value: 2 }, - MbOption { description: qsTr("Temperature"); value: 4 } - ] - } - - MbItemOptions { - description: qsTr("Alarm relay polarity") - bind: Utils.path(bindPrefix, "/Settings/Relay/Polarity") - show: relayFunction.value === 0 - possibleValues: [ - MbOption { description: qsTr("Normally open"); value: 0 }, - MbOption { description: qsTr("Normally closed"); value: 1 } - ] - } - - MbSwitch { - id: relaySwitch - // Use a one-way binding, because the usual binding: - // checked: Relay.relayOn - // will be broken when the switched toggled, and changes in the relayOn property made - // elsewhere will not change the state of the switch any more. - Binding { - target: relaySwitch - property: "checked" - value: Relay.relayOn - when: true - } - enabled: userHasWriteAccess - name: qsTr("Alarm relay On") - onCheckedChanged: Relay.relayOn = checked; - show: relayFunction.value === 0 - } - - MbSwitch { - id: manualSwitch - name: relayName (relay0NameItem, 1) - bind: "com.victronenergy.system/Relay/0/State" - show: relayFunction.value === 2 // manual mode - } - - MbItemOptions { - id: relay1Function - description: hasRelay1 ? qsTr("Function (Relay 2)") : qsTr("Function") - bind: Utils.path(bindPrefix, "/Settings/Relay/1/Function") - show: hasRelay1 - possibleValues:[ - MbOption { description: qsTr("Manual"); value: 2 }, - MbOption { description: qsTr("Temperature"); value: 4 } - ] - } - MbSwitch { - id: manualSwitch1 - name: relayName (relay1NameItem, 2) - bind: "com.victronenergy.system/Relay/1/State" - show: hasRelay1 && relay1Function.value === 2 - } - MbSwitch { - id: manualSwitch2 - name: relayName (relay2NameItem, 3) - bind: "com.victronenergy.system/Relay/2/State" - show: hasRelay2 - } - MbSwitch { - id: manualSwitch3 - name: relayName (relay3NameItem, 4) - bind: "com.victronenergy.system/Relay/3/State" - show: hasRelay3 - } - MbSwitch { - id: manualSwitch4 - name: relayName (relay4NameItem, 5) - bind: "com.victronenergy.system/Relay/4/State" - show: hasRelay4 - } - MbSwitch { - id: manualSwitch5 - name: relayName (relay5NameItem, 6) - bind: "com.victronenergy.system/Relay/5/State" - show: hasRelay5 - } - - MbSubMenu { - id: conditions - description: qsTr("Temperature control rules") - show: relayFunction.value === 4 || relay1Function.value === 4 - subpage: Component { - PageSettingsRelayTempSensors { - id: relayPage - title: qsTr("Temperature control rules") - } - } - } - - MbEditBox { - id: relay0name - description: qsTr("Relay 1 Name") - item.bind: "com.victronenergy.settings/Settings/Relay/0/CustomName" - show: item.valid && relayFunction.value === 2 // manual mode - maximumLength: 32 - enableSpaceBar: true - } - MbSwitch { - id: showRelay0 - name: qsTr("Show Relay 1 in overview") - bind: "com.victronenergy.settings/Settings/Relay/0/Show" - } - - MbEditBox { - id: relay1name - description: qsTr("Relay 2 Name") - item.bind: "com.victronenergy.settings/Settings/Relay/1/CustomName" - show: item.valid - maximumLength: 32 - enableSpaceBar: true - } - MbSwitch { - id: showRelay1 - name: qsTr("Show Relay 2 in overview") - bind: "com.victronenergy.settings/Settings/Relay/1/Show" - show: hasRelay1 - } - - MbEditBox { - id: relay2name - description: qsTr("Relay 3 Name") - item.bind: "com.victronenergy.settings/Settings/Relay/2/CustomName" - show: item.valid - maximumLength: 32 - enableSpaceBar: true - } - MbSwitch { - id: showRelay2 - name: qsTr("Show Relay 3 in overview") - bind: "com.victronenergy.settings/Settings/Relay/2/Show" - show: hasRelay2 - } - - MbEditBox { - id: relay3name - description: qsTr("Relay 4 Name") - item.bind: "com.victronenergy.settings/Settings/Relay/3/CustomName" - show: item.valid - maximumLength: 32 - enableSpaceBar: true - } - MbSwitch { - id: showRelay3 - name: qsTr("Show Relay 4 in overview") - bind: "com.victronenergy.settings/Settings/Relay/3/Show" - show: hasRelay3 - } - - MbEditBox { - id: relay4name - description: qsTr("Relay 5 Name") - item.bind: "com.victronenergy.settings/Settings/Relay/4/CustomName" - show: item.valid - maximumLength: 32 - enableSpaceBar: true - } - MbSwitch { - id: showRelay4 - name: qsTr("Show Relay 5 in overview") - bind: "com.victronenergy.settings/Settings/Relay/4/Show" - show: hasRelay4 - } - - MbEditBox { - id: relay5name - description: qsTr("Relay 6 Name") - item.bind: "com.victronenergy.settings/Settings/Relay/5/CustomName" - show: item.valid - maximumLength: 32 - enableSpaceBar: true - } - MbSwitch { - id: showRelay5 - name: qsTr("Show Relay 6 in overview") - bind: "com.victronenergy.settings/Settings/Relay/5/Show" - show: hasRelay5 - } - } -} diff --git a/FileSets/v3.20~45/PageSettingsRelay.qml b/FileSets/v3.20~45/PageSettingsRelay.qml new file mode 120000 index 00000000..88c4e288 --- /dev/null +++ b/FileSets/v3.20~45/PageSettingsRelay.qml @@ -0,0 +1 @@ +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/PowerGauge.qml b/FileSets/v3.20~45/PowerGauge.qml index ca15d0b8..eb1a8641 120000 --- a/FileSets/v3.20~45/PowerGauge.qml +++ b/FileSets/v3.20~45/PowerGauge.qml @@ -1 +1 @@ -../v3.30~1/PowerGauge.qml \ No newline at end of file +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/Tile.qml b/FileSets/v3.20~45/Tile.qml index 1fa513f1..c13fe780 120000 --- a/FileSets/v3.20~45/Tile.qml +++ b/FileSets/v3.20~45/Tile.qml @@ -1 +1 @@ -../v3.30~1/Tile.qml \ No newline at end of file +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/TileDigIn.qml b/FileSets/v3.20~45/TileDigIn.qml index afe73e1a..972f8638 120000 --- a/FileSets/v3.20~45/TileDigIn.qml +++ b/FileSets/v3.20~45/TileDigIn.qml @@ -1 +1 @@ -../v3.30~1/TileDigIn.qml \ No newline at end of file +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/TileRelay.qml b/FileSets/v3.20~45/TileRelay.qml index 76c4f708..f4451285 120000 --- a/FileSets/v3.20~45/TileRelay.qml +++ b/FileSets/v3.20~45/TileRelay.qml @@ -1 +1 @@ -../v3.30~1/TileRelay.qml \ No newline at end of file +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/TileText.qml b/FileSets/v3.20~45/TileText.qml index 0bdf2dfe..bdba853a 120000 --- a/FileSets/v3.20~45/TileText.qml +++ b/FileSets/v3.20~45/TileText.qml @@ -1 +1 @@ -../v3.30~1/TileText.qml \ No newline at end of file +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/attributes.csv b/FileSets/v3.20~45/attributes.csv index 60c4d4d5..cfa16f00 120000 --- a/FileSets/v3.20~45/attributes.csv +++ b/FileSets/v3.20~45/attributes.csv @@ -1 +1 @@ -../v3.30~1/attributes.csv \ No newline at end of file +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~45/dbus_digitalinputs.py b/FileSets/v3.20~45/dbus_digitalinputs.py index 4d192a4b..fc5032df 120000 --- a/FileSets/v3.20~45/dbus_digitalinputs.py +++ b/FileSets/v3.20~45/dbus_digitalinputs.py @@ -1 +1 @@ -../v3.30~1/dbus_digitalinputs.py \ No newline at end of file +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~45/dbus_generator.py b/FileSets/v3.20~45/dbus_generator.py index 35a4d9de..2fb366cb 120000 --- a/FileSets/v3.20~45/dbus_generator.py +++ b/FileSets/v3.20~45/dbus_generator.py @@ -1 +1 @@ -../v3.30~1/dbus_generator.py \ No newline at end of file +../v3.30~3/dbus_generator.py \ No newline at end of file diff --git a/FileSets/v3.20~45/dbus_systemcalc.py b/FileSets/v3.20~45/dbus_systemcalc.py index 920b1405..fa243005 120000 --- a/FileSets/v3.20~45/dbus_systemcalc.py +++ b/FileSets/v3.20~45/dbus_systemcalc.py @@ -1 +1 @@ -../v3.30~1/dbus_systemcalc.py \ No newline at end of file +../v3.30~2/dbus_systemcalc.py \ No newline at end of file diff --git a/FileSets/v3.20~45/main.qml b/FileSets/v3.20~45/main.qml deleted file mode 100644 index 6df292cd..00000000 --- a/FileSets/v3.20~45/main.qml +++ /dev/null @@ -1,588 +0,0 @@ -//////// Modified to hide the OverviewTiles page -//////// Modified to substitute flow overview pages - -import QtQuick 1.1 - -import Qt.labs.components.native 1.0 -import com.victron.velib 1.0 -import "utils.js" as Utils - -PageStackWindow { - id: rootWindow - - gpsConnected: gpsFix.value === 1 - onCompletedChanged: checkAlarm() - initialPage: PageMain {} - - property VeQuickItem gpsService: VeQuickItem { uid: "dbus/com.victronenergy.system/GpsService" } - property VeQuickItem gpsFix: VeQuickItem { uid: Utils.path("dbus/", gpsService.value, "/Fix") } - property bool completed: false - property bool showAlert: NotificationCenter.alert - property bool alarm: NotificationCenter.alarm -//////// added for GuiMods flow pages - property bool overviewsLoaded: defaultOverview.valid && generatorOverview.valid && mobileOverview.valid && startWithMenu.valid && mobileOverviewEnhanced.valid && guiModsFlowOverview.valid && generatorOverviewEnhanced.valid - property string bindPrefix: "com.victronenergy.settings" - - property bool isNotificationPage: pageStack.currentPage && pageStack.currentPage.title === qsTr("Notifications") - property bool isOverviewPage: pageStack.currentPage && pageStack.currentPage.model === overviewModel; - property bool isOfflineFwUpdatePage: pageStack.currentPage && pageStack.currentPage.objectName === "offlineFwUpdatePage"; - -//////// modified for GuiMods pages - property string hubOverviewType: theSystem.systemType.valid ? - withoutGridMeter.value === 1 ? "Hub" : theSystem.systemType.value : "unknown" - property string currentHubOverview: "OverviewHub.qml" - property string currentMobileOverview: "" - property string currentGeneratorOverview: "" - - // Keep track of the current view (menu/overview) to show as default next time the - // CCGX is restarted - onIsOverviewPageChanged: startWithMenu.setValue(isOverviewPage ? 0 : 1) - - // Add the correct OverviewGridParallelEnhanced page -//////// modified for OverviewHubEnhanced page - onHubOverviewTypeChanged: selectHubOverview () - - VBusItem - { - id: guiModsFlowOverview - bind: "com.victronenergy.settings/Settings/GuiMods/FlowOverview" - onValueChanged: selectHubOverview () - } - -////// GuiMods — DarkMode - property VBusItem darkModeItem: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } - property bool darkMode: darkModeItem.valid && darkModeItem.value == 1 - -////// GuiMods — DarkMode - Rectangle { - anchors - { - fill: parent - } - color: !darkMode ? "transparent" : "#202020" - z: -1 - } - - // base a new hub selection on the hub type and the enhanced flow overview flag - function selectHubOverview () - { - var newHubOverview = currentHubOverview - // Victron stock overviews with automatic selection - if (guiModsFlowOverview.value == 0) - { - switch(hubOverviewType){ - case "Hub": - case "Hub-1": - case "Hub-2": - case "Hub-3": - case "unknown": - newHubOverview = "OverviewHub.qml" - break; - case "Hub-4": - case "ESS": - newHubOverview = "OverviewGridParallel.qml" - break; - default: - break; - } - } - // Gui Mods simple flow - else if (guiModsFlowOverview.value === 1) - { - newHubOverview = "OverviewHubEnhanced.qml" - } - // Gui Mods complex flow (AC coupled or DC coupled) - else - { - newHubOverview = "OverviewFlowComplex.qml" - } - - if (newHubOverview != currentHubOverview) - { - replaceOverview(currentHubOverview, newHubOverview); - currentHubOverview = newHubOverview - } - - // Workaround the QTBUG-17012 (only the first sentence in each case of Switch Statement can be executed) - // by adding a return statement - return - } - - VBusItem { - id: generatorOverview - bind: "com.victronenergy.settings/Settings/Relay/Function" - onValueChanged: selectGeneratorOverview () - } - - VBusItem - { - id: generatorOverviewEnhanced - bind: "com.victronenergy.settings/Settings/GuiMods/UseEnhancedGeneratorOverview" - onValueChanged: selectGeneratorOverview () - } - - VBusItem { - bind: "com.victronenergy.generator.startstop1/GensetProductId" - onValueChanged: { - // Show specific overview for FischerPanda - extraOverview("OverviewGeneratorFp.qml", value === 0xB040) - - // Show generic overview for ComAp and DSE - extraOverview("OverviewGeneratorOther.qml", - [0xB044, 0xB046].indexOf(value) > -1) - - // Switch to FP overview in case it is the default one - if (isOverviewPage) { - pageStack.currentPage.currentIndex = getDefaultOverviewIndex() - } - } - } - - function selectGeneratorOverview () - { - var newGeneratorOverview - if (generatorOverview.value === 1) - { - if (generatorOverviewEnhanced.value === 1) - newGeneratorOverview = "OverviewGeneratorRelayEnhanced.qml" - else - newGeneratorOverview = "OverviewGeneratorRelay.qml" - if (currentGeneratorOverview === "") - extraOverview (newGeneratorOverview, true) - else - replaceOverview (currentGeneratorOverview, newGeneratorOverview) - currentGeneratorOverview = newGeneratorOverview - } - else - { - // hide existing generator overview if any - if (currentGeneratorOverview != "") - { - extraOverview (currentGeneratorOverview, false) - currentGeneratorOverview = "" - } - } - } - -//////// handle OverviewMobileEnhanced page - VBusItem - { - id: mobileOverview - bind: "com.victronenergy.settings/Settings/Gui/MobileOverview" - onValueChanged: selectMobileOverview () - } - VBusItem - { - id: mobileOverviewEnhanced - bind: "com.victronenergy.settings/Settings/GuiMods/UseEnhancedMobileOverview" - onValueChanged: selectMobileOverview () - } - - // base a new mobile overview selection on the the mobile overview and enhanced mobile overview flags - function selectMobileOverview () - { - var newMobileOverview - if (mobileOverview.value === 1) - { - if (mobileOverviewEnhanced.value === 1) - newMobileOverview = "OverviewMobileEnhanced.qml" - else - newMobileOverview = "OverviewMobile.qml" - if (currentMobileOverview === "") - extraOverview (newMobileOverview, true) - else - replaceOverview (currentMobileOverview, newMobileOverview) - currentMobileOverview = newMobileOverview - } - else - { - // hide existing mobile overview if any - if (currentMobileOverview != "") - { - extraOverview (currentMobileOverview, false) - currentMobileOverview = "" - } - } - } - -//////// show/hide the OverviewTiles page - VBusItem - { - id: showOverviewTiles - bind: "com.victronenergy.settings/Settings/GuiMods/ShowTileOverview" - onValueChanged: extraOverview ("OverviewTiles.qml", value === 1) - } - -//////// show/hide the OverviewRelays page - VBusItem { - id: showOverviewRelays - bind: "com.victronenergy.settings/Settings/GuiMods/ShowRelayOverview" - onValueChanged: extraOverview ("OverviewRelays.qml", value === 1) - } - -//////// show/hide the Overview Tanks/Temps/Digital Inputs page - VBusItem { - id: showOverviewTanksTemps - bind: "com.victronenergy.settings/Settings/GuiMods/ShowTanksTempsDigIn" - onValueChanged: extraOverview ("OverviewTanksTempsDigInputs.qml", value === 1) - } - - VBusItem { - id: tanksOverview - bind: "com.victronenergy.settings/Settings/Gui/TanksOverview" - onValueChanged:{ - extraOverview("OverviewTanks.qml", value === 1) - } - } - - VBusItem { - id: startWithMenu - bind: "com.victronenergy.settings/Settings/Gui/StartWithMenuView" - } - - VBusItem { - id: withoutGridMeter - bind: "com.victronenergy.settings/Settings/CGwacs/RunWithoutGridMeter" - } - - - VBusItem { - id: defaultOverview - bind: "com.victronenergy.settings/Settings/Gui/DefaultOverview" - } - - VBusItem { - id: touchEnabled - bind: "com.victronenergy.settings/Settings/Gui/TouchEnabled" - onValueChanged: { - if (completed && value !== undefined) - toast.createToast(value ? qsTr("Touch input on") : qsTr("Touch input off"), 3000) - } - } - - // Note: finding a firmware image on the storage device is error 4 for vrm storage - // since it should not be used for logging. That fact is used here to determine if - // there is a firmware image. - Connections { - target: storageEvents - onVrmStorageError: { - if (error === 4) { - setTopPage(offlineFwUpdates) - } - } - } - - Connections { - target: vePlatform - onMouseRejected: toast.createToast(qsTr("Touch input disabled"), 1000) - } - - onAlarmChanged: { - if (completed) - checkAlarm() - } - - // always keep track of system information - HubData { - id: theSystem - } - - // note: used for leaving the overviews as well - function backToMainMenu() - { - pageStack.pop(initialPage); - } - - Toast { - id: toast - transform: Scale { - xScale: screen.scaleX - yScale: screen.scaleY - origin.x: toast.width / 2 - origin.y: toast.height / 2 - } - } - - SignalToaster {} - - ToolbarHandlerPages { - id: mainToolbarHandler - isDefault: true - } - - ToolBarLayout { - id: mbTools - height: parent.height - -//// GuiMods - DarkMode - Row - { - spacing: 0 - anchors.fill: parent - Item { - id: pagesItem - anchors.verticalCenter: parent.verticalCenter - height: mbTools.height - width: 170 - - MouseArea { - anchors.fill: parent - onClicked: { - if (pageStack.currentPage) - pageStack.currentPage.toolbarHandler.leftAction(true) - } - } - - Row { - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - - MbIcon { - anchors.verticalCenter: parent.verticalCenter - iconId: pageStack.currentPage ? pageStack.currentPage.leftIcon : "" - } - - Text { - anchors.verticalCenter: parent.verticalCenter - text: pageStack.currentPage ? pageStack.currentPage.leftText : "" - color: "white" - font.bold: true - font.pixelSize: 16 - } - } - } - - Item { - anchors.verticalCenter: parent.verticalCenter - height: mbTools.height - width: mbTools.width - pagesItem.width - menusItem.width - centerScrollIndicator.width - - MouseArea - { - anchors.fill: parent - onClicked: - { - if (darkModeItem.valid) - darkModeItem.setValue (! darkMode) - } - } - - Text - { - anchors.fill: parent - horizontalAlignment: Text.AlignHCenter - text: qsTr ("change to") + "\n" + (darkMode ? qsTr ("Light mode") : qsTr ("Dark mode")) - color: "white" - font.bold: true - font.pixelSize: 12 - visible: darkModeItem.valid - } - } - Item - { - id: centerScrollIndicator - anchors.verticalCenter: parent.verticalCenter - height: mbTools.height - width: 20 - MbIcon { - anchors.verticalCenter: parent.verticalCenter - iconId: pageStack.currentPage ? pageStack.currentPage.scrollIndicator : "" - } - } - - Item { - id: menusItem - anchors.verticalCenter: parent.verticalCenter - height: mbTools.height - width: pagesItem.width - - MouseArea { - anchors.fill: parent - onClicked: { - if (pageStack.currentPage) - pageStack.currentPage.toolbarHandler.rightAction(true) - } - } - - Row { - anchors.centerIn: parent - - MbIcon { - iconId: pageStack.currentPage ? pageStack.currentPage.rightIcon : "" - anchors.verticalCenter: parent.verticalCenter - } - - Text { - text: pageStack.currentPage ? pageStack.currentPage.rightText : "" - anchors.verticalCenter: parent.verticalCenter - color: "white" - font.bold: true - font.pixelSize: 16 - } - } - } - } - } - - Component.onCompleted: { - completed = true - } - - ListModel { - id: overviewModel - ListElement { - pageSource: "OverviewHub.qml" - } -//////// (commented out) -- added dynamically above -// ListElement { -// pageSource: "OverviewTiles.qml" -// } - } - - Component { - id: overviewComponent - PageFlow { - // Display default overview when loaded - defaultIndex: getDefaultOverviewIndex() - // Store the current overview page as default - onCurrentIndexChanged: if (active) defaultOverview.setValue(overviewModel.get(currentIndex).pageSource.replace(".qml", "")) - model: overviewModel - } - } - - // When all the related settings items are valid, show the overview page if was the last oppened page - // before restarting - Timer { - interval: 2000 - running: completed && overviewsLoaded && startWithMenu.valid - onTriggered: - { -//////// modified for OverviewGridParallelEnhanced page - selectHubOverview () - if (startWithMenu.value === 0) showOverview() - } - } - - function getDefaultOverviewIndex() - { - if(!defaultOverview.valid) - return 0 - for (var i = 0; i < overviewModel.count; i++){ - if (overviewModel.get(i).pageSource.replace(".qml", "") === defaultOverview.value) { - return i - } - } - return 0 - } - - Component { - id: noticationsComponent - PageNotifications {} - } - - Component { - id: offlineFwUpdates - PageSettingsFirmwareOffline { checkOnCompleted: true} - - } - - // Add or remove extra overviews. for example, generator overview - // shouldn't be shown if the start/stop functionality is not enabled. - // Index parameter is optional, usefull to keep an order. - function extraOverview(name, show, index) - { - var i = 0 - if (show) { - if (index !== undefined) { - if (overviewModel.get(index).pageSource === name) - return - // First append the page - overviewModel.append({"pageSource": name}) - // Then move all the pages behind index - overviewModel.move(index, overviewModel.count - 2, overviewModel.count - 2) - } else { - for (i = 0; i < overviewModel.count; i++) - if (overviewModel.get(i).pageSource === name) - // Don't append if already exists - return - overviewModel.append({"pageSource": name}) - } - } else { - for (i = 0; i < overviewModel.count; i++) - if (overviewModel.get(i).pageSource === name) - overviewModel.remove(i) - } - } - -//////// Modified to append page if oldPage not found - function replaceOverview(oldPage, newPage) - { - for (var i = 0; i < overviewModel.count; i++) - { - if (overviewModel.get(i).pageSource === oldPage) - { - overviewModel.get(i).pageSource = newPage - return - } - } - // here if oldPage wasn't found -- append the new page - overviewModel.append({"pageSource": newPage}) - } - - // Central mover for the ball animation on the overviews - // Instead of using a timer per line, using a central one - // reduces the CPU usage a little bit and makes the animations - // smoother. - Timer { - id: mover - property double pos: _counter / _loops - property int _counter - property int _loops: 13 - - interval: 100 - running: true - repeat: true - onTriggered: if (_counter >= (_loops - 1)) _counter = 0; else _counter++ - } - - // If an overview or notifications is active, the new page will replace it - // instead to be pushed. This way we prevent an unwanted stackpage depth - // increment everytime another page wants to be on top. - function setTopPage(page) - { - if (touchEnabled.valid && !touchEnabled.value) - return - - if (isNotificationPage || isOverviewPage || isOfflineFwUpdatePage) - rootWindow.pageStack.replace(page); - else - rootWindow.pageStack.push(page); - } - - function spuriousKeyPress() - { - return !pageStack.currentPage || !pageStack.currentPage.active - } - - function showOverview() - { - if (spuriousKeyPress() || isOverviewPage) - return - setTopPage(overviewComponent) - } - - function showPageNotifications() - { - if (spuriousKeyPress() || isNotificationPage) - return - setTopPage(noticationsComponent) - } - - function checkAlarm() - { - if (alarm) - showPageNotifications() - } - - FirmwareUpdate { id: firmwareUpdate } -} diff --git a/FileSets/v3.20~45/main.qml b/FileSets/v3.20~45/main.qml new file mode 120000 index 00000000..4a7bfdf7 --- /dev/null +++ b/FileSets/v3.20~45/main.qml @@ -0,0 +1 @@ +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~45/startstop.py b/FileSets/v3.20~45/startstop.py index 7dd17785..9e75bfdc 120000 --- a/FileSets/v3.20~45/startstop.py +++ b/FileSets/v3.20~45/startstop.py @@ -1 +1 @@ -../v3.30~1/startstop.py \ No newline at end of file +../v3.30~3/startstop.py \ No newline at end of file diff --git a/FileSets/v3.20~45/styles.css b/FileSets/v3.20~45/styles.css index 8f367634..ddb110c3 120000 --- a/FileSets/v3.20~45/styles.css +++ b/FileSets/v3.20~45/styles.css @@ -1 +1 @@ -../v3.30~1/styles.css \ No newline at end of file +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~46/Battery.qml b/FileSets/v3.20~46/Battery.qml new file mode 120000 index 00000000..b8b3eac7 --- /dev/null +++ b/FileSets/v3.20~46/Battery.qml @@ -0,0 +1 @@ +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/COMPLETE b/FileSets/v3.20~46/COMPLETE new file mode 100644 index 00000000..e69de29b diff --git a/FileSets/v3.20~46/DetailAcInput.qml b/FileSets/v3.20~46/DetailAcInput.qml new file mode 120000 index 00000000..d3f6768e --- /dev/null +++ b/FileSets/v3.20~46/DetailAcInput.qml @@ -0,0 +1 @@ +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/DetailInverter.qml b/FileSets/v3.20~46/DetailInverter.qml new file mode 120000 index 00000000..9b210604 --- /dev/null +++ b/FileSets/v3.20~46/DetailInverter.qml @@ -0,0 +1 @@ +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/DetailLoadsCombined.qml b/FileSets/v3.20~46/DetailLoadsCombined.qml new file mode 120000 index 00000000..1e660dfd --- /dev/null +++ b/FileSets/v3.20~46/DetailLoadsCombined.qml @@ -0,0 +1 @@ +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/DetailLoadsOnInput.qml b/FileSets/v3.20~46/DetailLoadsOnInput.qml new file mode 120000 index 00000000..48593558 --- /dev/null +++ b/FileSets/v3.20~46/DetailLoadsOnInput.qml @@ -0,0 +1 @@ +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/DetailLoadsOnOutput.qml b/FileSets/v3.20~46/DetailLoadsOnOutput.qml new file mode 120000 index 00000000..55830b7c --- /dev/null +++ b/FileSets/v3.20~46/DetailLoadsOnOutput.qml @@ -0,0 +1 @@ +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/HubData.qml b/FileSets/v3.20~46/HubData.qml new file mode 120000 index 00000000..2cf76fc5 --- /dev/null +++ b/FileSets/v3.20~46/HubData.qml @@ -0,0 +1 @@ +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/LINKS_ONLY b/FileSets/v3.20~46/LINKS_ONLY new file mode 100644 index 00000000..e69de29b diff --git a/FileSets/v3.20~46/MbEditBox.qml b/FileSets/v3.20~46/MbEditBox.qml new file mode 120000 index 00000000..cdef216b --- /dev/null +++ b/FileSets/v3.20~46/MbEditBox.qml @@ -0,0 +1 @@ +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/MbEditBoxDateTime.qml b/FileSets/v3.20~46/MbEditBoxDateTime.qml new file mode 120000 index 00000000..2395f459 --- /dev/null +++ b/FileSets/v3.20~46/MbEditBoxDateTime.qml @@ -0,0 +1 @@ +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/MbItem.qml b/FileSets/v3.20~46/MbItem.qml new file mode 120000 index 00000000..b9d9a145 --- /dev/null +++ b/FileSets/v3.20~46/MbItem.qml @@ -0,0 +1 @@ +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/MbItemDigitalInput.qml b/FileSets/v3.20~46/MbItemDigitalInput.qml new file mode 120000 index 00000000..206a42f1 --- /dev/null +++ b/FileSets/v3.20~46/MbItemDigitalInput.qml @@ -0,0 +1 @@ +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/MbSpinBox.qml b/FileSets/v3.20~46/MbSpinBox.qml new file mode 120000 index 00000000..f016a38d --- /dev/null +++ b/FileSets/v3.20~46/MbSpinBox.qml @@ -0,0 +1 @@ +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/MbStyle.qml b/FileSets/v3.20~46/MbStyle.qml new file mode 120000 index 00000000..d8e963e2 --- /dev/null +++ b/FileSets/v3.20~46/MbStyle.qml @@ -0,0 +1 @@ +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/MbSubMenu.qml b/FileSets/v3.20~46/MbSubMenu.qml new file mode 120000 index 00000000..a06201d7 --- /dev/null +++ b/FileSets/v3.20~46/MbSubMenu.qml @@ -0,0 +1 @@ +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/Multi.qml b/FileSets/v3.20~46/Multi.qml new file mode 120000 index 00000000..2d2550aa --- /dev/null +++ b/FileSets/v3.20~46/Multi.qml @@ -0,0 +1 @@ +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/ObjectAcConnection.qml b/FileSets/v3.20~46/ObjectAcConnection.qml new file mode 120000 index 00000000..ff70c34a --- /dev/null +++ b/FileSets/v3.20~46/ObjectAcConnection.qml @@ -0,0 +1 @@ +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~46/OverviewAcValuesEnhanced.qml new file mode 120000 index 00000000..f55dea21 --- /dev/null +++ b/FileSets/v3.20~46/OverviewAcValuesEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewBox.qml b/FileSets/v3.20~46/OverviewBox.qml new file mode 120000 index 00000000..edafad16 --- /dev/null +++ b/FileSets/v3.20~46/OverviewBox.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewConnection.qml b/FileSets/v3.20~46/OverviewConnection.qml new file mode 120000 index 00000000..cbc21d5c --- /dev/null +++ b/FileSets/v3.20~46/OverviewConnection.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewConnectionEnd.qml b/FileSets/v3.20~46/OverviewConnectionEnd.qml new file mode 120000 index 00000000..56d04b7d --- /dev/null +++ b/FileSets/v3.20~46/OverviewConnectionEnd.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewFlowComplex.qml b/FileSets/v3.20~46/OverviewFlowComplex.qml new file mode 120000 index 00000000..df60b754 --- /dev/null +++ b/FileSets/v3.20~46/OverviewFlowComplex.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~46/OverviewGeneratorEnhanced.qml new file mode 120000 index 00000000..6fc0641d --- /dev/null +++ b/FileSets/v3.20~46/OverviewGeneratorEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~46/OverviewGeneratorRelayEnhanced.qml new file mode 120000 index 00000000..3e103671 --- /dev/null +++ b/FileSets/v3.20~46/OverviewGeneratorRelayEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewGridParallel.qml b/FileSets/v3.20~46/OverviewGridParallel.qml new file mode 120000 index 00000000..51daafd3 --- /dev/null +++ b/FileSets/v3.20~46/OverviewGridParallel.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewHub.qml b/FileSets/v3.20~46/OverviewHub.qml new file mode 120000 index 00000000..78e92833 --- /dev/null +++ b/FileSets/v3.20~46/OverviewHub.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewHubEnhanced.qml b/FileSets/v3.20~46/OverviewHubEnhanced.qml new file mode 120000 index 00000000..90bbde0c --- /dev/null +++ b/FileSets/v3.20~46/OverviewHubEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewMobileEnhanced.qml b/FileSets/v3.20~46/OverviewMobileEnhanced.qml new file mode 120000 index 00000000..d5387aa1 --- /dev/null +++ b/FileSets/v3.20~46/OverviewMobileEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewSolarCharger.qml b/FileSets/v3.20~46/OverviewSolarCharger.qml new file mode 120000 index 00000000..88c80efe --- /dev/null +++ b/FileSets/v3.20~46/OverviewSolarCharger.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewSolarInverter.qml b/FileSets/v3.20~46/OverviewSolarInverter.qml new file mode 120000 index 00000000..ee8efeaa --- /dev/null +++ b/FileSets/v3.20~46/OverviewSolarInverter.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewTankDelegate.qml b/FileSets/v3.20~46/OverviewTankDelegate.qml new file mode 120000 index 00000000..c171c8af --- /dev/null +++ b/FileSets/v3.20~46/OverviewTankDelegate.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewTanks.qml b/FileSets/v3.20~46/OverviewTanks.qml new file mode 120000 index 00000000..5e40af81 --- /dev/null +++ b/FileSets/v3.20~46/OverviewTanks.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~46/OverviewTanksTempsDigInputs.qml new file mode 120000 index 00000000..8528c853 --- /dev/null +++ b/FileSets/v3.20~46/OverviewTanksTempsDigInputs.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/PageDigitalInput.qml b/FileSets/v3.20~46/PageDigitalInput.qml new file mode 120000 index 00000000..a76de031 --- /dev/null +++ b/FileSets/v3.20~46/PageDigitalInput.qml @@ -0,0 +1 @@ +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/PageGenerator.qml b/FileSets/v3.20~46/PageGenerator.qml new file mode 120000 index 00000000..024675a9 --- /dev/null +++ b/FileSets/v3.20~46/PageGenerator.qml @@ -0,0 +1 @@ +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/PageMain.qml b/FileSets/v3.20~46/PageMain.qml new file mode 120000 index 00000000..a2458566 --- /dev/null +++ b/FileSets/v3.20~46/PageMain.qml @@ -0,0 +1 @@ +../v3.20~49/PageMain.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/PageSettingsDisplay.qml b/FileSets/v3.20~46/PageSettingsDisplay.qml new file mode 120000 index 00000000..390750b9 --- /dev/null +++ b/FileSets/v3.20~46/PageSettingsDisplay.qml @@ -0,0 +1 @@ +../v3.30~2/PageSettingsDisplay.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/PageSettingsGenerator.qml b/FileSets/v3.20~46/PageSettingsGenerator.qml new file mode 120000 index 00000000..4edff025 --- /dev/null +++ b/FileSets/v3.20~46/PageSettingsGenerator.qml @@ -0,0 +1 @@ +../v3.30~3/PageSettingsGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/PageSettingsGuiMods.qml b/FileSets/v3.20~46/PageSettingsGuiMods.qml new file mode 120000 index 00000000..dfa6dcc8 --- /dev/null +++ b/FileSets/v3.20~46/PageSettingsGuiMods.qml @@ -0,0 +1 @@ +../v3.20~49/PageSettingsGuiMods.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/PageSettingsRelay.qml b/FileSets/v3.20~46/PageSettingsRelay.qml new file mode 120000 index 00000000..88c4e288 --- /dev/null +++ b/FileSets/v3.20~46/PageSettingsRelay.qml @@ -0,0 +1 @@ +../v3.20~49/PageSettingsRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/PowerGauge.qml b/FileSets/v3.20~46/PowerGauge.qml new file mode 120000 index 00000000..eb1a8641 --- /dev/null +++ b/FileSets/v3.20~46/PowerGauge.qml @@ -0,0 +1 @@ +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/Tile.qml b/FileSets/v3.20~46/Tile.qml new file mode 120000 index 00000000..c13fe780 --- /dev/null +++ b/FileSets/v3.20~46/Tile.qml @@ -0,0 +1 @@ +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/TileDigIn.qml b/FileSets/v3.20~46/TileDigIn.qml new file mode 120000 index 00000000..972f8638 --- /dev/null +++ b/FileSets/v3.20~46/TileDigIn.qml @@ -0,0 +1 @@ +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/TileRelay.qml b/FileSets/v3.20~46/TileRelay.qml new file mode 120000 index 00000000..f4451285 --- /dev/null +++ b/FileSets/v3.20~46/TileRelay.qml @@ -0,0 +1 @@ +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/TileText.qml b/FileSets/v3.20~46/TileText.qml new file mode 120000 index 00000000..bdba853a --- /dev/null +++ b/FileSets/v3.20~46/TileText.qml @@ -0,0 +1 @@ +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/attributes.csv b/FileSets/v3.20~46/attributes.csv new file mode 120000 index 00000000..cfa16f00 --- /dev/null +++ b/FileSets/v3.20~46/attributes.csv @@ -0,0 +1 @@ +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~46/dbus_digitalinputs.py b/FileSets/v3.20~46/dbus_digitalinputs.py new file mode 120000 index 00000000..fc5032df --- /dev/null +++ b/FileSets/v3.20~46/dbus_digitalinputs.py @@ -0,0 +1 @@ +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~46/dbus_generator.py b/FileSets/v3.20~46/dbus_generator.py new file mode 120000 index 00000000..2fb366cb --- /dev/null +++ b/FileSets/v3.20~46/dbus_generator.py @@ -0,0 +1 @@ +../v3.30~3/dbus_generator.py \ No newline at end of file diff --git a/FileSets/v3.20~46/dbus_systemcalc.py b/FileSets/v3.20~46/dbus_systemcalc.py new file mode 120000 index 00000000..fa243005 --- /dev/null +++ b/FileSets/v3.20~46/dbus_systemcalc.py @@ -0,0 +1 @@ +../v3.30~2/dbus_systemcalc.py \ No newline at end of file diff --git a/FileSets/v3.20~46/main.qml b/FileSets/v3.20~46/main.qml new file mode 120000 index 00000000..4a7bfdf7 --- /dev/null +++ b/FileSets/v3.20~46/main.qml @@ -0,0 +1 @@ +../v3.20~49/main.qml \ No newline at end of file diff --git a/FileSets/v3.20~46/startstop.py b/FileSets/v3.20~46/startstop.py new file mode 120000 index 00000000..9e75bfdc --- /dev/null +++ b/FileSets/v3.20~46/startstop.py @@ -0,0 +1 @@ +../v3.30~3/startstop.py \ No newline at end of file diff --git a/FileSets/v3.20~46/styles.css b/FileSets/v3.20~46/styles.css new file mode 120000 index 00000000..ddb110c3 --- /dev/null +++ b/FileSets/v3.20~46/styles.css @@ -0,0 +1 @@ +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.20~49/Battery.qml b/FileSets/v3.20~49/Battery.qml new file mode 120000 index 00000000..b8b3eac7 --- /dev/null +++ b/FileSets/v3.20~49/Battery.qml @@ -0,0 +1 @@ +../v3.30~3/Battery.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/COMPLETE b/FileSets/v3.20~49/COMPLETE new file mode 100644 index 00000000..e69de29b diff --git a/FileSets/v3.20~49/DetailAcInput.qml b/FileSets/v3.20~49/DetailAcInput.qml new file mode 120000 index 00000000..d3f6768e --- /dev/null +++ b/FileSets/v3.20~49/DetailAcInput.qml @@ -0,0 +1 @@ +../v3.30~3/DetailAcInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/DetailInverter.qml b/FileSets/v3.20~49/DetailInverter.qml new file mode 120000 index 00000000..9b210604 --- /dev/null +++ b/FileSets/v3.20~49/DetailInverter.qml @@ -0,0 +1 @@ +../v3.30~3/DetailInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/DetailLoadsCombined.qml b/FileSets/v3.20~49/DetailLoadsCombined.qml new file mode 120000 index 00000000..1e660dfd --- /dev/null +++ b/FileSets/v3.20~49/DetailLoadsCombined.qml @@ -0,0 +1 @@ +../v3.30~3/DetailLoadsCombined.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/DetailLoadsOnInput.qml b/FileSets/v3.20~49/DetailLoadsOnInput.qml new file mode 120000 index 00000000..48593558 --- /dev/null +++ b/FileSets/v3.20~49/DetailLoadsOnInput.qml @@ -0,0 +1 @@ +../v3.30~3/DetailLoadsOnInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/DetailLoadsOnOutput.qml b/FileSets/v3.20~49/DetailLoadsOnOutput.qml new file mode 120000 index 00000000..55830b7c --- /dev/null +++ b/FileSets/v3.20~49/DetailLoadsOnOutput.qml @@ -0,0 +1 @@ +../v3.30~3/DetailLoadsOnOutput.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/HubData.qml b/FileSets/v3.20~49/HubData.qml new file mode 120000 index 00000000..2cf76fc5 --- /dev/null +++ b/FileSets/v3.20~49/HubData.qml @@ -0,0 +1 @@ +../v3.30~3/HubData.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/MbEditBox.qml b/FileSets/v3.20~49/MbEditBox.qml new file mode 120000 index 00000000..cdef216b --- /dev/null +++ b/FileSets/v3.20~49/MbEditBox.qml @@ -0,0 +1 @@ +../v3.30~3/MbEditBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/MbEditBoxDateTime.qml b/FileSets/v3.20~49/MbEditBoxDateTime.qml new file mode 120000 index 00000000..2395f459 --- /dev/null +++ b/FileSets/v3.20~49/MbEditBoxDateTime.qml @@ -0,0 +1 @@ +../v3.30~3/MbEditBoxDateTime.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/MbItem.qml b/FileSets/v3.20~49/MbItem.qml new file mode 120000 index 00000000..b9d9a145 --- /dev/null +++ b/FileSets/v3.20~49/MbItem.qml @@ -0,0 +1 @@ +../v3.30~3/MbItem.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/MbItemDigitalInput.qml b/FileSets/v3.20~49/MbItemDigitalInput.qml new file mode 120000 index 00000000..206a42f1 --- /dev/null +++ b/FileSets/v3.20~49/MbItemDigitalInput.qml @@ -0,0 +1 @@ +../v3.30~3/MbItemDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/MbSpinBox.qml b/FileSets/v3.20~49/MbSpinBox.qml new file mode 120000 index 00000000..f016a38d --- /dev/null +++ b/FileSets/v3.20~49/MbSpinBox.qml @@ -0,0 +1 @@ +../v3.30~3/MbSpinBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/MbStyle.qml b/FileSets/v3.20~49/MbStyle.qml new file mode 120000 index 00000000..d8e963e2 --- /dev/null +++ b/FileSets/v3.20~49/MbStyle.qml @@ -0,0 +1 @@ +../v3.30~3/MbStyle.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/MbSubMenu.qml b/FileSets/v3.20~49/MbSubMenu.qml new file mode 120000 index 00000000..a06201d7 --- /dev/null +++ b/FileSets/v3.20~49/MbSubMenu.qml @@ -0,0 +1 @@ +../v3.30~3/MbSubMenu.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/Multi.qml b/FileSets/v3.20~49/Multi.qml new file mode 120000 index 00000000..2d2550aa --- /dev/null +++ b/FileSets/v3.20~49/Multi.qml @@ -0,0 +1 @@ +../v3.30~3/Multi.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/ObjectAcConnection.qml b/FileSets/v3.20~49/ObjectAcConnection.qml new file mode 120000 index 00000000..ff70c34a --- /dev/null +++ b/FileSets/v3.20~49/ObjectAcConnection.qml @@ -0,0 +1 @@ +../v3.30~3/ObjectAcConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewAcValuesEnhanced.qml b/FileSets/v3.20~49/OverviewAcValuesEnhanced.qml new file mode 120000 index 00000000..f55dea21 --- /dev/null +++ b/FileSets/v3.20~49/OverviewAcValuesEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewAcValuesEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewBox.qml b/FileSets/v3.20~49/OverviewBox.qml new file mode 120000 index 00000000..edafad16 --- /dev/null +++ b/FileSets/v3.20~49/OverviewBox.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewBox.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewConnection.qml b/FileSets/v3.20~49/OverviewConnection.qml new file mode 120000 index 00000000..cbc21d5c --- /dev/null +++ b/FileSets/v3.20~49/OverviewConnection.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewConnection.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewConnectionEnd.qml b/FileSets/v3.20~49/OverviewConnectionEnd.qml new file mode 120000 index 00000000..56d04b7d --- /dev/null +++ b/FileSets/v3.20~49/OverviewConnectionEnd.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewConnectionEnd.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewFlowComplex.qml b/FileSets/v3.20~49/OverviewFlowComplex.qml new file mode 120000 index 00000000..df60b754 --- /dev/null +++ b/FileSets/v3.20~49/OverviewFlowComplex.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewFlowComplex.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewGeneratorEnhanced.qml b/FileSets/v3.20~49/OverviewGeneratorEnhanced.qml new file mode 120000 index 00000000..6fc0641d --- /dev/null +++ b/FileSets/v3.20~49/OverviewGeneratorEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewGeneratorEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.20~49/OverviewGeneratorRelayEnhanced.qml new file mode 120000 index 00000000..3e103671 --- /dev/null +++ b/FileSets/v3.20~49/OverviewGeneratorRelayEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewGeneratorRelayEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewGridParallel.qml b/FileSets/v3.20~49/OverviewGridParallel.qml new file mode 120000 index 00000000..51daafd3 --- /dev/null +++ b/FileSets/v3.20~49/OverviewGridParallel.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewGridParallel.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewHub.qml b/FileSets/v3.20~49/OverviewHub.qml new file mode 120000 index 00000000..78e92833 --- /dev/null +++ b/FileSets/v3.20~49/OverviewHub.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewHub.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewHubEnhanced.qml b/FileSets/v3.20~49/OverviewHubEnhanced.qml new file mode 120000 index 00000000..90bbde0c --- /dev/null +++ b/FileSets/v3.20~49/OverviewHubEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewHubEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewMobileEnhanced.qml b/FileSets/v3.20~49/OverviewMobileEnhanced.qml new file mode 120000 index 00000000..d5387aa1 --- /dev/null +++ b/FileSets/v3.20~49/OverviewMobileEnhanced.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewMobileEnhanced.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewSolarCharger.qml b/FileSets/v3.20~49/OverviewSolarCharger.qml new file mode 120000 index 00000000..88c80efe --- /dev/null +++ b/FileSets/v3.20~49/OverviewSolarCharger.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewSolarCharger.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewSolarInverter.qml b/FileSets/v3.20~49/OverviewSolarInverter.qml new file mode 120000 index 00000000..ee8efeaa --- /dev/null +++ b/FileSets/v3.20~49/OverviewSolarInverter.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewSolarInverter.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewTankDelegate.qml b/FileSets/v3.20~49/OverviewTankDelegate.qml new file mode 120000 index 00000000..c171c8af --- /dev/null +++ b/FileSets/v3.20~49/OverviewTankDelegate.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewTankDelegate.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewTanks.qml b/FileSets/v3.20~49/OverviewTanks.qml new file mode 120000 index 00000000..5e40af81 --- /dev/null +++ b/FileSets/v3.20~49/OverviewTanks.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewTanks.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/OverviewTanksTempsDigInputs.qml b/FileSets/v3.20~49/OverviewTanksTempsDigInputs.qml new file mode 120000 index 00000000..8528c853 --- /dev/null +++ b/FileSets/v3.20~49/OverviewTanksTempsDigInputs.qml @@ -0,0 +1 @@ +../v3.30~3/OverviewTanksTempsDigInputs.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/PageDigitalInput.qml b/FileSets/v3.20~49/PageDigitalInput.qml new file mode 120000 index 00000000..a76de031 --- /dev/null +++ b/FileSets/v3.20~49/PageDigitalInput.qml @@ -0,0 +1 @@ +../v3.30~3/PageDigitalInput.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/PageGenerator.qml b/FileSets/v3.20~49/PageGenerator.qml new file mode 120000 index 00000000..024675a9 --- /dev/null +++ b/FileSets/v3.20~49/PageGenerator.qml @@ -0,0 +1 @@ +../v3.30~3/PageGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/PageMain.qml b/FileSets/v3.20~49/PageMain.qml new file mode 100644 index 00000000..9156b68c --- /dev/null +++ b/FileSets/v3.20~49/PageMain.qml @@ -0,0 +1,293 @@ +//////// GuiMods modified order to put Settings, then Notifications at top of list + +import QtQuick 1.1 +import "utils.js" as Utils +import com.victron.velib 1.0 + +MbPage { + id: root + title: qsTr("Device List") + +//////// GuiMods put Settings, Notifications, Remove disconnected... at top of list + property VBusItem moveSettings: VBusItem { id: moveSettings; bind: Utils.path("com.victronenergy.settings", "/Settings/GuiMods/MoveSettings")} + property bool settingsAtTop: moveSettings.valid && moveSettings.value === 1 + + model: VisualModels { +//////// GuiMods put Settings, Notifications, Remove disconnected... at top of list + VisibleItemModel { + MbSubMenu { + description: qsTr("Settings") + subpage: Component { PageSettings {} } + show: settingsAtTop + } + + MbSubMenu { + id: menuNotificationsTop + description: qsTr("Notifications") + item: VBusItem { + property variant active: NotificationCenter.notifications.filter( + function isActive(obj) { return obj.active} ) + value: active.length > 0 ? active.length : "" + } + subpage: Component { PageNotifications {} } + show: settingsAtTop + } + + MbOK { + description: qsTr("Remove disconnected devices") + value: qsTr("Press to remove") + show: settingsAtTop && deviceList.disconnectedDevices != 0 + editable: true + + function clicked() { + listview.decrementCurrentIndex() + deviceList.removeDisconnected() + } + } + } +//////// end GuiMods put Settings, Notifications, Remove disconnected... at top of list + + VisualDataModel { + model: VeSortFilterProxyModel { + model: DeviceList { + id: deviceList + onRowsAboutToBeRemoved: { + for (var i = first; i <= last; i++) + deviceList.page(i).destroy() + } + } + sortRole: DeviceList.DescriptionRole + dynamicSortFilter: true + naturalSort: true + sortCaseSensitivity: Qt.CaseInsensitive + } + + delegate: MbDevice { + iconId: "icon-toolbar-enter" + service: model.page.service + subpage: model.page + } + } + VisibleItemModel { + MbSubMenu { + id: menuNotifications + description: qsTr("Notifications") + item: VBusItem { + property variant active: NotificationCenter.notifications.filter( + function isActive(obj) { return obj.active} ) + value: active.length > 0 ? active.length : "" + } + subpage: Component { PageNotifications {} } +//////// GuiMods hide this if added at top + show: !settingsAtTop + } + + MbSubMenu { + description: qsTr("Settings") + subpage: Component { PageSettings {} } +//////// GuiMods hide this if added at top + show: !settingsAtTop + } + + MbOK { + description: qsTr("Remove disconnected devices") + value: qsTr("Press to remove") +//////// GuiMods hide this if added at top + show: !settingsAtTop && deviceList.disconnectedDevices != 0 + editable: true + + function clicked() { + listview.decrementCurrentIndex() + deviceList.removeDisconnected() + } + } + } + } + + Component { + id: vebusPage + PageVebus {} + } + + Component { + id: multiRsPage + PageMultiRs {} + } + + Component { + id: batteryPage + PageBattery {} + } + + Component { + id: solarChargerPage + PageSolarCharger {} + } + + Component { + id: acInPage + PageAcIn {} + } + + Component { + id: acChargerPage + PageAcCharger {} + } + + Component { + id: tankPage + PageTankSensor {} + } + + Component { + id: motorDrivePage + PageMotorDrive {} + } + + Component { + id: inverterPage + PageInverter {} + } + + Component { + id: pulseCounterPage + PagePulseCounter {} + } + + Component { + id: digitalInputPage + PageDigitalInput {} + } + + Component { + id: temperatureSensorPage + PageTemperatureSensor {} + } + + Component { + id: unsupportedDevicePage + PageUnsupportedDevice {} + } + + Component { + id: meteoDevicePage + PageMeteo {} + } + + Component { + id: evChargerPage + PageEvCharger {} + } + + Component { + id: dcMeterPage + PageDcMeter {} + } + + Component { + id: alternatorPage + PageAlternator {} + } + + Component { + id: dcDcConverterPage + PageDcDcConverter {} + } + + function addService(service) + { + var name = service.name + + var page + switch(service.type) + { + case DBusService.DBUS_SERVICE_MULTI: + page = vebusPage + break; + case DBusService.DBUS_SERVICE_MULTI_RS: + page = multiRsPage + break; + case DBusService.DBUS_SERVICE_BATTERY: + page = batteryPage + break; + case DBusService.DBUS_SERVICE_SOLAR_CHARGER: + page = solarChargerPage + break; + case DBusService.DBUS_SERVICE_PV_INVERTER: + page = acInPage + break; + case DBusService.DBUS_SERVICE_AC_CHARGER: + page = acChargerPage + break; + case DBusService.DBUS_SERVICE_TANK: + page = tankPage + break; + case DBusService.DBUS_SERVICE_GRIDMETER: + page = acInPage + break + case DBusService.DBUS_SERVICE_GENSET: + page = acInPage + break + case DBusService.DBUS_SERVICE_MOTOR_DRIVE: + page = motorDrivePage + break + case DBusService.DBUS_SERVICE_INVERTER: + page = inverterPage + break; + case DBusService.DBUS_SERVICE_TEMPERATURE_SENSOR: + page = temperatureSensorPage + break; + case DBusService.DBUS_SERVICE_SYSTEM_CALC: + return; + case DBusService.DBUS_SERVICE_DIGITAL_INPUT: + page = digitalInputPage + break; + case DBusService.DBUS_SERVICE_PULSE_COUNTER: + page = pulseCounterPage + break; + case DBusService.DBUS_SERVICE_UNSUPPORTED: + page = unsupportedDevicePage + break; + case DBusService.DBUS_SERVICE_METEO: + page = meteoDevicePage + break; + case DBusService.DBUS_SERVICE_VECAN: + return; + case DBusService.DBUS_SERVICE_EVCHARGER: + page = evChargerPage + break + case DBusService.DBUS_SERVICE_ACLOAD: + page = acInPage + break + case DBusService.DBUS_SERVICE_HUB4: + return; + case DBusService.DBUS_SERVICE_FUELCELL: + case DBusService.DBUS_SERVICE_DCSOURCE: + case DBusService.DBUS_SERVICE_DCLOAD: + case DBusService.DBUS_SERVICE_DCSYSTEM: + page = dcMeterPage + break + case DBusService.DBUS_SERVICE_ALTERNATOR: + page = alternatorPage + break + case DBusService.DBUS_SERVICE_DCDC: + page = dcDcConverterPage + break + default: + console.log("unknown service " + name) + return; + } + + deviceList.append(service, page.createObject(root, {service: service, bindPrefix: service.name})) + } + + Component.onCompleted: { + for (var i = 0; i < DBusServices.count; i++) + addService(DBusServices.at(i)) + } + + Connections { + target: DBusServices + onDbusServiceFound: addService(service) + } +} diff --git a/FileSets/v3.20~45/PageMain.qml.orig b/FileSets/v3.20~49/PageMain.qml.orig similarity index 100% rename from FileSets/v3.20~45/PageMain.qml.orig rename to FileSets/v3.20~49/PageMain.qml.orig diff --git a/FileSets/v3.30~1/PageSettingsDisplay.qml b/FileSets/v3.20~49/PageSettingsDisplay.qml similarity index 100% rename from FileSets/v3.30~1/PageSettingsDisplay.qml rename to FileSets/v3.20~49/PageSettingsDisplay.qml diff --git a/FileSets/v3.30~1/PageSettingsDisplay.qml.orig b/FileSets/v3.20~49/PageSettingsDisplay.qml.orig similarity index 100% rename from FileSets/v3.30~1/PageSettingsDisplay.qml.orig rename to FileSets/v3.20~49/PageSettingsDisplay.qml.orig diff --git a/FileSets/v3.20~49/PageSettingsGenerator.qml b/FileSets/v3.20~49/PageSettingsGenerator.qml new file mode 120000 index 00000000..4edff025 --- /dev/null +++ b/FileSets/v3.20~49/PageSettingsGenerator.qml @@ -0,0 +1 @@ +../v3.30~3/PageSettingsGenerator.qml \ No newline at end of file diff --git a/FileSets/v3.30~1/PageSettingsGuiMods.qml b/FileSets/v3.20~49/PageSettingsGuiMods.qml similarity index 100% rename from FileSets/v3.30~1/PageSettingsGuiMods.qml rename to FileSets/v3.20~49/PageSettingsGuiMods.qml diff --git a/FileSets/v3.20~49/PageSettingsGuiMods.qml.orig b/FileSets/v3.20~49/PageSettingsGuiMods.qml.orig new file mode 100644 index 00000000..04a4320a --- /dev/null +++ b/FileSets/v3.20~49/PageSettingsGuiMods.qml.orig @@ -0,0 +1,367 @@ +import QtQuick 1.1 +import com.victron.velib 1.0 +import "utils.js" as Utils + +MbPage { + property string cgwacsPath: "com.victronenergy.settings/Settings/CGwacs" + property string settingsPrefix: "com.victronenergy.settings" + property string batteryLifePath: cgwacsPath + "/BatteryLife" + // Hub4Mode + property int hub4PhaseCompensation: 1 + property int hub4PhaseSplit: 2 + property int hub4Disabled: 3 + // BatteryLifeState + property int batteryLifeStateDisabled: 0 + property int batteryLifeStateRestart: 1 + property int batteryLifeStateDefault: 2 + property int batteryLifeStateAbsorption: 3 + property int batteryLifeStateFloat: 4 + property int batteryLifeStateDischarged: 5 + property int batteryLifeStateForceCharge: 6 + property int batteryLifeStateSustain: 7 + property int batteryLifeStateLowSocCharge: 8 + property int batteryKeepCharged: 9 + property int batterySocGuardDefault: 10 + property int batterySocGuardDischarged: 11 + property int batterySocGuardLowSocCharge: 12 + + property VBusItem systemType: VBusItem { bind: "com.victronenergy.system/SystemType" } + property VBusItem maxChargePowerItem: VBusItem { bind: Utils.path(cgwacsPath, "/MaxChargePower") } + property VBusItem maxDischargePowerItem: VBusItem { bind: Utils.path(cgwacsPath, "/MaxDischargePower") } + property VBusItem socLimitItem: VBusItem { bind: Utils.path(batteryLifePath, "/SocLimit") } + property VBusItem minSocLimitItem: VBusItem { bind: Utils.path(batteryLifePath, "/MinimumSocLimit") } + property VBusItem stateItem: VBusItem { bind: Utils.path(batteryLifePath, "/State") } + property VBusItem hub4Mode: VBusItem { bind: Utils.path(cgwacsPath, "/Hub4Mode") } + property VBusItem maxChargeCurrentControl: VBusItem { bind: "com.victronenergy.system/Control/MaxChargeCurrent" } + property VBusItem scheduleSoc: VBusItem { bind: "com.victronenergy.system/Control/ScheduledSoc" } + property VBusItem peakshaveItem: VBusItem { bind: Utils.path("com.victronenergy.settings", "/Settings/CGwacs/AlwaysPeakShave") } + property VBusItem dEssModeItem: VBusItem { bind: "com.victronenergy.settings/Settings/DynamicEss/Mode" } + + title: systemType.value === "Hub-4" ? systemType.value : qsTr("ESS") + model: systemType.value === "ESS" || systemType.value === "Hub-4" ? hub4Settings : noHub4 + + VisibleItemModel { + id: noHub4 + + MbItemText { + text: qsTr("No ESS Assistant found") + } + } + + function isBatteryLifeActive(state) { + switch (state) { + case batteryLifeStateRestart: + case batteryLifeStateDefault: + case batteryLifeStateAbsorption: + case batteryLifeStateFloat: + case batteryLifeStateDischarged: + case batteryLifeStateForceCharge: + case batteryLifeStateSustain: + case batteryLifeStateLowSocCharge: + return true + default: + return false + } + } + + function isBatterySocGuardActive(state) { + switch (state) { + case batterySocGuardDefault: + case batterySocGuardDischarged: + case batterySocGuardLowSocCharge: + return true + default: + return false + } + } + + VisibleItemModel { + id: hub4Settings + + MbItemOptions { + function getLocalValue(hub4Mode, state) { + if (hub4Mode === undefined || state === undefined) + return undefined + if (hub4Mode === hub4Disabled) + return 3 + if (isBatteryLifeActive(state)) + return 0 + if (isBatterySocGuardActive(state)) + return 1 + if (state === batteryKeepCharged) + return 2 + return 0 + } + + description: qsTr("Mode") + localValue: getLocalValue(hub4Mode.value, stateItem.value) + possibleValues:[ + MbOption { description: qsTr("Optimized (with BatteryLife)"); value: 0 }, + MbOption { description: qsTr("Optimized (without BatteryLife)"); value: 1 }, + MbOption { description: qsTr("Keep batteries charged"); value: 2 }, + MbOption { description: qsTr("External control"); value: 3 } + ] + onLocalValueChanged: { + if (localValue === undefined) + return + // Hub 4 mode + if (localValue === 3 && hub4Mode.value !== hub4Disabled) { + hub4Mode.setValue(hub4Disabled) + } else if (localValue !== 3 && hub4Mode.value === hub4Disabled) { + hub4Mode.setValue(hub4PhaseCompensation) + } + // BatteryLife state + switch (localValue) { + case 0: + if (!isBatteryLifeActive(stateItem.value)) + stateItem.setValue(batteryLifeStateRestart) + break + case 1: + if (!isBatterySocGuardActive(stateItem.value)) + stateItem.setValue(batterySocGuardDefault) + break + case 2: + stateItem.setValue(batteryKeepCharged) + break + case 3: + stateItem.setValue(batteryLifeStateDisabled) + break + } + } + } + + MbItemOptions { + id: withoutGridMeter + description: qsTr("Grid metering") + bind: Utils.path(cgwacsPath, '/RunWithoutGridMeter') + show: hub4Mode.value !== hub4Disabled + enabled: userHasWriteAccess + possibleValues:[ + MbOption { description: qsTr("External meter"); value: 0 }, + MbOption { description: qsTr("Inverter/Charger"); value: 1 } + ] + } + + MbSwitch { + id: acOutInUse + bind: Utils.path(settingsPrefix, "/Settings/SystemSetup/HasAcOutSystem") + name: qsTr("Inverter AC output in use") + show: withoutGridMeter.value == 0 + } + + MbItemOptions { + description: qsTr("Self-consumption from battery") + bind: Utils.path(cgwacsPath, "/BatteryUse") + show: withoutGridMeter.value == 0 && acOutInUse.item.value == 1 + possibleValues:[ + MbOption { description: qsTr("All system loads"); value: 0 }, + MbOption { description: qsTr("Only critical loads"); value: 1 } + ] + } + + MbItemOptions { + description: qsTr("Multiphase regulation") + bind: hub4Mode.bind + show: hub4Mode.value !== hub4Disabled && stateItem.value !== batteryKeepCharged + enabled: userHasWriteAccess + possibleValues:[ + MbOption { description: qsTr("Total of all phases"); value: hub4PhaseCompensation }, + MbOption { description: qsTr("Individual phase"); value: hub4PhaseSplit } + ] + onOptionSelected: { + if (newValue === hub4PhaseSplit) { + toast.createToast(qsTr("Each phase is regulated to individually achieve the grid setpoint (system efficiency is decreased).\n\n" + + "CAUTION: Use only if required by the utility provider"), 15000); + } else if (newValue === hub4PhaseCompensation) { + toast.createToast(qsTr("The total of all phases is intelligently regulated to achieve the grid setpoint (system efficiency is optimised).\n\n" + + "Use unless prohibited by the utility provider"), 15000); + } + } + } + + MbSpinBox { + id: minSocLimit + description: qsTr("Minimum SOC (unless grid fails)") + enabled: userHasWriteAccess + show: hub4Mode.value !== hub4Disabled && stateItem.value !== batteryKeepCharged + item { + bind: Utils.path(batteryLifePath, "/MinimumSocLimit") + decimals: 0 + unit: "%" + min: 0 + max: 100 + step: 5 + } + } + + MbItemValue { + id: socLimit + description: qsTr("Active SOC limit") + show: hub4Mode.value !== hub4Disabled && isBatteryLifeActive(stateItem.value) + item { + value: Math.max(minSocLimitItem.value, socLimitItem.value) + unit: '%' + } + } + + MbItemOptions { + description: qsTr("Peak shaving") + show: hub4Mode.value !== hub4Disabled + readonly: stateItem.value === batteryKeepCharged + possibleValues:[ + MbOption { description: qsTr("Above minimum SOC only"); value: 0 }, + MbOption { description: qsTr("Always"); value: 1 } + ] + value: stateItem.value === batteryKeepCharged ? 1 : peakshaveItem.value + onOptionSelected: { + peakshaveItem.setValue(newValue) + if (newValue === 1) { + toast.createToast(qsTr("Use this option for peak shaving.\n\n" + + "The peak shaving threshold is set using the AC input current limit setting.\n\n" + + "See documentation for further information."), 10000); + } else { + toast.createToast(qsTr("Use this option in systems that do not perform peak shaving."), 10000); + } + } + } + + MbItemOptions { + description: qsTr("BatteryLife state") + value: stateItem.value + readonly: true + show: hub4Mode.value !== hub4Disabled && isBatteryLifeActive(stateItem.value) + possibleValues:[ + // Values below taken from MaintenanceState enum in dbus-cgwacs + MbOption { description: qsTr("Self-consumption"); value: 2 }, + MbOption { description: qsTr("Self-consumption"); value: 3 }, + MbOption { description: qsTr("Self-consumption"); value: 4 }, + MbOption { description: qsTr("Discharge disabled"); value: 5 }, + MbOption { description: qsTr("Slow charge"); value: 6 }, + MbOption { description: qsTr("Sustain"); value: 7 }, + MbOption { description: qsTr("Recharge"); value: 8 } + ] + } + + MbSwitch { + id: maxChargePowerSwitch + name: qsTr("Limit charge power") + checked: maxChargePowerItem.value >= 0 + enabled: userHasWriteAccess + show: hub4Mode.value !== hub4Disabled && !(maxChargeCurrentControl.valid && maxChargeCurrentControl.value) + onCheckedChanged: { + if (checked && maxChargePowerItem.value < 0) + maxChargePowerItem.setValue(1000) + else if (!checked && maxChargePowerItem.value >= 0) + maxChargePowerItem.setValue(-1) + } + } + + MbSpinBox { + id: maxChargePower + description: qsTr("Maximum charge power") + enabled: userHasWriteAccess + show: maxChargePowerSwitch.show && maxChargePowerSwitch.checked + item { + bind: Utils.path(cgwacsPath, "/MaxChargePower") + decimals: 0 + unit: "W" + min: 0 + max: 200000 + step: 50 + } + } + + MbSwitch { + id: maxInverterPowerSwitch + name: qsTr("Limit inverter power") + checked: maxDischargePowerItem.value >= 0 + enabled: userHasWriteAccess + show: hub4Mode.value !== hub4Disabled && stateItem.value !== batteryKeepCharged + onCheckedChanged: { + if (checked && maxDischargePowerItem.value < 0) + maxDischargePowerItem.setValue(1000) + else if (!checked && maxDischargePowerItem.value >= 0) + maxDischargePowerItem.setValue(-1) + } + } + + MbSpinBox { + id: maxDischargePower + description: qsTr("Maximum inverter power") + enabled: userHasWriteAccess + show: maxInverterPowerSwitch.show && maxInverterPowerSwitch.checked + item { + bind: Utils.path(cgwacsPath, "/MaxDischargePower") + decimals: 0 + unit: "W" + min: 0 + max: 300000 + step: 50 + } + } + + MbSpinBox { + description: qsTr("Grid setpoint") + show: hub4Mode.value !== hub4Disabled + enabled: userHasWriteAccess + item { + bind: "com.victronenergy.settings/Settings/CGwacs/AcPowerSetPoint" + decimals: 0 + unit: "W" + step: 10 + } + } + + MbSubMenu { + id: feedinSetupItem + description: qsTr("Grid feed-in") + show: hub4Mode.value !== hub4Disabled + subpage: Component { + PageSettingsHub4Feedin { + title: feedinSetupItem.description + } + } + } + + MbSubMenu { + id: scheduleSettings + property string bindPrefix: "com.victronenergy.settings/Settings/CGwacs/BatteryLife/Schedule/Charge/" + description: qsTr("Scheduled charge levels") + show: hub4Mode.value !== hub4Disabled && stateItem.value !== batteryKeepCharged + item: VBusItem { value: scheduleSoc.valid ? qsTr("Active (%1)").arg(scheduleSoc.text) : qsTr("Inactive") } + subpage: Component { + MbPage { + title: scheduleSettings.description + model: VisibleItemModel { + ChargeScheduleItem { bindPrefix: scheduleSettings.bindPrefix; scheduleNumber: 0 } + ChargeScheduleItem { bindPrefix: scheduleSettings.bindPrefix; scheduleNumber: 1 } + ChargeScheduleItem { bindPrefix: scheduleSettings.bindPrefix; scheduleNumber: 2 } + ChargeScheduleItem { bindPrefix: scheduleSettings.bindPrefix; scheduleNumber: 3 } + ChargeScheduleItem { bindPrefix: scheduleSettings.bindPrefix; scheduleNumber: 4 } + } + } + } + } + + MbSubMenu { + id: dEssSetupItem + description: qsTr("Dynamic ESS") + show: (dEssModeItem.value > 0 || user.accessLevel >= User.AccessService) && hub4Mode.value !== hub4Disabled && stateItem.value !== batteryKeepCharged + subpage: Component { + PageSettingsDynamicEss { + title: dEssSetupItem.description + } + } + } + + MbSubMenu { + id: deviceItem + description: qsTr("Debug") + show: hub4Mode.value !== hub4Disabled && user.accessLevel >= User.AccessService + backgroundColor: style.backgroundColorService + subpage: Component { + PageHub4Debug { } + } + } + } +} diff --git a/FileSets/v3.20~49/PageSettingsRelay.qml b/FileSets/v3.20~49/PageSettingsRelay.qml new file mode 100644 index 00000000..e3292a36 --- /dev/null +++ b/FileSets/v3.20~49/PageSettingsRelay.qml @@ -0,0 +1,243 @@ +//////// modified to +//////// add 6 relays for Raspberry PI +//////// custom relay name for Relay Overview +//////// show/hide relay in Relay Overview + +import QtQuick 1.1 +import com.victron.velib 1.0 +import "utils.js" as Utils + +MbPage { + id: pageRelaySettings + title: qsTr("Relay") + property string bindPrefix: "com.victronenergy.settings" + property VBusItem relay1Item: VBusItem { bind: "com.victronenergy.system/Relay/1/State" } + property bool hasRelay1: relay1Item.valid + + property VBusItem relay2Item: VBusItem { bind: "com.victronenergy.system/Relay/2/State" } + property bool hasRelay2: relay2Item.valid + property VBusItem relay3Item: VBusItem { bind: "com.victronenergy.system/Relay/3/State" } + property bool hasRelay3: relay3Item.valid + property VBusItem relay4Item: VBusItem { bind: "com.victronenergy.system/Relay/4/State" } + property bool hasRelay4: relay4Item.valid + property VBusItem relay5Item: VBusItem { bind: "com.victronenergy.system/Relay/5/State" } + property bool hasRelay5: relay5Item.valid + + property VBusItem relay0NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/0/CustomName") } + property VBusItem relay1NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/1/CustomName") } + property VBusItem relay2NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/2/CustomName") } + property VBusItem relay3NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/3/CustomName") } + property VBusItem relay4NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/4/CustomName") } + property VBusItem relay5NameItem: VBusItem { bind: Utils.path(bindPrefix, "/Settings/Relay/5/CustomName") } + + function relayName (nameItem, relayNumber) + { + var prefix, suffix + if (nameItem.valid && nameItem.value != "") + { + prefix = nameItem.value + " (" + suffix = ")" + } + else + { + prefix = "" + suffix = "" + } + if (relayNumber == 1) + return prefix + (hasRelay1 ? qsTr("Relay 1") : qsTr("Relay")) + suffix + " " + qsTr("On") + else + return prefix + qsTr("Relay") + " " + relayNumber + suffix + " " + qsTr("On") + } + + model: VisibleItemModel { + MbItemOptions { + id: relayFunction + description: hasRelay1 ? qsTr("Function (Relay 1)") : qsTr("Function") + bind: Utils.path(bindPrefix, "/Settings/Relay/Function") + possibleValues:[ + MbOption { description: qsTr("Alarm relay"); value: 0 }, + MbOption { description: qsTr("Generator start/stop"); value: 1 }, + MbOption { description: qsTr("Tank pump"); value: 3 }, + MbOption { description: qsTr("Manual"); value: 2 }, + MbOption { description: qsTr("Temperature"); value: 4 } + ] + } + + MbItemOptions { + description: qsTr("Alarm relay polarity") + bind: Utils.path(bindPrefix, "/Settings/Relay/Polarity") + show: relayFunction.value === 0 + possibleValues: [ + MbOption { description: qsTr("Normally open"); value: 0 }, + MbOption { description: qsTr("Normally closed"); value: 1 } + ] + } + + MbSwitch { + id: relaySwitch + // Use a one-way binding, because the usual binding: + // checked: Relay.relayOn + // will be broken when the switched toggled, and changes in the relayOn property made + // elsewhere will not change the state of the switch any more. + Binding { + target: relaySwitch + property: "checked" + value: Relay.relayOn + when: true + } + enabled: userHasWriteAccess + name: qsTr("Alarm relay On") + onCheckedChanged: Relay.relayOn = checked; + show: relayFunction.value === 0 + } + + MbSwitch { + id: manualSwitch + name: relayName (relay0NameItem, 1) + bind: "com.victronenergy.system/Relay/0/State" + show: relayFunction.value === 2 // manual mode + } + + MbItemOptions { + id: relay1Function + description: hasRelay1 ? qsTr("Function (Relay 2)") : qsTr("Function") + bind: Utils.path(bindPrefix, "/Settings/Relay/1/Function") + show: hasRelay1 + possibleValues:[ + MbOption { description: qsTr("Manual"); value: 2 }, + MbOption { description: qsTr("Temperature"); value: 4 } + ] + } + MbSwitch { + id: manualSwitch1 + name: relayName (relay1NameItem, 2) + bind: "com.victronenergy.system/Relay/1/State" + show: hasRelay1 && relay1Function.value === 2 + } + MbSwitch { + id: manualSwitch2 + name: relayName (relay2NameItem, 3) + bind: "com.victronenergy.system/Relay/2/State" + show: hasRelay2 + } + MbSwitch { + id: manualSwitch3 + name: relayName (relay3NameItem, 4) + bind: "com.victronenergy.system/Relay/3/State" + show: hasRelay3 + } + MbSwitch { + id: manualSwitch4 + name: relayName (relay4NameItem, 5) + bind: "com.victronenergy.system/Relay/4/State" + show: hasRelay4 + } + MbSwitch { + id: manualSwitch5 + name: relayName (relay5NameItem, 6) + bind: "com.victronenergy.system/Relay/5/State" + show: hasRelay5 + } + + MbSubMenu { + id: conditions + description: qsTr("Temperature control rules") + show: relayFunction.value === 4 || relay1Function.value === 4 + subpage: Component { + PageSettingsRelayTempSensors { + id: relayPage + title: qsTr("Temperature control rules") + } + } + } + + MbEditBox { + id: relay0name + description: qsTr("Relay 1 Name") + item.bind: "com.victronenergy.settings/Settings/Relay/0/CustomName" + show: item.valid && relayFunction.value === 2 // manual mode + maximumLength: 32 + enableSpaceBar: true + } + MbSwitch { + id: showRelay0 + name: qsTr("Show Relay 1 in overview") + bind: "com.victronenergy.settings/Settings/Relay/0/Show" + } + + MbEditBox { + id: relay1name + description: qsTr("Relay 2 Name") + item.bind: "com.victronenergy.settings/Settings/Relay/1/CustomName" + show: item.valid + maximumLength: 32 + enableSpaceBar: true + } + MbSwitch { + id: showRelay1 + name: qsTr("Show Relay 2 in overview") + bind: "com.victronenergy.settings/Settings/Relay/1/Show" + show: hasRelay1 + } + + MbEditBox { + id: relay2name + description: qsTr("Relay 3 Name") + item.bind: "com.victronenergy.settings/Settings/Relay/2/CustomName" + show: item.valid + maximumLength: 32 + enableSpaceBar: true + } + MbSwitch { + id: showRelay2 + name: qsTr("Show Relay 3 in overview") + bind: "com.victronenergy.settings/Settings/Relay/2/Show" + show: hasRelay2 + } + + MbEditBox { + id: relay3name + description: qsTr("Relay 4 Name") + item.bind: "com.victronenergy.settings/Settings/Relay/3/CustomName" + show: item.valid + maximumLength: 32 + enableSpaceBar: true + } + MbSwitch { + id: showRelay3 + name: qsTr("Show Relay 4 in overview") + bind: "com.victronenergy.settings/Settings/Relay/3/Show" + show: hasRelay3 + } + + MbEditBox { + id: relay4name + description: qsTr("Relay 5 Name") + item.bind: "com.victronenergy.settings/Settings/Relay/4/CustomName" + show: item.valid + maximumLength: 32 + enableSpaceBar: true + } + MbSwitch { + id: showRelay4 + name: qsTr("Show Relay 5 in overview") + bind: "com.victronenergy.settings/Settings/Relay/4/Show" + show: hasRelay4 + } + + MbEditBox { + id: relay5name + description: qsTr("Relay 6 Name") + item.bind: "com.victronenergy.settings/Settings/Relay/5/CustomName" + show: item.valid + maximumLength: 32 + enableSpaceBar: true + } + MbSwitch { + id: showRelay5 + name: qsTr("Show Relay 6 in overview") + bind: "com.victronenergy.settings/Settings/Relay/5/Show" + show: hasRelay5 + } + } +} diff --git a/FileSets/v3.20~45/PageSettingsRelay.qml.orig b/FileSets/v3.20~49/PageSettingsRelay.qml.orig similarity index 100% rename from FileSets/v3.20~45/PageSettingsRelay.qml.orig rename to FileSets/v3.20~49/PageSettingsRelay.qml.orig diff --git a/FileSets/v3.20~49/PowerGauge.qml b/FileSets/v3.20~49/PowerGauge.qml new file mode 120000 index 00000000..eb1a8641 --- /dev/null +++ b/FileSets/v3.20~49/PowerGauge.qml @@ -0,0 +1 @@ +../v3.30~3/PowerGauge.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/Tile.qml b/FileSets/v3.20~49/Tile.qml new file mode 120000 index 00000000..c13fe780 --- /dev/null +++ b/FileSets/v3.20~49/Tile.qml @@ -0,0 +1 @@ +../v3.30~3/Tile.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/TileDigIn.qml b/FileSets/v3.20~49/TileDigIn.qml new file mode 120000 index 00000000..972f8638 --- /dev/null +++ b/FileSets/v3.20~49/TileDigIn.qml @@ -0,0 +1 @@ +../v3.30~3/TileDigIn.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/TileRelay.qml b/FileSets/v3.20~49/TileRelay.qml new file mode 120000 index 00000000..f4451285 --- /dev/null +++ b/FileSets/v3.20~49/TileRelay.qml @@ -0,0 +1 @@ +../v3.30~3/TileRelay.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/TileText.qml b/FileSets/v3.20~49/TileText.qml new file mode 120000 index 00000000..bdba853a --- /dev/null +++ b/FileSets/v3.20~49/TileText.qml @@ -0,0 +1 @@ +../v3.30~3/TileText.qml \ No newline at end of file diff --git a/FileSets/v3.20~49/attributes.csv b/FileSets/v3.20~49/attributes.csv new file mode 120000 index 00000000..cfa16f00 --- /dev/null +++ b/FileSets/v3.20~49/attributes.csv @@ -0,0 +1 @@ +../v3.30~3/attributes.csv \ No newline at end of file diff --git a/FileSets/v3.20~49/dbus_digitalinputs.py b/FileSets/v3.20~49/dbus_digitalinputs.py new file mode 120000 index 00000000..fc5032df --- /dev/null +++ b/FileSets/v3.20~49/dbus_digitalinputs.py @@ -0,0 +1 @@ +../v3.30~3/dbus_digitalinputs.py \ No newline at end of file diff --git a/FileSets/v3.20~49/dbus_generator.py b/FileSets/v3.20~49/dbus_generator.py new file mode 120000 index 00000000..2fb366cb --- /dev/null +++ b/FileSets/v3.20~49/dbus_generator.py @@ -0,0 +1 @@ +../v3.30~3/dbus_generator.py \ No newline at end of file diff --git a/FileSets/v3.30~1/dbus_systemcalc.py b/FileSets/v3.20~49/dbus_systemcalc.py similarity index 100% rename from FileSets/v3.30~1/dbus_systemcalc.py rename to FileSets/v3.20~49/dbus_systemcalc.py diff --git a/FileSets/v3.30~1/dbus_systemcalc.py.orig b/FileSets/v3.20~49/dbus_systemcalc.py.orig similarity index 100% rename from FileSets/v3.30~1/dbus_systemcalc.py.orig rename to FileSets/v3.20~49/dbus_systemcalc.py.orig diff --git a/FileSets/v3.20~49/main.qml b/FileSets/v3.20~49/main.qml new file mode 100644 index 00000000..6df292cd --- /dev/null +++ b/FileSets/v3.20~49/main.qml @@ -0,0 +1,588 @@ +//////// Modified to hide the OverviewTiles page +//////// Modified to substitute flow overview pages + +import QtQuick 1.1 + +import Qt.labs.components.native 1.0 +import com.victron.velib 1.0 +import "utils.js" as Utils + +PageStackWindow { + id: rootWindow + + gpsConnected: gpsFix.value === 1 + onCompletedChanged: checkAlarm() + initialPage: PageMain {} + + property VeQuickItem gpsService: VeQuickItem { uid: "dbus/com.victronenergy.system/GpsService" } + property VeQuickItem gpsFix: VeQuickItem { uid: Utils.path("dbus/", gpsService.value, "/Fix") } + property bool completed: false + property bool showAlert: NotificationCenter.alert + property bool alarm: NotificationCenter.alarm +//////// added for GuiMods flow pages + property bool overviewsLoaded: defaultOverview.valid && generatorOverview.valid && mobileOverview.valid && startWithMenu.valid && mobileOverviewEnhanced.valid && guiModsFlowOverview.valid && generatorOverviewEnhanced.valid + property string bindPrefix: "com.victronenergy.settings" + + property bool isNotificationPage: pageStack.currentPage && pageStack.currentPage.title === qsTr("Notifications") + property bool isOverviewPage: pageStack.currentPage && pageStack.currentPage.model === overviewModel; + property bool isOfflineFwUpdatePage: pageStack.currentPage && pageStack.currentPage.objectName === "offlineFwUpdatePage"; + +//////// modified for GuiMods pages + property string hubOverviewType: theSystem.systemType.valid ? + withoutGridMeter.value === 1 ? "Hub" : theSystem.systemType.value : "unknown" + property string currentHubOverview: "OverviewHub.qml" + property string currentMobileOverview: "" + property string currentGeneratorOverview: "" + + // Keep track of the current view (menu/overview) to show as default next time the + // CCGX is restarted + onIsOverviewPageChanged: startWithMenu.setValue(isOverviewPage ? 0 : 1) + + // Add the correct OverviewGridParallelEnhanced page +//////// modified for OverviewHubEnhanced page + onHubOverviewTypeChanged: selectHubOverview () + + VBusItem + { + id: guiModsFlowOverview + bind: "com.victronenergy.settings/Settings/GuiMods/FlowOverview" + onValueChanged: selectHubOverview () + } + +////// GuiMods — DarkMode + property VBusItem darkModeItem: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property bool darkMode: darkModeItem.valid && darkModeItem.value == 1 + +////// GuiMods — DarkMode + Rectangle { + anchors + { + fill: parent + } + color: !darkMode ? "transparent" : "#202020" + z: -1 + } + + // base a new hub selection on the hub type and the enhanced flow overview flag + function selectHubOverview () + { + var newHubOverview = currentHubOverview + // Victron stock overviews with automatic selection + if (guiModsFlowOverview.value == 0) + { + switch(hubOverviewType){ + case "Hub": + case "Hub-1": + case "Hub-2": + case "Hub-3": + case "unknown": + newHubOverview = "OverviewHub.qml" + break; + case "Hub-4": + case "ESS": + newHubOverview = "OverviewGridParallel.qml" + break; + default: + break; + } + } + // Gui Mods simple flow + else if (guiModsFlowOverview.value === 1) + { + newHubOverview = "OverviewHubEnhanced.qml" + } + // Gui Mods complex flow (AC coupled or DC coupled) + else + { + newHubOverview = "OverviewFlowComplex.qml" + } + + if (newHubOverview != currentHubOverview) + { + replaceOverview(currentHubOverview, newHubOverview); + currentHubOverview = newHubOverview + } + + // Workaround the QTBUG-17012 (only the first sentence in each case of Switch Statement can be executed) + // by adding a return statement + return + } + + VBusItem { + id: generatorOverview + bind: "com.victronenergy.settings/Settings/Relay/Function" + onValueChanged: selectGeneratorOverview () + } + + VBusItem + { + id: generatorOverviewEnhanced + bind: "com.victronenergy.settings/Settings/GuiMods/UseEnhancedGeneratorOverview" + onValueChanged: selectGeneratorOverview () + } + + VBusItem { + bind: "com.victronenergy.generator.startstop1/GensetProductId" + onValueChanged: { + // Show specific overview for FischerPanda + extraOverview("OverviewGeneratorFp.qml", value === 0xB040) + + // Show generic overview for ComAp and DSE + extraOverview("OverviewGeneratorOther.qml", + [0xB044, 0xB046].indexOf(value) > -1) + + // Switch to FP overview in case it is the default one + if (isOverviewPage) { + pageStack.currentPage.currentIndex = getDefaultOverviewIndex() + } + } + } + + function selectGeneratorOverview () + { + var newGeneratorOverview + if (generatorOverview.value === 1) + { + if (generatorOverviewEnhanced.value === 1) + newGeneratorOverview = "OverviewGeneratorRelayEnhanced.qml" + else + newGeneratorOverview = "OverviewGeneratorRelay.qml" + if (currentGeneratorOverview === "") + extraOverview (newGeneratorOverview, true) + else + replaceOverview (currentGeneratorOverview, newGeneratorOverview) + currentGeneratorOverview = newGeneratorOverview + } + else + { + // hide existing generator overview if any + if (currentGeneratorOverview != "") + { + extraOverview (currentGeneratorOverview, false) + currentGeneratorOverview = "" + } + } + } + +//////// handle OverviewMobileEnhanced page + VBusItem + { + id: mobileOverview + bind: "com.victronenergy.settings/Settings/Gui/MobileOverview" + onValueChanged: selectMobileOverview () + } + VBusItem + { + id: mobileOverviewEnhanced + bind: "com.victronenergy.settings/Settings/GuiMods/UseEnhancedMobileOverview" + onValueChanged: selectMobileOverview () + } + + // base a new mobile overview selection on the the mobile overview and enhanced mobile overview flags + function selectMobileOverview () + { + var newMobileOverview + if (mobileOverview.value === 1) + { + if (mobileOverviewEnhanced.value === 1) + newMobileOverview = "OverviewMobileEnhanced.qml" + else + newMobileOverview = "OverviewMobile.qml" + if (currentMobileOverview === "") + extraOverview (newMobileOverview, true) + else + replaceOverview (currentMobileOverview, newMobileOverview) + currentMobileOverview = newMobileOverview + } + else + { + // hide existing mobile overview if any + if (currentMobileOverview != "") + { + extraOverview (currentMobileOverview, false) + currentMobileOverview = "" + } + } + } + +//////// show/hide the OverviewTiles page + VBusItem + { + id: showOverviewTiles + bind: "com.victronenergy.settings/Settings/GuiMods/ShowTileOverview" + onValueChanged: extraOverview ("OverviewTiles.qml", value === 1) + } + +//////// show/hide the OverviewRelays page + VBusItem { + id: showOverviewRelays + bind: "com.victronenergy.settings/Settings/GuiMods/ShowRelayOverview" + onValueChanged: extraOverview ("OverviewRelays.qml", value === 1) + } + +//////// show/hide the Overview Tanks/Temps/Digital Inputs page + VBusItem { + id: showOverviewTanksTemps + bind: "com.victronenergy.settings/Settings/GuiMods/ShowTanksTempsDigIn" + onValueChanged: extraOverview ("OverviewTanksTempsDigInputs.qml", value === 1) + } + + VBusItem { + id: tanksOverview + bind: "com.victronenergy.settings/Settings/Gui/TanksOverview" + onValueChanged:{ + extraOverview("OverviewTanks.qml", value === 1) + } + } + + VBusItem { + id: startWithMenu + bind: "com.victronenergy.settings/Settings/Gui/StartWithMenuView" + } + + VBusItem { + id: withoutGridMeter + bind: "com.victronenergy.settings/Settings/CGwacs/RunWithoutGridMeter" + } + + + VBusItem { + id: defaultOverview + bind: "com.victronenergy.settings/Settings/Gui/DefaultOverview" + } + + VBusItem { + id: touchEnabled + bind: "com.victronenergy.settings/Settings/Gui/TouchEnabled" + onValueChanged: { + if (completed && value !== undefined) + toast.createToast(value ? qsTr("Touch input on") : qsTr("Touch input off"), 3000) + } + } + + // Note: finding a firmware image on the storage device is error 4 for vrm storage + // since it should not be used for logging. That fact is used here to determine if + // there is a firmware image. + Connections { + target: storageEvents + onVrmStorageError: { + if (error === 4) { + setTopPage(offlineFwUpdates) + } + } + } + + Connections { + target: vePlatform + onMouseRejected: toast.createToast(qsTr("Touch input disabled"), 1000) + } + + onAlarmChanged: { + if (completed) + checkAlarm() + } + + // always keep track of system information + HubData { + id: theSystem + } + + // note: used for leaving the overviews as well + function backToMainMenu() + { + pageStack.pop(initialPage); + } + + Toast { + id: toast + transform: Scale { + xScale: screen.scaleX + yScale: screen.scaleY + origin.x: toast.width / 2 + origin.y: toast.height / 2 + } + } + + SignalToaster {} + + ToolbarHandlerPages { + id: mainToolbarHandler + isDefault: true + } + + ToolBarLayout { + id: mbTools + height: parent.height + +//// GuiMods - DarkMode + Row + { + spacing: 0 + anchors.fill: parent + Item { + id: pagesItem + anchors.verticalCenter: parent.verticalCenter + height: mbTools.height + width: 170 + + MouseArea { + anchors.fill: parent + onClicked: { + if (pageStack.currentPage) + pageStack.currentPage.toolbarHandler.leftAction(true) + } + } + + Row { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + + MbIcon { + anchors.verticalCenter: parent.verticalCenter + iconId: pageStack.currentPage ? pageStack.currentPage.leftIcon : "" + } + + Text { + anchors.verticalCenter: parent.verticalCenter + text: pageStack.currentPage ? pageStack.currentPage.leftText : "" + color: "white" + font.bold: true + font.pixelSize: 16 + } + } + } + + Item { + anchors.verticalCenter: parent.verticalCenter + height: mbTools.height + width: mbTools.width - pagesItem.width - menusItem.width - centerScrollIndicator.width + + MouseArea + { + anchors.fill: parent + onClicked: + { + if (darkModeItem.valid) + darkModeItem.setValue (! darkMode) + } + } + + Text + { + anchors.fill: parent + horizontalAlignment: Text.AlignHCenter + text: qsTr ("change to") + "\n" + (darkMode ? qsTr ("Light mode") : qsTr ("Dark mode")) + color: "white" + font.bold: true + font.pixelSize: 12 + visible: darkModeItem.valid + } + } + Item + { + id: centerScrollIndicator + anchors.verticalCenter: parent.verticalCenter + height: mbTools.height + width: 20 + MbIcon { + anchors.verticalCenter: parent.verticalCenter + iconId: pageStack.currentPage ? pageStack.currentPage.scrollIndicator : "" + } + } + + Item { + id: menusItem + anchors.verticalCenter: parent.verticalCenter + height: mbTools.height + width: pagesItem.width + + MouseArea { + anchors.fill: parent + onClicked: { + if (pageStack.currentPage) + pageStack.currentPage.toolbarHandler.rightAction(true) + } + } + + Row { + anchors.centerIn: parent + + MbIcon { + iconId: pageStack.currentPage ? pageStack.currentPage.rightIcon : "" + anchors.verticalCenter: parent.verticalCenter + } + + Text { + text: pageStack.currentPage ? pageStack.currentPage.rightText : "" + anchors.verticalCenter: parent.verticalCenter + color: "white" + font.bold: true + font.pixelSize: 16 + } + } + } + } + } + + Component.onCompleted: { + completed = true + } + + ListModel { + id: overviewModel + ListElement { + pageSource: "OverviewHub.qml" + } +//////// (commented out) -- added dynamically above +// ListElement { +// pageSource: "OverviewTiles.qml" +// } + } + + Component { + id: overviewComponent + PageFlow { + // Display default overview when loaded + defaultIndex: getDefaultOverviewIndex() + // Store the current overview page as default + onCurrentIndexChanged: if (active) defaultOverview.setValue(overviewModel.get(currentIndex).pageSource.replace(".qml", "")) + model: overviewModel + } + } + + // When all the related settings items are valid, show the overview page if was the last oppened page + // before restarting + Timer { + interval: 2000 + running: completed && overviewsLoaded && startWithMenu.valid + onTriggered: + { +//////// modified for OverviewGridParallelEnhanced page + selectHubOverview () + if (startWithMenu.value === 0) showOverview() + } + } + + function getDefaultOverviewIndex() + { + if(!defaultOverview.valid) + return 0 + for (var i = 0; i < overviewModel.count; i++){ + if (overviewModel.get(i).pageSource.replace(".qml", "") === defaultOverview.value) { + return i + } + } + return 0 + } + + Component { + id: noticationsComponent + PageNotifications {} + } + + Component { + id: offlineFwUpdates + PageSettingsFirmwareOffline { checkOnCompleted: true} + + } + + // Add or remove extra overviews. for example, generator overview + // shouldn't be shown if the start/stop functionality is not enabled. + // Index parameter is optional, usefull to keep an order. + function extraOverview(name, show, index) + { + var i = 0 + if (show) { + if (index !== undefined) { + if (overviewModel.get(index).pageSource === name) + return + // First append the page + overviewModel.append({"pageSource": name}) + // Then move all the pages behind index + overviewModel.move(index, overviewModel.count - 2, overviewModel.count - 2) + } else { + for (i = 0; i < overviewModel.count; i++) + if (overviewModel.get(i).pageSource === name) + // Don't append if already exists + return + overviewModel.append({"pageSource": name}) + } + } else { + for (i = 0; i < overviewModel.count; i++) + if (overviewModel.get(i).pageSource === name) + overviewModel.remove(i) + } + } + +//////// Modified to append page if oldPage not found + function replaceOverview(oldPage, newPage) + { + for (var i = 0; i < overviewModel.count; i++) + { + if (overviewModel.get(i).pageSource === oldPage) + { + overviewModel.get(i).pageSource = newPage + return + } + } + // here if oldPage wasn't found -- append the new page + overviewModel.append({"pageSource": newPage}) + } + + // Central mover for the ball animation on the overviews + // Instead of using a timer per line, using a central one + // reduces the CPU usage a little bit and makes the animations + // smoother. + Timer { + id: mover + property double pos: _counter / _loops + property int _counter + property int _loops: 13 + + interval: 100 + running: true + repeat: true + onTriggered: if (_counter >= (_loops - 1)) _counter = 0; else _counter++ + } + + // If an overview or notifications is active, the new page will replace it + // instead to be pushed. This way we prevent an unwanted stackpage depth + // increment everytime another page wants to be on top. + function setTopPage(page) + { + if (touchEnabled.valid && !touchEnabled.value) + return + + if (isNotificationPage || isOverviewPage || isOfflineFwUpdatePage) + rootWindow.pageStack.replace(page); + else + rootWindow.pageStack.push(page); + } + + function spuriousKeyPress() + { + return !pageStack.currentPage || !pageStack.currentPage.active + } + + function showOverview() + { + if (spuriousKeyPress() || isOverviewPage) + return + setTopPage(overviewComponent) + } + + function showPageNotifications() + { + if (spuriousKeyPress() || isNotificationPage) + return + setTopPage(noticationsComponent) + } + + function checkAlarm() + { + if (alarm) + showPageNotifications() + } + + FirmwareUpdate { id: firmwareUpdate } +} diff --git a/FileSets/v3.20~45/main.qml.orig b/FileSets/v3.20~49/main.qml.orig similarity index 100% rename from FileSets/v3.20~45/main.qml.orig rename to FileSets/v3.20~49/main.qml.orig diff --git a/FileSets/v3.20~49/startstop.py b/FileSets/v3.20~49/startstop.py new file mode 120000 index 00000000..9e75bfdc --- /dev/null +++ b/FileSets/v3.20~49/startstop.py @@ -0,0 +1 @@ +../v3.30~3/startstop.py \ No newline at end of file diff --git a/FileSets/v3.20~49/styles.css b/FileSets/v3.20~49/styles.css new file mode 120000 index 00000000..ddb110c3 --- /dev/null +++ b/FileSets/v3.20~49/styles.css @@ -0,0 +1 @@ +../v3.30~3/styles.css \ No newline at end of file diff --git a/FileSets/v3.30~1/Battery.qml b/FileSets/v3.30~3/Battery.qml similarity index 100% rename from FileSets/v3.30~1/Battery.qml rename to FileSets/v3.30~3/Battery.qml diff --git a/FileSets/v3.30~1/Battery.qml.orig b/FileSets/v3.30~3/Battery.qml.orig similarity index 100% rename from FileSets/v3.30~1/Battery.qml.orig rename to FileSets/v3.30~3/Battery.qml.orig diff --git a/FileSets/v3.30~3/COMPLETE b/FileSets/v3.30~3/COMPLETE new file mode 100644 index 00000000..e69de29b diff --git a/FileSets/v3.30~1/DetailAcInput.qml b/FileSets/v3.30~3/DetailAcInput.qml similarity index 100% rename from FileSets/v3.30~1/DetailAcInput.qml rename to FileSets/v3.30~3/DetailAcInput.qml diff --git a/FileSets/v3.30~1/DetailAcInput.qml.orig b/FileSets/v3.30~3/DetailAcInput.qml.orig similarity index 100% rename from FileSets/v3.30~1/DetailAcInput.qml.orig rename to FileSets/v3.30~3/DetailAcInput.qml.orig diff --git a/FileSets/v3.30~1/DetailInverter.qml b/FileSets/v3.30~3/DetailInverter.qml similarity index 100% rename from FileSets/v3.30~1/DetailInverter.qml rename to FileSets/v3.30~3/DetailInverter.qml diff --git a/FileSets/v3.30~1/DetailInverter.qml.orig b/FileSets/v3.30~3/DetailInverter.qml.orig similarity index 100% rename from FileSets/v3.30~1/DetailInverter.qml.orig rename to FileSets/v3.30~3/DetailInverter.qml.orig diff --git a/FileSets/v3.30~1/DetailLoadsCombined.qml b/FileSets/v3.30~3/DetailLoadsCombined.qml similarity index 100% rename from FileSets/v3.30~1/DetailLoadsCombined.qml rename to FileSets/v3.30~3/DetailLoadsCombined.qml diff --git a/FileSets/v3.30~1/DetailLoadsCombined.qml.orig b/FileSets/v3.30~3/DetailLoadsCombined.qml.orig similarity index 100% rename from FileSets/v3.30~1/DetailLoadsCombined.qml.orig rename to FileSets/v3.30~3/DetailLoadsCombined.qml.orig diff --git a/FileSets/v3.30~1/DetailLoadsOnInput.qml b/FileSets/v3.30~3/DetailLoadsOnInput.qml similarity index 100% rename from FileSets/v3.30~1/DetailLoadsOnInput.qml rename to FileSets/v3.30~3/DetailLoadsOnInput.qml diff --git a/FileSets/v3.30~1/DetailLoadsOnInput.qml.orig b/FileSets/v3.30~3/DetailLoadsOnInput.qml.orig similarity index 100% rename from FileSets/v3.30~1/DetailLoadsOnInput.qml.orig rename to FileSets/v3.30~3/DetailLoadsOnInput.qml.orig diff --git a/FileSets/v3.30~1/DetailLoadsOnOutput.qml b/FileSets/v3.30~3/DetailLoadsOnOutput.qml similarity index 100% rename from FileSets/v3.30~1/DetailLoadsOnOutput.qml rename to FileSets/v3.30~3/DetailLoadsOnOutput.qml diff --git a/FileSets/v3.30~1/DetailLoadsOnOutput.qml.orig b/FileSets/v3.30~3/DetailLoadsOnOutput.qml.orig similarity index 100% rename from FileSets/v3.30~1/DetailLoadsOnOutput.qml.orig rename to FileSets/v3.30~3/DetailLoadsOnOutput.qml.orig diff --git a/FileSets/v3.30~1/HubData.qml b/FileSets/v3.30~3/HubData.qml similarity index 100% rename from FileSets/v3.30~1/HubData.qml rename to FileSets/v3.30~3/HubData.qml diff --git a/FileSets/v3.30~1/HubData.qml.orig b/FileSets/v3.30~3/HubData.qml.orig similarity index 100% rename from FileSets/v3.30~1/HubData.qml.orig rename to FileSets/v3.30~3/HubData.qml.orig diff --git a/FileSets/v3.30~1/MbEditBox.qml b/FileSets/v3.30~3/MbEditBox.qml similarity index 100% rename from FileSets/v3.30~1/MbEditBox.qml rename to FileSets/v3.30~3/MbEditBox.qml diff --git a/FileSets/v3.30~1/MbEditBox.qml.orig b/FileSets/v3.30~3/MbEditBox.qml.orig similarity index 100% rename from FileSets/v3.30~1/MbEditBox.qml.orig rename to FileSets/v3.30~3/MbEditBox.qml.orig diff --git a/FileSets/v3.30~1/MbEditBoxDateTime.qml b/FileSets/v3.30~3/MbEditBoxDateTime.qml similarity index 100% rename from FileSets/v3.30~1/MbEditBoxDateTime.qml rename to FileSets/v3.30~3/MbEditBoxDateTime.qml diff --git a/FileSets/v3.30~1/MbEditBoxDateTime.qml.orig b/FileSets/v3.30~3/MbEditBoxDateTime.qml.orig similarity index 100% rename from FileSets/v3.30~1/MbEditBoxDateTime.qml.orig rename to FileSets/v3.30~3/MbEditBoxDateTime.qml.orig diff --git a/FileSets/v3.30~1/MbItem.qml b/FileSets/v3.30~3/MbItem.qml similarity index 100% rename from FileSets/v3.30~1/MbItem.qml rename to FileSets/v3.30~3/MbItem.qml diff --git a/FileSets/v3.30~1/MbItem.qml.orig b/FileSets/v3.30~3/MbItem.qml.orig similarity index 100% rename from FileSets/v3.30~1/MbItem.qml.orig rename to FileSets/v3.30~3/MbItem.qml.orig diff --git a/FileSets/v3.30~1/MbItemDigitalInput.qml b/FileSets/v3.30~3/MbItemDigitalInput.qml similarity index 100% rename from FileSets/v3.30~1/MbItemDigitalInput.qml rename to FileSets/v3.30~3/MbItemDigitalInput.qml diff --git a/FileSets/v3.30~1/MbItemDigitalInput.qml.orig b/FileSets/v3.30~3/MbItemDigitalInput.qml.orig similarity index 100% rename from FileSets/v3.30~1/MbItemDigitalInput.qml.orig rename to FileSets/v3.30~3/MbItemDigitalInput.qml.orig diff --git a/FileSets/v3.30~1/MbSpinBox.qml b/FileSets/v3.30~3/MbSpinBox.qml similarity index 100% rename from FileSets/v3.30~1/MbSpinBox.qml rename to FileSets/v3.30~3/MbSpinBox.qml diff --git a/FileSets/v3.30~1/MbSpinBox.qml.orig b/FileSets/v3.30~3/MbSpinBox.qml.orig similarity index 100% rename from FileSets/v3.30~1/MbSpinBox.qml.orig rename to FileSets/v3.30~3/MbSpinBox.qml.orig diff --git a/FileSets/v3.30~1/MbStyle.qml b/FileSets/v3.30~3/MbStyle.qml similarity index 100% rename from FileSets/v3.30~1/MbStyle.qml rename to FileSets/v3.30~3/MbStyle.qml diff --git a/FileSets/v3.30~1/MbStyle.qml.orig b/FileSets/v3.30~3/MbStyle.qml.orig similarity index 100% rename from FileSets/v3.30~1/MbStyle.qml.orig rename to FileSets/v3.30~3/MbStyle.qml.orig diff --git a/FileSets/v3.30~1/MbSubMenu.qml b/FileSets/v3.30~3/MbSubMenu.qml similarity index 100% rename from FileSets/v3.30~1/MbSubMenu.qml rename to FileSets/v3.30~3/MbSubMenu.qml diff --git a/FileSets/v3.30~1/MbSubMenu.qml.orig b/FileSets/v3.30~3/MbSubMenu.qml.orig similarity index 100% rename from FileSets/v3.30~1/MbSubMenu.qml.orig rename to FileSets/v3.30~3/MbSubMenu.qml.orig diff --git a/FileSets/v3.30~1/Multi.qml b/FileSets/v3.30~3/Multi.qml similarity index 100% rename from FileSets/v3.30~1/Multi.qml rename to FileSets/v3.30~3/Multi.qml diff --git a/FileSets/v3.30~1/Multi.qml.orig b/FileSets/v3.30~3/Multi.qml.orig similarity index 100% rename from FileSets/v3.30~1/Multi.qml.orig rename to FileSets/v3.30~3/Multi.qml.orig diff --git a/FileSets/v3.30~1/ObjectAcConnection.qml b/FileSets/v3.30~3/ObjectAcConnection.qml similarity index 100% rename from FileSets/v3.30~1/ObjectAcConnection.qml rename to FileSets/v3.30~3/ObjectAcConnection.qml diff --git a/FileSets/v3.30~1/ObjectAcConnection.qml.orig b/FileSets/v3.30~3/ObjectAcConnection.qml.orig similarity index 100% rename from FileSets/v3.30~1/ObjectAcConnection.qml.orig rename to FileSets/v3.30~3/ObjectAcConnection.qml.orig diff --git a/FileSets/v3.30~1/OverviewAcValuesEnhanced.qml b/FileSets/v3.30~3/OverviewAcValuesEnhanced.qml similarity index 100% rename from FileSets/v3.30~1/OverviewAcValuesEnhanced.qml rename to FileSets/v3.30~3/OverviewAcValuesEnhanced.qml diff --git a/FileSets/v3.30~1/OverviewAcValuesEnhanced.qml.orig b/FileSets/v3.30~3/OverviewAcValuesEnhanced.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewAcValuesEnhanced.qml.orig rename to FileSets/v3.30~3/OverviewAcValuesEnhanced.qml.orig diff --git a/FileSets/v3.30~1/OverviewBox.qml b/FileSets/v3.30~3/OverviewBox.qml similarity index 100% rename from FileSets/v3.30~1/OverviewBox.qml rename to FileSets/v3.30~3/OverviewBox.qml diff --git a/FileSets/v3.30~1/OverviewBox.qml.orig b/FileSets/v3.30~3/OverviewBox.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewBox.qml.orig rename to FileSets/v3.30~3/OverviewBox.qml.orig diff --git a/FileSets/v3.30~1/OverviewConnection.qml b/FileSets/v3.30~3/OverviewConnection.qml similarity index 100% rename from FileSets/v3.30~1/OverviewConnection.qml rename to FileSets/v3.30~3/OverviewConnection.qml diff --git a/FileSets/v3.30~1/OverviewConnection.qml.orig b/FileSets/v3.30~3/OverviewConnection.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewConnection.qml.orig rename to FileSets/v3.30~3/OverviewConnection.qml.orig diff --git a/FileSets/v3.30~1/OverviewConnectionEnd.qml b/FileSets/v3.30~3/OverviewConnectionEnd.qml similarity index 100% rename from FileSets/v3.30~1/OverviewConnectionEnd.qml rename to FileSets/v3.30~3/OverviewConnectionEnd.qml diff --git a/FileSets/v3.30~1/OverviewConnectionEnd.qml.orig b/FileSets/v3.30~3/OverviewConnectionEnd.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewConnectionEnd.qml.orig rename to FileSets/v3.30~3/OverviewConnectionEnd.qml.orig diff --git a/FileSets/v3.30~1/OverviewFlowComplex.qml b/FileSets/v3.30~3/OverviewFlowComplex.qml similarity index 99% rename from FileSets/v3.30~1/OverviewFlowComplex.qml rename to FileSets/v3.30~3/OverviewFlowComplex.qml index 4cdd1fbc..77e37a1d 100644 --- a/FileSets/v3.30~1/OverviewFlowComplex.qml +++ b/FileSets/v3.30~3/OverviewFlowComplex.qml @@ -148,22 +148,24 @@ OverviewPage { height: inOutTileHeight title: { - // input 2 is active - if (! acActiveInput.valid || acActiveInput.value == 1) + // input 1 is active + if (acActiveInput.value == 0) { - if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) - return qsTr ("AC In 2 Ignored") + if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("AC In 1 Ignored") else return getAcSourceName(sys.acSource) } - // input 1 is active - else + // input 2 is active + else if (acActiveInput.value == 1) { - if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) - return qsTr ("AC In 1 Ignored") + if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("AC In 2 Ignored") else return getAcSourceName(sys.acSource) } + else + return "no input" } ////// GuiMods — DarkMode titleColor: !darkMode ? "#E74c3c" : "#73261E" diff --git a/FileSets/v3.30~1/OverviewFlowComplex.qml.orig b/FileSets/v3.30~3/OverviewFlowComplex.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewFlowComplex.qml.orig rename to FileSets/v3.30~3/OverviewFlowComplex.qml.orig diff --git a/FileSets/v3.30~1/OverviewGeneratorEnhanced.qml b/FileSets/v3.30~3/OverviewGeneratorEnhanced.qml similarity index 91% rename from FileSets/v3.30~1/OverviewGeneratorEnhanced.qml rename to FileSets/v3.30~3/OverviewGeneratorEnhanced.qml index e9525910..0c189315 100644 --- a/FileSets/v3.30~1/OverviewGeneratorEnhanced.qml +++ b/FileSets/v3.30~3/OverviewGeneratorEnhanced.qml @@ -54,6 +54,13 @@ OverviewPage { property bool showServiceInfo: serviceCounterItem.valid && serviceInterval.valid && serviceInterval.value > 0 property bool serviceOverdue: showServiceInfo && serviceCounterItem.value < 0 +//////// add to display AC input ignored + VBusItem { id: ignoreAcInput1; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn1") } + VBusItem { id: ignoreAcInput2; bind: Utils.path(sys.vebusPrefix, "/Ac/State/IgnoreAcIn2") } + VBusItem { id: acActiveInput; bind: Utils.path(sys.vebusPrefix, "/Ac/ActiveIn/ActiveInput") } + VBusItem { id: ac1source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput1") } + VBusItem { id: ac2source; bind: Utils.path("com.victronenergy.settings", "/Settings/SystemSetup/AcInput2") } + title: qsTr("Generator") property bool autoStartSelected: false @@ -329,12 +336,33 @@ OverviewPage { visible: showAcIn values: [ - OverviewAcValuesEnhanced { connection: sys.genset }, + OverviewAcValuesEnhanced + { + connection: sys.genset + visible: sys.genset.power.valid + }, TileText { width: acInTile.width - 5 - text: qsTr ("--") - font.pixelSize: 22 + text: + { + if (ac1source.valid && ac1source.value == 2) + { + if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("\nAC In Ignored\nduring\ngenerator\nstart / stop") + else + return "" + } + else if (ac2source.valid && ac2source.value == 2) + { + if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("\nAC In Ignored\nduring\ngenerator\nstart / stop") + else + return "" + } + else + return qsTr ("\nAC In\nis not\ngenerator") + } visible: !sys.genset.power.valid } ] @@ -353,9 +381,10 @@ OverviewPage { useInputCurrentLimit: true maxForwardPowerParameter: "" maxReversePowerParameter: "" - visible: showGauges + visible: showGauges && sys.genset.power.valid } } + //////// added to show alternator in place of AC generator Tile { id: alternatorTile diff --git a/FileSets/v3.30~1/OverviewGeneratorEnhanced.qml.orig b/FileSets/v3.30~3/OverviewGeneratorEnhanced.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewGeneratorEnhanced.qml.orig rename to FileSets/v3.30~3/OverviewGeneratorEnhanced.qml.orig diff --git a/FileSets/v3.30~1/OverviewGeneratorRelayEnhanced.qml b/FileSets/v3.30~3/OverviewGeneratorRelayEnhanced.qml similarity index 100% rename from FileSets/v3.30~1/OverviewGeneratorRelayEnhanced.qml rename to FileSets/v3.30~3/OverviewGeneratorRelayEnhanced.qml diff --git a/FileSets/v3.30~1/OverviewGeneratorRelayEnhanced.qml.orig b/FileSets/v3.30~3/OverviewGeneratorRelayEnhanced.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewGeneratorRelayEnhanced.qml.orig rename to FileSets/v3.30~3/OverviewGeneratorRelayEnhanced.qml.orig diff --git a/FileSets/v3.30~1/OverviewGridParallel.qml b/FileSets/v3.30~3/OverviewGridParallel.qml similarity index 100% rename from FileSets/v3.30~1/OverviewGridParallel.qml rename to FileSets/v3.30~3/OverviewGridParallel.qml diff --git a/FileSets/v3.30~1/OverviewGridParallel.qml.orig b/FileSets/v3.30~3/OverviewGridParallel.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewGridParallel.qml.orig rename to FileSets/v3.30~3/OverviewGridParallel.qml.orig diff --git a/FileSets/v3.30~1/OverviewHub.qml b/FileSets/v3.30~3/OverviewHub.qml similarity index 100% rename from FileSets/v3.30~1/OverviewHub.qml rename to FileSets/v3.30~3/OverviewHub.qml diff --git a/FileSets/v3.30~1/OverviewHub.qml.orig b/FileSets/v3.30~3/OverviewHub.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewHub.qml.orig rename to FileSets/v3.30~3/OverviewHub.qml.orig diff --git a/FileSets/v3.30~1/OverviewHubEnhanced.qml b/FileSets/v3.30~3/OverviewHubEnhanced.qml similarity index 99% rename from FileSets/v3.30~1/OverviewHubEnhanced.qml rename to FileSets/v3.30~3/OverviewHubEnhanced.qml index 962cafbe..a471cb88 100644 --- a/FileSets/v3.30~1/OverviewHubEnhanced.qml +++ b/FileSets/v3.30~3/OverviewHubEnhanced.qml @@ -196,22 +196,24 @@ OverviewPage { height: showStatusBar ? 100 : 120 title: { - // input 2 is active - if (! acActiveInput.valid || acActiveInput.value == 1) + // input 1 is active + if (acActiveInput.value == 0) { - if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) - return qsTr ("AC In 2 Ignored") + if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) + return qsTr ("AC In 1 Ignored") else return getAcSourceName(sys.acSource) } - // input 1 is active - else + // input 2 is active + else if (acActiveInput.value == 1) { - if (ignoreAcInput1.valid && ignoreAcInput1.value == 1) - return qsTr ("AC In 1 Ignored") + if (ignoreAcInput2.valid && ignoreAcInput2.value == 1) + return qsTr ("AC In 2 Ignored") else return getAcSourceName(sys.acSource) } + else + return "no input" } anchors { top: multi.top diff --git a/FileSets/v3.30~1/OverviewHubEnhanced.qml.orig b/FileSets/v3.30~3/OverviewHubEnhanced.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewHubEnhanced.qml.orig rename to FileSets/v3.30~3/OverviewHubEnhanced.qml.orig diff --git a/FileSets/v3.30~1/OverviewMobileEnhanced.qml b/FileSets/v3.30~3/OverviewMobileEnhanced.qml similarity index 100% rename from FileSets/v3.30~1/OverviewMobileEnhanced.qml rename to FileSets/v3.30~3/OverviewMobileEnhanced.qml diff --git a/FileSets/v3.30~1/OverviewMobileEnhanced.qml.orig b/FileSets/v3.30~3/OverviewMobileEnhanced.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewMobileEnhanced.qml.orig rename to FileSets/v3.30~3/OverviewMobileEnhanced.qml.orig diff --git a/FileSets/v3.30~1/OverviewSolarCharger.qml b/FileSets/v3.30~3/OverviewSolarCharger.qml similarity index 100% rename from FileSets/v3.30~1/OverviewSolarCharger.qml rename to FileSets/v3.30~3/OverviewSolarCharger.qml diff --git a/FileSets/v3.30~1/OverviewSolarCharger.qml.orig b/FileSets/v3.30~3/OverviewSolarCharger.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewSolarCharger.qml.orig rename to FileSets/v3.30~3/OverviewSolarCharger.qml.orig diff --git a/FileSets/v3.30~1/OverviewSolarInverter.qml b/FileSets/v3.30~3/OverviewSolarInverter.qml similarity index 100% rename from FileSets/v3.30~1/OverviewSolarInverter.qml rename to FileSets/v3.30~3/OverviewSolarInverter.qml diff --git a/FileSets/v3.30~1/OverviewSolarInverter.qml.orig b/FileSets/v3.30~3/OverviewSolarInverter.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewSolarInverter.qml.orig rename to FileSets/v3.30~3/OverviewSolarInverter.qml.orig diff --git a/FileSets/v3.30~1/OverviewTankDelegate.qml b/FileSets/v3.30~3/OverviewTankDelegate.qml similarity index 100% rename from FileSets/v3.30~1/OverviewTankDelegate.qml rename to FileSets/v3.30~3/OverviewTankDelegate.qml diff --git a/FileSets/v3.30~1/OverviewTankDelegate.qml.orig b/FileSets/v3.30~3/OverviewTankDelegate.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewTankDelegate.qml.orig rename to FileSets/v3.30~3/OverviewTankDelegate.qml.orig diff --git a/FileSets/v3.30~1/OverviewTanks.qml b/FileSets/v3.30~3/OverviewTanks.qml similarity index 100% rename from FileSets/v3.30~1/OverviewTanks.qml rename to FileSets/v3.30~3/OverviewTanks.qml diff --git a/FileSets/v3.30~1/OverviewTanks.qml.orig b/FileSets/v3.30~3/OverviewTanks.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewTanks.qml.orig rename to FileSets/v3.30~3/OverviewTanks.qml.orig diff --git a/FileSets/v3.30~1/OverviewTanksTempsDigInputs.qml b/FileSets/v3.30~3/OverviewTanksTempsDigInputs.qml similarity index 100% rename from FileSets/v3.30~1/OverviewTanksTempsDigInputs.qml rename to FileSets/v3.30~3/OverviewTanksTempsDigInputs.qml diff --git a/FileSets/v3.30~1/OverviewTanksTempsDigInputs.qml.orig b/FileSets/v3.30~3/OverviewTanksTempsDigInputs.qml.orig similarity index 100% rename from FileSets/v3.30~1/OverviewTanksTempsDigInputs.qml.orig rename to FileSets/v3.30~3/OverviewTanksTempsDigInputs.qml.orig diff --git a/FileSets/v3.30~1/PageDigitalInput.qml b/FileSets/v3.30~3/PageDigitalInput.qml similarity index 100% rename from FileSets/v3.30~1/PageDigitalInput.qml rename to FileSets/v3.30~3/PageDigitalInput.qml diff --git a/FileSets/v3.30~1/PageDigitalInput.qml.orig b/FileSets/v3.30~3/PageDigitalInput.qml.orig similarity index 100% rename from FileSets/v3.30~1/PageDigitalInput.qml.orig rename to FileSets/v3.30~3/PageDigitalInput.qml.orig diff --git a/FileSets/v3.30~1/PageGenerator.qml b/FileSets/v3.30~3/PageGenerator.qml similarity index 100% rename from FileSets/v3.30~1/PageGenerator.qml rename to FileSets/v3.30~3/PageGenerator.qml diff --git a/FileSets/v3.30~1/PageGenerator.qml.orig b/FileSets/v3.30~3/PageGenerator.qml.orig similarity index 100% rename from FileSets/v3.30~1/PageGenerator.qml.orig rename to FileSets/v3.30~3/PageGenerator.qml.orig diff --git a/FileSets/v3.30~1/PageMain.qml b/FileSets/v3.30~3/PageMain.qml similarity index 100% rename from FileSets/v3.30~1/PageMain.qml rename to FileSets/v3.30~3/PageMain.qml diff --git a/FileSets/v3.30~1/PageMain.qml.orig b/FileSets/v3.30~3/PageMain.qml.orig similarity index 100% rename from FileSets/v3.30~1/PageMain.qml.orig rename to FileSets/v3.30~3/PageMain.qml.orig diff --git a/FileSets/v3.30~3/PageSettingsDisplay.qml b/FileSets/v3.30~3/PageSettingsDisplay.qml new file mode 100644 index 00000000..ddf70298 --- /dev/null +++ b/FileSets/v3.30~3/PageSettingsDisplay.qml @@ -0,0 +1,144 @@ +//////// modified to add GuiMods controls + +import QtQuick 1.1 +import com.victron.velib 1.0 +import "utils.js" as Utils + +MbPage { + id: root + property string bindPrefix: "com.victronenergy.settings/Settings/Gui" + + model: VisibleItemModel { + MbSwitch { + id: autoBrightness + name: qsTr("Adaptive brightness") + bind: Utils.path(bindPrefix, "/AutoBrightness") + show: vePlatform.hasAutoBrightness + onClicked: vePlatform.autoBrightness = checked; + } + + // note: the backlight is changed during edit, and saved afterwards + MbItemSlider { + id: backlight + show: vePlatform.hasBacklight && !(vePlatform.hasAutoBrightness && autoBrightness.checked) + icondId: "icon-items-brightness" + directUpdates: true + item { + min: 1 + max: vePlatform.maxBrightness + step: 1 + value: vePlatform.brightness + onValueChanged: if (editMode) vePlatform.brightness = item.value; + } + writeAccessLevel: User.AccessUser + onEditModeChanged: if (!editMode) storedBacklight.setValue(item.value) + + VBusItem { + id: storedBacklight + bind: Utils.path(bindPrefix, "/Brightness") + } + } + + MbItemOptions { + show: vePlatform.hasScreenSaver + description: qsTr("Display off time") + bind: Utils.path(bindPrefix, "/DisplayOff") + writeAccessLevel: User.AccessUser + possibleValues: [ + MbOption { description: qsTr("10 sec"); value: 10 }, + MbOption { description: qsTr("30 sec"); value: 30 }, + MbOption { description: qsTr("1 min"); value: 60 }, + MbOption { description: qsTr("10 min"); value: 600 }, + MbOption { description: qsTr("30 min"); value: 1800 }, + MbOption { description: qsTr("Never"); value: 0 } + ] + } + + ////// GuiMods — DarkMode + MbSwitch + { + id: colorScheme + bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" + name: qsTr ("Dark Mode") + writeAccessLevel: User.AccessUser + } + + MbSwitch { + bind: Utils.path(bindPrefix, "/MobileOverview") + name: qsTr("Show boat & motorhome overview") + // When enabled set OverviewMobile as default overview + onClicked: if (checked) defaultOverview.setValue("OverviewMobile") + VBusItem { id: defaultOverview; bind: "com.victronenergy.settings/Settings/Gui/DefaultOverview" } + } + + MbSwitch { + bind: Utils.path(bindPrefix, "/TanksOverview") + name: qsTr("Show tanks overview") + } + + //////// add Gui Mods menu + MbSubMenu { + id: guiModsMenu + description: qsTr("Gui Mods") + subpage: Component { + PageSettingsGuiMods { } + } + } + + MbItemOptions { + id: languageSelect + description: qsTr("Language") + writeAccessLevel: User.AccessUser + bind: Utils.path(bindPrefix, "/Language") + + // NOTE: do make sure application.cpp returns the correct fontForLanguage. + // The current font might not be able to display these values / the default + // font might not be contain the characters required for the selected language. + possibleValues: [ + MbOptionLang { description: "English"; value: "en" }, + MbOptionLang { description: "Čeština"; value: "cs" }, + MbOptionLang { description: "Dansk"; value: "da" }, + MbOptionLang { description: "Deutsch"; value: "de" }, + MbOptionLang { description: "Español"; value: "es" }, + MbOptionLang { description: "Français"; value: "fr" }, + MbOptionLang { description: "Italiano"; value: "it" }, + MbOptionLang { description: "Nederlands"; value: "nl" }, + MbOptionLang { description: "Polski"; value: "pl" }, + MbOptionLang { description: "Русский"; value: "ru" }, + MbOptionLang { description: "Română"; value: "ro" }, + MbOptionLang { description: "Svenska"; value: "se" }, + MbOptionLang { description: "ไทย"; value: "th" }, + MbOptionLang { description: "Türkçe"; value: "tr" }, + MbOptionLang { description: "Українська"; value: "uk" }, + MbOptionLang { description: "中文"; value: "zh" }, + MbOptionLang { description: "العربية"; value: "ar" } + ] + } + + MbSubMenu { + description: qsTr("Units") + subpage: Component { + PageSettingsDisplayUnits { + title: qsTr("Units") + } + } + } + + MbItemOptions { + property VBusItem updateFeed: VBusItem { bind: "com.victronenergy.settings/Settings/System/ReleaseType" } + show: vePlatform.isGuiv2Installed() && vePlatform.displayPresent() && updateFeed.value >= Updater.FirmwareCandidate + bind: "com.victronenergy.settings/Settings/Gui/RunningVersion" + description: "Onscreen UI (GX Touch & Ekrano)" + writeAccessLevel: User.AccessUser + possibleValues: [ + MbOption { description: "Standard version"; value: 1 }, + MbOption { description: "Gui-v2 (beta) version"; value: 2 } + ] + onOptionSelected: { + if (newValue === 2) { + vePlatform.splash("Starting the beta UI") + } + } + } + } +} diff --git a/FileSets/v3.30~3/PageSettingsDisplay.qml.orig b/FileSets/v3.30~3/PageSettingsDisplay.qml.orig new file mode 100644 index 00000000..14791d6b --- /dev/null +++ b/FileSets/v3.30~3/PageSettingsDisplay.qml.orig @@ -0,0 +1,124 @@ +import QtQuick 1.1 +import com.victron.velib 1.0 +import "utils.js" as Utils + +MbPage { + id: root + property string bindPrefix: "com.victronenergy.settings/Settings/Gui" + + model: VisibleItemModel { + MbSwitch { + id: autoBrightness + name: qsTr("Adaptive brightness") + bind: Utils.path(bindPrefix, "/AutoBrightness") + show: vePlatform.hasAutoBrightness + onClicked: vePlatform.autoBrightness = checked; + } + + // note: the backlight is changed during edit, and saved afterwards + MbItemSlider { + id: backlight + show: vePlatform.hasBacklight && !(vePlatform.hasAutoBrightness && autoBrightness.checked) + icondId: "icon-items-brightness" + directUpdates: true + item { + min: 1 + max: vePlatform.maxBrightness + step: 1 + value: vePlatform.brightness + onValueChanged: if (editMode) vePlatform.brightness = item.value; + } + writeAccessLevel: User.AccessUser + onEditModeChanged: if (!editMode) storedBacklight.setValue(item.value) + + VBusItem { + id: storedBacklight + bind: Utils.path(bindPrefix, "/Brightness") + } + } + + MbItemOptions { + show: vePlatform.hasScreenSaver + description: qsTr("Display off time") + bind: Utils.path(bindPrefix, "/DisplayOff") + writeAccessLevel: User.AccessUser + possibleValues: [ + MbOption { description: qsTr("10 sec"); value: 10 }, + MbOption { description: qsTr("30 sec"); value: 30 }, + MbOption { description: qsTr("1 min"); value: 60 }, + MbOption { description: qsTr("10 min"); value: 600 }, + MbOption { description: qsTr("30 min"); value: 1800 }, + MbOption { description: qsTr("Never"); value: 0 } + ] + } + + MbSwitch { + bind: Utils.path(bindPrefix, "/MobileOverview") + name: qsTr("Show boat & motorhome overview") + // When enabled set OverviewMobile as default overview + onClicked: if (checked) defaultOverview.setValue("OverviewMobile") + VBusItem { id: defaultOverview; bind: "com.victronenergy.settings/Settings/Gui/DefaultOverview" } + } + + MbSwitch { + bind: Utils.path(bindPrefix, "/TanksOverview") + name: qsTr("Show tanks overview") + } + + MbItemOptions { + id: languageSelect + description: qsTr("Language") + writeAccessLevel: User.AccessUser + bind: Utils.path(bindPrefix, "/Language") + + // NOTE: do make sure application.cpp returns the correct fontForLanguage. + // The current font might not be able to display these values / the default + // font might not be contain the characters required for the selected language. + possibleValues: [ + MbOptionLang { description: "English"; value: "en" }, + MbOptionLang { description: "Čeština"; value: "cs" }, + MbOptionLang { description: "Dansk"; value: "da" }, + MbOptionLang { description: "Deutsch"; value: "de" }, + MbOptionLang { description: "Español"; value: "es" }, + MbOptionLang { description: "Français"; value: "fr" }, + MbOptionLang { description: "Italiano"; value: "it" }, + MbOptionLang { description: "Nederlands"; value: "nl" }, + MbOptionLang { description: "Polski"; value: "pl" }, + MbOptionLang { description: "Русский"; value: "ru" }, + MbOptionLang { description: "Română"; value: "ro" }, + MbOptionLang { description: "Svenska"; value: "se" }, + MbOptionLang { description: "ไทย"; value: "th" }, + MbOptionLang { description: "Türkçe"; value: "tr" }, + MbOptionLang { description: "Українська"; value: "uk" }, + MbOptionLang { description: "中文"; value: "zh" }, + MbOptionLang { description: "العربية"; value: "ar" } + ] + } + + MbSubMenu { + description: qsTr("Units") + subpage: Component { + PageSettingsDisplayUnits { + title: qsTr("Units") + } + } + } + + MbItemOptions { + property VBusItem updateFeed: VBusItem { bind: "com.victronenergy.settings/Settings/System/ReleaseType" } + show: vePlatform.isGuiv2Installed() && vePlatform.displayPresent() && updateFeed.value >= Updater.FirmwareCandidate + bind: "com.victronenergy.settings/Settings/Gui/RunningVersion" + description: "Onscreen UI (GX Touch & Ekrano)" + writeAccessLevel: User.AccessUser + possibleValues: [ + MbOption { description: "Standard version"; value: 1 }, + MbOption { description: "Gui-v2 (beta) version"; value: 2 } + ] + onOptionSelected: { + if (newValue === 2) { + vePlatform.splash("Starting the beta UI") + } + } + } + } +} diff --git a/FileSets/v3.30~1/PageSettingsGenerator.qml b/FileSets/v3.30~3/PageSettingsGenerator.qml similarity index 100% rename from FileSets/v3.30~1/PageSettingsGenerator.qml rename to FileSets/v3.30~3/PageSettingsGenerator.qml diff --git a/FileSets/v3.30~1/PageSettingsGenerator.qml.orig b/FileSets/v3.30~3/PageSettingsGenerator.qml.orig similarity index 100% rename from FileSets/v3.30~1/PageSettingsGenerator.qml.orig rename to FileSets/v3.30~3/PageSettingsGenerator.qml.orig diff --git a/FileSets/v3.30~3/PageSettingsGuiMods.qml b/FileSets/v3.30~3/PageSettingsGuiMods.qml new file mode 100644 index 00000000..420a42ac --- /dev/null +++ b/FileSets/v3.30~3/PageSettingsGuiMods.qml @@ -0,0 +1,290 @@ +/////// new menu for all Gui Mods + +import QtQuick 1.1 +import "utils.js" as Utils +import com.victron.velib 1.0 + +MbPage { + id: root + title: qsTr("Gui Mods") + property string bindPrefixGuiMods: "com.victronenergy.settings/Settings/GuiMods" + property string bindPrefix: "com.victronenergy.settings/Settings/Gui" + property VBusItem systemScaleItem: VBusItem { bind: "com.victronenergy.settings/Settings/System/Units/Temperature" } + + property bool showFlowParams: flowOverview.item.valid && flowOverview.item.value >= 1 + property bool showComplexParams: flowOverview.item.valid && flowOverview.item.value >= 2 + property bool showAcCoupledParams: flowOverview.item.valid && flowOverview.item.value == 3 + + model: VisibleItemModel + { + MbSwitch + { + id: showTileOverview + bind: Utils.path (bindPrefixGuiMods, "/ShowTileOverview") + name: qsTr ("Show Tile Overview") + writeAccessLevel: User.AccessUser + } + + MbSwitch + { + id: moveSettings + bind: Utils.path (bindPrefixGuiMods, "/MoveSettings") + name: qsTr ("Move Settings to top of Device List") + writeAccessLevel: User.AccessUser + } + + MbSwitch { + id: relayOverview + bind: Utils.path (bindPrefixGuiMods, "/ShowRelayOverview") + name: qsTr ("Show Relay overview") + writeAccessLevel: User.AccessUser + } + MbSwitch { + id: tanksTempsOverview + bind: Utils.path (bindPrefixGuiMods, "/ShowTanksTempsDigIn") + name: qsTr ("Show Tanks, Temps, Digital Input overview") + writeAccessLevel: User.AccessUser + } + + MbSwitch + { + id: useEnhGeneratorOverview + bind: Utils.path (bindPrefixGuiMods, "/UseEnhancedGeneratorOverview") + name: qsTr ("Use Enhanced Generator Overview") + writeAccessLevel: User.AccessUser + } + + // duplicate mobile overview on/off here for convenience + MbSwitch { + id: mobileOverview + bind: Utils.path (bindPrefix, "/MobileOverview") + name: qsTr ("Show boat & motorhome overview") + writeAccessLevel: User.AccessUser + } + MbSwitch + { + id: useEnhMobileOverview + bind: Utils.path (bindPrefixGuiMods, "/UseEnhancedMobileOverview") + name: qsTr ("Use Enhanced Mobile Overview") + // When enabled set Enhanced OverviewMobile as default overview + onClicked: + { + if (!checked) + { + // also enable Mobile Overview when turning on use enhanced Mobile Overview + showMobileOverview.setValue (1) + } + } + VBusItem { id: showMobileOverview; bind: Utils.path (bindPrefix, "/MobileOverview") } + writeAccessLevel: User.AccessUser + } + MbItemOptions + { + id: flowOverview + description: qsTr("Flow overview") + bind: Utils.path (bindPrefixGuiMods, "/FlowOverview") + possibleValues: + [ + MbOption {description: qsTr("Victron stock"); value: 0}, + MbOption {description: qsTr("GuiMods simple"); value: 1}, + MbOption {description: qsTr("GuiMods DC Coupled"); value: 2}, + MbOption {description: qsTr("GuiMods AC Coupled"); value: 3} + ] + } + + MbSwitch + { + id: combineLoads + bind: Utils.path (bindPrefixGuiMods, "/EnhancedFlowCombineLoads") + name: qsTr ("Combine AC input/ouput loads") + show: root.showAcCoupledParams + writeAccessLevel: User.AccessInstaller + } + MbSwitch + { + id: showLoadsOnInput + bind: Utils.path (bindPrefixGuiMods, "/ShowEnhancedFlowLoadsOnInput") + name: qsTr ("Show Loads On Input") + show: root.showAcCoupledParams && ! combineLoads.checked + writeAccessLevel: User.AccessInstaller + } + + MbSwitch + { + id: showTanks + bind: Utils.path (bindPrefixGuiMods, "/ShowEnhancedFlowOverviewTanks") + name: qsTr ("Show tanks on Flow Overview") + show: root.showFlowParams + writeAccessLevel: User.AccessUser + } + MbItemOptions + { + id: tankFormat + description: qsTr("Tank bar format") + bind: Utils.path (bindPrefixGuiMods, "/TankBarFormat") + possibleValues: + [ + MbOption {description: qsTr("%"); value: 1}, + MbOption {description: qsTr("units"); value: 2}, + MbOption {description: qsTr("% + units"); value: 0} + ] + } + MbSwitch + { + id: showTemps + bind: Utils.path (bindPrefixGuiMods, "/ShowEnhancedFlowOverviewTemps") + name: qsTr ("Show temperatures on Flow Overview") + show: root.showFlowParams + writeAccessLevel: User.AccessUser + } + MbSwitch + { + id: showBatteryTemps + bind: Utils.path (bindPrefixGuiMods, "/ShowBatteryTempOnFlows") + name: qsTr ("Show battery temperature on Flow Overview") + show: showTemps.item.value == 1 + writeAccessLevel: User.AccessUser + } + MbSwitch + { + id: shortenTankNames + bind: Utils.path (bindPrefixGuiMods, "/ShortenTankNames") + name: qsTr ("Shorten tank names") + writeAccessLevel: User.AccessUser + } + MbEditBox { + id: dcSystemName + description: qsTr("DC System tile name") + item.bind: Utils.path (bindPrefixGuiMods, "/CustomDcSystemName") + maximumLength: 32 + enableSpaceBar: true + } + + MbSwitch + { + id: replaceInactiveAcIn + bind: Utils.path (bindPrefixGuiMods, "/ReplaceInactiveAcIn") + name: qsTr ("Replace AC in if inactive") + writeAccessLevel: User.AccessUser + } + + MbSpinBox { + description: qsTr ("AC Input Limit Preset 1") + item + { + bind: Utils.path (bindPrefixGuiMods, "/AcCurrentLimit/Preset1") + unit: "A" + decimals: 0 + step: 1 + min: 0 + max: 999 + } + writeAccessLevel: User.AccessUser + } + + MbSpinBox { + description: qsTr ("AC Input Limit Preset 2") + item + { + bind: Utils.path (bindPrefixGuiMods, "/AcCurrentLimit/Preset2") + unit: "A" + decimals: 0 + step: 1 + min: 0 + max: 999 + } + writeAccessLevel: User.AccessUser + } + + MbSpinBox { + description: qsTr ("AC Input Limit Preset 3") + item + { + bind: Utils.path (bindPrefixGuiMods, "/AcCurrentLimit/Preset3") + unit: "A" + decimals: 0 + step: 1 + min: 0 + max: 999 + } + writeAccessLevel: User.AccessUser + } + + MbSpinBox { + description: qsTr ("AC Input Limit Preset 4") + item + { + bind: Utils.path (bindPrefixGuiMods, "/AcCurrentLimit/Preset4") + unit: "A" + decimals: 0 + step: 1 + min: 0 + max: 999 + } + writeAccessLevel: User.AccessUser + } + + MbItemOptions + { + id: tempScale + description: qsTr ("Temperature scale") + bind: Utils.path (bindPrefixGuiMods, "/TemperatureScale") + show: ! systemScaleItem.valid + possibleValues: + [ + MbOption { description: "°C"; value: 1 }, + MbOption { description: "°F"; value: 2 }, + MbOption { description: qsTr("both °C & °F"); value: 0 } + ] + writeAccessLevel: User.AccessUser + } + + MbSpinBox { + description: qsTr ("Watt / Kilowatt threshold") + item + { + bind: Utils.path (bindPrefixGuiMods, "/KilowattThreshold") + unit: "W" + decimals: 0 + step: 100 + min: 1000 + max: 10000 + } + writeAccessLevel: User.AccessUser + } + + MbItemOptions + { + id: timeFormat + description: qsTr ("Time format") + bind: Utils.path (bindPrefixGuiMods, "/TimeFormat") + possibleValues: + [ + MbOption { description: qsTr("24 hour"); value: 1 }, + MbOption { description: qsTr("12 hour AM/PM"); value: 2 }, + MbOption { description: qsTr("don't show time"); value: 0 } + ] + writeAccessLevel: User.AccessUser + } + MbItemOptions + { + id: inactiveFlowTiles + description: qsTr ("Inactive Tiles on Flow Overview") + bind: Utils.path (bindPrefixGuiMods, "/ShowInactiveFlowTiles") + show: root.showFlowParams + possibleValues: + [ + MbOption { description: qsTr("Show Dimmed"); value: 1 }, + MbOption { description: qsTr("Show Full"); value: 2 }, + MbOption { description: qsTr("Hide"); value: 0 } + ] + writeAccessLevel: User.AccessUser + } + MbSubMenu + { + description: qsTr("Power Gauges") + subpage: Component { PageSettingsGuiModsGauges {} } + show: root.showFlowParams + } + } +} diff --git a/FileSets/v3.30~1/PageSettingsGuiMods.qml.orig b/FileSets/v3.30~3/PageSettingsGuiMods.qml.orig similarity index 100% rename from FileSets/v3.30~1/PageSettingsGuiMods.qml.orig rename to FileSets/v3.30~3/PageSettingsGuiMods.qml.orig diff --git a/FileSets/v3.30~1/PageSettingsRelay.qml b/FileSets/v3.30~3/PageSettingsRelay.qml similarity index 100% rename from FileSets/v3.30~1/PageSettingsRelay.qml rename to FileSets/v3.30~3/PageSettingsRelay.qml diff --git a/FileSets/v3.30~1/PageSettingsRelay.qml.orig b/FileSets/v3.30~3/PageSettingsRelay.qml.orig similarity index 100% rename from FileSets/v3.30~1/PageSettingsRelay.qml.orig rename to FileSets/v3.30~3/PageSettingsRelay.qml.orig diff --git a/FileSets/v3.30~1/PowerGauge.qml b/FileSets/v3.30~3/PowerGauge.qml similarity index 100% rename from FileSets/v3.30~1/PowerGauge.qml rename to FileSets/v3.30~3/PowerGauge.qml diff --git a/FileSets/v3.30~1/PowerGauge.qml.orig b/FileSets/v3.30~3/PowerGauge.qml.orig similarity index 100% rename from FileSets/v3.30~1/PowerGauge.qml.orig rename to FileSets/v3.30~3/PowerGauge.qml.orig diff --git a/FileSets/v3.30~1/Tile.qml b/FileSets/v3.30~3/Tile.qml similarity index 100% rename from FileSets/v3.30~1/Tile.qml rename to FileSets/v3.30~3/Tile.qml diff --git a/FileSets/v3.30~1/Tile.qml.orig b/FileSets/v3.30~3/Tile.qml.orig similarity index 100% rename from FileSets/v3.30~1/Tile.qml.orig rename to FileSets/v3.30~3/Tile.qml.orig diff --git a/FileSets/v3.30~1/TileDigIn.qml b/FileSets/v3.30~3/TileDigIn.qml similarity index 100% rename from FileSets/v3.30~1/TileDigIn.qml rename to FileSets/v3.30~3/TileDigIn.qml diff --git a/FileSets/v3.30~1/TileDigIn.qml.orig b/FileSets/v3.30~3/TileDigIn.qml.orig similarity index 100% rename from FileSets/v3.30~1/TileDigIn.qml.orig rename to FileSets/v3.30~3/TileDigIn.qml.orig diff --git a/FileSets/v3.30~1/TileRelay.qml b/FileSets/v3.30~3/TileRelay.qml similarity index 100% rename from FileSets/v3.30~1/TileRelay.qml rename to FileSets/v3.30~3/TileRelay.qml diff --git a/FileSets/v3.30~1/TileRelay.qml.orig b/FileSets/v3.30~3/TileRelay.qml.orig similarity index 100% rename from FileSets/v3.30~1/TileRelay.qml.orig rename to FileSets/v3.30~3/TileRelay.qml.orig diff --git a/FileSets/v3.30~1/TileText.qml b/FileSets/v3.30~3/TileText.qml similarity index 100% rename from FileSets/v3.30~1/TileText.qml rename to FileSets/v3.30~3/TileText.qml diff --git a/FileSets/v3.30~1/TileText.qml.orig b/FileSets/v3.30~3/TileText.qml.orig similarity index 100% rename from FileSets/v3.30~1/TileText.qml.orig rename to FileSets/v3.30~3/TileText.qml.orig diff --git a/FileSets/v3.30~1/attributes.csv b/FileSets/v3.30~3/attributes.csv similarity index 100% rename from FileSets/v3.30~1/attributes.csv rename to FileSets/v3.30~3/attributes.csv diff --git a/FileSets/v3.30~1/attributes.csv.orig b/FileSets/v3.30~3/attributes.csv.orig similarity index 100% rename from FileSets/v3.30~1/attributes.csv.orig rename to FileSets/v3.30~3/attributes.csv.orig diff --git a/FileSets/v3.30~1/dbus_digitalinputs.py b/FileSets/v3.30~3/dbus_digitalinputs.py similarity index 100% rename from FileSets/v3.30~1/dbus_digitalinputs.py rename to FileSets/v3.30~3/dbus_digitalinputs.py diff --git a/FileSets/v3.30~1/dbus_digitalinputs.py.orig b/FileSets/v3.30~3/dbus_digitalinputs.py.orig similarity index 100% rename from FileSets/v3.30~1/dbus_digitalinputs.py.orig rename to FileSets/v3.30~3/dbus_digitalinputs.py.orig diff --git a/FileSets/v3.30~1/dbus_generator.py b/FileSets/v3.30~3/dbus_generator.py similarity index 100% rename from FileSets/v3.30~1/dbus_generator.py rename to FileSets/v3.30~3/dbus_generator.py diff --git a/FileSets/v3.30~1/dbus_generator.py.orig b/FileSets/v3.30~3/dbus_generator.py.orig similarity index 100% rename from FileSets/v3.30~1/dbus_generator.py.orig rename to FileSets/v3.30~3/dbus_generator.py.orig diff --git a/FileSets/v3.30~3/dbus_systemcalc.py b/FileSets/v3.30~3/dbus_systemcalc.py new file mode 100755 index 00000000..3de9ae57 --- /dev/null +++ b/FileSets/v3.30~3/dbus_systemcalc.py @@ -0,0 +1,1370 @@ +#!/usr/bin/python3 -u +# -*- coding: utf-8 -*- + +#### modified for GuiMods + +from dbus.mainloop.glib import DBusGMainLoop +import dbus +import argparse +import sys +import os +import json +import time +import re +from gi.repository import GLib + +# Victron packages +sys.path.insert(1, os.path.join(os.path.dirname(__file__), 'ext', 'velib_python')) +from vedbus import VeDbusService +from ve_utils import get_vrm_portal_id, exit_on_error +from dbusmonitor import DbusMonitor +from settingsdevice import SettingsDevice +from logger import setup_logging +import delegates +from sc_utils import safeadd as _safeadd, safemax as _safemax + +softwareVersion = '2.152' + +class SystemCalc: + STATE_IDLE = 0 + STATE_CHARGING = 1 + STATE_DISCHARGING = 2 + BATSERVICE_DEFAULT = 'default' + BATSERVICE_NOBATTERY = 'nobattery' + def __init__(self): + # Why this dummy? Because DbusMonitor expects these values to be there, even though we don't + # need them. So just add some dummy data. This can go away when DbusMonitor is more generic. + dummy = {'code': None, 'whenToLog': 'configChange', 'accessLevel': None} + dbus_tree = { + 'com.victronenergy.solarcharger': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Load/I': dummy, + '/FirmwareVersion': dummy}, + 'com.victronenergy.battery': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/DeviceInstance': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/1/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Soc': dummy, + '/Sense/Current': dummy, + '/TimeToGo': dummy, + '/ConsumedAmphours': dummy, + '/ProductId': dummy, + '/CustomName': dummy, + '/Info/MaxChargeVoltage': dummy}, + 'com.victronenergy.vebus' : { + '/Ac/ActiveIn/ActiveInput': dummy, + '/Ac/ActiveIn/L1/P': dummy, + '/Ac/ActiveIn/L2/P': dummy, + '/Ac/ActiveIn/L3/P': dummy, + '/Ac/ActiveIn/L1/I': dummy, + '/Ac/ActiveIn/L2/I': dummy, + '/Ac/ActiveIn/L3/I': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L2/P': dummy, + '/Ac/Out/L3/P': dummy, + '/Ac/Out/L1/I': dummy, + '/Ac/Out/L2/I': dummy, + '/Ac/Out/L3/I': dummy, +#### add for GuiMods + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L2/V': dummy, + '/Ac/Out/L3/V': dummy, + '/Ac/Out/L1/F': dummy, + '/Ac/Out/L2/F': dummy, + '/Ac/Out/L3/F': dummy, + '/Ac/ActiveIn/L1/V': dummy, + '/Ac/ActiveIn/L2/V': dummy, + '/Ac/ActiveIn/L3/V': dummy, + '/Ac/ActiveIn/L1/F': dummy, + '/Ac/ActiveIn/L2/F': dummy, + '/Ac/ActiveIn/L3/F': dummy, + + '/Connected': dummy, + '/ProductId': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Mode': dummy, + '/State': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.fuelcell': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy}, + 'com.victronenergy.charger': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/1/Voltage': dummy, + '/Dc/1/Current': dummy, + '/Dc/2/Voltage': dummy, + '/Dc/2/Current': dummy}, + 'com.victronenergy.grid' : { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/ProductId' : dummy, + '/DeviceType' : dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy, +#### add for GuiMods + '/Ac/L1/Voltage': dummy, + '/Ac/L2/Voltage': dummy, + '/Ac/L3/Voltage': dummy, + '/Ac/L1/Frequency': dummy, + '/Ac/L2/Frequency': dummy, + '/Ac/L3/Frequency': dummy}, + 'com.victronenergy.genset' : { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/ProductId' : dummy, + '/DeviceType' : dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy, +#### add for GuiMods + '/Ac/L1/Voltage': dummy, + '/Ac/L2/Voltage': dummy, + '/Ac/L3/Voltage': dummy, + '/Ac/L1/Frequency': dummy, + '/Ac/L2/Frequency': dummy, + '/Ac/L3/Frequency': dummy, + + '/StarterVoltage': dummy}, + 'com.victronenergy.settings' : { + '/Settings/SystemSetup/AcInput1' : dummy, + '/Settings/SystemSetup/AcInput2' : dummy, + '/Settings/CGwacs/RunWithoutGridMeter' : dummy, + '/Settings/System/TimeZone' : dummy}, + 'com.victronenergy.temperature': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy}, + 'com.victronenergy.inverter': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L1/S': dummy, + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L1/I': dummy, + '/Ac/Out/L2/P': dummy, + '/Ac/Out/L2/S': dummy, + '/Ac/Out/L2/V': dummy, + '/Ac/Out/L2/I': dummy, + '/Ac/Out/L3/P': dummy, + '/Ac/Out/L3/S': dummy, + '/Ac/Out/L3/V': dummy, + '/Ac/Out/L3/I': dummy, +#### add for GuiMods + '/Ac/Out/L1/F': dummy, + + '/Yield/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.multi': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Ac/ActiveIn/ActiveInput': dummy, + '/Ac/In/1/Type': dummy, + '/Ac/In/2/Type': dummy, + '/Ac/In/1/L1/P': dummy, + '/Ac/In/1/L1/I': dummy, + '/Ac/In/2/L1/P': dummy, + '/Ac/In/2/L1/I': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L1/I': dummy, + '/Ac/In/1/L2/P': dummy, + '/Ac/In/1/L2/I': dummy, + '/Ac/In/2/L2/P': dummy, + '/Ac/In/2/L2/I': dummy, + '/Ac/Out/L2/P': dummy, + '/Ac/Out/L2/V': dummy, + '/Ac/Out/L2/I': dummy, + '/Ac/In/1/L3/P': dummy, + '/Ac/In/1/L3/I': dummy, + '/Ac/In/2/L3/P': dummy, + '/Ac/In/2/L3/I': dummy, + '/Ac/Out/L3/P': dummy, + '/Ac/Out/L3/V': dummy, + '/Ac/Out/L3/I': dummy, +#### add for GuiMods + '/Ac/Out/L1/F': dummy, + + '/Yield/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.dcsystem': { + '/Dc/0/Voltage': dummy, + '/Dc/0/Power': dummy + }, + 'com.victronenergy.alternator': { + '/Dc/0/Power': dummy + }, +#### added for GuiMods + 'com.victronenergy.dcsource': { + '/Dc/0/Power': dummy, + '/Settings/MonitorMode': dummy + }, + 'com.victronenergy.motordrive': + { + '/Dc/0/Power': dummy + } + } + + self._modules = [ + delegates.Multi(), + delegates.HubTypeSelect(), + delegates.VebusSocWriter(), + delegates.ServiceMapper(), + delegates.RelayState(), + delegates.BuzzerControl(), + delegates.LgCircuitBreakerDetect(), + delegates.BatterySoc(self), + delegates.Dvcc(self), + delegates.BatterySense(self), + delegates.BatterySettings(self), + delegates.SystemState(self), + delegates.BatteryLife(), + delegates.ScheduledCharging(), + delegates.SourceTimers(), + delegates.BatteryData(), + delegates.Gps(), + delegates.AcInputs(), + delegates.GensetStartStop(), + delegates.SocSync(self), + delegates.PvInverters(), + delegates.BatteryService(self), + delegates.CanBatterySense(), + delegates.DynamicEss()] + + for m in self._modules: + for service, paths in m.get_input(): + s = dbus_tree.setdefault(service, {}) + for path in paths: + s[path] = dummy + + self._dbusmonitor = self._create_dbus_monitor(dbus_tree, valueChangedCallback=self._dbus_value_changed, + deviceAddedCallback=self._device_added, deviceRemovedCallback=self._device_removed) + + # Connect to localsettings + supported_settings = { + 'batteryservice': ['/Settings/SystemSetup/BatteryService', self.BATSERVICE_DEFAULT, 0, 0], + 'hasdcsystem': ['/Settings/SystemSetup/HasDcSystem', 0, 0, 1], + 'useacout': ['/Settings/SystemSetup/HasAcOutSystem', 1, 0, 1]} + + for m in self._modules: + for setting in m.get_settings(): + supported_settings[setting[0]] = list(setting[1:]) + + self._settings = self._create_settings(supported_settings, self._handlechangedsetting) + + self._dbusservice = self._create_dbus_service() + + for m in self._modules: + m.set_sources(self._dbusmonitor, self._settings, self._dbusservice) + + # At this moment, VRM portal ID is the MAC address of the CCGX. Anyhow, it should be string uniquely + # identifying the CCGX. + self._dbusservice.add_path('/Serial', value=get_vrm_portal_id()) + self._dbusservice.add_path( + '/AvailableBatteryServices', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/AvailableBatteryMeasurements', value=None) + self._dbusservice.add_path( + '/AutoSelectedBatteryService', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/AutoSelectedBatteryMeasurement', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/ActiveBatteryService', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/Dc/Battery/BatteryService', value=None) + self._summeditems = { + '/Ac/Grid/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Grid/ProductId': {'gettext': '%s'}, + '/Ac/Grid/DeviceType': {'gettext': '%s'}, + '/Ac/Genset/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Genset/ProductId': {'gettext': '%s'}, + '/Ac/Genset/DeviceType': {'gettext': '%s'}, + '/Ac/ConsumptionOnOutput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Consumption/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/L3/Current': {'gettext': '%.1F A'}, + '/Dc/Pv/Power': {'gettext': '%.0F W'}, + '/Dc/Pv/Current': {'gettext': '%.1F A'}, + '/Dc/Battery/Voltage': {'gettext': '%.2F V'}, + '/Dc/Battery/VoltageService': {'gettext': '%s'}, + '/Dc/Battery/Current': {'gettext': '%.1F A'}, + '/Dc/Battery/Power': {'gettext': '%.0F W'}, + '/Dc/Battery/State': {'gettext': '%s'}, + '/Dc/Battery/TimeToGo': {'gettext': '%.0F s'}, + '/Dc/Battery/ConsumedAmphours': {'gettext': '%.1F Ah'}, + '/Dc/Battery/ProductId': {'gettext': '0x%x'}, + '/Dc/Charger/Power': {'gettext': '%.0F %%'}, + '/Dc/FuelCell/Power': {'gettext': '%.0F %%'}, + '/Dc/Alternator/Power': {'gettext': '%.0F W'}, + '/Dc/Vebus/Current': {'gettext': '%.1F A'}, + '/Dc/Vebus/Power': {'gettext': '%.0F W'}, + '/Dc/System/Power': {'gettext': '%.0F W'}, + '/Dc/System/MeasurementType': {'gettext': '%d'}, + '/Ac/ActiveIn/Source': {'gettext': '%s'}, + '/Ac/ActiveIn/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L3/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/NumberOfPhases': {'gettext': '%d'}, +#### added for GuiMods + '/Dc/WindGenerator/Power': {'gettext': '%.0F W'}, + '/Dc/MotorDrive/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L1/Voltage': {'gettext': '%.1F V'}, + '/Ac/Grid/L2/Voltage': {'gettext': '%.1F V'}, + '/Ac/Grid/L3/Voltage': {'gettext': '%.1F V'}, + '/Ac/Grid/Frequency': {'gettext': '%.1F Hz'}, + '/Ac/Genset/L1/Voltage': {'gettext': '%.1F V'}, + '/Ac/Genset/L2/Voltage': {'gettext': '%.1F V'}, + '/Ac/Genset/L3/Voltage': {'gettext': '%.1F V'}, + '/Ac/Genset/Frequency': {'gettext': '%.1F Hz'}, + '/Ac/ConsumptionOnOutput/L1/Voltage': {'gettext': '%.1F V'}, + '/Ac/ConsumptionOnOutput/L2/Voltage': {'gettext': '%.1F V'}, + '/Ac/ConsumptionOnOutput/L3/Voltage': {'gettext': '%.1F V'}, + '/Ac/ConsumptionOnOutput/Frequency': {'gettext': '%.1F Hz'}, + '/Ac/ConsumptionOnInput/L1/Voltage': {'gettext': '%.1F V'}, + '/Ac/ConsumptionOnInput/L2/Voltage': {'gettext': '%.1F V'}, + '/Ac/ConsumptionOnInput/L3/Voltage': {'gettext': '%.1F V'}, + '/Ac/ConsumptionOnInput/Frequency': {'gettext': '%.1F Hz'}, + '/Ac/Consumption/L1/Voltage': {'gettext': '%.1F V'}, + '/Ac/Consumption/L2/Voltage': {'gettext': '%.1F V'}, + '/Ac/Consumption/L3/Voltage': {'gettext': '%.1F V'}, + '/Ac/Consumption/Frequency': {'gettext': '%.1F Hz'}, + '/Ac/ActiveIn/L1/Voltage': {'gettext': '%.1F V'}, + '/Ac/ActiveIn/L2/Voltage': {'gettext': '%.1F V'}, + '/Ac/ActiveIn/L3/Voltage': {'gettext': '%.1F V'}, + '/Ac/ActiveIn/Frequency': {'gettext': '%.1F Hz'}, + } + + for m in self._modules: + self._summeditems.update(m.get_output()) + + for path in self._summeditems.keys(): + self._dbusservice.add_path(path, value=None, gettextcallback=self._gettext) + + self._batteryservice = None + self._determinebatteryservice() + + if self._batteryservice is None: + logger.info("Battery service initialized to None (setting == %s)" % + self._settings['batteryservice']) + + self._changed = True + for service, instance in self._dbusmonitor.get_service_list().items(): + self._device_added(service, instance, do_service_change=False) + +#### added for GuiMods + self.dcSystemPower = [0, 0, 0] + + self._handleservicechange() + self._updatevalues() + + GLib.timeout_add(1000, exit_on_error, self._handletimertick) + + def _create_dbus_monitor(self, *args, **kwargs): + raise Exception("This function should be overridden") + + def _create_settings(self, *args, **kwargs): + raise Exception("This function should be overridden") + + def _create_dbus_service(self): + raise Exception("This function should be overridden") + + def _handlechangedsetting(self, setting, oldvalue, newvalue): + self._determinebatteryservice() + self._changed = True + + # Give our delegates a chance to react on a settings change + for m in self._modules: + m.settings_changed(setting, oldvalue, newvalue) + + def _find_device_instance(self, serviceclass, instance): + """ Gets a mapping of services vs DeviceInstance using + get_service_list. Then searches for the specified DeviceInstance + and returns the service name. """ + services = self._dbusmonitor.get_service_list(classfilter=serviceclass) + + for k, v in services.items(): + if v == instance: + return k + return None + + def _determinebatteryservice(self): + auto_battery_service = self._autoselect_battery_service() + auto_battery_measurement = None + auto_selected = False + if auto_battery_service is not None: + services = self._dbusmonitor.get_service_list() + if auto_battery_service in services: + auto_battery_measurement = \ + self._get_instance_service_name(auto_battery_service, services[auto_battery_service]) + auto_battery_measurement = auto_battery_measurement.replace('.', '_').replace('/', '_') + '/Dc/0' + self._dbusservice['/AutoSelectedBatteryMeasurement'] = auto_battery_measurement + + if self._settings['batteryservice'] == self.BATSERVICE_DEFAULT: + auto_selected = True + newbatteryservice = auto_battery_service + self._dbusservice['/AutoSelectedBatteryService'] = ( + 'No battery monitor found' if newbatteryservice is None else + self._get_readable_service_name(newbatteryservice)) + + elif self._settings['batteryservice'] == self.BATSERVICE_NOBATTERY: + self._dbusservice['/AutoSelectedBatteryService'] = None + newbatteryservice = None + + else: + self._dbusservice['/AutoSelectedBatteryService'] = None + + s = self._settings['batteryservice'].split('/') + if len(s) != 2: + logger.error("The battery setting (%s) is invalid!" % self._settings['batteryservice']) + serviceclass = s[0] + instance = int(s[1]) if len(s) == 2 else None + + # newbatteryservice might turn into None if a chosen battery + # monitor no longer exists. Don't auto change the setting (it might + # come back) and don't autoselect another. + newbatteryservice = self._find_device_instance(serviceclass, instance) + + if newbatteryservice != self._batteryservice: + services = self._dbusmonitor.get_service_list() + instance = services.get(newbatteryservice, None) + if instance is None: + battery_service = None + else: + battery_service = self._get_instance_service_name(newbatteryservice, instance) + self._dbusservice['/ActiveBatteryService'] = battery_service + logger.info("Battery service, setting == %s, changed from %s to %s (%s)" % + (self._settings['batteryservice'], self._batteryservice, newbatteryservice, instance)) + + # Battery service has changed. Notify delegates. + self._dbusservice['/Dc/Battery/BatteryService'] = self._batteryservice = newbatteryservice + for m in self._modules: + m.battery_service_changed(auto_selected, self._batteryservice, newbatteryservice) + + def _autoselect_battery_service(self): + # Default setting business logic: + # first try to use a battery service (BMV or Lynx Shunt VE.Can). If there + # is more than one battery service, just use a random one. If no battery service is + # available, check if there are not Solar chargers and no normal chargers. If they are not + # there, assume this is a hub-2, hub-3 or hub-4 system and use VE.Bus SOC. + batteries = self._get_connected_service_list('com.victronenergy.battery') + + # Pick the battery service that has the lowest DeviceInstance, giving + # preference to those with a BMS. + if len(batteries) > 0: + batteries = [ + (not self._dbusmonitor.seen(s, '/Info/MaxChargeVoltage'), i, s) + for s, i in batteries.items()] + return sorted(batteries, key=lambda x: x[:2])[0][2] + + # No battery services, and there is a charger in the system. Abandon + # hope. + if self._get_first_connected_service('com.victronenergy.charger') is not None: + return None + + # Also no Multi, then give up. + vebus_service = self._get_service_having_lowest_instance('com.victronenergy.vebus') + if vebus_service is None: + # No VE.Bus, but maybe there is an inverter with built-in SOC + # tracking, eg RS Smart or Multi RS. + inverter = self._get_service_having_lowest_instance('com.victronenergy.multi') + if inverter and self._dbusmonitor.get_value(inverter[0], '/Soc') is not None: + return inverter[0] + + inverter = self._get_service_having_lowest_instance('com.victronenergy.inverter') + if inverter and self._dbusmonitor.get_value(inverter[0], '/Soc') is not None: + return inverter[0] + + return None + + # There is a Multi, it supports tracking external charge current from + # solarchargers, and there are no DC loads. Then use it. + if self._dbusmonitor.get_value( + vebus_service[0], '/ExtraBatteryCurrent') is not None \ + and self._get_first_connected_service('com.victronenergy.dcsystem') is None \ + and self._settings['hasdcsystem'] == 0: + return vebus_service[0] + + # Multi does not support tracking solarcharger current, and we have + # solar chargers. Then we cannot use it. + if self._get_first_connected_service('com.victronenergy.solarcharger') is not None: + return None + + # Only a Multi, no other chargers. Then we can use it. + return vebus_service[0] + + @property + def batteryservice(self): + return self._batteryservice + + # Called on a one second timer + def _handletimertick(self): + if self._changed: + self._updatevalues() + self._changed = False + + return True # keep timer running + + def _updatevalues(self): + # ==== PREPARATIONS ==== + newvalues = {} + + # Set the user timezone + if 'TZ' not in os.environ: + tz = self._dbusmonitor.get_value('com.victronenergy.settings', '/Settings/System/TimeZone') + if tz is not None: + os.environ['TZ'] = tz + time.tzset() + + # Determine values used in logic below + vebusses = self._dbusmonitor.get_service_list('com.victronenergy.vebus') + vebuspower = 0 + for vebus in vebusses: + v = self._dbusmonitor.get_value(vebus, '/Dc/0/Voltage') + i = self._dbusmonitor.get_value(vebus, '/Dc/0/Current') + if v is not None and i is not None: + vebuspower += v * i + + # ==== PVINVERTERS ==== + # Work is done in pv-inverter delegate. Ideally all of this should + # happen in update_values in the delegate, but these values are + # used below in calculating consumption, so until this is less + # unwieldy this has to stay here. + # TODO this can go away once consumption below no longer relies + # on these values, or has moved to its own delegate. + newvalues.update(delegates.PvInverters.instance.get_totals()) + self._compute_number_of_phases('/Ac/PvOnGrid', newvalues) + self._compute_number_of_phases('/Ac/PvOnOutput', newvalues) + self._compute_number_of_phases('/Ac/PvOnGenset', newvalues) + + # ==== SOLARCHARGERS ==== + solarchargers = self._dbusmonitor.get_service_list('com.victronenergy.solarcharger') + solarcharger_batteryvoltage = None + solarcharger_batteryvoltage_service = None + solarchargers_charge_power = 0 + solarchargers_loadoutput_power = None + + for solarcharger in solarchargers: + v = self._dbusmonitor.get_value(solarcharger, '/Dc/0/Voltage') + if v is None: + continue + i = self._dbusmonitor.get_value(solarcharger, '/Dc/0/Current') + if i is None: + continue + l = self._dbusmonitor.get_value(solarcharger, '/Load/I', 0) + + if l is not None: + if solarchargers_loadoutput_power is None: + solarchargers_loadoutput_power = l * v + else: + solarchargers_loadoutput_power += l * v + + solarchargers_charge_power += v * i + + # Note that this path is not in the _summeditems{}, making for it to not be + # published on D-Bus. Which fine. The only one needing it is the vebussocwriter- + # delegate. + if '/Dc/Pv/ChargeCurrent' not in newvalues: + newvalues['/Dc/Pv/ChargeCurrent'] = i + else: + newvalues['/Dc/Pv/ChargeCurrent'] += i + + if '/Dc/Pv/Power' not in newvalues: + newvalues['/Dc/Pv/Power'] = v * _safeadd(i, l) + newvalues['/Dc/Pv/Current'] = _safeadd(i, l) + solarcharger_batteryvoltage = v + solarcharger_batteryvoltage_service = solarcharger + else: + newvalues['/Dc/Pv/Power'] += v * _safeadd(i, l) + newvalues['/Dc/Pv/Current'] += _safeadd(i, l) + + # ==== FUELCELLS ==== + fuelcells = self._dbusmonitor.get_service_list('com.victronenergy.fuelcell') + fuelcell_batteryvoltage = None + fuelcell_batteryvoltage_service = None + for fuelcell in fuelcells: + # Assume the battery connected to output 0 is the main battery + v = self._dbusmonitor.get_value(fuelcell, '/Dc/0/Voltage') + if v is None: + continue + + fuelcell_batteryvoltage = v + fuelcell_batteryvoltage_service = fuelcell + + i = self._dbusmonitor.get_value(fuelcell, '/Dc/0/Current') + if i is None: + continue + + if '/Dc/FuelCell/Power' not in newvalues: + newvalues['/Dc/FuelCell/Power'] = v * i + else: + newvalues['/Dc/FuelCell/Power'] += v * i + + # ==== ALTERNATOR ==== + alternators = self._dbusmonitor.get_service_list('com.victronenergy.alternator') + for alternator in alternators: +#### modified for GuiMods + # some alternators do not provide a valid power value if not running + # or below a minimum power/current + # so fill in a zero power so that the systemcalc power becomes valid + # Assume the battery connected to output 0 is the main battery + p = self._dbusmonitor.get_value(alternator, '/Dc/0/Power') + if p is None: + #### continue + p = 0 + + if '/Dc/Alternator/Power' not in newvalues: + newvalues['/Dc/Alternator/Power'] = p + else: + newvalues['/Dc/Alternator/Power'] += p + + +#### added for GuiMods + # ==== MOTOR DRIVE ==== + motordrives = self._dbusmonitor.get_service_list('com.victronenergy.motordrive') + for motordrive in motordrives: + p = self._dbusmonitor.get_value(motordrive, '/Dc/0/Power') + if p is None: + p = 0 + + if '/Dc/MotorDrive/Power' not in newvalues: + newvalues['/Dc/MotorDrive/Power'] = p + else: + newvalues['/Dc/MotorDrive/Power'] += p + +#### added for GuiMods + # ==== DC SOURCES ==== + dcSources = self._dbusmonitor.get_service_list('com.victronenergy.dcsource') + for dcSource in dcSources: + monitorMode = self._dbusmonitor.get_value(dcSource,'/Settings/MonitorMode') + # ==== WIND GENERATOR ==== + if monitorMode == -8: + p = self._dbusmonitor.get_value(dcSource, '/Dc/0/Power') + if p is None: + continue + if '/Dc/WindGenerator/Power' not in newvalues: + newvalues['/Dc/WindGenerator/Power'] = p + else: + newvalues['/Dc/WindGenerator/Power'] += p + + # ==== CHARGERS ==== + chargers = self._dbusmonitor.get_service_list('com.victronenergy.charger') + charger_batteryvoltage = None + charger_batteryvoltage_service = None + for charger in chargers: + # Assume the battery connected to output 0 is the main battery + v = self._dbusmonitor.get_value(charger, '/Dc/0/Voltage') + if v is None: + continue + + charger_batteryvoltage = v + charger_batteryvoltage_service = charger + + i = self._dbusmonitor.get_value(charger, '/Dc/0/Current') + if i is None: + continue + + if '/Dc/Charger/Power' not in newvalues: + newvalues['/Dc/Charger/Power'] = v * i + else: + newvalues['/Dc/Charger/Power'] += v * i + + # ==== Other Inverters and Inverter/Chargers ==== + _other_inverters = sorted((di, s) for s, di in self._dbusmonitor.get_service_list('com.victronenergy.multi').items()) + \ + sorted((di, s) for s, di in self._dbusmonitor.get_service_list('com.victronenergy.inverter').items()) + non_vebus_inverters = [x[1] for x in _other_inverters] + non_vebus_inverter = None + if non_vebus_inverters: + non_vebus_inverter = non_vebus_inverters[0] + + # For RS Smart and Multi RS, add PV to the yield + for i in non_vebus_inverters: + if (pv_yield := self._dbusmonitor.get_value(i, "/Yield/Power")) is not None: + newvalues['/Dc/Pv/Power'] = newvalues.get('/Dc/Pv/Power', 0) + pv_yield + + # Used lower down, possibly needed for battery values as well + dcsystems = self._dbusmonitor.get_service_list('com.victronenergy.dcsystem') + + # ==== BATTERY ==== + if self._batteryservice is not None: + batteryservicetype = self._batteryservice.split('.')[2] + assert batteryservicetype in ('battery', 'vebus', 'inverter', 'multi') + + newvalues['/Dc/Battery/TimeToGo'] = self._dbusmonitor.get_value(self._batteryservice,'/TimeToGo') + newvalues['/Dc/Battery/ConsumedAmphours'] = self._dbusmonitor.get_value(self._batteryservice,'/ConsumedAmphours') + newvalues['/Dc/Battery/ProductId'] = self._dbusmonitor.get_value(self._batteryservice, '/ProductId') + + if batteryservicetype in ('battery', 'inverter', 'multi'): + newvalues['/Dc/Battery/Voltage'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Voltage') + newvalues['/Dc/Battery/VoltageService'] = self._batteryservice + newvalues['/Dc/Battery/Current'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Current') + newvalues['/Dc/Battery/Power'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Power') + + elif batteryservicetype == 'vebus': + vebus_voltage = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Voltage') + vebus_current = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Current') + vebus_power = None if vebus_voltage is None or vebus_current is None else vebus_current * vebus_voltage + newvalues['/Dc/Battery/Voltage'] = vebus_voltage + newvalues['/Dc/Battery/VoltageService'] = self._batteryservice + if self._settings['hasdcsystem'] == 1 or dcsystems: + # hasdcsystem will normally disqualify the multi from being + # auto-selected as battery monitor, so the only way we're + # here is if the user explicitly selected the multi as the + # battery service + newvalues['/Dc/Battery/Current'] = vebus_current + if vebus_power is not None: + newvalues['/Dc/Battery/Power'] = vebus_power + else: + battery_power = _safeadd(solarchargers_charge_power, vebus_power) + newvalues['/Dc/Battery/Current'] = battery_power / vebus_voltage if vebus_voltage is not None and vebus_voltage > 0 else None + newvalues['/Dc/Battery/Power'] = battery_power + + + p = newvalues.get('/Dc/Battery/Power', None) + if p is not None: + if p > 30: + newvalues['/Dc/Battery/State'] = self.STATE_CHARGING + elif p < -30: + newvalues['/Dc/Battery/State'] = self.STATE_DISCHARGING + else: + newvalues['/Dc/Battery/State'] = self.STATE_IDLE + + else: + # The battery service is not a BMS/BMV or a suitable vebus. A + # suitable vebus is defined as one explicitly selected by the user, + # or one that was automatically selected for SOC tracking. We may + # however still have a VE.Bus, just not one that can accurately + # track SOC. If we have one, use it as voltage source. Otherwise + # try a solar charger, a charger, a vedirect inverter or a dcsource + # as fallbacks. + batteryservicetype = None + vebusses = self._dbusmonitor.get_service_list('com.victronenergy.vebus') + for vebus in vebusses: + v = self._dbusmonitor.get_value(vebus, '/Dc/0/Voltage') + s = self._dbusmonitor.get_value(vebus, '/State') + if v is not None and s not in (0, None): + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = vebus + break # Skip the else below + else: + # No suitable vebus voltage, try other devices + if non_vebus_inverter is not None and (v := self._dbusmonitor.get_value(non_vebus_inverter, '/Dc/0/Voltage')) is not None: + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = non_vebus_inverter + elif solarcharger_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = solarcharger_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = solarcharger_batteryvoltage_service + elif charger_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = charger_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = charger_batteryvoltage_service + elif fuelcell_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = fuelcell_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = fuelcell_batteryvoltage_service + elif dcsystems: + # Get voltage from first dcsystem + s = next(iter(dcsystems.keys())) + v = self._dbusmonitor.get_value(s, '/Dc/0/Voltage') + if v is not None: + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = s + + # We have no suitable battery monitor, so power and current data + # is not available. We can however calculate it from other values, + # if we have at least a battery voltage. + if '/Dc/Battery/Voltage' in newvalues: + dcsystempower = _safeadd(0, *(self._dbusmonitor.get_value(s, + '/Dc/0/Power', 0) for s in dcsystems)) + if dcsystems or self._settings['hasdcsystem'] == 0: + # Either DC loads are monitored, or there are no + # unmonitored DC loads or chargers: derive battery watts + # and amps from vebus, solarchargers, chargers and measured + # loads. + p = solarchargers_charge_power + newvalues.get('/Dc/Charger/Power', 0) + vebuspower - dcsystempower + voltage = newvalues['/Dc/Battery/Voltage'] + newvalues['/Dc/Battery/Current'] = p / voltage if voltage > 0 else None + newvalues['/Dc/Battery/Power'] = p + + # ==== SYSTEM POWER ==== + # Look for dcsytem devices, add them together. Otherwise, if enabled, + # calculate it + if dcsystems: + newvalues['/Dc/System/MeasurementType'] = 1 # measured + newvalues['/Dc/System/Power'] = 0 + for meter in dcsystems: + newvalues['/Dc/System/Power'] = _safeadd(newvalues['/Dc/System/Power'], + self._dbusmonitor.get_value(meter, '/Dc/0/Power')) + elif self._settings['hasdcsystem'] == 1 and batteryservicetype == 'battery': + # Calculate power being generated/consumed by not measured devices in the network. + # For MPPTs, take all the power, including power going out of the load output. + # /Dc/System: positive: consuming power + # VE.Bus: Positive: current flowing from the Multi to the dc system or battery + # Solarcharger & other chargers: positive: charging + # battery: Positive: charging battery. + # battery = solarcharger + charger + ve.bus - system + + battery_power = newvalues.get('/Dc/Battery/Power') + if battery_power is not None: + dc_pv_power = newvalues.get('/Dc/Pv/Power', 0) + charger_power = newvalues.get('/Dc/Charger/Power', 0) + fuelcell_power = newvalues.get('/Dc/FuelCell/Power', 0) + alternator_power = newvalues.get('/Dc/Alternator/Power', 0) +#### added for GuiMods + windgen_power = newvalues.get('/Dc/WindGenerator/Power', 0) + motordrive_power = newvalues.get('/Dc/MotorDrive/Power', 0) + + # If there are VE.Direct inverters, remove their power from the + # DC estimate. This is done using the AC value when the DC + # power values are not available. + inverter_power = 0 + for i in non_vebus_inverters: + inverter_current = self._dbusmonitor.get_value(i, '/Dc/0/Current') + if inverter_current is not None: + inverter_power += self._dbusmonitor.get_value( + i, '/Dc/0/Voltage', 0) * inverter_current + else: + inverter_power -= self._dbusmonitor.get_value( + i, '/Ac/Out/L1/V', 0) * self._dbusmonitor.get_value( + i, '/Ac/Out/L1/I', 0) + newvalues['/Dc/System/MeasurementType'] = 0 # estimated + # FIXME In future we will subtract alternator power from the + # calculated DC power, because it will be individually + # displayed. For now, we leave it out so that in the current + # version of Venus it does not break user's expectations. + #newvalues['/Dc/System/Power'] = dc_pv_power + charger_power + fuelcell_power + vebuspower + inverter_power - battery_power - alternator_power +#### changed for GuiMods + # average DC system power over 3 passes (seconds) to minimize wild swings in displayed value + self.dcSystemPower[2] = self.dcSystemPower[1] + self.dcSystemPower[1] = self.dcSystemPower[0] + self.dcSystemPower[0] = dc_pv_power + charger_power + fuelcell_power + vebuspower + inverter_power - battery_power + alternator_power + windgen_power - motordrive_power + newvalues['/Dc/System/Power'] = (self.dcSystemPower[0] + self.dcSystemPower[1] + self.dcSystemPower[2]) / 3 + + elif self._settings['hasdcsystem'] == 1 and solarchargers_loadoutput_power is not None: + newvalues['/Dc/System/MeasurementType'] = 0 # estimated + newvalues['/Dc/System/Power'] = solarchargers_loadoutput_power + + # ==== Vebus ==== + multi_path = getattr(delegates.Multi.instance.multi, 'service', None) + if multi_path is not None: + dc_current = self._dbusmonitor.get_value(multi_path, '/Dc/0/Current') + newvalues['/Dc/Vebus/Current'] = dc_current + dc_power = self._dbusmonitor.get_value(multi_path, '/Dc/0/Power') + # Just in case /Dc/0/Power is not available + if dc_power == None and dc_current is not None: + dc_voltage = self._dbusmonitor.get_value(multi_path, '/Dc/0/Voltage') + if dc_voltage is not None: + dc_power = dc_voltage * dc_current + # Note that there is also vebuspower, which is the total DC power summed over all multis. + # However, this value cannot be combined with /Dc/Multi/Current, because it does not make sense + # to add the Dc currents of all multis if they do not share the same DC voltage. + newvalues['/Dc/Vebus/Power'] = dc_power + + # ===== AC IN SOURCE ===== + ac_in_source = None + active_input = None + if multi_path is None: + # Check if we have an non-VE.Bus inverter. + if non_vebus_inverter is not None: + if (active_input := self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/ActiveIn/ActiveInput')) is not None and \ + active_input in (0, 1) and \ + (active_type := self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/{}/Type'.format(active_input + 1))) is not None: + ac_in_source = active_type + else: + ac_in_source = 240 + else: + active_input = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/ActiveInput') + if active_input == 0xF0: + # Not connected + ac_in_source = 240 + elif active_input is not None: + settings_path = '/Settings/SystemSetup/AcInput%s' % (active_input + 1) + ac_in_source = self._dbusmonitor.get_value('com.victronenergy.settings', settings_path) + newvalues['/Ac/ActiveIn/Source'] = ac_in_source + + # ===== GRID METERS & CONSUMPTION ==== + grid_meter = delegates.AcInputs.instance.gridmeter + genset_meter = delegates.AcInputs.instance.gensetmeter + + # Make an educated guess as to what is being consumed from an AC source. If ac_in_source + # indicates grid, genset or shore, we use that. If the Multi is off, or disconnected through + # a relay assistant or otherwise, then assume the presence of a .grid or .genset service indicates + # presence of that AC source. If both are available, then give up. This decision making is here + # so the GUI has something to present even if the Multi is off. + ac_in_guess = ac_in_source + if ac_in_guess in (None, 0xF0): + if genset_meter is None and grid_meter is not None: + ac_in_guess = 1 + elif grid_meter is None and genset_meter is not None: + ac_in_guess = 2 + + consumption = { "L1" : None, "L2" : None, "L3" : None } + currentconsumption = { "L1" : None, "L2" : None, "L3" : None } + +#### added for GuiMods + voltageIn = { "L1" : None, "L2" : None, "L3" : None } + voltageOut = { "L1" : None, "L2" : None, "L3" : None } + frequencyIn = None + frequencyOut = None + + for device_type, em, _types in (('Grid', grid_meter, (1, 3)), ('Genset', genset_meter, (2,))): + # If a grid meter is present we use values from it. If not, we look at the multi. If it has + # AcIn1 or AcIn2 connected to the grid, we use those values. + # com.victronenergy.grid.??? indicates presence of an energy meter used as grid meter. + # com.victronenergy.vebus.???/Ac/ActiveIn/ActiveInput: decides which whether we look at AcIn1 + # or AcIn2 as possible grid connection. + uses_active_input = ac_in_source in _types + for phase in consumption: + p = None + mc = None + pvpower = newvalues.get('/Ac/PvOn%s/%s/Power' % (device_type, phase)) + pvcurrent = newvalues.get('/Ac/PvOn%s/%s/Current' % (device_type, phase)) + if em is not None: + p = self._dbusmonitor.get_value(em.service, '/Ac/%s/Power' % phase) + mc = self._dbusmonitor.get_value(em.service, '/Ac/%s/Current' % phase) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(em.service, '/Ac/%s/Voltage' % phase) + if frequencyIn == None: + frequencyIn = self._dbusmonitor.get_value(em.service, '/Ac/%s/Frequency' % phase) + + # Compute consumption between energy meter and multi (meter power - multi AC in) and + # add an optional PV inverter on input to the mix. + c = None + cc = None + if uses_active_input: + if multi_path is not None: + try: + c = _safeadd(c, -self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/P' % phase)) + cc = _safeadd(cc, -self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/I' % phase)) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(em.service, '/Ac/ActiveIn/%s/V' % phase) + if frequencyIn == None: + frequencyIn = self._dbusmonitor.get_value(em.service, '/Ac/ActiveIn/%s/F' % phase) + + except TypeError: + pass + elif non_vebus_inverter is not None and active_input in (0, 1): + for i in non_vebus_inverters: + try: + c = _safeadd(c, -self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/P' % (active_input+1, phase))) + cc = _safeadd(cc, -self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/I' % (active_input+1, phase))) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/V' % (active_input+1, phase)) + if frequencyIn == None: + frequencyIn = self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/F' % (active_input+1, phase)) + + except TypeError: + pass + + # If there's any power coming from a PV inverter in the inactive AC in (which is unlikely), + # it will still be used, because there may also be a load in the same ACIn consuming + # power, or the power could be fed back to the net. + c = _safeadd(c, p, pvpower) + cc = _safeadd(cc, mc, pvcurrent) + consumption[phase] = _safeadd(consumption[phase], _safemax(0, c)) + currentconsumption[phase] = _safeadd(currentconsumption[phase], _safemax(0, cc)) + else: + if uses_active_input: + if multi_path is not None and ( + p := self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/P' % phase)) is not None: + consumption[phase] = _safeadd(0, consumption[phase]) + currentconsumption[phase] = _safeadd(0, currentconsumption[phase]) + mc = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/I' % phase) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/V' % phase) + if frequencyIn == None: + freq = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/F' % phase) + if freq != None: + frequencyIn = freq + + elif non_vebus_inverter is not None and active_input in (0, 1): + for i in non_vebus_inverters: + p = _safeadd(p, + self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/P' % (active_input + 1, phase))) + mc = _safeadd(mc, + self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/I' % (active_input + 1, phase))) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/V' % (active_input + 1, phase)) + if frequencyIn == None: + frequencyIn = self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/F' % (active_input + 1, phase)) + + if p is not None: + consumption[phase] = _safeadd(0, consumption[phase]) + currentconsumption[phase] = _safeadd(0, currentconsumption[phase]) + + # No relevant energy meter present. Assume there is no load between the grid and the multi. + # There may be a PV inverter present though (Hub-3 setup). + try: + p = _safeadd(p, -pvpower) + mc = _safeadd(mc, -pvcurrent) + except TypeError: + pass + + newvalues['/Ac/%s/%s/Power' % (device_type, phase)] = p + newvalues['/Ac/%s/%s/Current' % (device_type, phase)] = mc +#### added for GuiMods + if p != None: + newvalues['/Ac/%s/%s/Voltage' % (device_type, phase)] = voltageIn[phase] + newvalues['/Ac/%s/Frequency' % (device_type)] = frequencyIn + + if ac_in_guess in _types: + newvalues['/Ac/ActiveIn/%s/Power' % phase] = p + newvalues['/Ac/ActiveIn/%s/Current' % phase] = mc +#### added for GuiMods + if p != None: + newvalues['/Ac/ActiveIn/%s/Voltage' % (phase,)] = voltageIn[phase] + newvalues['/Ac/ActiveIn/Frequency'] = frequencyIn + + self._compute_number_of_phases('/Ac/%s' % device_type, newvalues) + self._compute_number_of_phases('/Ac/ActiveIn', newvalues) + + product_id = None + device_type_id = None + if em is not None: + product_id = em.product_id + device_type_id = em.device_type + if product_id is None and uses_active_input: + if multi_path is not None: + product_id = self._dbusmonitor.get_value(multi_path, '/ProductId') + elif non_vebus_inverter is not None: + product_id = self._dbusmonitor.get_value(non_vebus_inverter, '/ProductId') + newvalues['/Ac/%s/ProductId' % device_type] = product_id + newvalues['/Ac/%s/DeviceType' % device_type] = device_type_id + + # If we have an ESS system and RunWithoutGridMeter is set, there cannot be load on the AC-In, so it + # must be on AC-Out. Hence we do calculate AC-Out consumption even if 'useacout' is disabled. + # Similarly all load are by definition on the output if this is not an ESS system. + use_ac_out = \ + self._settings['useacout'] == 1 or \ + (multi_path is not None and self._dbusmonitor.get_value(multi_path, '/Hub4/AssistantId') not in (4, 5)) or \ + self._dbusmonitor.get_value('com.victronenergy.settings', '/Settings/CGwacs/RunWithoutGridMeter') == 1 + for phase in consumption: + c = None + a = None + if use_ac_out: + c = newvalues.get('/Ac/PvOnOutput/%s/Power' % phase) + a = newvalues.get('/Ac/PvOnOutput/%s/Current' % phase) +#### added for GuiMods + if voltageOut[phase] == None: + voltageOut[phase] = newvalues.get('/Ac/PvOnOutput/%s/Voltage' % phase) + if frequencyOut == None: + frequencyOut = newvalues.get('/Ac/PvOnOutput/%s/Frequency' % phase) + + if multi_path is None: + for inv in non_vebus_inverters: + ac_out = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/P' % phase) + i = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/I' % phase) +#### added for GuiMods + if voltageOut[phase] == None: + voltageOut[phase] = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/V' % phase) + if frequencyOut == None: + frequencyOut = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/F' % phase) + + # Some models don't show power, try apparent power, + # else calculate it + if ac_out is None: + ac_out = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/S' % phase) + if ac_out is None: +#### modified for GuiMods + # u = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/V' % phase) + if None not in (i, voltageOut[phase]): + ac_out = i * voltageOut[phase] + c = _safeadd(c, ac_out) + a = _safeadd(a, i) + else: + ac_out = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/P' % phase) + c = _safeadd(c, ac_out) + i_out = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/I' % phase) + a = _safeadd(a, i_out) +#### added for GuiMods + if voltageOut[phase] == None: + voltageOut[phase] = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/V' % phase) + if frequencyOut == None: + frequencyOut = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/F' % phase) + c = _safemax(0, c) + a = _safemax(0, a) + newvalues['/Ac/ConsumptionOnOutput/%s/Power' % phase] = c + newvalues['/Ac/ConsumptionOnOutput/%s/Current' % phase] = a + newvalues['/Ac/ConsumptionOnInput/%s/Power' % phase] = consumption[phase] + newvalues['/Ac/ConsumptionOnInput/%s/Current' % phase] = currentconsumption[phase] + newvalues['/Ac/Consumption/%s/Power' % phase] = _safeadd(consumption[phase], c) + newvalues['/Ac/Consumption/%s/Current' % phase] = _safeadd(currentconsumption[phase], a) +#### added for GuiMods + newvalues['/Ac/ConsumptionOnOutput/%s/Voltage' % phase] = voltageOut[phase] + newvalues['/Ac/ConsumptionOnInput/%s/Voltage' % phase] = voltageIn[phase] + if voltageOut[phase] != None: + newvalues['/Ac/Consumption/%s/Voltage' % phase] = voltageOut[phase] + elif voltageIn[phase] != None: + newvalues['/Ac/Consumption/%s/Voltage' % phase] = voltageIn[phase] + if frequencyIn != None: + newvalues['/Ac/ConsumptionOnInput/Frequency'] = frequencyIn + if frequencyOut != None: + newvalues['/Ac/ConsumptionOnOutput/Frequency'] = frequencyOut + if frequencyOut != None: + newvalues['/Ac/Consumption/Frequency'] = frequencyOut + elif frequencyIn != None: + newvalues['/Ac/Consumption/Frequency'] = frequencyIn + + self._compute_number_of_phases('/Ac/Consumption', newvalues) + self._compute_number_of_phases('/Ac/ConsumptionOnOutput', newvalues) + self._compute_number_of_phases('/Ac/ConsumptionOnInput', newvalues) + + for m in self._modules: + m.update_values(newvalues) + + # ==== UPDATE DBUS ITEMS ==== + with self._dbusservice as sss: + for path in self._summeditems.keys(): + # Why the None? Because we want to invalidate things we don't have anymore. + sss[path] = newvalues.get(path, None) + + def _handleservicechange(self): + # Update the available battery monitor services, used to populate the dropdown in the settings. + # Below code makes a dictionary. The key is [dbuserviceclass]/[deviceinstance]. For example + # "battery/245". The value is the name to show to the user in the dropdown. The full dbus- + # servicename, ie 'com.victronenergy.vebus.ttyO1' is not used, since the last part of that is not + # fixed. dbus-serviceclass name and the device instance are already fixed, so best to use those. + + services = self._get_connected_service_list('com.victronenergy.vebus') + services.update(self._get_connected_service_list('com.victronenergy.battery')) + services.update({k: v for k, v in self._get_connected_service_list( + 'com.victronenergy.multi').items() if self._dbusmonitor.get_value(k, '/Soc') is not None}) + services.update({k: v for k, v in self._get_connected_service_list( + 'com.victronenergy.inverter').items() if self._dbusmonitor.get_value(k, '/Soc') is not None}) + + ul = {self.BATSERVICE_DEFAULT: 'Automatic', self.BATSERVICE_NOBATTERY: 'No battery monitor'} + for servicename, instance in services.items(): + key = self._get_instance_service_name(servicename, instance) + ul[key] = self._get_readable_service_name(servicename) + self._dbusservice['/AvailableBatteryServices'] = json.dumps(ul) + + ul = {self.BATSERVICE_DEFAULT: 'Automatic', self.BATSERVICE_NOBATTERY: 'No battery monitor'} + # For later: for device supporting multiple Dc measurement we should add entries for /Dc/1 etc as + # well. + for servicename, instance in services.items(): + key = self._get_instance_service_name(servicename, instance).replace('.', '_').replace('/', '_') + '/Dc/0' + ul[key] = self._get_readable_service_name(servicename) + self._dbusservice['/AvailableBatteryMeasurements'] = ul + + self._determinebatteryservice() + + self._changed = True + + def _get_readable_service_name(self, servicename): + return '%s on %s' % ( + self._dbusmonitor.get_value(servicename, '/ProductName'), + self._dbusmonitor.get_value(servicename, '/Mgmt/Connection')) + + def _get_instance_service_name(self, service, instance): + return '%s/%s' % ('.'.join(service.split('.')[0:3]), instance) + + def _remove_unconnected_services(self, services): + # Workaround: because com.victronenergy.vebus is available even when there is no vebus product + # connected, remove any service that is not connected. Previously we used + # /State since mandatory path /Connected is not implemented in mk2dbus, + # but this has since been resolved. + for servicename in list(services.keys()): + if (self._dbusmonitor.get_value(servicename, '/Connected') != 1 + or self._dbusmonitor.get_value(servicename, '/ProductName') is None + or self._dbusmonitor.get_value(servicename, '/Mgmt/Connection') is None): + del services[servicename] + + def _dbus_value_changed(self, dbusServiceName, dbusPath, dict, changes, deviceInstance): + self._changed = True + + # Workaround because com.victronenergy.vebus is available even when there is no vebus product + # connected. + if (dbusPath in ['/Connected', '/ProductName', '/Mgmt/Connection'] or + (dbusPath == '/State' and dbusServiceName.split('.')[0:3] == ['com', 'victronenergy', 'vebus'])): + self._handleservicechange() + + # Track the timezone changes + if dbusPath == '/Settings/System/TimeZone': + tz = changes.get('Value') + if tz is not None: + os.environ['TZ'] = tz + time.tzset() + + def _device_added(self, service, instance, do_service_change=True): + if do_service_change: + self._handleservicechange() + + for m in self._modules: + m.device_added(service, instance, do_service_change) + + def _device_removed(self, service, instance): + self._handleservicechange() + + for m in self._modules: + m.device_removed(service, instance) + + def _gettext(self, path, value): + if path == '/Dc/Battery/State': + state = {self.STATE_IDLE: 'Idle', self.STATE_CHARGING: 'Charging', + self.STATE_DISCHARGING: 'Discharging'} + return state[value] + item = self._summeditems.get(path) + if item is not None: + return item['gettext'] % value + return str(value) + + def _compute_number_of_phases(self, path, newvalues): + number_of_phases = None + for phase in range(1, 4): + p = newvalues.get('%s/L%s/Power' % (path, phase)) + if p is not None: + number_of_phases = phase + newvalues[path + '/NumberOfPhases'] = number_of_phases + + def _get_connected_service_list(self, classfilter=None): + services = self._dbusmonitor.get_service_list(classfilter=classfilter) + self._remove_unconnected_services(services) + return services + + # returns a servicename string + def _get_first_connected_service(self, classfilter): + services = self._get_connected_service_list(classfilter=classfilter) + if len(services) == 0: + return None + return next(iter(services.items()), (None,))[0] + + # returns a tuple (servicename, instance) + def _get_service_having_lowest_instance(self, classfilter=None): + services = self._get_connected_service_list(classfilter=classfilter) + if len(services) == 0: + return None + + # sort the dict by value; returns list of tuples: (value, key) + s = sorted((value, key) for (key, value) in services.items()) + return (s[0][1], s[0][0]) + + +class DbusSystemCalc(SystemCalc): + def _create_dbus_monitor(self, *args, **kwargs): + return DbusMonitor(*args, **kwargs) + + def _create_settings(self, *args, **kwargs): + bus = dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else dbus.SystemBus() + return SettingsDevice(bus, *args, timeout=10, **kwargs) + + def _create_dbus_service(self): + venusversion, venusbuildtime = self._get_venus_versioninfo() + + dbusservice = VeDbusService('com.victronenergy.system') + dbusservice.add_mandatory_paths( + processname=__file__, + processversion=softwareVersion, + connection='data from other dbus processes', + deviceinstance=0, + productid=None, + productname=None, + firmwareversion=venusversion, + hardwareversion=None, + connected=1) + dbusservice.add_path('/FirmwareBuild', value=venusbuildtime) + return dbusservice + + def _get_venus_versioninfo(self): + try: + with open("/opt/victronenergy/version", "r") as fp: + version, software, buildtime = fp.read().split('\n')[:3] + major, minor, _, rev = re.compile('v([0-9]*)\.([0-9]*)(~([0-9]*))?').match(version).groups() + return (int(major, 16)<<16)+(int(minor, 16)<<8)+(0 if rev is None else int(rev, 16)), buildtime + except Exception: + pass + return 0, '0' + +if __name__ == "__main__": + # Argument parsing + parser = argparse.ArgumentParser( + description='Converts readings from AC-Sensors connected to a VE.Bus device in a pvinverter ' + + 'D-Bus service.' + ) + + parser.add_argument("-d", "--debug", help="set logging level to debug", + action="store_true") + + args = parser.parse_args() + + print("-------- dbus_systemcalc, v" + softwareVersion + " is starting up --------") + logger = setup_logging(args.debug) + + # Have a mainloop, so we can send/receive asynchronous calls to and from dbus + DBusGMainLoop(set_as_default=True) + + systemcalc = DbusSystemCalc() + + # Start and run the mainloop + logger.info("Starting mainloop, responding only on events") + mainloop = GLib.MainLoop() + mainloop.run() diff --git a/FileSets/v3.30~3/dbus_systemcalc.py.orig b/FileSets/v3.30~3/dbus_systemcalc.py.orig new file mode 100755 index 00000000..3094b278 --- /dev/null +++ b/FileSets/v3.30~3/dbus_systemcalc.py.orig @@ -0,0 +1,1172 @@ +#!/usr/bin/python3 -u +# -*- coding: utf-8 -*- + +from dbus.mainloop.glib import DBusGMainLoop +import dbus +import argparse +import sys +import os +import json +import time +import re +from gi.repository import GLib + +# Victron packages +sys.path.insert(1, os.path.join(os.path.dirname(__file__), 'ext', 'velib_python')) +from vedbus import VeDbusService +from ve_utils import get_vrm_portal_id, exit_on_error +from dbusmonitor import DbusMonitor +from settingsdevice import SettingsDevice +from logger import setup_logging +import delegates +from sc_utils import safeadd as _safeadd, safemax as _safemax + +softwareVersion = '2.152' + +class SystemCalc: + STATE_IDLE = 0 + STATE_CHARGING = 1 + STATE_DISCHARGING = 2 + BATSERVICE_DEFAULT = 'default' + BATSERVICE_NOBATTERY = 'nobattery' + def __init__(self): + # Why this dummy? Because DbusMonitor expects these values to be there, even though we don't + # need them. So just add some dummy data. This can go away when DbusMonitor is more generic. + dummy = {'code': None, 'whenToLog': 'configChange', 'accessLevel': None} + dbus_tree = { + 'com.victronenergy.solarcharger': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Load/I': dummy, + '/FirmwareVersion': dummy}, + 'com.victronenergy.battery': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/DeviceInstance': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/1/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Soc': dummy, + '/Sense/Current': dummy, + '/TimeToGo': dummy, + '/ConsumedAmphours': dummy, + '/ProductId': dummy, + '/CustomName': dummy, + '/Info/MaxChargeVoltage': dummy}, + 'com.victronenergy.vebus' : { + '/Ac/ActiveIn/ActiveInput': dummy, + '/Ac/ActiveIn/L1/P': dummy, + '/Ac/ActiveIn/L2/P': dummy, + '/Ac/ActiveIn/L3/P': dummy, + '/Ac/ActiveIn/L1/I': dummy, + '/Ac/ActiveIn/L2/I': dummy, + '/Ac/ActiveIn/L3/I': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L2/P': dummy, + '/Ac/Out/L3/P': dummy, + '/Ac/Out/L1/I': dummy, + '/Ac/Out/L2/I': dummy, + '/Ac/Out/L3/I': dummy, + '/Connected': dummy, + '/ProductId': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Mode': dummy, + '/State': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.fuelcell': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy}, + 'com.victronenergy.charger': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/1/Voltage': dummy, + '/Dc/1/Current': dummy, + '/Dc/2/Voltage': dummy, + '/Dc/2/Current': dummy}, + 'com.victronenergy.grid' : { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/ProductId' : dummy, + '/DeviceType' : dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy}, + 'com.victronenergy.genset' : { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/ProductId' : dummy, + '/DeviceType' : dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy, + '/StarterVoltage': dummy}, + 'com.victronenergy.settings' : { + '/Settings/SystemSetup/AcInput1' : dummy, + '/Settings/SystemSetup/AcInput2' : dummy, + '/Settings/CGwacs/RunWithoutGridMeter' : dummy, + '/Settings/System/TimeZone' : dummy}, + 'com.victronenergy.temperature': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy}, + 'com.victronenergy.inverter': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L1/S': dummy, + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L1/I': dummy, + '/Ac/Out/L2/P': dummy, + '/Ac/Out/L2/S': dummy, + '/Ac/Out/L2/V': dummy, + '/Ac/Out/L2/I': dummy, + '/Ac/Out/L3/P': dummy, + '/Ac/Out/L3/S': dummy, + '/Ac/Out/L3/V': dummy, + '/Ac/Out/L3/I': dummy, + '/Yield/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.multi': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Ac/ActiveIn/ActiveInput': dummy, + '/Ac/In/1/Type': dummy, + '/Ac/In/2/Type': dummy, + '/Ac/In/1/L1/P': dummy, + '/Ac/In/1/L1/I': dummy, + '/Ac/In/2/L1/P': dummy, + '/Ac/In/2/L1/I': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L1/I': dummy, + '/Ac/In/1/L2/P': dummy, + '/Ac/In/1/L2/I': dummy, + '/Ac/In/2/L2/P': dummy, + '/Ac/In/2/L2/I': dummy, + '/Ac/Out/L2/P': dummy, + '/Ac/Out/L2/V': dummy, + '/Ac/Out/L2/I': dummy, + '/Ac/In/1/L3/P': dummy, + '/Ac/In/1/L3/I': dummy, + '/Ac/In/2/L3/P': dummy, + '/Ac/In/2/L3/I': dummy, + '/Ac/Out/L3/P': dummy, + '/Ac/Out/L3/V': dummy, + '/Ac/Out/L3/I': dummy, + '/Yield/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.dcsystem': { + '/Dc/0/Voltage': dummy, + '/Dc/0/Power': dummy + }, + 'com.victronenergy.alternator': { + '/Dc/0/Power': dummy + } + } + + self._modules = [ + delegates.Multi(), + delegates.HubTypeSelect(), + delegates.VebusSocWriter(), + delegates.ServiceMapper(), + delegates.RelayState(), + delegates.BuzzerControl(), + delegates.LgCircuitBreakerDetect(), + delegates.BatterySoc(self), + delegates.Dvcc(self), + delegates.BatterySense(self), + delegates.BatterySettings(self), + delegates.SystemState(self), + delegates.BatteryLife(), + delegates.ScheduledCharging(), + delegates.SourceTimers(), + delegates.BatteryData(), + delegates.Gps(), + delegates.AcInputs(), + delegates.GensetStartStop(), + delegates.SocSync(self), + delegates.PvInverters(), + delegates.BatteryService(self), + delegates.CanBatterySense(), + delegates.DynamicEss()] + + for m in self._modules: + for service, paths in m.get_input(): + s = dbus_tree.setdefault(service, {}) + for path in paths: + s[path] = dummy + + self._dbusmonitor = self._create_dbus_monitor(dbus_tree, valueChangedCallback=self._dbus_value_changed, + deviceAddedCallback=self._device_added, deviceRemovedCallback=self._device_removed) + + # Connect to localsettings + supported_settings = { + 'batteryservice': ['/Settings/SystemSetup/BatteryService', self.BATSERVICE_DEFAULT, 0, 0], + 'hasdcsystem': ['/Settings/SystemSetup/HasDcSystem', 0, 0, 1], + 'useacout': ['/Settings/SystemSetup/HasAcOutSystem', 1, 0, 1]} + + for m in self._modules: + for setting in m.get_settings(): + supported_settings[setting[0]] = list(setting[1:]) + + self._settings = self._create_settings(supported_settings, self._handlechangedsetting) + + self._dbusservice = self._create_dbus_service() + + for m in self._modules: + m.set_sources(self._dbusmonitor, self._settings, self._dbusservice) + + # At this moment, VRM portal ID is the MAC address of the CCGX. Anyhow, it should be string uniquely + # identifying the CCGX. + self._dbusservice.add_path('/Serial', value=get_vrm_portal_id()) + self._dbusservice.add_path( + '/AvailableBatteryServices', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/AvailableBatteryMeasurements', value=None) + self._dbusservice.add_path( + '/AutoSelectedBatteryService', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/AutoSelectedBatteryMeasurement', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/ActiveBatteryService', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/Dc/Battery/BatteryService', value=None) + self._summeditems = { + '/Ac/Grid/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Grid/ProductId': {'gettext': '%s'}, + '/Ac/Grid/DeviceType': {'gettext': '%s'}, + '/Ac/Genset/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Genset/ProductId': {'gettext': '%s'}, + '/Ac/Genset/DeviceType': {'gettext': '%s'}, + '/Ac/ConsumptionOnOutput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Consumption/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/NumberOfPhases': {'gettext': '%.0F W'}, + '/Dc/Pv/Power': {'gettext': '%.0F W'}, + '/Dc/Pv/Current': {'gettext': '%.1F A'}, + '/Dc/Battery/Voltage': {'gettext': '%.2F V'}, + '/Dc/Battery/VoltageService': {'gettext': '%s'}, + '/Dc/Battery/Current': {'gettext': '%.1F A'}, + '/Dc/Battery/Power': {'gettext': '%.0F W'}, + '/Dc/Battery/State': {'gettext': '%s'}, + '/Dc/Battery/TimeToGo': {'gettext': '%.0F s'}, + '/Dc/Battery/ConsumedAmphours': {'gettext': '%.1F Ah'}, + '/Dc/Battery/ProductId': {'gettext': '0x%x'}, + '/Dc/Charger/Power': {'gettext': '%.0F %%'}, + '/Dc/FuelCell/Power': {'gettext': '%.0F %%'}, + '/Dc/Alternator/Power': {'gettext': '%.0F W'}, + '/Dc/Vebus/Current': {'gettext': '%.1F A'}, + '/Dc/Vebus/Power': {'gettext': '%.0F W'}, + '/Dc/System/Power': {'gettext': '%.0F W'}, + '/Dc/System/MeasurementType': {'gettext': '%d'}, + '/Ac/ActiveIn/Source': {'gettext': '%s'}, + '/Ac/ActiveIn/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L3/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/NumberOfPhases': {'gettext': '%d'}, + } + + for m in self._modules: + self._summeditems.update(m.get_output()) + + for path in self._summeditems.keys(): + self._dbusservice.add_path(path, value=None, gettextcallback=self._gettext) + + self._batteryservice = None + self._determinebatteryservice() + + if self._batteryservice is None: + logger.info("Battery service initialized to None (setting == %s)" % + self._settings['batteryservice']) + + self._changed = True + for service, instance in self._dbusmonitor.get_service_list().items(): + self._device_added(service, instance, do_service_change=False) + + self._handleservicechange() + self._updatevalues() + + GLib.timeout_add(1000, exit_on_error, self._handletimertick) + + def _create_dbus_monitor(self, *args, **kwargs): + raise Exception("This function should be overridden") + + def _create_settings(self, *args, **kwargs): + raise Exception("This function should be overridden") + + def _create_dbus_service(self): + raise Exception("This function should be overridden") + + def _handlechangedsetting(self, setting, oldvalue, newvalue): + self._determinebatteryservice() + self._changed = True + + # Give our delegates a chance to react on a settings change + for m in self._modules: + m.settings_changed(setting, oldvalue, newvalue) + + def _find_device_instance(self, serviceclass, instance): + """ Gets a mapping of services vs DeviceInstance using + get_service_list. Then searches for the specified DeviceInstance + and returns the service name. """ + services = self._dbusmonitor.get_service_list(classfilter=serviceclass) + + for k, v in services.items(): + if v == instance: + return k + return None + + def _determinebatteryservice(self): + auto_battery_service = self._autoselect_battery_service() + auto_battery_measurement = None + auto_selected = False + if auto_battery_service is not None: + services = self._dbusmonitor.get_service_list() + if auto_battery_service in services: + auto_battery_measurement = \ + self._get_instance_service_name(auto_battery_service, services[auto_battery_service]) + auto_battery_measurement = auto_battery_measurement.replace('.', '_').replace('/', '_') + '/Dc/0' + self._dbusservice['/AutoSelectedBatteryMeasurement'] = auto_battery_measurement + + if self._settings['batteryservice'] == self.BATSERVICE_DEFAULT: + auto_selected = True + newbatteryservice = auto_battery_service + self._dbusservice['/AutoSelectedBatteryService'] = ( + 'No battery monitor found' if newbatteryservice is None else + self._get_readable_service_name(newbatteryservice)) + + elif self._settings['batteryservice'] == self.BATSERVICE_NOBATTERY: + self._dbusservice['/AutoSelectedBatteryService'] = None + newbatteryservice = None + + else: + self._dbusservice['/AutoSelectedBatteryService'] = None + + s = self._settings['batteryservice'].split('/') + if len(s) != 2: + logger.error("The battery setting (%s) is invalid!" % self._settings['batteryservice']) + serviceclass = s[0] + instance = int(s[1]) if len(s) == 2 else None + + # newbatteryservice might turn into None if a chosen battery + # monitor no longer exists. Don't auto change the setting (it might + # come back) and don't autoselect another. + newbatteryservice = self._find_device_instance(serviceclass, instance) + + if newbatteryservice != self._batteryservice: + services = self._dbusmonitor.get_service_list() + instance = services.get(newbatteryservice, None) + if instance is None: + battery_service = None + else: + battery_service = self._get_instance_service_name(newbatteryservice, instance) + self._dbusservice['/ActiveBatteryService'] = battery_service + logger.info("Battery service, setting == %s, changed from %s to %s (%s)" % + (self._settings['batteryservice'], self._batteryservice, newbatteryservice, instance)) + + # Battery service has changed. Notify delegates. + self._dbusservice['/Dc/Battery/BatteryService'] = self._batteryservice = newbatteryservice + for m in self._modules: + m.battery_service_changed(auto_selected, self._batteryservice, newbatteryservice) + + def _autoselect_battery_service(self): + # Default setting business logic: + # first try to use a battery service (BMV or Lynx Shunt VE.Can). If there + # is more than one battery service, just use a random one. If no battery service is + # available, check if there are not Solar chargers and no normal chargers. If they are not + # there, assume this is a hub-2, hub-3 or hub-4 system and use VE.Bus SOC. + batteries = self._get_connected_service_list('com.victronenergy.battery') + + # Pick the battery service that has the lowest DeviceInstance, giving + # preference to those with a BMS. + if len(batteries) > 0: + batteries = [ + (not self._dbusmonitor.seen(s, '/Info/MaxChargeVoltage'), i, s) + for s, i in batteries.items()] + return sorted(batteries, key=lambda x: x[:2])[0][2] + + # No battery services, and there is a charger in the system. Abandon + # hope. + if self._get_first_connected_service('com.victronenergy.charger') is not None: + return None + + # Also no Multi, then give up. + vebus_service = self._get_service_having_lowest_instance('com.victronenergy.vebus') + if vebus_service is None: + # No VE.Bus, but maybe there is an inverter with built-in SOC + # tracking, eg RS Smart or Multi RS. + inverter = self._get_service_having_lowest_instance('com.victronenergy.multi') + if inverter and self._dbusmonitor.get_value(inverter[0], '/Soc') is not None: + return inverter[0] + + inverter = self._get_service_having_lowest_instance('com.victronenergy.inverter') + if inverter and self._dbusmonitor.get_value(inverter[0], '/Soc') is not None: + return inverter[0] + + return None + + # There is a Multi, it supports tracking external charge current from + # solarchargers, and there are no DC loads. Then use it. + if self._dbusmonitor.get_value( + vebus_service[0], '/ExtraBatteryCurrent') is not None \ + and self._get_first_connected_service('com.victronenergy.dcsystem') is None \ + and self._settings['hasdcsystem'] == 0: + return vebus_service[0] + + # Multi does not support tracking solarcharger current, and we have + # solar chargers. Then we cannot use it. + if self._get_first_connected_service('com.victronenergy.solarcharger') is not None: + return None + + # Only a Multi, no other chargers. Then we can use it. + return vebus_service[0] + + @property + def batteryservice(self): + return self._batteryservice + + # Called on a one second timer + def _handletimertick(self): + if self._changed: + self._updatevalues() + self._changed = False + + return True # keep timer running + + def _updatevalues(self): + # ==== PREPARATIONS ==== + newvalues = {} + + # Set the user timezone + if 'TZ' not in os.environ: + tz = self._dbusmonitor.get_value('com.victronenergy.settings', '/Settings/System/TimeZone') + if tz is not None: + os.environ['TZ'] = tz + time.tzset() + + # Determine values used in logic below + vebusses = self._dbusmonitor.get_service_list('com.victronenergy.vebus') + vebuspower = 0 + for vebus in vebusses: + v = self._dbusmonitor.get_value(vebus, '/Dc/0/Voltage') + i = self._dbusmonitor.get_value(vebus, '/Dc/0/Current') + if v is not None and i is not None: + vebuspower += v * i + + # ==== PVINVERTERS ==== + # Work is done in pv-inverter delegate. Ideally all of this should + # happen in update_values in the delegate, but these values are + # used below in calculating consumption, so until this is less + # unwieldy this has to stay here. + # TODO this can go away once consumption below no longer relies + # on these values, or has moved to its own delegate. + newvalues.update(delegates.PvInverters.instance.get_totals()) + self._compute_number_of_phases('/Ac/PvOnGrid', newvalues) + self._compute_number_of_phases('/Ac/PvOnOutput', newvalues) + self._compute_number_of_phases('/Ac/PvOnGenset', newvalues) + + # ==== SOLARCHARGERS ==== + solarchargers = self._dbusmonitor.get_service_list('com.victronenergy.solarcharger') + solarcharger_batteryvoltage = None + solarcharger_batteryvoltage_service = None + solarchargers_charge_power = 0 + solarchargers_loadoutput_power = None + + for solarcharger in solarchargers: + v = self._dbusmonitor.get_value(solarcharger, '/Dc/0/Voltage') + if v is None: + continue + i = self._dbusmonitor.get_value(solarcharger, '/Dc/0/Current') + if i is None: + continue + l = self._dbusmonitor.get_value(solarcharger, '/Load/I', 0) + + if l is not None: + if solarchargers_loadoutput_power is None: + solarchargers_loadoutput_power = l * v + else: + solarchargers_loadoutput_power += l * v + + solarchargers_charge_power += v * i + + # Note that this path is not in the _summeditems{}, making for it to not be + # published on D-Bus. Which fine. The only one needing it is the vebussocwriter- + # delegate. + if '/Dc/Pv/ChargeCurrent' not in newvalues: + newvalues['/Dc/Pv/ChargeCurrent'] = i + else: + newvalues['/Dc/Pv/ChargeCurrent'] += i + + if '/Dc/Pv/Power' not in newvalues: + newvalues['/Dc/Pv/Power'] = v * _safeadd(i, l) + newvalues['/Dc/Pv/Current'] = _safeadd(i, l) + solarcharger_batteryvoltage = v + solarcharger_batteryvoltage_service = solarcharger + else: + newvalues['/Dc/Pv/Power'] += v * _safeadd(i, l) + newvalues['/Dc/Pv/Current'] += _safeadd(i, l) + + # ==== FUELCELLS ==== + fuelcells = self._dbusmonitor.get_service_list('com.victronenergy.fuelcell') + fuelcell_batteryvoltage = None + fuelcell_batteryvoltage_service = None + for fuelcell in fuelcells: + # Assume the battery connected to output 0 is the main battery + v = self._dbusmonitor.get_value(fuelcell, '/Dc/0/Voltage') + if v is None: + continue + + fuelcell_batteryvoltage = v + fuelcell_batteryvoltage_service = fuelcell + + i = self._dbusmonitor.get_value(fuelcell, '/Dc/0/Current') + if i is None: + continue + + if '/Dc/FuelCell/Power' not in newvalues: + newvalues['/Dc/FuelCell/Power'] = v * i + else: + newvalues['/Dc/FuelCell/Power'] += v * i + + # ==== ALTERNATOR ==== + alternators = self._dbusmonitor.get_service_list('com.victronenergy.alternator') + for alternator in alternators: + # Assume the battery connected to output 0 is the main battery + p = self._dbusmonitor.get_value(alternator, '/Dc/0/Power') + if p is None: + continue + + if '/Dc/Alternator/Power' not in newvalues: + newvalues['/Dc/Alternator/Power'] = p + else: + newvalues['/Dc/Alternator/Power'] += p + + # ==== CHARGERS ==== + chargers = self._dbusmonitor.get_service_list('com.victronenergy.charger') + charger_batteryvoltage = None + charger_batteryvoltage_service = None + for charger in chargers: + # Assume the battery connected to output 0 is the main battery + v = self._dbusmonitor.get_value(charger, '/Dc/0/Voltage') + if v is None: + continue + + charger_batteryvoltage = v + charger_batteryvoltage_service = charger + + i = self._dbusmonitor.get_value(charger, '/Dc/0/Current') + if i is None: + continue + + if '/Dc/Charger/Power' not in newvalues: + newvalues['/Dc/Charger/Power'] = v * i + else: + newvalues['/Dc/Charger/Power'] += v * i + + # ==== Other Inverters and Inverter/Chargers ==== + _other_inverters = sorted((di, s) for s, di in self._dbusmonitor.get_service_list('com.victronenergy.multi').items()) + \ + sorted((di, s) for s, di in self._dbusmonitor.get_service_list('com.victronenergy.inverter').items()) + non_vebus_inverters = [x[1] for x in _other_inverters] + non_vebus_inverter = None + if non_vebus_inverters: + non_vebus_inverter = non_vebus_inverters[0] + + # For RS Smart and Multi RS, add PV to the yield + for i in non_vebus_inverters: + if (pv_yield := self._dbusmonitor.get_value(i, "/Yield/Power")) is not None: + newvalues['/Dc/Pv/Power'] = newvalues.get('/Dc/Pv/Power', 0) + pv_yield + + # Used lower down, possibly needed for battery values as well + dcsystems = self._dbusmonitor.get_service_list('com.victronenergy.dcsystem') + + # ==== BATTERY ==== + if self._batteryservice is not None: + batteryservicetype = self._batteryservice.split('.')[2] + assert batteryservicetype in ('battery', 'vebus', 'inverter', 'multi') + + newvalues['/Dc/Battery/TimeToGo'] = self._dbusmonitor.get_value(self._batteryservice,'/TimeToGo') + newvalues['/Dc/Battery/ConsumedAmphours'] = self._dbusmonitor.get_value(self._batteryservice,'/ConsumedAmphours') + newvalues['/Dc/Battery/ProductId'] = self._dbusmonitor.get_value(self._batteryservice, '/ProductId') + + if batteryservicetype in ('battery', 'inverter', 'multi'): + newvalues['/Dc/Battery/Voltage'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Voltage') + newvalues['/Dc/Battery/VoltageService'] = self._batteryservice + newvalues['/Dc/Battery/Current'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Current') + newvalues['/Dc/Battery/Power'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Power') + + elif batteryservicetype == 'vebus': + vebus_voltage = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Voltage') + vebus_current = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Current') + vebus_power = None if vebus_voltage is None or vebus_current is None else vebus_current * vebus_voltage + newvalues['/Dc/Battery/Voltage'] = vebus_voltage + newvalues['/Dc/Battery/VoltageService'] = self._batteryservice + if self._settings['hasdcsystem'] == 1 or dcsystems: + # hasdcsystem will normally disqualify the multi from being + # auto-selected as battery monitor, so the only way we're + # here is if the user explicitly selected the multi as the + # battery service + newvalues['/Dc/Battery/Current'] = vebus_current + if vebus_power is not None: + newvalues['/Dc/Battery/Power'] = vebus_power + else: + battery_power = _safeadd(solarchargers_charge_power, vebus_power) + newvalues['/Dc/Battery/Current'] = battery_power / vebus_voltage if vebus_voltage is not None and vebus_voltage > 0 else None + newvalues['/Dc/Battery/Power'] = battery_power + + + p = newvalues.get('/Dc/Battery/Power', None) + if p is not None: + if p > 30: + newvalues['/Dc/Battery/State'] = self.STATE_CHARGING + elif p < -30: + newvalues['/Dc/Battery/State'] = self.STATE_DISCHARGING + else: + newvalues['/Dc/Battery/State'] = self.STATE_IDLE + + else: + # The battery service is not a BMS/BMV or a suitable vebus. A + # suitable vebus is defined as one explicitly selected by the user, + # or one that was automatically selected for SOC tracking. We may + # however still have a VE.Bus, just not one that can accurately + # track SOC. If we have one, use it as voltage source. Otherwise + # try a solar charger, a charger, a vedirect inverter or a dcsource + # as fallbacks. + batteryservicetype = None + vebusses = self._dbusmonitor.get_service_list('com.victronenergy.vebus') + for vebus in vebusses: + v = self._dbusmonitor.get_value(vebus, '/Dc/0/Voltage') + s = self._dbusmonitor.get_value(vebus, '/State') + if v is not None and s not in (0, None): + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = vebus + break # Skip the else below + else: + # No suitable vebus voltage, try other devices + if non_vebus_inverter is not None and (v := self._dbusmonitor.get_value(non_vebus_inverter, '/Dc/0/Voltage')) is not None: + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = non_vebus_inverter + elif solarcharger_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = solarcharger_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = solarcharger_batteryvoltage_service + elif charger_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = charger_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = charger_batteryvoltage_service + elif fuelcell_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = fuelcell_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = fuelcell_batteryvoltage_service + elif dcsystems: + # Get voltage from first dcsystem + s = next(iter(dcsystems.keys())) + v = self._dbusmonitor.get_value(s, '/Dc/0/Voltage') + if v is not None: + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = s + + # We have no suitable battery monitor, so power and current data + # is not available. We can however calculate it from other values, + # if we have at least a battery voltage. + if '/Dc/Battery/Voltage' in newvalues: + dcsystempower = _safeadd(0, *(self._dbusmonitor.get_value(s, + '/Dc/0/Power', 0) for s in dcsystems)) + if dcsystems or self._settings['hasdcsystem'] == 0: + # Either DC loads are monitored, or there are no + # unmonitored DC loads or chargers: derive battery watts + # and amps from vebus, solarchargers, chargers and measured + # loads. + p = solarchargers_charge_power + newvalues.get('/Dc/Charger/Power', 0) + vebuspower - dcsystempower + voltage = newvalues['/Dc/Battery/Voltage'] + newvalues['/Dc/Battery/Current'] = p / voltage if voltage > 0 else None + newvalues['/Dc/Battery/Power'] = p + + # ==== SYSTEM POWER ==== + # Look for dcsytem devices, add them together. Otherwise, if enabled, + # calculate it + if dcsystems: + newvalues['/Dc/System/MeasurementType'] = 1 # measured + newvalues['/Dc/System/Power'] = 0 + for meter in dcsystems: + newvalues['/Dc/System/Power'] = _safeadd(newvalues['/Dc/System/Power'], + self._dbusmonitor.get_value(meter, '/Dc/0/Power')) + elif self._settings['hasdcsystem'] == 1 and batteryservicetype == 'battery': + # Calculate power being generated/consumed by not measured devices in the network. + # For MPPTs, take all the power, including power going out of the load output. + # /Dc/System: positive: consuming power + # VE.Bus: Positive: current flowing from the Multi to the dc system or battery + # Solarcharger & other chargers: positive: charging + # battery: Positive: charging battery. + # battery = solarcharger + charger + ve.bus - system + + battery_power = newvalues.get('/Dc/Battery/Power') + if battery_power is not None: + dc_pv_power = newvalues.get('/Dc/Pv/Power', 0) + charger_power = newvalues.get('/Dc/Charger/Power', 0) + fuelcell_power = newvalues.get('/Dc/FuelCell/Power', 0) + alternator_power = newvalues.get('/Dc/Alternator/Power', 0) + + # If there are VE.Direct inverters, remove their power from the + # DC estimate. This is done using the AC value when the DC + # power values are not available. + inverter_power = 0 + for i in non_vebus_inverters: + inverter_current = self._dbusmonitor.get_value(i, '/Dc/0/Current') + if inverter_current is not None: + inverter_power += self._dbusmonitor.get_value( + i, '/Dc/0/Voltage', 0) * inverter_current + else: + inverter_power -= self._dbusmonitor.get_value( + i, '/Ac/Out/L1/V', 0) * self._dbusmonitor.get_value( + i, '/Ac/Out/L1/I', 0) + newvalues['/Dc/System/MeasurementType'] = 0 # estimated + # FIXME In future we will subtract alternator power from the + # calculated DC power, because it will be individually + # displayed. For now, we leave it out so that in the current + # version of Venus it does not break user's expectations. + #newvalues['/Dc/System/Power'] = dc_pv_power + charger_power + fuelcell_power + vebuspower + inverter_power - battery_power - alternator_power + newvalues['/Dc/System/Power'] = dc_pv_power + charger_power + fuelcell_power + vebuspower + inverter_power - battery_power + + elif self._settings['hasdcsystem'] == 1 and solarchargers_loadoutput_power is not None: + newvalues['/Dc/System/MeasurementType'] = 0 # estimated + newvalues['/Dc/System/Power'] = solarchargers_loadoutput_power + + # ==== Vebus ==== + multi_path = getattr(delegates.Multi.instance.multi, 'service', None) + if multi_path is not None: + dc_current = self._dbusmonitor.get_value(multi_path, '/Dc/0/Current') + newvalues['/Dc/Vebus/Current'] = dc_current + dc_power = self._dbusmonitor.get_value(multi_path, '/Dc/0/Power') + # Just in case /Dc/0/Power is not available + if dc_power == None and dc_current is not None: + dc_voltage = self._dbusmonitor.get_value(multi_path, '/Dc/0/Voltage') + if dc_voltage is not None: + dc_power = dc_voltage * dc_current + # Note that there is also vebuspower, which is the total DC power summed over all multis. + # However, this value cannot be combined with /Dc/Multi/Current, because it does not make sense + # to add the Dc currents of all multis if they do not share the same DC voltage. + newvalues['/Dc/Vebus/Power'] = dc_power + + # ===== AC IN SOURCE ===== + ac_in_source = None + active_input = None + if multi_path is None: + # Check if we have an non-VE.Bus inverter. + if non_vebus_inverter is not None: + if (active_input := self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/ActiveIn/ActiveInput')) is not None and \ + active_input in (0, 1) and \ + (active_type := self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/{}/Type'.format(active_input + 1))) is not None: + ac_in_source = active_type + else: + ac_in_source = 240 + else: + active_input = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/ActiveInput') + if active_input == 0xF0: + # Not connected + ac_in_source = 240 + elif active_input is not None: + settings_path = '/Settings/SystemSetup/AcInput%s' % (active_input + 1) + ac_in_source = self._dbusmonitor.get_value('com.victronenergy.settings', settings_path) + newvalues['/Ac/ActiveIn/Source'] = ac_in_source + + # ===== GRID METERS & CONSUMPTION ==== + grid_meter = delegates.AcInputs.instance.gridmeter + genset_meter = delegates.AcInputs.instance.gensetmeter + + # Make an educated guess as to what is being consumed from an AC source. If ac_in_source + # indicates grid, genset or shore, we use that. If the Multi is off, or disconnected through + # a relay assistant or otherwise, then assume the presence of a .grid or .genset service indicates + # presence of that AC source. If both are available, then give up. This decision making is here + # so the GUI has something to present even if the Multi is off. + ac_in_guess = ac_in_source + if ac_in_guess in (None, 0xF0): + if genset_meter is None and grid_meter is not None: + ac_in_guess = 1 + elif grid_meter is None and genset_meter is not None: + ac_in_guess = 2 + + consumption = { "L1" : None, "L2" : None, "L3" : None } + currentconsumption = { "L1" : None, "L2" : None, "L3" : None } + for device_type, em, _types in (('Grid', grid_meter, (1, 3)), ('Genset', genset_meter, (2,))): + # If a grid meter is present we use values from it. If not, we look at the multi. If it has + # AcIn1 or AcIn2 connected to the grid, we use those values. + # com.victronenergy.grid.??? indicates presence of an energy meter used as grid meter. + # com.victronenergy.vebus.???/Ac/ActiveIn/ActiveInput: decides which whether we look at AcIn1 + # or AcIn2 as possible grid connection. + uses_active_input = ac_in_source in _types + for phase in consumption: + p = None + mc = None + pvpower = newvalues.get('/Ac/PvOn%s/%s/Power' % (device_type, phase)) + pvcurrent = newvalues.get('/Ac/PvOn%s/%s/Current' % (device_type, phase)) + if em is not None: + p = self._dbusmonitor.get_value(em.service, '/Ac/%s/Power' % phase) + mc = self._dbusmonitor.get_value(em.service, '/Ac/%s/Current' % phase) + # Compute consumption between energy meter and multi (meter power - multi AC in) and + # add an optional PV inverter on input to the mix. + c = None + cc = None + if uses_active_input: + if multi_path is not None: + try: + c = _safeadd(c, -self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/P' % phase)) + cc = _safeadd(cc, -self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/I' % phase)) + except TypeError: + pass + elif non_vebus_inverter is not None and active_input in (0, 1): + for i in non_vebus_inverters: + try: + c = _safeadd(c, -self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/P' % (active_input+1, phase))) + cc = _safeadd(cc, -self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/I' % (active_input+1, phase))) + except TypeError: + pass + + # If there's any power coming from a PV inverter in the inactive AC in (which is unlikely), + # it will still be used, because there may also be a load in the same ACIn consuming + # power, or the power could be fed back to the net. + c = _safeadd(c, p, pvpower) + cc = _safeadd(cc, mc, pvcurrent) + consumption[phase] = _safeadd(consumption[phase], _safemax(0, c)) + currentconsumption[phase] = _safeadd(currentconsumption[phase], _safemax(0, cc)) + else: + if uses_active_input: + if multi_path is not None and ( + p := self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/P' % phase)) is not None: + consumption[phase] = _safeadd(0, consumption[phase]) + currentconsumption[phase] = _safeadd(0, currentconsumption[phase]) + mc = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/I' % phase) + elif non_vebus_inverter is not None and active_input in (0, 1): + for i in non_vebus_inverters: + p = _safeadd(p, + self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/P' % (active_input + 1, phase))) + mc = _safeadd(mc, + self._dbusmonitor.get_value(i, '/Ac/In/%d/%s/I' % (active_input + 1, phase))) + if p is not None: + consumption[phase] = _safeadd(0, consumption[phase]) + currentconsumption[phase] = _safeadd(0, currentconsumption[phase]) + + # No relevant energy meter present. Assume there is no load between the grid and the multi. + # There may be a PV inverter present though (Hub-3 setup). + try: + p = _safeadd(p, -pvpower) + mc = _safeadd(mc, -pvcurrent) + except TypeError: + pass + + newvalues['/Ac/%s/%s/Power' % (device_type, phase)] = p + newvalues['/Ac/%s/%s/Current' % (device_type, phase)] = mc + if ac_in_guess in _types: + newvalues['/Ac/ActiveIn/%s/Power' % (phase,)] = p + newvalues['/Ac/ActiveIn/%s/Current' % (phase,)] = mc + + self._compute_number_of_phases('/Ac/%s' % device_type, newvalues) + self._compute_number_of_phases('/Ac/ActiveIn', newvalues) + + product_id = None + device_type_id = None + if em is not None: + product_id = em.product_id + device_type_id = em.device_type + if product_id is None and uses_active_input: + if multi_path is not None: + product_id = self._dbusmonitor.get_value(multi_path, '/ProductId') + elif non_vebus_inverter is not None: + product_id = self._dbusmonitor.get_value(non_vebus_inverter, '/ProductId') + newvalues['/Ac/%s/ProductId' % device_type] = product_id + newvalues['/Ac/%s/DeviceType' % device_type] = device_type_id + + # If we have an ESS system and RunWithoutGridMeter is set, there cannot be load on the AC-In, so it + # must be on AC-Out. Hence we do calculate AC-Out consumption even if 'useacout' is disabled. + # Similarly all load are by definition on the output if this is not an ESS system. + use_ac_out = \ + self._settings['useacout'] == 1 or \ + (multi_path is not None and self._dbusmonitor.get_value(multi_path, '/Hub4/AssistantId') not in (4, 5)) or \ + self._dbusmonitor.get_value('com.victronenergy.settings', '/Settings/CGwacs/RunWithoutGridMeter') == 1 + for phase in consumption: + c = None + a = None + if use_ac_out: + c = newvalues.get('/Ac/PvOnOutput/%s/Power' % phase) + a = newvalues.get('/Ac/PvOnOutput/%s/Current' % phase) + if multi_path is None: + for inv in non_vebus_inverters: + ac_out = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/P' % phase) + i = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/I' % phase) + + # Some models don't show power, try apparent power, + # else calculate it + if ac_out is None: + ac_out = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/S' % phase) + if ac_out is None: + u = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/V' % phase) + if None not in (i, u): + ac_out = i * u + c = _safeadd(c, ac_out) + a = _safeadd(a, i) + else: + ac_out = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/P' % phase) + c = _safeadd(c, ac_out) + i_out = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/I' % phase) + a = _safeadd(a, i_out) + c = _safemax(0, c) + a = _safemax(0, a) + newvalues['/Ac/ConsumptionOnOutput/%s/Power' % phase] = c + newvalues['/Ac/ConsumptionOnOutput/%s/Current' % phase] = a + newvalues['/Ac/ConsumptionOnInput/%s/Power' % phase] = consumption[phase] + newvalues['/Ac/ConsumptionOnInput/%s/Current' % phase] = currentconsumption[phase] + newvalues['/Ac/Consumption/%s/Power' % phase] = _safeadd(consumption[phase], c) + newvalues['/Ac/Consumption/%s/Current' % phase] = _safeadd(currentconsumption[phase], a) + self._compute_number_of_phases('/Ac/Consumption', newvalues) + self._compute_number_of_phases('/Ac/ConsumptionOnOutput', newvalues) + self._compute_number_of_phases('/Ac/ConsumptionOnInput', newvalues) + + for m in self._modules: + m.update_values(newvalues) + + # ==== UPDATE DBUS ITEMS ==== + with self._dbusservice as sss: + for path in self._summeditems.keys(): + # Why the None? Because we want to invalidate things we don't have anymore. + sss[path] = newvalues.get(path, None) + + def _handleservicechange(self): + # Update the available battery monitor services, used to populate the dropdown in the settings. + # Below code makes a dictionary. The key is [dbuserviceclass]/[deviceinstance]. For example + # "battery/245". The value is the name to show to the user in the dropdown. The full dbus- + # servicename, ie 'com.victronenergy.vebus.ttyO1' is not used, since the last part of that is not + # fixed. dbus-serviceclass name and the device instance are already fixed, so best to use those. + + services = self._get_connected_service_list('com.victronenergy.vebus') + services.update(self._get_connected_service_list('com.victronenergy.battery')) + services.update({k: v for k, v in self._get_connected_service_list( + 'com.victronenergy.multi').items() if self._dbusmonitor.get_value(k, '/Soc') is not None}) + services.update({k: v for k, v in self._get_connected_service_list( + 'com.victronenergy.inverter').items() if self._dbusmonitor.get_value(k, '/Soc') is not None}) + + ul = {self.BATSERVICE_DEFAULT: 'Automatic', self.BATSERVICE_NOBATTERY: 'No battery monitor'} + for servicename, instance in services.items(): + key = self._get_instance_service_name(servicename, instance) + ul[key] = self._get_readable_service_name(servicename) + self._dbusservice['/AvailableBatteryServices'] = json.dumps(ul) + + ul = {self.BATSERVICE_DEFAULT: 'Automatic', self.BATSERVICE_NOBATTERY: 'No battery monitor'} + # For later: for device supporting multiple Dc measurement we should add entries for /Dc/1 etc as + # well. + for servicename, instance in services.items(): + key = self._get_instance_service_name(servicename, instance).replace('.', '_').replace('/', '_') + '/Dc/0' + ul[key] = self._get_readable_service_name(servicename) + self._dbusservice['/AvailableBatteryMeasurements'] = ul + + self._determinebatteryservice() + + self._changed = True + + def _get_readable_service_name(self, servicename): + return '%s on %s' % ( + self._dbusmonitor.get_value(servicename, '/ProductName'), + self._dbusmonitor.get_value(servicename, '/Mgmt/Connection')) + + def _get_instance_service_name(self, service, instance): + return '%s/%s' % ('.'.join(service.split('.')[0:3]), instance) + + def _remove_unconnected_services(self, services): + # Workaround: because com.victronenergy.vebus is available even when there is no vebus product + # connected, remove any service that is not connected. Previously we used + # /State since mandatory path /Connected is not implemented in mk2dbus, + # but this has since been resolved. + for servicename in list(services.keys()): + if (self._dbusmonitor.get_value(servicename, '/Connected') != 1 + or self._dbusmonitor.get_value(servicename, '/ProductName') is None + or self._dbusmonitor.get_value(servicename, '/Mgmt/Connection') is None): + del services[servicename] + + def _dbus_value_changed(self, dbusServiceName, dbusPath, dict, changes, deviceInstance): + self._changed = True + + # Workaround because com.victronenergy.vebus is available even when there is no vebus product + # connected. + if (dbusPath in ['/Connected', '/ProductName', '/Mgmt/Connection'] or + (dbusPath == '/State' and dbusServiceName.split('.')[0:3] == ['com', 'victronenergy', 'vebus'])): + self._handleservicechange() + + # Track the timezone changes + if dbusPath == '/Settings/System/TimeZone': + tz = changes.get('Value') + if tz is not None: + os.environ['TZ'] = tz + time.tzset() + + def _device_added(self, service, instance, do_service_change=True): + if do_service_change: + self._handleservicechange() + + for m in self._modules: + m.device_added(service, instance, do_service_change) + + def _device_removed(self, service, instance): + self._handleservicechange() + + for m in self._modules: + m.device_removed(service, instance) + + def _gettext(self, path, value): + if path == '/Dc/Battery/State': + state = {self.STATE_IDLE: 'Idle', self.STATE_CHARGING: 'Charging', + self.STATE_DISCHARGING: 'Discharging'} + return state[value] + item = self._summeditems.get(path) + if item is not None: + return item['gettext'] % value + return str(value) + + def _compute_number_of_phases(self, path, newvalues): + number_of_phases = None + for phase in range(1, 4): + p = newvalues.get('%s/L%s/Power' % (path, phase)) + if p is not None: + number_of_phases = phase + newvalues[path + '/NumberOfPhases'] = number_of_phases + + def _get_connected_service_list(self, classfilter=None): + services = self._dbusmonitor.get_service_list(classfilter=classfilter) + self._remove_unconnected_services(services) + return services + + # returns a servicename string + def _get_first_connected_service(self, classfilter): + services = self._get_connected_service_list(classfilter=classfilter) + if len(services) == 0: + return None + return next(iter(services.items()), (None,))[0] + + # returns a tuple (servicename, instance) + def _get_service_having_lowest_instance(self, classfilter=None): + services = self._get_connected_service_list(classfilter=classfilter) + if len(services) == 0: + return None + + # sort the dict by value; returns list of tuples: (value, key) + s = sorted((value, key) for (key, value) in services.items()) + return (s[0][1], s[0][0]) + + +class DbusSystemCalc(SystemCalc): + def _create_dbus_monitor(self, *args, **kwargs): + return DbusMonitor(*args, **kwargs) + + def _create_settings(self, *args, **kwargs): + bus = dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else dbus.SystemBus() + return SettingsDevice(bus, *args, timeout=10, **kwargs) + + def _create_dbus_service(self): + venusversion, venusbuildtime = self._get_venus_versioninfo() + + dbusservice = VeDbusService('com.victronenergy.system') + dbusservice.add_mandatory_paths( + processname=__file__, + processversion=softwareVersion, + connection='data from other dbus processes', + deviceinstance=0, + productid=None, + productname=None, + firmwareversion=venusversion, + hardwareversion=None, + connected=1) + dbusservice.add_path('/FirmwareBuild', value=venusbuildtime) + return dbusservice + + def _get_venus_versioninfo(self): + try: + with open("/opt/victronenergy/version", "r") as fp: + version, software, buildtime = fp.read().split('\n')[:3] + major, minor, _, rev = re.compile('v([0-9]*)\.([0-9]*)(~([0-9]*))?').match(version).groups() + return (int(major, 16)<<16)+(int(minor, 16)<<8)+(0 if rev is None else int(rev, 16)), buildtime + except Exception: + pass + return 0, '0' + +if __name__ == "__main__": + # Argument parsing + parser = argparse.ArgumentParser( + description='Converts readings from AC-Sensors connected to a VE.Bus device in a pvinverter ' + + 'D-Bus service.' + ) + + parser.add_argument("-d", "--debug", help="set logging level to debug", + action="store_true") + + args = parser.parse_args() + + print("-------- dbus_systemcalc, v" + softwareVersion + " is starting up --------") + logger = setup_logging(args.debug) + + # Have a mainloop, so we can send/receive asynchronous calls to and from dbus + DBusGMainLoop(set_as_default=True) + + systemcalc = DbusSystemCalc() + + # Start and run the mainloop + logger.info("Starting mainloop, responding only on events") + mainloop = GLib.MainLoop() + mainloop.run() diff --git a/FileSets/v3.30~1/main.qml b/FileSets/v3.30~3/main.qml similarity index 100% rename from FileSets/v3.30~1/main.qml rename to FileSets/v3.30~3/main.qml diff --git a/FileSets/v3.30~1/main.qml.orig b/FileSets/v3.30~3/main.qml.orig similarity index 100% rename from FileSets/v3.30~1/main.qml.orig rename to FileSets/v3.30~3/main.qml.orig diff --git a/FileSets/v3.30~1/startstop.py b/FileSets/v3.30~3/startstop.py similarity index 100% rename from FileSets/v3.30~1/startstop.py rename to FileSets/v3.30~3/startstop.py diff --git a/FileSets/v3.30~1/startstop.py.orig b/FileSets/v3.30~3/startstop.py.orig similarity index 100% rename from FileSets/v3.30~1/startstop.py.orig rename to FileSets/v3.30~3/startstop.py.orig diff --git a/FileSets/v3.30~1/styles.css b/FileSets/v3.30~3/styles.css similarity index 100% rename from FileSets/v3.30~1/styles.css rename to FileSets/v3.30~3/styles.css diff --git a/FileSets/v3.30~1/styles.css.orig b/FileSets/v3.30~3/styles.css.orig similarity index 100% rename from FileSets/v3.30~1/styles.css.orig rename to FileSets/v3.30~3/styles.css.orig diff --git a/changes b/changes index c048a805..584e95ad 100644 --- a/changes +++ b/changes @@ -1,3 +1,7 @@ +v10.1: + add AC in ignored, etc to Generator AC input tile + add support for v3.20~46 & -49 and v3.30~3 (v3.30~1 never released so is not inclulded) + v10.0: incoporate ExtTransferSwitch add support for v3.20~45 adn v3.30~1 diff --git a/version b/version index f0531ee5..da5afc1d 100644 --- a/version +++ b/version @@ -1 +1 @@ -v10.0 +v10.1