aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2022-12-28 15:05:26 -0500
committerScott Murray <scott.murray@konsulko.com>2022-12-29 06:35:38 +0000
commit4fbd3fdb9e01c197d972b78961f0d033534a5cc7 (patch)
treedef7bfc0d0f11746006439b33019b61dfc16e1b8
parente21709c9601209e26d09dea0a45e37f0636bb605 (diff)
Add volume control to bottom panel
Changes: - Import a reworked version of the KUKSA.val client code from the Flutter dashboard app, with the aggregated signal Riverpod provider replaced with per-signal providers for the signal the homescreen needs and a couple of temperature ones it might use. Using separate providers is more in-line with recommended Riverpod best practices. - Various tweaks to enable using Riverpod. - Split the bottom panel out into its own widget, and add a stack in it to layer the default logo panel with the volume control slider, which has been added as a new widget definition to provide the hook to drive timer based lowering behavior like the Qt homescreen does. - The KUKSA.val connection widget has been added to the bottom panel rather than overriding the top-level widget as in the dashboard and HVAC apps. This seems preferable with respect to still providing some functionality in the event KUKSA.val is unavailable. - Remove the old demo dashboard and HVAC pages that are now unused, along with the image assets they needed, to allow cleaning up pubspec.yaml and ease maintenance. Bug-AGL: SPEC-4659 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I5d9180a3461948a58321564e71134c4961ce0ef7
-rw-r--r--images/HMI_Dashboard_Car_1080.pngbin256058 -> 0 bytes
-rw-r--r--images/HMI_Dashboard_Car_720.pngbin123404 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Active.pngbin2339 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Active.svg35
-rw-r--r--images/HMI_HVAC_AirDown_Active.pngbin7891 -> 0 bytes
-rw-r--r--images/HMI_HVAC_AirDown_Active.svg66
-rw-r--r--images/HMI_HVAC_AirDown_Inactive.pngbin7306 -> 0 bytes
-rw-r--r--images/HMI_HVAC_AirDown_Inactive.svg69
-rw-r--r--images/HMI_HVAC_AirRight_Active.pngbin7938 -> 0 bytes
-rw-r--r--images/HMI_HVAC_AirRight_Active.svg69
-rw-r--r--images/HMI_HVAC_AirRight_Inactive.pngbin3730 -> 0 bytes
-rw-r--r--images/HMI_HVAC_AirRight_Inactive.svg72
-rw-r--r--images/HMI_HVAC_AirUp_Active.pngbin7849 -> 0 bytes
-rw-r--r--images/HMI_HVAC_AirUp_Active.svg74
-rw-r--r--images/HMI_HVAC_AirUp_Inactive.pngbin7281 -> 0 bytes
-rw-r--r--images/HMI_HVAC_AirUp_Inactive.svg75
-rw-r--r--images/HMI_HVAC_ChairIndicator_OFF.pngbin402 -> 0 bytes
-rw-r--r--images/HMI_HVAC_ChairIndicator_OFF.svg76
-rw-r--r--images/HMI_HVAC_ChairIndicator_One.pngbin412 -> 0 bytes
-rw-r--r--images/HMI_HVAC_ChairIndicator_One.svg31
-rw-r--r--images/HMI_HVAC_ChairIndicator_Two.pngbin402 -> 0 bytes
-rw-r--r--images/HMI_HVAC_ChairIndicator_Two.svg30
-rw-r--r--images/HMI_HVAC_Circulation_Active.pngbin12093 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Circulation_Active.svg253
-rw-r--r--images/HMI_HVAC_Circulation_Inactive.pngbin20126 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Circulation_Inactive.svg87
-rw-r--r--images/HMI_HVAC_Fan_Icon.pngbin19333 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Fan_Icon.svg46
-rw-r--r--images/HMI_HVAC_Front_Active.pngbin11325 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Front_Active.svg75
-rw-r--r--images/HMI_HVAC_Front_Inactive.pngbin10209 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Front_Inactive.svg72
-rw-r--r--images/HMI_HVAC_Inactive.pngbin380 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Inactive.svg31
-rw-r--r--images/HMI_HVAC_Left_Chair_OFF.pngbin20698 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Left_Chair_OFF.svg87
-rw-r--r--images/HMI_HVAC_Left_Chair_ON.pngbin10998 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Left_Chair_ON.svg59
-rw-r--r--images/HMI_HVAC_Rear_Active.pngbin8699 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Rear_Active.svg101
-rw-r--r--images/HMI_HVAC_Rear_Inactive.pngbin4253 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Rear_Inactive.svg91
-rw-r--r--images/HMI_HVAC_Right_Chair_OFF.pngbin20647 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Right_Chair_OFF.svg87
-rw-r--r--images/HMI_HVAC_Right_Chair_ON.pngbin9807 -> 0 bytes
-rw-r--r--images/HMI_HVAC_Right_Chair_ON.svg60
-rw-r--r--images/vertical_background.pngbin719555 -> 0 bytes
-rw-r--r--lib/bottom_panel.dart84
-rw-r--r--lib/config.dart115
-rw-r--r--lib/homescreen.dart125
-rw-r--r--lib/homescreen_model.dart68
-rw-r--r--lib/main.dart18
-rw-r--r--lib/page_apps.dart43
-rw-r--r--lib/page_dashboard.dart218
-rw-r--r--lib/page_hvac.dart313
-rw-r--r--lib/vehicle-signals/viss_config.dart29
-rw-r--r--lib/vehicle-signals/viss_connected_widget.dart65
-rw-r--r--lib/vehicle-signals/viss_connection_widget.dart41
-rw-r--r--lib/vehicle-signals/viss_methods.dart116
-rw-r--r--lib/vehicle-signals/vss_path.dart44
-rw-r--r--lib/vehicle-signals/vss_providers.dart130
-rw-r--r--lib/volume_slider.dart50
-rw-r--r--pubspec.lock61
-rw-r--r--pubspec.yaml19
64 files changed, 797 insertions, 2388 deletions
diff --git a/images/HMI_Dashboard_Car_1080.png b/images/HMI_Dashboard_Car_1080.png
deleted file mode 100644
index 387a4b1..0000000
--- a/images/HMI_Dashboard_Car_1080.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_Dashboard_Car_720.png b/images/HMI_Dashboard_Car_720.png
deleted file mode 100644
index 0e4079c..0000000
--- a/images/HMI_Dashboard_Car_720.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Active.png b/images/HMI_HVAC_Active.png
deleted file mode 100644
index f875fcf..0000000
--- a/images/HMI_HVAC_Active.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Active.svg b/images/HMI_HVAC_Active.svg
deleted file mode 100644
index 71e6aa0..0000000
--- a/images/HMI_HVAC_Active.svg
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 318 219"
- style="enable-background:new 0 0 318 219;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#0DF9FF;}
- .st1{font-family:'Roboto-Light';}
- .st2{font-size:88.6888px;}
- .st3{letter-spacing:3;}
- .st4{letter-spacing:-3;}
- .st5{fill:none;stroke:url(#SVGID_1_);stroke-miterlimit:10;}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="20.6039" y1="240.7292" x2="297.3961" y2="-21.7292">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <rect x="0.5" y="0.5" class="st5" width="317" height="218"/>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_AirDown_Active.png b/images/HMI_HVAC_AirDown_Active.png
deleted file mode 100644
index 948423c..0000000
--- a/images/HMI_HVAC_AirDown_Active.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_AirDown_Active.svg b/images/HMI_HVAC_AirDown_Active.svg
deleted file mode 100644
index 85dd533..0000000
--- a/images/HMI_HVAC_AirDown_Active.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:url(#SVGID_1_);}
- .st1{fill:url(#SVGID_2_);}
- .st2{fill:url(#SVGID_3_);}
- .st3{fill:url(#SVGID_4_);}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <g>
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-30.516" y1="171.1865" x2="175.7655" y2="-26.5646" gradientTransform="matrix(1 5.464556e-03 -5.464556e-03 1 -2.5085 -2.852)">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#0DF9FF"/>
- </linearGradient>
- <path class="st0" d="M70.1,138.1c-0.1,0-0.3,0-0.4,0C31.9,137.9,1.3,107,1.5,69.2C1.7,31.5,32.4,1,70,1c0.1,0,0.3,0,0.4,0
- c37.8,0.2,68.4,31.1,68.2,68.9l0,0C138.4,107.6,107.7,138.1,70.1,138.1z M70,3.4C33.7,3.4,4.1,32.8,3.9,69.2
- c-0.2,36.5,29.3,66.3,65.8,66.5c0.1,0,0.2,0,0.4,0c36.3,0,65.9-29.4,66.1-65.8c0.2-36.5-29.3-66.3-65.8-66.5
- C70.3,3.4,70.2,3.4,70,3.4z"/>
- </g>
- <g>
- <g>
- <g>
- <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-101.4773" y1="281.1379" x2="140.6279" y2="12.7169">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st1" d="M96.9,64.7c-3.4-1.7-7.5-0.3-9.2,3.1l-10,19.9l-20.2-5.2c-2-0.5-4,0.2-5.2,1.9l-15.4,20.9
- c-1.6,2.2-1.2,5.3,1.1,6.9c0.9,0.7,1.9,1,2.9,1c1.5,0,3-0.7,4-2L58.3,93l21.3,5.5c0.1,0.1,0.2,0.1,0.4,0.2
- c1,0.5,2,0.7,3.1,0.7c2.5,0,5-1.4,6.2-3.8L100,74C101.7,70.6,100.4,66.4,96.9,64.7z"/>
- <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-105.1744" y1="277.8033" x2="136.9309" y2="9.3823">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <circle class="st2" cx="97.3" cy="53.4" r="8.3"/>
- </g>
- </g>
- </g>
- <g>
- <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-131.1376" y1="254.3855" x2="110.9676" y2="-14.0356">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st3" d="M52.2,72.4c-0.4,0-0.7-0.1-0.9-0.4L37.9,57.8c-0.4-0.4-0.7-1.3-0.1-1.9l0.3-0.3h8.9V34.9
- c0-0.8,0.6-1.4,1.4-1.4h8c0.8,0,1.4,0.6,1.4,1.4v21.6h-0.5v1h-1.5v-22h-6.9v22h-8.5l11.8,12.5l11.9-12.6v-1.9h2l0.3,0.3
- c0.4,0.4,0.7,1.4,0.1,2L53.2,72C52.9,72.2,52.6,72.4,52.2,72.4z M65.1,56.4C65.1,56.4,65.1,56.4,65.1,56.4L65.1,56.4z
- M39.4,56.4L39.4,56.4C39.4,56.4,39.4,56.4,39.4,56.4z"/>
- </g>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_AirDown_Inactive.png b/images/HMI_HVAC_AirDown_Inactive.png
deleted file mode 100644
index 17b051e..0000000
--- a/images/HMI_HVAC_AirDown_Inactive.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_AirDown_Inactive.svg b/images/HMI_HVAC_AirDown_Inactive.svg
deleted file mode 100644
index a013f4b..0000000
--- a/images/HMI_HVAC_AirDown_Inactive.svg
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:i="&amp;ns_ai;"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="HMI_HVAC_AirDown_Inactive.svg"><metadata
- id="metadata27"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs25" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1464"
- id="namedview23"
- showgrid="false"
- inkscape:zoom="1.6857143"
- inkscape:cx="-188.94068"
- inkscape:cy="70"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" /><style
- type="text/css"
- id="style3">
- .st0{fill:#848286;}
- .st1{fill:none;stroke:#848286;stroke-width:2;stroke-miterlimit:10;}
-</style><switch
- id="switch5"><g
- i:extraneous="self"
- id="g7"><g
- id="g9"><path
- class="st0"
- d="M70,138c-0.1,0-0.3,0-0.4,0c-37.8-0.2-68.3-31.1-68.1-68.9C1.7,31.5,32.4,1,70,1c0.1,0,0.3,0,0.4,0 c37.8,0.2,68.3,31.1,68.1,68.9l0,0C138.3,107.5,107.6,138,70,138z M70,3.4C33.7,3.4,4.1,32.8,3.9,69.1 c-0.2,36.4,29.3,66.3,65.7,66.5c0.1,0,0.2,0,0.4,0c36.3,0,65.9-29.4,66.1-65.7c0.2-36.4-29.3-66.3-65.7-66.5 C70.2,3.4,70.1,3.4,70,3.4z"
- id="path11" /></g><g
- id="g13"><g
- id="g15"><path
- class="st0"
- d="M96.9,64.7c-3.4-1.7-7.5-0.3-9.2,3.1l-10,19.9l-20.2-5.2c-2-0.5-4,0.2-5.2,1.9l-15.4,20.9 c-1.6,2.2-1.2,5.3,1.1,6.9c0.9,0.7,1.9,1,2.9,1c1.5,0,3-0.7,4-2l13.4-18.2l21.3,5.5c0.1,0.1,0.2,0.1,0.4,0.2 c1,0.5,2,0.7,3.1,0.7c2.5,0,5-1.4,6.2-3.8L100,73.9C101.7,70.5,100.3,66.4,96.9,64.7z"
- id="path17" /><circle
- class="st0"
- cx="97.2"
- cy="53.3"
- r="8.3"
- id="circle19" /></g></g><path
- class="st1"
- d="M57.3,56.5h-0.5V34.9c0-0.2-0.2-0.4-0.4-0.4h-8c-0.2,0-0.4,0.2-0.4,0.4v21.6h-9.4c-0.1,0.1,0,0.4,0.1,0.6 L52,71.3c0.1,0.1,0.3,0.1,0.4,0l13.4-14.2c0.1-0.1,0-0.4-0.1-0.6h-1.6"
- id="path21" /></g></switch></svg> \ No newline at end of file
diff --git a/images/HMI_HVAC_AirRight_Active.png b/images/HMI_HVAC_AirRight_Active.png
deleted file mode 100644
index f7506f9..0000000
--- a/images/HMI_HVAC_AirRight_Active.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_AirRight_Active.svg b/images/HMI_HVAC_AirRight_Active.svg
deleted file mode 100644
index cfb9452..0000000
--- a/images/HMI_HVAC_AirRight_Active.svg
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:url(#SVGID_1_);}
- .st1{fill:url(#SVGID_2_);}
- .st2{fill:url(#SVGID_3_);}
- .st3{fill:url(#SVGID_4_);}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <g>
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-12.9122" y1="161.8499" x2="136.9379" y2="-4.2002">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st0" d="M70,138.5c-0.1,0-0.3,0-0.4,0c-18.3-0.1-35.5-7.3-48.3-20.3C8.4,105.2,1.4,87.9,1.5,69.6
- c0.1-18.3,7.3-35.5,20.3-48.3C34.7,8.5,51.8,1.5,70,1.5c0.1,0,0.3,0,0.4,0c18.3,0.1,35.5,7.3,48.3,20.3
- c12.9,13,19.9,30.2,19.8,48.5l0,0C138.3,108,107.6,138.5,70,138.5z M70,3.9c-17.5,0-34,6.8-46.5,19.1C11,35.4,4,52,3.9,69.6
- c-0.1,17.7,6.7,34.3,19.1,46.8s29,19.5,46.6,19.6c0.1,0,0.2,0,0.4,0c36.3,0,65.9-29.4,66.1-65.7c0.1-17.7-6.7-34.3-19.1-46.8
- C104.6,11,88,4,70.4,3.9C70.2,3.9,70.1,3.9,70,3.9z"/>
- </g>
- <g>
- <g>
- <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-2.2981" y1="171.5389" x2="147.6513" y2="5.3788">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st1" d="M96.9,65.2c-3.4-1.7-7.5-0.3-9.2,3.1l-10,19.9L57.5,83c-2-0.5-4,0.2-5.2,1.9l-15.4,20.9
- c-1.6,2.2-1.2,5.3,1.1,6.9c0.9,0.7,1.9,1,2.9,1c1.5,0,3-0.7,4-2l13.4-18.2l21.3,5.5c0.1,0.1,0.2,0.1,0.4,0.2
- c1,0.5,2,0.7,3.1,0.7c2.5,0,5-1.4,6.2-3.8L100,74.4C101.7,71,100.3,66.9,96.9,65.2z"/>
- </g>
- </g>
- <g>
- <g>
- <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-6.0031" y1="168.1953" x2="143.9462" y2="2.0352">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <circle class="st2" cx="97.2" cy="53.8" r="8.3"/>
- </g>
- </g>
- <g>
- <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-32.1525" y1="144.5971" x2="117.7968" y2="-21.563">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st3" d="M55.9,68.3c-0.4,0-0.7-0.1-1-0.4l-0.4-0.4v-8.7H34.1c-0.9,0-1.6-0.7-1.6-1.6v-8c0-0.9,0.7-1.6,1.6-1.6h21.6
- v0.7h1.2v1.7h-22v6.5h22v8.3l12-11.3L56.3,41.4h-1.8v-2.1l0.4-0.4c0.6-0.5,1.6-0.7,2.2-0.1l14.2,13.4c0.3,0.3,0.5,0.7,0.5,1.1
- s-0.2,0.8-0.5,1.1L57.1,67.8C56.8,68.1,56.3,68.3,55.9,68.3z M55.5,66.1C55.5,66.1,55.5,66.1,55.5,66.1L55.5,66.1z M55.5,40.6
- C55.5,40.6,55.5,40.6,55.5,40.6L55.5,40.6z"/>
- </g>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_AirRight_Inactive.png b/images/HMI_HVAC_AirRight_Inactive.png
deleted file mode 100644
index 3c8b4f7..0000000
--- a/images/HMI_HVAC_AirRight_Inactive.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_AirRight_Inactive.svg b/images/HMI_HVAC_AirRight_Inactive.svg
deleted file mode 100644
index 991a773..0000000
--- a/images/HMI_HVAC_AirRight_Inactive.svg
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:i="&amp;ns_ai;"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="HMI_HVAC_AirRight_Inactive.svg"><metadata
- id="metadata35"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs33" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1464"
- id="namedview31"
- showgrid="false"
- inkscape:zoom="1.6857143"
- inkscape:cx="-212.9661"
- inkscape:cy="70"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" /><style
- type="text/css"
- id="style3">
- .st0{fill:#848286;}
-</style><switch
- id="switch5"><g
- i:extraneous="self"
- id="g7"><g
- id="g9"><g
- id="g11"><path
- class="st0"
- d="M70,138.5c-0.1,0-0.3,0-0.4,0c-18.3-0.1-35.5-7.3-48.3-20.3C8.4,105.2,1.4,87.9,1.5,69.6 c0.1-18.3,7.3-35.5,20.3-48.3C34.7,8.5,51.8,1.5,70,1.5c0.1,0,0.3,0,0.4,0c18.3,0.1,35.5,7.3,48.3,20.3 c12.9,13,19.9,30.2,19.8,48.5l0,0C138.3,108,107.6,138.5,70,138.5z M70,3.9c-17.5,0-34,6.8-46.5,19.1C11,35.4,4,52,3.9,69.6 c-0.1,17.7,6.7,34.3,19.1,46.8s29,19.5,46.6,19.6c0.1,0,0.2,0,0.4,0c36.3,0,65.9-29.4,66.1-65.7c0.1-17.7-6.7-34.3-19.1-46.8 C104.6,11,88,4,70.4,3.9C70.2,3.9,70.1,3.9,70,3.9z"
- id="path13" /></g><g
- id="g15"><g
- id="g17"><path
- class="st0"
- d="M96.9,65.2c-3.4-1.7-7.5-0.3-9.2,3.1l-10,19.9L57.5,83c-2-0.5-4,0.2-5.2,1.9l-15.4,20.9 c-1.6,2.2-1.2,5.3,1.1,6.9c0.9,0.7,1.9,1,2.9,1c1.5,0,3-0.7,4-2l13.4-18.2l21.3,5.5c0.1,0.1,0.2,0.1,0.4,0.2 c1,0.5,2,0.7,3.1,0.7c2.5,0,5-1.4,6.2-3.8L100,74.4C101.7,71,100.3,66.9,96.9,65.2z"
- id="path19" /></g></g><g
- id="g21"><g
- id="g23"><circle
- class="st0"
- cx="97.2"
- cy="53.8"
- r="8.3"
- id="circle25" /></g></g><g
- id="g27"><path
- class="st0"
- d="M55.9,68.3c-0.4,0-0.7-0.1-1-0.4l-0.4-0.4v-8.7H34.1c-0.9,0-1.6-0.7-1.6-1.6v-8c0-0.9,0.7-1.6,1.6-1.6h21.6 v0.7h1.2v1.7h-22v6.5h22v8.3l12-11.3L56.3,41.4h-1.8v-2.1l0.4-0.4c0.6-0.5,1.6-0.7,2.2-0.1l14.2,13.4c0.3,0.3,0.5,0.7,0.5,1.1 s-0.2,0.8-0.5,1.1L57.1,67.8C56.8,68.1,56.3,68.3,55.9,68.3z M55.5,66.1C55.5,66.1,55.5,66.1,55.5,66.1L55.5,66.1z M55.5,40.6 C55.5,40.6,55.5,40.6,55.5,40.6L55.5,40.6z"
- id="path29" /></g></g></g></switch></svg> \ No newline at end of file
diff --git a/images/HMI_HVAC_AirUp_Active.png b/images/HMI_HVAC_AirUp_Active.png
deleted file mode 100644
index c3d5b0d..0000000
--- a/images/HMI_HVAC_AirUp_Active.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_AirUp_Active.svg b/images/HMI_HVAC_AirUp_Active.svg
deleted file mode 100644
index f168a39..0000000
--- a/images/HMI_HVAC_AirUp_Active.svg
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:url(#SVGID_1_);}
- .st1{fill:url(#SVGID_2_);}
- .st2{fill:url(#SVGID_3_);}
- .st3{fill:url(#SVGID_4_);}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <g>
- <g>
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="13.3039" y1="158.6924" x2="149.6532" y2="-54.6065">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st0" d="M70,138.5c-0.1,0-0.3,0-0.4,0c-37.8-0.2-68.3-31.1-68.1-68.9C1.7,32,32.4,1.5,70,1.5c0.1,0,0.3,0,0.4,0
- c37.8,0.2,68.3,31.1,68.1,68.9l0,0C138.3,108,107.6,138.5,70,138.5z M70,3.9C33.7,3.9,4.1,33.3,3.9,69.6
- c-0.2,36.4,29.3,66.3,65.7,66.5c0.1,0,0.2,0,0.4,0c36.3,0,65.9-29.4,66.1-65.7c0.2-36.4-29.3-66.3-65.7-66.5
- C70.2,3.9,70.1,3.9,70,3.9z"/>
- </g>
- </g>
- <g>
- <g>
- <g>
- <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="22.352" y1="164.5598" x2="158.7924" y2="-48.8816">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st1" d="M96.9,65.2c-3.4-1.7-7.5-0.3-9.2,3.1l-10,19.9L57.5,83c-2-0.5-4,0.2-5.2,1.9l-15.4,20.9
- c-1.6,2.2-1.2,5.3,1.1,6.9c0.9,0.7,1.9,1,2.9,1c1.5,0,3-0.7,4-2l13.4-18.2l21.3,5.5c0.1,0.1,0.2,0.1,0.4,0.2
- c1,0.5,2,0.7,3.1,0.7c2.5,0,5-1.4,6.2-3.8L100,74.4C101.7,71,100.3,66.9,96.9,65.2z"/>
- </g>
- </g>
- <g>
- <g>
- <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="25.2431" y1="166.4079" x2="161.6835" y2="-47.0335">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <circle class="st2" cx="97.2" cy="53.8" r="8.3"/>
- </g>
- </g>
- </g>
- <g>
- <g>
- <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7.1392" y1="145.7078" x2="129.3011" y2="-67.7336">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st3" d="M55.9,73h-8c-0.9,0-1.6-0.7-1.6-1.6V49.8h0.7v-1.2h1.7v22h6.5v-22h8.3l-11.3-12L40.2,49.2V51h-2.1
- l-0.4-0.4c-0.5-0.6-0.7-1.6-0.1-2.2L51,34.2c0.3-0.3,0.7-0.5,1.1-0.5c0,0,0,0,0,0c0.4,0,0.8,0.2,1.1,0.5l13.4,14.2
- c0.5,0.6,0.7,1.6,0.1,2.2L66.3,51h-8.7v20.4C57.5,72.3,56.8,73,55.9,73z M64.8,50.1C64.8,50.1,64.8,50.1,64.8,50.1L64.8,50.1z
- M39.4,50L39.4,50C39.4,50.1,39.4,50.1,39.4,50z"/>
- </g>
- </g>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_AirUp_Inactive.png b/images/HMI_HVAC_AirUp_Inactive.png
deleted file mode 100644
index 770496d..0000000
--- a/images/HMI_HVAC_AirUp_Inactive.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_AirUp_Inactive.svg b/images/HMI_HVAC_AirUp_Inactive.svg
deleted file mode 100644
index 39e1fa1..0000000
--- a/images/HMI_HVAC_AirUp_Inactive.svg
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:i="&amp;ns_ai;"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="HMI_HVAC_AirUp_Inactive.svg"><metadata
- id="metadata41"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs39" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1464"
- id="namedview37"
- showgrid="false"
- inkscape:zoom="1.6857143"
- inkscape:cx="-186.5678"
- inkscape:cy="70"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" /><style
- type="text/css"
- id="style3">
- .st0{fill:#848286;}
-</style><switch
- id="switch5"><g
- i:extraneous="self"
- id="g7"><g
- id="g9"><g
- id="g11"><g
- id="g13"><path
- class="st0"
- d="M70,138.5c-0.1,0-0.3,0-0.4,0c-37.8-0.2-68.3-31.1-68.1-68.9C1.7,32,32.4,1.5,70,1.5c0.1,0,0.3,0,0.4,0 c37.8,0.2,68.3,31.1,68.1,68.9l0,0C138.3,108,107.6,138.5,70,138.5z M70,3.9C33.7,3.9,4.1,33.3,3.9,69.6 c-0.2,36.4,29.3,66.3,65.7,66.5c0.1,0,0.2,0,0.4,0c36.3,0,65.9-29.4,66.1-65.7c0.2-36.4-29.3-66.3-65.7-66.5 C70.2,3.9,70.1,3.9,70,3.9z"
- id="path15" /></g></g><g
- id="g17"><g
- id="g19"><g
- id="g21"><path
- class="st0"
- d="M96.9,65.2c-3.4-1.7-7.5-0.3-9.2,3.1l-10,19.9L57.5,83c-2-0.5-4,0.2-5.2,1.9l-15.4,20.9 c-1.6,2.2-1.2,5.3,1.1,6.9c0.9,0.7,1.9,1,2.9,1c1.5,0,3-0.7,4-2l13.4-18.2l21.3,5.5c0.1,0.1,0.2,0.1,0.4,0.2 c1,0.5,2,0.7,3.1,0.7c2.5,0,5-1.4,6.2-3.8L100,74.4C101.7,71,100.3,66.9,96.9,65.2z"
- id="path23" /></g></g><g
- id="g25"><g
- id="g27"><circle
- class="st0"
- cx="97.2"
- cy="53.8"
- r="8.3"
- id="circle29" /></g></g></g><g
- id="g31"><g
- id="g33"><path
- class="st0"
- d="M55.9,73h-8c-0.9,0-1.6-0.7-1.6-1.6V49.8h0.7v-1.2h1.7v22h6.5v-22h8.3l-11.3-12L40.2,49.2V51h-2.1 l-0.4-0.4c-0.5-0.6-0.7-1.6-0.1-2.2L51,34.2c0.3-0.3,0.7-0.5,1.1-0.5c0,0,0,0,0,0c0.4,0,0.8,0.2,1.1,0.5l13.4,14.2 c0.5,0.6,0.7,1.6,0.1,2.2L66.3,51h-8.7v20.4C57.5,72.3,56.8,73,55.9,73z M64.8,50.1C64.8,50.1,64.8,50.1,64.8,50.1L64.8,50.1z M39.4,50L39.4,50C39.4,50.1,39.4,50.1,39.4,50z"
- id="path35" /></g></g></g></g></switch></svg> \ No newline at end of file
diff --git a/images/HMI_HVAC_ChairIndicator_OFF.png b/images/HMI_HVAC_ChairIndicator_OFF.png
deleted file mode 100644
index 510930f..0000000
--- a/images/HMI_HVAC_ChairIndicator_OFF.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_ChairIndicator_OFF.svg b/images/HMI_HVAC_ChairIndicator_OFF.svg
deleted file mode 100644
index 1fcd17f..0000000
--- a/images/HMI_HVAC_ChairIndicator_OFF.svg
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:i="&amp;ns_ai;"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 178 18"
- style="enable-background:new 0 0 178 18;"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="HMI_HVAC_ChairIndicator_OFF.svg"><metadata
- id="metadata21"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs19" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1464"
- id="namedview17"
- showgrid="false"
- inkscape:zoom="3.7752809"
- inkscape:cx="-7.4166667"
- inkscape:cy="9"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" /><style
- type="text/css"
- id="style3">
- .st0{opacity:0.8;fill:#1B1A1D;}
- .st1{fill:none;stroke:#848286;stroke-miterlimit:10;}
-</style><switch
- id="switch5"><g
- i:extraneous="self"
- id="g7"><rect
- x="7.2"
- y="4.2"
- class="st0"
- width="78.6"
- height="9.6"
- id="rect9" /><rect
- x="7.2"
- y="4.2"
- class="st1"
- width="78.6"
- height="9.6"
- id="rect11" /><rect
- x="92.2"
- y="4.2"
- class="st0"
- width="78.6"
- height="9.6"
- id="rect13" /><rect
- x="92.2"
- y="4.2"
- class="st1"
- width="78.6"
- height="9.6"
- id="rect15" /></g></switch></svg> \ No newline at end of file
diff --git a/images/HMI_HVAC_ChairIndicator_One.png b/images/HMI_HVAC_ChairIndicator_One.png
deleted file mode 100644
index c157391..0000000
--- a/images/HMI_HVAC_ChairIndicator_One.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_ChairIndicator_One.svg b/images/HMI_HVAC_ChairIndicator_One.svg
deleted file mode 100644
index d560c84..0000000
--- a/images/HMI_HVAC_ChairIndicator_One.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 178 18"
- style="enable-background:new 0 0 178 18;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#0DF9FF;}
- .st1{opacity:0.8;fill:#1B1A1D;}
- .st2{fill:none;stroke:#0DF9FF;stroke-miterlimit:10;}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <rect x="7.2" y="4.2" class="st0" width="78.6" height="9.6"/>
- <rect x="92.2" y="4.2" class="st1" width="78.6" height="9.6"/>
- <rect x="92.2" y="4.2" class="st2" width="78.6" height="9.6"/>
- </g>
- <rect x="7.2" y="4.2" class="st2" width="78.6" height="9.6"/>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_ChairIndicator_Two.png b/images/HMI_HVAC_ChairIndicator_Two.png
deleted file mode 100644
index 4257841..0000000
--- a/images/HMI_HVAC_ChairIndicator_Two.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_ChairIndicator_Two.svg b/images/HMI_HVAC_ChairIndicator_Two.svg
deleted file mode 100644
index b31cc90..0000000
--- a/images/HMI_HVAC_ChairIndicator_Two.svg
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 178 18"
- style="enable-background:new 0 0 178 18;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#0DF9FF;}
- .st1{fill:none;stroke:#0DF9FF;stroke-miterlimit:10;}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <rect x="7.2" y="4.2" class="st0" width="78.6" height="9.6"/>
- <rect x="92.2" y="4.2" class="st0" width="78.6" height="9.6"/>
- <rect x="92.2" y="4.2" class="st1" width="78.6" height="9.6"/>
- </g>
- <rect x="7.2" y="4.2" class="st1" width="78.6" height="9.6"/>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_Circulation_Active.png b/images/HMI_HVAC_Circulation_Active.png
deleted file mode 100644
index 680afb2..0000000
--- a/images/HMI_HVAC_Circulation_Active.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Circulation_Active.svg b/images/HMI_HVAC_Circulation_Active.svg
deleted file mode 100644
index 0d2acdd..0000000
--- a/images/HMI_HVAC_Circulation_Active.svg
+++ /dev/null
@@ -1,253 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 256 170"
- xml:space="preserve"
- sodipodi:docname="HMI_HVAC_Circulation_Active.svg"
- width="256"
- height="170"
- inkscape:version="1.1.1 (eb90963e84, 2021-10-02)"
- inkscape:export-filename="/home/felipe/Igalia/AGL/projects/flutter_homescreen/images/HMI_HVAC_Circulation_Active.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"><defs
- id="defs76">
-
-
-
-
- <linearGradient
- id="SVGID_1_"
- gradientUnits="userSpaceOnUse"
- x1="124.8906"
- y1="222.90021"
- x2="297.92679"
- y2="83.475304">
- <stop
- offset="0"
- style="stop-color:#00ADDC"
- id="stop4" />
- <stop
- offset="1"
- style="stop-color:#6BFBFF"
- id="stop6" />
- </linearGradient>
-
- <linearGradient
- id="SVGID_2_"
- gradientUnits="userSpaceOnUse"
- x1="77.633797"
- y1="164.2511"
- x2="250.67"
- y2="24.8262">
- <stop
- offset="0"
- style="stop-color:#00ADDC"
- id="stop11" />
- <stop
- offset="1"
- style="stop-color:#6BFBFF"
- id="stop13" />
- </linearGradient>
-
- <linearGradient
- id="SVGID_3_"
- gradientUnits="userSpaceOnUse"
- x1="93.334"
- y1="183.73621"
- x2="266.3703"
- y2="44.311298">
- <stop
- offset="0"
- style="stop-color:#00ADDC"
- id="stop18" />
- <stop
- offset="1"
- style="stop-color:#6BFBFF"
- id="stop20" />
- </linearGradient>
-
- <linearGradient
- id="SVGID_4_"
- gradientUnits="userSpaceOnUse"
- x1="49.8941"
- y1="129.8242"
- x2="222.9303"
- y2="-9.6007004">
- <stop
- offset="0"
- style="stop-color:#00ADDC"
- id="stop25" />
- <stop
- offset="1"
- style="stop-color:#6BFBFF"
- id="stop27" />
- </linearGradient>
-
- <linearGradient
- id="SVGID_5_"
- gradientUnits="userSpaceOnUse"
- x1="93.177101"
- y1="183.5415"
- x2="266.21329"
- y2="44.1166">
- <stop
- offset="0"
- style="stop-color:#00ADDC"
- id="stop32" />
- <stop
- offset="1"
- style="stop-color:#6BFBFF"
- id="stop34" />
- </linearGradient>
-
- <linearGradient
- id="SVGID_6_"
- gradientUnits="userSpaceOnUse"
- x1="40.617298"
- y1="118.311"
- x2="213.6535"
- y2="-21.113899">
- <stop
- offset="0"
- style="stop-color:#00ADDC"
- id="stop39" />
- <stop
- offset="1"
- style="stop-color:#6BFBFF"
- id="stop41" />
- </linearGradient>
-
- <linearGradient
- id="SVGID_7_"
- gradientUnits="userSpaceOnUse"
- x1="70.880699"
- y1="155.8701"
- x2="243.91701"
- y2="16.4452">
- <stop
- offset="0"
- style="stop-color:#00ADDC"
- id="stop46" />
- <stop
- offset="1"
- style="stop-color:#6BFBFF"
- id="stop48" />
- </linearGradient>
-
- <linearGradient
- id="SVGID_8_"
- gradientUnits="userSpaceOnUse"
- x1="85.286499"
- y1="173.7487"
- x2="258.32269"
- y2="34.323799">
- <stop
- offset="0"
- style="stop-color:#00ADDC"
- id="stop53" />
- <stop
- offset="1"
- style="stop-color:#6BFBFF"
- id="stop55" />
- </linearGradient>
-
- <linearGradient
- id="SVGID_9_"
- gradientUnits="userSpaceOnUse"
- x1="20.664301"
- y1="240.7757"
- x2="297.33569"
- y2="-21.7757">
- <stop
- offset="0"
- style="stop-color:#00ADDC"
- id="stop60" />
- <stop
- offset="1"
- style="stop-color:#6BFBFF"
- id="stop62" />
- </linearGradient>
-
- </defs><sodipodi:namedview
- id="namedview74"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- inkscape:pagecheckerboard="0"
- showgrid="false"
- inkscape:snap-bbox="true"
- inkscape:object-paths="true"
- inkscape:zoom="4"
- inkscape:cx="290.5"
- inkscape:cy="108.875"
- inkscape:window-width="3752"
- inkscape:window-height="2133"
- inkscape:window-x="88"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" />
-<style
- type="text/css"
- id="style2">
- .st0{fill:url(#SVGID_1_);}
- .st1{fill:url(#SVGID_2_);}
- .st2{fill:url(#SVGID_3_);}
- .st3{fill:url(#SVGID_4_);}
- .st4{fill:url(#SVGID_5_);}
- .st5{fill:url(#SVGID_6_);}
- .st6{fill:url(#SVGID_7_);}
- .st7{fill:url(#SVGID_8_);}
- .st8{fill:none;stroke:url(#SVGID_9_);stroke-miterlimit:10;}
-</style>
-<g
- id="g1735"
- transform="translate(-30.948846,-20.644261)"><path
- id="path9"
- style="fill:url(#SVGID_1_);stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
- class="st0"
- d="m 233.75,140.44727 c -0.0344,2.37989 -0.0248,4.81673 -0.88027,7.07753 -1.74512,5.29624 -6.523,9.48528 -12.05618,10.34537 -4.87469,0.85382 -10.12247,-0.74709 -13.59285,-4.29986 -3.00839,-3.00583 -4.67869,-7.27239 -4.53174,-11.52133 -0.0278,-1.14981 -0.0566,-2.29959 -0.0854,-3.44937 -3.32683,0 -6.65365,0 -9.98047,0 0.0144,4.22288 0.0304,8.56097 1.54806,12.56655 3.00322,8.59224 10.93748,15.25208 19.95274,16.61061 7.77786,1.29336 16.08857,-1.2847 21.73162,-6.80216 5.07383,-4.86363 7.98084,-11.87595 7.85629,-18.90219 0.03,-1.1908 0.0596,-2.38161 0.089,-3.57242 -3.33333,0 -6.66667,0 -10,0 -0.0169,0.64909 -0.0339,1.29818 -0.0508,1.94727 z" /><path
- id="path16"
- style="fill:url(#SVGID_2_);stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
- class="st1"
- d="m 80.082031,138.76953 c -2.588204,0.0711 -5.1869,0.0119 -7.779297,0.0312 0.114636,3.42888 -0.05477,6.91812 0.873178,10.25939 1.911551,7.71858 7.65775,14.36602 15.041218,17.332 7.248412,3.01518 15.89084,2.43327 22.62251,-1.62925 6.42771,-3.7575 11.13098,-10.43127 12.21209,-17.8277 0.33257,-2.03868 0.39048,-4.12542 0.40725,-6.17545 -0.11374,-1.363 -1.5795,-2.18545 -2.85747,-1.96053 -2.37647,0.005 -4.75676,-2.9e-4 -7.13471,0.002 -0.0389,3.49714 0.12924,7.16446 -1.42578,10.40234 -2.33946,5.25851 -7.80681,8.96677 -13.577011,9.09039 -5.323796,0.23437 -10.662143,-2.49626 -13.545709,-6.98681 -1.992242,-2.99014 -2.725578,-6.66178 -2.525722,-10.211 -0.01442,-1.24944 -1.028416,-2.3701 -2.310547,-2.32617 z" /><path
- id="polygon23"
- style="fill:url(#SVGID_3_);stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
- class="st2"
- d="m 181.29688,134.0957 c -22.39909,0.0386 -45.49779,0.0728 -67.89688,0.11133 v 10 c 23.06705,-0.0398 46.83373,-0.0754 69.90078,-0.11523 v -10 c -0.66797,0.001 -1.33594,0.003 -2.0039,0.004 z"
- sodipodi:nodetypes="ccccccc" /><path
- id="path30"
- style="fill:url(#SVGID_4_);stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
- class="st3"
- d="m 51.601562,90.171875 c -2.266524,9.221016 -4.536624,18.441375 -6.804687,27.662105 -0.01596,5.81506 1.958467,11.48475 4.826099,16.48526 2.340066,4.0116 5.691183,7.74933 10.189423,9.29408 2.945398,0.93032 6.068797,0.49619 9.101956,0.62644 4.094955,0.0308 9.389918,0.0605 13.484866,0.0923 v -10.03125 c -6.020316,-0.0206 -13.245933,0.0494 -19.262902,-0.0411 -2.112042,-0.5634 -3.451547,-2.49861 -4.604759,-4.21789 -2.005821,-3.22231 -3.427715,-6.8684 -3.808902,-10.65899 0.152862,-1.38063 0.658426,-2.70446 0.933712,-4.06733 2.024012,-8.19436 4.04835,-16.388644 6.072148,-24.583058 -3.214672,-0.843227 -6.428733,-1.688784 -9.642578,-2.535156 l -0.484376,1.974609 z"
- sodipodi:nodetypes="ccccccccccccccc" /><path
- id="path37"
- style="fill:url(#SVGID_5_);stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
- class="st4"
- d="m 191.12305,42.998047 c -13.77409,0.03665 -27.54818,0.07497 -41.32227,0.113281 v 10 c 12.54688,-0.03609 25.09375,-0.07157 37.64063,-0.107422 9.42248,11.222695 18.84532,22.445084 28.26757,33.667969 15.71667,5.936968 31.43503,11.869446 47.15235,17.804685 -0.77462,6.31178 -2.16849,12.54461 -4.00462,18.62967 -1.17433,3.68549 -2.42398,7.45015 -4.71023,10.61447 -0.33834,0.5487 -1.10702,0.16579 -1.64414,0.2793 H 233.799 v 9.97656 c 6.87964,0.0114 14.66412,0.14663 21.54084,0.0781 3.48162,-0.38756 6.16952,-3.0428 7.94728,-5.88329 3.37032,-5.47915 5.12504,-11.74369 6.73724,-17.9167 1.49277,-6.11249 2.74238,-12.32414 3.06299,-18.62069 0.0255,-1.3316 0.006,-2.663573 0.0123,-3.995338 -17.13713,-6.499148 -34.27196,-13.004368 -51.4082,-19.50586 -9.87896,-11.712196 -19.7575,-23.424741 -29.63672,-35.136718 -0.31055,6.51e-4 -0.6211,0.0013 -0.93164,0.002 z"
- sodipodi:nodetypes="scccccccccccccccccss" /><path
- id="path44"
- style="fill:url(#SVGID_6_);stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
- class="st5"
- d="m 155.79688,42.996094 c -15.98126,0.04735 -31.96369,0.03565 -47.94416,0.140062 -7.55558,0.265548 -14.741605,4.370381 -19.122265,10.481002 -2.616073,3.807239 -5.490114,7.429137 -8.237438,11.142249 -2.2842,3.009631 -4.515429,6.072159 -6.832649,9.048818 -7.917997,5.966325 -13.656668,8.422425 -21.57443,14.389061 2.000807,2.666713 4.000645,5.334152 6,8.001953 8.283236,-6.250604 14.384828,-8.994077 22.669921,-15.242208 5.163259,-6.846776 10.373773,-13.659608 15.491896,-20.538464 2.745965,-4.372821 7.735875,-7.50657 12.993175,-7.290267 10.73907,-0.08941 21.47898,-0.0591 32.21841,-0.100917 5.44715,-0.01163 10.89429,-0.02429 16.34144,-0.0352 v -10 l -2.0039,0.0039 z"
- sodipodi:nodetypes="scccccccccccccs" /><path
- id="path51"
- style="fill:url(#SVGID_7_);stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
- class="st6"
- d="m 185.19531,66.496094 c -19.95269,0.04733 -39.90619,0.04008 -59.85835,0.131131 -7.89477,0.26627 -15.57338,4.509031 -19.85579,11.172085 -4.08615,6.197243 -5.08522,14.284892 -2.66327,21.298913 2.55478,7.741177 9.15209,14.074507 17.09997,16.037557 4.52786,1.17026 9.23974,0.64837 13.85905,0.73755 17.84129,-0.0635 27.68258,-0.12494 45.52386,-0.18974 v -9.99218 c -20.60173,0.0256 -33.20431,0.10504 -53.80553,0.0818 -6.59204,-0.20582 -12.70559,-5.45305 -13.68666,-12.015358 -0.80924,-4.719805 0.77129,-9.809666 4.28544,-13.100485 2.68285,-2.636041 6.4248,-4.161957 10.19522,-4.042022 13.62219,-0.05998 27.24549,-0.05263 40.86812,-0.08733 6.68062,-0.01203 13.36123,-0.02314 20.04185,-0.03579 v -10 l -2.00391,0.0039 z"
- sodipodi:nodetypes="scccccccccccccccs" /><path
- id="polygon58"
- style="fill:url(#SVGID_8_);stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
- class="st7"
- d="m 150.59961,96.861328 c -0.80147,2.53254 -1.60306,5.065042 -2.4043,7.597652 6.41178,2.12012 12.82288,4.24232 19.23438,6.36329 -6.47139,2.16462 -12.94249,4.33007 -19.41407,6.49414 1.16142,3.13601 2.32028,6.27297 3.47852,9.41015 15.85141,-5.31686 31.70359,-10.63143 47.55469,-15.94922 -15.94608,-5.2822 -31.89155,-10.56625 -47.83789,-15.847652 -0.20378,0.64388 -0.40755,1.28776 -0.61133,1.93164 z" /></g>
-</svg>
diff --git a/images/HMI_HVAC_Circulation_Inactive.png b/images/HMI_HVAC_Circulation_Inactive.png
deleted file mode 100644
index 0fac46d..0000000
--- a/images/HMI_HVAC_Circulation_Inactive.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Circulation_Inactive.svg b/images/HMI_HVAC_Circulation_Inactive.svg
deleted file mode 100644
index 9c7d43f..0000000
--- a/images/HMI_HVAC_Circulation_Inactive.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:i="&amp;ns_ai;"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 318 219"
- style="enable-background:new 0 0 318 219;"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="HMI_HVAC_Circulation_Inactive.svg"><metadata
- id="metadata33"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs31" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1464"
- id="namedview29"
- showgrid="false"
- inkscape:zoom="1.0776256"
- inkscape:cx="-290.59958"
- inkscape:cy="109.5"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" /><style
- type="text/css"
- id="style3">
- .st0{fill:#848286;}
- .st1{fill:none;stroke:#848286;stroke-miterlimit:10;}
-</style><switch
- id="switch5"><g
- i:extraneous="self"
- id="g7"><g
- id="g9"><path
- class="st0"
- d="M218.2,164.1c-5.7,0-11.1-2.2-15.2-6.3c-4.1-4.1-6.3-9.5-6.3-15.2l2,0c0,5.2,2,10.1,5.7,13.8 c3.7,3.7,8.6,5.7,13.8,5.7c0,0,0,0,0,0c10.8,0,19.5-8.8,19.5-19.6l2,0C239.7,154.4,230.1,164.1,218.2,164.1 C218.2,164.1,218.2,164.1,218.2,164.1z"
- id="path11" /><path
- class="st0"
- d="M97.9,164.3c-5.7,0-11.1-2.2-15.2-6.3c-4.1-4.1-6.3-9.5-6.3-15.2l2,0c0,5.2,2,10.1,5.7,13.8 c3.7,3.7,8.6,5.7,13.8,5.7c0,0,0,0,0,0c5.2,0,10.1-2,13.8-5.7c3.7-3.7,5.7-8.6,5.7-13.8l2,0c0,5.7-2.2,11.2-6.3,15.2 C109.1,162,103.7,164.3,97.9,164.3C97.9,164.3,97.9,164.3,97.9,164.3z"
- id="path13" /><rect
- x="118.1"
- y="138.1"
- transform="matrix(1 -1.464842e-03 1.464842e-03 1 -0.2036 0.218)"
- class="st0"
- width="61.2"
- height="2"
- id="rect15" /><path
- class="st0"
- d="M63.5,140.2c-8.5,0-14.7-14.3-14.7-21.7l0-0.2l6.2-25.2l1.9,0.5l-6.2,25.1c0,3.7,1.6,8.6,3.9,12.6 c2.6,4.5,5.8,7,8.8,7c0,0,0,0,0,0l13.8,0l0,2L63.5,140.2C63.5,140.2,63.5,140.2,63.5,140.2z"
- id="path17" /><path
- class="st0"
- d="M238.7,140l0-2l15.8,0c2.7,0,5.9-5.8,8.7-15.4c2.2-7.7,3.8-16.7,3.9-20.8l-49-18.5L189.3,49l-35.5,0.1l0-2 l36.4-0.1l29.1,34.5l49.8,18.9l0,0.7c0,3.9-1.5,13.5-4,22.1c-3.2,11.2-6.8,16.9-10.6,16.9L238.7,140z"
- id="path19" /><path
- class="st0"
- d="M56.7,94.1l-1.2-1.6l21.1-15.9l14.2-18.9c0.6-1,6.2-10.6,18.3-10.6l44.7-0.1l0,2l-44.7,0.1 c-11.2,0-16.3,9.3-16.5,9.6l-0.1,0.1L77.9,78.1L56.7,94.1z"
- id="path21" /><path
- class="st0"
- d="M126.1,111.9c-5.5,0-10.7-2.1-14.5-6c-3.9-3.9-6-9.1-6.1-14.6c0-5.5,2.1-10.7,6-14.6c3.9-3.9,9.1-6,14.6-6.1 l57.1-0.1l0,2l-57.1,0.1c-5,0-9.6,1.9-13.1,5.5c-3.5,3.5-5.4,8.2-5.4,13.2c0,5,1.9,9.6,5.5,13.1c3.5,3.5,8.2,5.4,13.1,5.4 c0,0,0,0,0,0l57.1-0.1l0,2L126.1,111.9C126.2,111.9,126.1,111.9,126.1,111.9z"
- id="path23" /><polygon
- class="st0"
- points="153.9,121.7 153.2,119.8 180.1,110.8 153.2,101.9 153.8,100 186.4,110.8 "
- id="polygon25" /><rect
- x="0.5"
- y="0.5"
- class="st1"
- width="317"
- height="218"
- id="rect27" /></g></g></switch></svg> \ No newline at end of file
diff --git a/images/HMI_HVAC_Fan_Icon.png b/images/HMI_HVAC_Fan_Icon.png
deleted file mode 100644
index e55e008..0000000
--- a/images/HMI_HVAC_Fan_Icon.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Fan_Icon.svg b/images/HMI_HVAC_Fan_Icon.svg
deleted file mode 100644
index ee583a0..0000000
--- a/images/HMI_HVAC_Fan_Icon.svg
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 114 114"
- style="enable-background:new 0 0 114 114;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-miterlimit:10;}
- .st1{fill:url(#SVGID_1_);}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <g>
- <ellipse transform="matrix(0.8685 -0.4958 0.4958 0.8685 -21.9603 36.0747)" class="st0" cx="57" cy="59.4" rx="3.7" ry="3.7"/>
- <path class="st0" d="M58.1,50.7c-1.8-0.2-3.8,0.1-5.5,1.1c-0.6,0.3-1.1,0.7-1.6,1.2c-0.2-0.5-0.3-1-0.5-1.6
- c-1.4-5.9,4.5-8.1,5.1-14.1c0.9-8.6-10.6-8.8-15.3-3.7c-6.2,6.7-3.6,14-0.4,18.3c2.5,3.2,5.5,5.2,8.3,6.3
- c-0.2,1.8,0.1,3.8,1.1,5.5c0.3,0.6,0.7,1.1,1.2,1.6c-0.5,0.2-1,0.3-1.6,0.5c-5.9,1.4-8.1-4.5-14.1-5.1
- c-8.6-0.9-8.8,10.6-3.7,15.3c6.7,6.2,14,3.6,18.3,0.3c3.2-2.5,5.2-5.5,6.3-8.3c1.8,0.2,3.8-0.1,5.5-1.1c0.6-0.3,1.1-0.7,1.6-1.2
- c0.2,0.5,0.3,1,0.5,1.6c1.4,5.9-4.5,8.1-5.1,14.1c-0.9,8.6,10.6,8.8,15.3,3.7c6.2-6.7,3.6-14,0.3-18.3c-2.5-3.2-5.5-5.2-8.3-6.3
- c0.2-1.8-0.1-3.8-1.1-5.5c-0.3-0.6-0.7-1.1-1.2-1.6c0.5-0.2,1-0.3,1.6-0.5c5.9-1.4,8.1,4.5,14.1,5.1c8.6,0.9,8.8-10.6,3.7-15.3
- c-6.7-6.2-14-3.6-18.3-0.4c-1.2,0.9-2.2,1.8-3,2.8"/>
- </g>
- <g>
-
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-26.1323" y1="141.6157" x2="145.4036" y2="-22.8267" gradientTransform="matrix(1 5.464556e-03 -5.464556e-03 1 -2.5808 -2.4627)">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st1" d="M57,114c-0.1,0-0.2,0-0.3,0C25.3,113.8-0.2,88.1,0,56.7C0.2,25.4,25.7,0,57,0c0.1,0,0.2,0,0.3,0
- c31.4,0.2,56.9,25.9,56.7,57.3l0,0C113.8,88.6,88.3,114,57,114z M57,2C26.8,2,2.2,26.5,2,56.7C1.8,87,26.4,111.8,56.7,112
- c0.1,0,0.2,0,0.3,0c30.2,0,54.8-24.5,55-54.7C112.2,27,87.6,2.2,57.3,2C57.2,2,57.1,2,57,2z"/>
- </g>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_Front_Active.png b/images/HMI_HVAC_Front_Active.png
deleted file mode 100644
index d1e2576..0000000
--- a/images/HMI_HVAC_Front_Active.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Front_Active.svg b/images/HMI_HVAC_Front_Active.svg
deleted file mode 100644
index 146e509..0000000
--- a/images/HMI_HVAC_Front_Active.svg
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#0DF9FF;}
- .st1{font-family:'Roboto-Regular';}
- .st2{font-size:19.2px;}
- .st3{letter-spacing:3;}
- .st4{fill:url(#SVGID_1_);}
- .st5{fill:url(#SVGID_2_);}
- .st6{fill:url(#SVGID_3_);}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <g>
- <text transform="matrix(1 0 0 1 30.8062 42.6951)" class="st0 st1 st2 st3">FRONT</text>
- </g>
- <g>
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="11.6389" y1="158.3479" x2="114.2385" y2="3.0985">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st4" d="M70,138.5c-0.1,0-0.3,0-0.4,0c-37.8-0.2-68.3-31.1-68.1-68.9C1.7,32,32.4,1.5,70,1.5c0.1,0,0.3,0,0.4,0
- c18.3,0.1,35.5,7.3,48.3,20.3s19.9,30.2,19.8,48.5c-0.1,18.3-7.3,35.5-20.3,48.3C105.3,131.5,88.2,138.5,70,138.5z M70,3.9
- c-17.5,0-34,6.8-46.5,19.1C11,35.4,4,52,3.9,69.6c-0.2,36.4,29.3,66.3,65.7,66.5c0.1,0,0.2,0,0.4,0c17.5,0,34-6.8,46.5-19.1
- c12.6-12.4,19.5-29,19.6-46.6l0,0c0.1-17.7-6.7-34.3-19.1-46.8S88,4,70.4,3.9C70.2,3.9,70.1,3.9,70,3.9z"/>
- </g>
- <g>
- <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="13.3004" y1="159.5306" x2="115.9684" y2="4.1777">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st5" d="M50.3,107.7L17.4,73.8l0.8-0.8C32,59,50.4,51.4,70,51.3c0,0,0.1,0,0.1,0c19.5,0,37.9,7.6,51.7,21.5l0.8,0.8
- L97,100.2l-1.7-1.7l24-24.8c-13.2-12.9-30.6-20-49.1-20c0,0-0.1,0-0.1,0c-18.5,0-36,7.2-49.2,20.1l29.6,30.5
- c5.4-4.9,12.4-7.5,19.7-7.5c0,0,0,0,0,0c7.7,0,15,2.9,20.5,8.3l-1.7,1.7c-5.1-4.9-11.8-7.6-18.9-7.6c0,0,0,0,0,0
- c-7.1,0-13.8,2.7-18.9,7.7L50.3,107.7z"/>
- </g>
- <g>
- <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="16.1835" y1="161.4359" x2="118.8515" y2="6.083">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st6" d="M70.7,89.5c-2,0-3.4-1.4-3.5-1.6l-6.8-5.5c-0.9-1.3-2.2-1.9-3.4-1.8c-1.4,0.1-2.7,1.1-3.6,2.7
- c-1.5,2.6-3.5,4.2-5.8,4.3c-2.1,0.1-4.1-1.1-5.6-3.3l-1.2-1.7c-0.9-1.3-2.1-2-3.4-2c-1.4,0.1-2.7,1-3.6,2.6l-0.6,1l-2-3.9
- l0.2-0.3c1.5-2.6,3.6-4.1,5.9-4.2c2.1-0.1,4.1,1.1,5.7,3.3l1.2,1.7c0.9,1.3,2.1,2.1,3.3,2c1.3-0.1,2.6-1,3.5-2.6
- c1.5-2.6,3.6-4.2,5.9-4.4c2.1-0.2,4.1,0.9,5.6,2.9l6.5,5.2c0.2,0.2,0.8,0.7,1.6,0.7c0,0,0,0,0,0c0.6,0,1.3-0.4,1.9-1l4.2-3.7
- c1.5-2.6,3.6-4,5.8-4.1c2.2-0.1,4.1,1.1,5.7,3.3l1.2,1.7c0.9,1.3,2.1,2,3.3,2c1.3-0.1,2.6-1,3.5-2.6c1.5-2.6,3.6-4.2,5.9-4.4
- c2.1-0.1,4.1,0.9,5.6,3l0.2,0.3l-1.7,4.2l-0.6-0.9c-0.9-1.3-2.1-1.9-3.4-1.8c-1.4,0.1-2.7,1.1-3.6,2.7c-1.5,2.6-3.5,4.2-5.8,4.3
- c-2.1,0.1-4.1-1.1-5.7-3.3l-1.2-1.7c-0.9-1.3-2.1-2-3.4-2c-1.4,0.1-2.7,1-3.6,2.6L79,83.4l-5.1,4.7l0,0
- C72.9,89,71.8,89.5,70.7,89.5z M61.3,81.7L68,87c0.1,0.1,1.2,1.3,2.7,1.3c1,0,2-0.5,3-1.6l0.6-0.6l0.1,0.1l3.9-3.6
- c1.1-1.9,2.8-3.1,4.5-3.1c1.6-0.1,3.2,0.8,4.4,2.5l1.2,1.7c1.3,1.9,2.9,2.8,4.6,2.8c1.8-0.1,3.5-1.4,4.8-3.7
- c1.1-2,2.8-3.2,4.6-3.3c1.4-0.1,2.7,0.4,3.7,1.5l0.7-1.7c-1.3-1.6-2.8-2.4-4.4-2.3c-1.9,0.1-3.7,1.5-4.9,3.8
- c-1.1,2-2.7,3.2-4.5,3.2c-1.7,0.1-3.2-0.8-4.4-2.5l-1.2-1.7C86,77.9,84.4,77,82.7,77c-1.9,0.1-3.6,1.4-4.9,3.6l-0.1,0.2
- l-4.3,3.7c-0.8,0.9-1.7,1.3-2.7,1.3c-1.3,0.1-2.2-0.8-2.5-1l-6.7-5.3c-1.3-1.7-2.9-2.6-4.6-2.5c-1.9,0.1-3.7,1.5-4.9,3.8
- c-1.1,2-2.7,3.2-4.5,3.2c-1.7,0-3.2-0.8-4.4-2.5L42,79.8c-1.3-1.9-2.9-2.8-4.6-2.8c-1.8,0.1-3.4,1.2-4.7,3.3l0.7,1.4
- c1.1-1.4,2.5-2.3,4-2.3c1.7,0,3.2,0.8,4.4,2.5l1.2,1.7c1.3,1.9,2.9,2.8,4.6,2.8c1.8-0.1,3.5-1.4,4.8-3.7c1.1-2,2.8-3.2,4.6-3.3
- C58.6,79.3,60.2,80.1,61.3,81.7z"/>
- </g>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_Front_Inactive.png b/images/HMI_HVAC_Front_Inactive.png
deleted file mode 100644
index 69453ff..0000000
--- a/images/HMI_HVAC_Front_Inactive.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Front_Inactive.svg b/images/HMI_HVAC_Front_Inactive.svg
deleted file mode 100644
index c5d9166..0000000
--- a/images/HMI_HVAC_Front_Inactive.svg
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:i="&amp;ns_ai;"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="HMI_HVAC_Front_Inactive.svg"><metadata
- id="metadata31"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs29" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1464"
- id="namedview27"
- showgrid="false"
- inkscape:zoom="1.6857143"
- inkscape:cx="-161.94915"
- inkscape:cy="70"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" /><style
- type="text/css"
- id="style3">
- .st0{fill:#848286;}
- .st1{font-family:'Roboto-Regular';}
- .st2{font-size:19.2px;}
- .st3{letter-spacing:3;}
-</style><switch
- id="switch5"><g
- i:extraneous="self"
- id="g7"><g
- id="g9"><g
- id="g11"><text
- transform="matrix(1 0 0 1 30.8062 42.6951)"
- class="st0 st1 st2 st3"
- id="text13">FRONT</text>
-</g><g
- id="g15"><path
- class="st0"
- d="M70,138.5c-0.1,0-0.3,0-0.4,0c-37.8-0.2-68.3-31.1-68.1-68.9C1.7,32,32.4,1.5,70,1.5c0.1,0,0.3,0,0.4,0 c18.3,0.1,35.5,7.3,48.3,20.3s19.9,30.2,19.8,48.5c-0.1,18.3-7.3,35.5-20.3,48.3C105.3,131.5,88.2,138.5,70,138.5z M70,3.9 c-17.5,0-34,6.8-46.5,19.1C11,35.4,4,52,3.9,69.6c-0.2,36.4,29.3,66.3,65.7,66.5c0.1,0,0.2,0,0.4,0c17.5,0,34-6.8,46.5-19.1 c12.6-12.4,19.5-29,19.6-46.6l0,0c0.1-17.7-6.7-34.3-19.1-46.8S88,4,70.4,3.9C70.2,3.9,70.1,3.9,70,3.9z"
- id="path17" /></g><g
- id="g19"><path
- class="st0"
- d="M50.3,107.7L17.4,73.8l0.8-0.8C32,59,50.4,51.4,70,51.3c0,0,0.1,0,0.1,0c19.5,0,37.9,7.6,51.7,21.5l0.8,0.8 L97,100.2l-1.7-1.7l24-24.8c-13.2-12.9-30.6-20-49.1-20c0,0-0.1,0-0.1,0c-18.5,0-36,7.2-49.2,20.1l29.6,30.5 c5.4-4.9,12.4-7.5,19.7-7.5c0,0,0,0,0,0c7.7,0,15,2.9,20.5,8.3l-1.7,1.7c-5.1-4.9-11.8-7.6-18.9-7.6c0,0,0,0,0,0 c-7.1,0-13.8,2.7-18.9,7.7L50.3,107.7z"
- id="path21" /></g><g
- id="g23"><path
- class="st0"
- d="M70.7,89.5c-2,0-3.4-1.4-3.5-1.6l-6.8-5.5c-0.9-1.3-2.2-1.9-3.4-1.8c-1.4,0.1-2.7,1.1-3.6,2.7 c-1.5,2.6-3.5,4.2-5.8,4.3c-2.1,0.1-4.1-1.1-5.6-3.3l-1.2-1.7c-0.9-1.3-2.1-2-3.4-2c-1.4,0.1-2.7,1-3.6,2.6l-0.6,1l-2-3.9 l0.2-0.3c1.5-2.6,3.6-4.1,5.9-4.2c2.1-0.1,4.1,1.1,5.7,3.3l1.2,1.7c0.9,1.3,2.1,2.1,3.3,2c1.3-0.1,2.6-1,3.5-2.6 c1.5-2.6,3.6-4.2,5.9-4.4c2.1-0.2,4.1,0.9,5.6,2.9l6.5,5.2c0.2,0.2,0.8,0.7,1.6,0.7c0,0,0,0,0,0c0.6,0,1.3-0.4,1.9-1l4.2-3.7 c1.5-2.6,3.6-4,5.8-4.1c2.2-0.1,4.1,1.1,5.7,3.3l1.2,1.7c0.9,1.3,2.1,2,3.3,2c1.3-0.1,2.6-1,3.5-2.6c1.5-2.6,3.6-4.2,5.9-4.4 c2.1-0.1,4.1,0.9,5.6,3l0.2,0.3l-1.7,4.2l-0.6-0.9c-0.9-1.3-2.1-1.9-3.4-1.8c-1.4,0.1-2.7,1.1-3.6,2.7c-1.5,2.6-3.5,4.2-5.8,4.3 c-2.1,0.1-4.1-1.1-5.7-3.3l-1.2-1.7c-0.9-1.3-2.1-2-3.4-2c-1.4,0.1-2.7,1-3.6,2.6L79,83.4l-5.1,4.7l0,0 C72.9,89,71.8,89.5,70.7,89.5z M61.3,81.7L68,87c0.1,0.1,1.2,1.3,2.7,1.3c1,0,2-0.5,3-1.6l0.6-0.6l0.1,0.1l3.9-3.6 c1.1-1.9,2.8-3.1,4.5-3.1c1.6-0.1,3.2,0.8,4.4,2.5l1.2,1.7c1.3,1.9,2.9,2.8,4.6,2.8c1.8-0.1,3.5-1.4,4.8-3.7 c1.1-2,2.8-3.2,4.6-3.3c1.4-0.1,2.7,0.4,3.7,1.5l0.7-1.7c-1.3-1.6-2.8-2.4-4.4-2.3c-1.9,0.1-3.7,1.5-4.9,3.8 c-1.1,2-2.7,3.2-4.5,3.2c-1.7,0.1-3.2-0.8-4.4-2.5l-1.2-1.7C86,77.9,84.4,77,82.7,77c-1.9,0.1-3.6,1.4-4.9,3.6l-0.1,0.2 l-4.3,3.7c-0.8,0.9-1.7,1.3-2.7,1.3c-1.3,0.1-2.2-0.8-2.5-1l-6.7-5.3c-1.3-1.7-2.9-2.6-4.6-2.5c-1.9,0.1-3.7,1.5-4.9,3.8 c-1.1,2-2.7,3.2-4.5,3.2c-1.7,0-3.2-0.8-4.4-2.5L42,79.8c-1.3-1.9-2.9-2.8-4.6-2.8c-1.8,0.1-3.4,1.2-4.7,3.3l0.7,1.4 c1.1-1.4,2.5-2.3,4-2.3c1.7,0,3.2,0.8,4.4,2.5l1.2,1.7c1.3,1.9,2.9,2.8,4.6,2.8c1.8-0.1,3.5-1.4,4.8-3.7c1.1-2,2.8-3.2,4.6-3.3 C58.6,79.3,60.2,80.1,61.3,81.7z"
- id="path25" /></g></g></g></switch></svg> \ No newline at end of file
diff --git a/images/HMI_HVAC_Inactive.png b/images/HMI_HVAC_Inactive.png
deleted file mode 100644
index a9a63f2..0000000
--- a/images/HMI_HVAC_Inactive.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Inactive.svg b/images/HMI_HVAC_Inactive.svg
deleted file mode 100644
index 2956a26..0000000
--- a/images/HMI_HVAC_Inactive.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 318 219"
- style="enable-background:new 0 0 318 219;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#848286;}
- .st1{font-family:'Roboto-Light';}
- .st2{font-size:88.6888px;}
- .st3{letter-spacing:3;}
- .st4{letter-spacing:-3;}
- .st5{fill:none;stroke:#848286;stroke-miterlimit:10;}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <rect x="0.5" y="0.5" class="st5" width="317" height="218"/>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_Left_Chair_OFF.png b/images/HMI_HVAC_Left_Chair_OFF.png
deleted file mode 100644
index 7a08d15..0000000
--- a/images/HMI_HVAC_Left_Chair_OFF.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Left_Chair_OFF.svg b/images/HMI_HVAC_Left_Chair_OFF.svg
deleted file mode 100644
index 1412266..0000000
--- a/images/HMI_HVAC_Left_Chair_OFF.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:i="&amp;ns_ai;"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 172 172"
- style="enable-background:new 0 0 172 172;"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="HMI_HVAC_Left_Chair_OFF.svg"><metadata
- id="metadata49"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs47" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1464"
- id="namedview45"
- showgrid="false"
- inkscape:zoom="1.372093"
- inkscape:cx="-267.83898"
- inkscape:cy="86"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" /><style
- type="text/css"
- id="style3">
- .st0{fill:none;stroke:#69676C;stroke-width:4;stroke-miterlimit:10;}
- .st1{opacity:0.43;fill:#69676C;}
- .st2{fill:#69676C;}
-</style><switch
- id="switch5"><g
- i:extraneous="self"
- id="g7"><g
- id="g9"><path
- class="st0"
- d="M32.3,135.3h92.4l39.2-114.9c0,0,2.5-10.9-9.1-11.4c-11.6-0.5-19,16.2-19,16.2S123.6,66,111.8,95.6 c0,0-76.7-4.6-89.8-4.6S5.4,96.1,9.5,105.1S32.3,135.3,32.3,135.3z"
- id="path11" /><path
- class="st1"
- d="M32.3,134.7h92.4l39.2-114.9c0,0,2.5-10.9-9.1-11.4s-19,16.2-19,16.2S123.6,65.3,111.8,95 c0,0-76.7-4.6-89.8-4.6S5.4,95.4,9.5,104.5S32.3,134.7,32.3,134.7z"
- id="path13" /><g
- id="g15"><g
- id="g17"><path
- class="st0"
- d="M42.4,163.6c0,0,35.8-24,12.9-58.3C37.8,79,29.8,63.5,30.9,48.6"
- id="path19" /><g
- id="g21"><polygon
- class="st2"
- points="40.4,53.7 34.4,34.7 21,49.4 "
- id="polygon23" /></g></g></g><g
- id="g25"><g
- id="g27"><path
- class="st0"
- d="M66.1,163.6c0,0,35.8-24,12.9-58.3C61.4,79,53.5,63.5,54.6,48.6"
- id="path29" /><g
- id="g31"><polygon
- class="st2"
- points="64.1,53.7 58.1,34.7 44.6,49.4 "
- id="polygon33" /></g></g></g><g
- id="g35"><g
- id="g37"><path
- class="st0"
- d="M90.4,163.6c0,0,35.8-24,12.9-58.3C85.7,79,77.8,63.5,78.8,48.6"
- id="path39" /><g
- id="g41"><polygon
- class="st2"
- points="88.3,53.7 82.4,34.7 68.9,49.4 "
- id="polygon43" /></g></g></g></g></g></switch></svg> \ No newline at end of file
diff --git a/images/HMI_HVAC_Left_Chair_ON.png b/images/HMI_HVAC_Left_Chair_ON.png
deleted file mode 100644
index c09921d..0000000
--- a/images/HMI_HVAC_Left_Chair_ON.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Left_Chair_ON.svg b/images/HMI_HVAC_Left_Chair_ON.svg
deleted file mode 100644
index b27b126..0000000
--- a/images/HMI_HVAC_Left_Chair_ON.svg
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 172 172"
- style="enable-background:new 0 0 172 172;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:none;stroke:#0DF9FF;stroke-width:4;stroke-miterlimit:10;}
- .st1{opacity:0.43;fill:url(#SVGID_1_);}
- .st2{fill:#0DF9FF;}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <path class="st0" d="M32.3,135h92.4l39.2-114.9c0,0,2.5-10.9-9.1-11.4s-19,16.2-19,16.2s-12.3,40.7-24.1,70.4
- c0,0-76.7-4.6-89.8-4.6S5.4,95.8,9.5,104.8S32.3,135,32.3,135z"/>
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="19.4613" y1="198.7467" x2="133.8248" y2="-3.84">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st1" d="M32.3,135h92.4l39.2-114.9c0,0,2.5-10.9-9.1-11.4s-19,16.2-19,16.2s-12.3,40.7-24.1,70.4
- c0,0-76.7-4.6-89.8-4.6S5.4,95.8,9.5,104.8S32.3,135,32.3,135z"/>
- <g>
- <g>
- <path class="st0" d="M42.4,163.3c0,0,35.8-24,12.9-58.3C37.8,78.7,29.8,63.2,30.9,48.3"/>
- <g>
- <polygon class="st2" points="40.4,53.4 34.4,34.4 21,49.1 "/>
- </g>
- </g>
- </g>
- <g>
- <g>
- <path class="st0" d="M66.1,163.3c0,0,35.8-24,12.9-58.3C61.4,78.7,53.5,63.2,54.6,48.3"/>
- <g>
- <polygon class="st2" points="64.1,53.4 58.1,34.4 44.6,49.1 "/>
- </g>
- </g>
- </g>
- <g>
- <g>
- <path class="st0" d="M90.4,163.3c0,0,35.8-24,12.9-58.3C85.7,78.7,77.8,63.2,78.8,48.3"/>
- <g>
- <polygon class="st2" points="88.3,53.4 82.4,34.4 68.9,49.1 "/>
- </g>
- </g>
- </g>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_Rear_Active.png b/images/HMI_HVAC_Rear_Active.png
deleted file mode 100644
index 21ad47a..0000000
--- a/images/HMI_HVAC_Rear_Active.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Rear_Active.svg b/images/HMI_HVAC_Rear_Active.svg
deleted file mode 100644
index 182ccbd..0000000
--- a/images/HMI_HVAC_Rear_Active.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#0DF9FF;}
- .st1{font-family:'Roboto-Regular';}
- .st2{font-size:19.2px;}
- .st3{letter-spacing:3;}
- .st4{fill:url(#SVGID_1_);}
- .st5{fill:url(#SVGID_2_);}
- .st6{fill:url(#SVGID_3_);}
- .st7{fill:url(#SVGID_4_);}
- .st8{fill:url(#SVGID_5_);}
- .st9{fill:url(#SVGID_6_);}
- .st10{fill:url(#SVGID_7_);}
- .st11{fill:url(#SVGID_8_);}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
- <text transform="matrix(1 0 0 1 39.3138 38.5051)" class="st0 st1 st2 st3">REAR</text>
- <g>
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="10.4889" y1="155.8405" x2="117.1391" y2="1.9402">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st4" d="M70,138.5c-0.1,0-0.3,0-0.4,0c-37.8-0.2-68.3-31.1-68.1-68.9c0.1-18.3,7.3-35.5,20.3-48.3
- C34.7,8.5,51.8,1.5,70,1.5c0.1,0,0.3,0,0.4,0c18.3,0.1,35.5,7.3,48.3,20.3c12.9,13,19.9,30.2,19.8,48.5
- C138.3,108,107.6,138.5,70,138.5z M70,3.9c-17.5,0-34,6.8-46.5,19.1C11,35.4,4,52,3.9,69.6c-0.2,36.4,29.3,66.3,65.7,66.5
- c0.1,0,0.2,0,0.4,0c36.3,0,65.9-29.4,66.1-65.7l0,0c0.1-17.7-6.7-34.3-19.1-46.8C104.6,11,88,4,70.4,3.9
- C70.2,3.9,70.1,3.9,70,3.9z"/>
- </g>
- <g>
- <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="11.5789" y1="156.6799" x2="118.2996" y2="2.6779">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <polygon class="st5" points="30.5,97.5 30.5,47.4 109.5,47.3 109.5,97.4 60.7,97.4 60.7,95 107.1,95 107.1,49.7 32.9,49.8
- 32.9,95.1 51.9,95 51.9,97.4 "/>
- </g>
- <g>
- <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="9.0573" y1="154.9325" x2="115.778" y2="0.9304">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st6" d="M57.1,111.6l-2.1-1.2c1.6-2.8,5.4-11.2,4.2-15.7c-0.8-2.8-1.8-4.4-3-6.1c-2.4-3.6-4.9-7.3-4.4-21.7l2.4,0.1
- c-0.6,13.6,1.6,16.8,3.9,20.2c1.2,1.8,2.5,3.6,3.3,6.9C63.3,100.5,57.4,111.2,57.1,111.6z"/>
- </g>
- <g>
- <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="0.4632" y1="148.9769" x2="107.1839" y2="-5.0251">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <polygon class="st7" points="50,75.1 47.9,74 53.1,64.4 58.4,74 56.3,75.1 53.1,69.4 "/>
- </g>
- <g>
- <linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="19.6431" y1="162.2683" x2="126.3638" y2="8.2663">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st8" d="M72.8,111.6l-2.1-1.2c1.6-2.8,5.4-11.2,4.2-15.7c-0.8-2.8-1.8-4.4-3-6.1c-2.4-3.6-4.9-7.3-4.4-21.7l2.4,0.1
- c-0.6,13.6,1.6,16.8,3.9,20.2c1.2,1.8,2.5,3.6,3.3,6.9C78.9,100.5,73,111.2,72.8,111.6z"/>
- </g>
- <g>
- <linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="11.0493" y1="156.3129" x2="117.77" y2="2.3109">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <polygon class="st9" points="72,75.1 68.8,69.4 65.6,75.1 63.5,74 68.8,64.4 74.1,74 "/>
- </g>
- <g>
- <linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="30.229" y1="169.6041" x2="136.9497" y2="15.6021">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st10" d="M88.5,111.6l-2.1-1.2c1.6-2.8,5.4-11.2,4.3-15.7c-0.8-2.8-1.8-4.4-3-6.1c-2.4-3.6-4.9-7.3-4.4-21.7
- l2.4,0.1c-0.6,13.6,1.6,16.8,3.9,20.2c1.2,1.8,2.5,3.6,3.3,6.9C94.6,100.5,88.7,111.2,88.5,111.6z"/>
- </g>
- <g>
- <linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="21.6348" y1="163.6485" x2="128.3555" y2="9.6464">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <polygon class="st11" points="81.3,75.1 79.2,74 84.5,64.4 89.7,74 87.6,75.1 84.5,69.4 "/>
- </g>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/HMI_HVAC_Rear_Inactive.png b/images/HMI_HVAC_Rear_Inactive.png
deleted file mode 100644
index 9a9dadf..0000000
--- a/images/HMI_HVAC_Rear_Inactive.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Rear_Inactive.svg b/images/HMI_HVAC_Rear_Inactive.svg
deleted file mode 100644
index 574c541..0000000
--- a/images/HMI_HVAC_Rear_Inactive.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:i="&amp;ns_ai;"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 140 140"
- style="enable-background:new 0 0 140 140;"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="HMI_HVAC_Rear_Inactive.svg"><metadata
- id="metadata49"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs47" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1464"
- id="namedview45"
- showgrid="false"
- inkscape:zoom="1.6857143"
- inkscape:cx="-285.9322"
- inkscape:cy="70"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" /><style
- type="text/css"
- id="style3">
- .st0{fill:#848286;}
- .st1{font-family:'Roboto-Regular';}
- .st2{font-size:19.2px;}
- .st3{letter-spacing:3;}
-</style><switch
- id="switch5"><g
- i:extraneous="self"
- id="g7"><g
- id="g9"><text
- transform="matrix(1 0 0 1 39.3138 38.5051)"
- class="st0 st1 st2 st3"
- id="text11">REAR</text>
-<g
- id="g13"><path
- class="st0"
- d="M70,138.5c-0.1,0-0.3,0-0.4,0c-37.8-0.2-68.3-31.1-68.1-68.9c0.1-18.3,7.3-35.5,20.3-48.3 C34.7,8.5,51.8,1.5,70,1.5c0.1,0,0.3,0,0.4,0c18.3,0.1,35.5,7.3,48.3,20.3c12.9,13,19.9,30.2,19.8,48.5 C138.3,108,107.6,138.5,70,138.5z M70,3.9c-17.5,0-34,6.8-46.5,19.1C11,35.4,4,52,3.9,69.6c-0.2,36.4,29.3,66.3,65.7,66.5 c0.1,0,0.2,0,0.4,0c36.3,0,65.9-29.4,66.1-65.7l0,0c0.1-17.7-6.7-34.3-19.1-46.8C104.6,11,88,4,70.4,3.9 C70.2,3.9,70.1,3.9,70,3.9z"
- id="path15" /></g><g
- id="g17"><polygon
- class="st0"
- points="30.5,97.5 30.5,47.4 109.5,47.3 109.5,97.4 60.7,97.4 60.7,95 107.1,95 107.1,49.7 32.9,49.8 32.9,95.1 51.9,95 51.9,97.4 "
- id="polygon19" /></g><g
- id="g21"><path
- class="st0"
- d="M57.1,111.6l-2.1-1.2c1.6-2.8,5.4-11.2,4.2-15.7c-0.8-2.8-1.8-4.4-3-6.1c-2.4-3.6-4.9-7.3-4.4-21.7l2.4,0.1 c-0.6,13.6,1.6,16.8,3.9,20.2c1.2,1.8,2.5,3.6,3.3,6.9C63.3,100.5,57.4,111.2,57.1,111.6z"
- id="path23" /></g><g
- id="g25"><polygon
- class="st0"
- points="50,75.1 47.9,74 53.1,64.4 58.4,74 56.3,75.1 53.1,69.4 "
- id="polygon27" /></g><g
- id="g29"><path
- class="st0"
- d="M72.8,111.6l-2.1-1.2c1.6-2.8,5.4-11.2,4.2-15.7c-0.8-2.8-1.8-4.4-3-6.1c-2.4-3.6-4.9-7.3-4.4-21.7l2.4,0.1 c-0.6,13.6,1.6,16.8,3.9,20.2c1.2,1.8,2.5,3.6,3.3,6.9C78.9,100.5,73,111.2,72.8,111.6z"
- id="path31" /></g><g
- id="g33"><polygon
- class="st0"
- points="72,75.1 68.8,69.4 65.6,75.1 63.5,74 68.8,64.4 74.1,74 "
- id="polygon35" /></g><g
- id="g37"><path
- class="st0"
- d="M88.5,111.6l-2.1-1.2c1.6-2.8,5.4-11.2,4.3-15.7c-0.8-2.8-1.8-4.4-3-6.1c-2.4-3.6-4.9-7.3-4.4-21.7l2.4,0.1 c-0.6,13.6,1.6,16.8,3.9,20.2c1.2,1.8,2.5,3.6,3.3,6.9C94.6,100.5,88.7,111.2,88.5,111.6z"
- id="path39" /></g><g
- id="g41"><polygon
- class="st0"
- points="81.3,75.1 79.2,74 84.5,64.4 89.7,74 87.6,75.1 84.5,69.4 "
- id="polygon43" /></g></g></g></switch></svg> \ No newline at end of file
diff --git a/images/HMI_HVAC_Right_Chair_OFF.png b/images/HMI_HVAC_Right_Chair_OFF.png
deleted file mode 100644
index 823f1ef..0000000
--- a/images/HMI_HVAC_Right_Chair_OFF.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Right_Chair_OFF.svg b/images/HMI_HVAC_Right_Chair_OFF.svg
deleted file mode 100644
index 711a942..0000000
--- a/images/HMI_HVAC_Right_Chair_OFF.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:i="&amp;ns_ai;"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- id="Layer_2"
- x="0px"
- y="0px"
- viewBox="0 0 172 172"
- style="enable-background:new 0 0 172 172;"
- xml:space="preserve"
- inkscape:version="0.91 r13725"
- sodipodi:docname="HMI_HVAC_Right_Chair_OFF.svg"><metadata
- id="metadata49"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs47" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2560"
- inkscape:window-height="1464"
- id="namedview45"
- showgrid="false"
- inkscape:zoom="1.372093"
- inkscape:cx="-273.66949"
- inkscape:cy="86"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="Layer_2" /><style
- type="text/css"
- id="style3">
- .st0{fill:none;stroke:#69676C;stroke-width:4;stroke-miterlimit:10;}
- .st1{opacity:0.43;fill:#69676C;}
- .st2{fill:#69676C;}
-</style><switch
- id="switch5"><g
- i:extraneous="self"
- id="g7"><g
- id="g9"><path
- class="st0"
- d="M139.7,135H47.3L8.1,20.1c0,0-2.5-10.9,9.1-11.4c11.6-0.5,19,16.2,19,16.2s12.3,40.7,24.1,70.4 c0,0,76.7-4.6,89.8-4.6c13.1,0,16.6,5.1,12.5,14.1S139.7,135,139.7,135z"
- id="path11" /><path
- class="st1"
- d="M139.7,135H47.3L8.1,20.1c0,0-2.5-10.9,9.1-11.4c11.6-0.5,19,16.2,19,16.2s12.3,40.7,24.1,70.4 c0,0,76.7-4.6,89.8-4.6c13.1,0,16.6,5.1,12.5,14.1S139.7,135,139.7,135z"
- id="path13" /><g
- id="g15"><g
- id="g17"><path
- class="st0"
- d="M129.6,163.3c0,0-35.8-24-12.9-58.3c17.5-26.3,25.5-41.8,24.4-56.7"
- id="path19" /><g
- id="g21"><polygon
- class="st2"
- points="151,49.1 137.6,34.4 131.6,53.4 "
- id="polygon23" /></g></g></g><g
- id="g25"><g
- id="g27"><path
- class="st0"
- d="M105.9,163.3c0,0-35.8-24-12.9-58.3c17.5-26.3,25.5-41.8,24.4-56.7"
- id="path29" /><g
- id="g31"><polygon
- class="st2"
- points="127.4,49.1 113.9,34.4 107.9,53.4 "
- id="polygon33" /></g></g></g><g
- id="g35"><g
- id="g37"><path
- class="st0"
- d="M81.6,163.3c0,0-35.8-24-12.9-58.3c17.5-26.3,25.5-41.8,24.4-56.7"
- id="path39" /><g
- id="g41"><polygon
- class="st2"
- points="103.1,49.1 89.6,34.4 83.7,53.4 "
- id="polygon43" /></g></g></g></g></g></switch></svg> \ No newline at end of file
diff --git a/images/HMI_HVAC_Right_Chair_ON.png b/images/HMI_HVAC_Right_Chair_ON.png
deleted file mode 100644
index 5f19eaf..0000000
--- a/images/HMI_HVAC_Right_Chair_ON.png
+++ /dev/null
Binary files differ
diff --git a/images/HMI_HVAC_Right_Chair_ON.svg b/images/HMI_HVAC_Right_Chair_ON.svg
deleted file mode 100644
index 74b4861..0000000
--- a/images/HMI_HVAC_Right_Chair_ON.svg
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 172 172"
- style="enable-background:new 0 0 172 172;" xml:space="preserve">
-<style type="text/css">
- .st0{opacity:0.43;fill:url(#SVGID_1_);}
- .st1{fill:none;stroke:#0DF9FF;stroke-width:4;stroke-miterlimit:10;}
- .st2{fill:#0DF9FF;}
-</style>
-<switch>
- <g i:extraneous="self">
- <g>
-
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-670.8471" y1="198.7467" x2="-556.4836" y2="-3.84" gradientTransform="matrix(-1 0 0 1 -518.3083 0)">
- <stop offset="0" style="stop-color:#00ADDC"/>
- <stop offset="1" style="stop-color:#6BFBFF"/>
- </linearGradient>
- <path class="st0" d="M139.7,135H47.3L8.1,20.1c0,0-2.5-10.9,9.1-11.4c11.6-0.5,19,16.2,19,16.2s12.3,40.7,24.1,70.4
- c0,0,76.7-4.6,89.8-4.6c13.1,0,16.6,5.1,12.5,14.1S139.7,135,139.7,135z"/>
- <g>
- <g>
- <path class="st1" d="M129.6,163.3c0,0-35.8-24-12.9-58.3c17.5-26.3,25.5-41.8,24.4-56.7"/>
- <g>
- <polygon class="st2" points="151,49.1 137.6,34.4 131.6,53.4 "/>
- </g>
- </g>
- </g>
- <g>
- <g>
- <path class="st1" d="M105.9,163.3c0,0-35.8-24-12.9-58.3c17.5-26.3,25.5-41.8,24.4-56.7"/>
- <g>
- <polygon class="st2" points="127.4,49.1 113.9,34.4 107.9,53.4 "/>
- </g>
- </g>
- </g>
- <g>
- <g>
- <path class="st1" d="M81.6,163.3c0,0-35.8-24-12.9-58.3c17.5-26.3,25.5-41.8,24.4-56.7"/>
- <g>
- <polygon class="st2" points="103.1,49.1 89.6,34.4 83.7,53.4 "/>
- </g>
- </g>
- </g>
- <path class="st1" d="M139.7,135H47.3L8.1,20.1c0,0-2.5-10.9,9.1-11.4c11.6-0.5,19,16.2,19,16.2s12.3,40.7,24.1,70.4
- c0,0,76.7-4.6,89.8-4.6c13.1,0,16.6,5.1,12.5,14.1S139.7,135,139.7,135z"/>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/images/vertical_background.png b/images/vertical_background.png
deleted file mode 100644
index 3f553fe..0000000
--- a/images/vertical_background.png
+++ /dev/null
Binary files differ
diff --git a/lib/bottom_panel.dart b/lib/bottom_panel.dart
new file mode 100644
index 0000000..f61c59d
--- /dev/null
+++ b/lib/bottom_panel.dart
@@ -0,0 +1,84 @@
+import 'package:async/async.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:jovial_svg/jovial_svg.dart';
+import 'package:flutter_homescreen/volume_slider.dart';
+
+final StackIndexProvider = StateProvider<int>((ref) => 0);
+
+class BottomPanelWidget extends ConsumerStatefulWidget {
+ final double height;
+ final Color? color;
+
+ BottomPanelWidget({Key? key, required this.height, required this.color})
+ : super(key: key);
+
+ @override
+ _BottomPanelWidgetState createState() => _BottomPanelWidgetState();
+}
+
+class _BottomPanelWidgetState extends ConsumerState<BottomPanelWidget> {
+ final iconColor = const Color(0xff4ee6f5);
+ late RestartableTimer timer;
+
+ initState() {
+ super.initState();
+ timer = new RestartableTimer(Duration(seconds: 3), _timerExpired);
+ }
+
+ void _timerExpired() {
+ ref.read(StackIndexProvider.notifier).state = 0;
+ timer.cancel();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ final int index = ref.watch(StackIndexProvider);
+
+ return SizedBox(
+ height: widget.height,
+ child: IndexedStack(index: index, children: <Widget>[
+ GestureDetector(
+ child: Container(
+ color: widget.color,
+ child: Align(
+ alignment: Alignment.center,
+ child: ScalableImageWidget.fromSISource(
+ si: ScalableImageSource.fromSvg(
+ rootBundle, 'images/Utility_Logo_Grey-01.svg')))),
+ onTap: () {
+ ref.read(StackIndexProvider.notifier).state = 1;
+ timer.reset();
+ },
+ ),
+ Container(
+ color: widget.color,
+ child: Padding(
+ padding: EdgeInsets.fromLTRB(24, 8, 24, 8),
+ child: Stack(children: [
+ Column(children: [
+ Center(
+ child: Text("Volume",
+ style: TextStyle(
+ fontSize: 32, color: Colors.white))),
+ Spacer()
+ ]),
+ Row(children: [
+ Container(width: 24),
+ Text("0 %",
+ style: TextStyle(fontSize: 32, color: Colors.white)),
+ Expanded(
+ child: VolumeSlider(
+ thumbColor: Colors.white,
+ activeColor: iconColor,
+ inactiveColor: Colors.grey.shade600,
+ activityTimer: timer)),
+ Text("100 %",
+ style: TextStyle(fontSize: 32, color: Colors.white)),
+ Container(width: 24)
+ ]),
+ ])))
+ ]));
+ }
+}
diff --git a/lib/config.dart b/lib/config.dart
new file mode 100644
index 0000000..6da02ed
--- /dev/null
+++ b/lib/config.dart
@@ -0,0 +1,115 @@
+// SPDX-License-Identifier: Apache-2.0
+import 'dart:io';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:yaml/yaml.dart';
+
+import 'vehicle-signals/viss_connection_widget.dart';
+
+class GetConfig extends ConsumerStatefulWidget {
+ const GetConfig({Key? key, required this.client}) : super(key: key);
+ final HttpClient client;
+
+ @override
+ ConsumerState<GetConfig> createState() => _GetConfigState();
+}
+
+class _GetConfigState extends ConsumerState<GetConfig> {
+ @override
+ void initState() {
+ super.initState();
+ WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
+ final configStateProvider = ref.read(ConfigStateprovider.notifier);
+
+ String configFilePath = '/etc/xdg/AGL/homescreen_config.yaml';
+
+ final configFile = File(configFilePath);
+ configFile.readAsString().then((content) {
+ final dynamic yamlMap = loadYaml(content);
+ configStateProvider.update(
+ read: true,
+ hostname: yamlMap['hostname'],
+ port: yamlMap['port'],
+ kuksaAuthToken: yamlMap['kuskaAuthToken'],
+ );
+ }).catchError((content) {
+ configStateProvider.update(read: true);
+ });
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ final config = ref.watch(ConfigStateprovider);
+ if (!config.read) {
+ return Container(
+ child: const Text("Reading configuration file!",
+ style: TextStyle(
+ fontSize: 20,
+ fontWeight: FontWeight.bold,
+ color: Colors.white)));
+ } else if (config.hostname == "" ||
+ config.port == 0 ||
+ config.kuksaAuthToken == "") {
+ return Container(
+ child: const Text("Invalid configuration file!",
+ style: TextStyle(
+ fontSize: 20,
+ fontWeight: FontWeight.bold,
+ color: Colors.white)));
+ }
+ return VISServerConnectionWidget(client: widget.client);
+ }
+}
+
+class Config {
+ Config({
+ required this.read,
+ required this.hostname,
+ required this.port,
+ required this.kuksaAuthToken,
+ });
+ final bool read;
+ final String hostname;
+ final int port;
+ final String kuksaAuthToken;
+
+ Config copywith({
+ bool? read,
+ String? hostname,
+ int? port,
+ String? kuksaAuthToken,
+ }) =>
+ Config(
+ read: read ?? this.read,
+ hostname: hostname ?? this.hostname,
+ port: port ?? this.port,
+ kuksaAuthToken: kuksaAuthToken ?? this.kuksaAuthToken,
+ );
+}
+
+final ConfigStateprovider = StateNotifierProvider<ConfigStateNotifier, Config>(
+ (ref) => ConfigStateNotifier());
+
+class ConfigStateNotifier extends StateNotifier<Config> {
+ ConfigStateNotifier() : super(_initialValue);
+ static final Config _initialValue = Config(
+ read: false,
+ hostname: "",
+ port: 0,
+ kuksaAuthToken: "",
+ );
+ void update({
+ bool? read,
+ String? hostname,
+ int? port,
+ String? kuksaAuthToken,
+ }) {
+ state = state.copywith(
+ read: read,
+ hostname: hostname,
+ port: port,
+ kuksaAuthToken: kuksaAuthToken,
+ );
+ }
+}
diff --git a/lib/homescreen.dart b/lib/homescreen.dart
index d666bd3..7501292 100644
--- a/lib/homescreen.dart
+++ b/lib/homescreen.dart
@@ -1,17 +1,18 @@
+import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
-import 'package:provider/provider.dart';
+import 'package:flutter_homescreen/config.dart';
import 'package:grpc/grpc.dart';
-import 'package:jovial_svg/jovial_svg.dart';
import 'package:flutter_homescreen/generated/applauncher.pbgrpc.dart';
-import 'package:flutter_homescreen/homescreen_model.dart';
import 'package:flutter_homescreen/page_apps.dart';
import 'package:flutter_homescreen/widget_clock.dart';
+import 'package:flutter_homescreen/bottom_panel.dart';
enum PageIndex { home, dashboard, hvac, media }
class Homescreen extends StatefulWidget {
- Homescreen({Key? key}) : super(key: key);
+ Homescreen({Key? key, required this.client}) : super(key: key);
+ final HttpClient client;
@override
_HomescreenState createState() => _HomescreenState();
@@ -49,7 +50,8 @@ class _HomescreenState extends State<Homescreen> with TickerProviderStateMixin {
activateApp(String id) async {
try {
- agl_shell_channel.invokeMethod('activate_app', { 'app_id': id, 'index': 0 });
+ agl_shell_channel
+ .invokeMethod('activate_app', {'app_id': id, 'index': 0});
} catch (e) {
print('Could not invoke flutter/agl_shell/activate_app: $e');
}
@@ -82,7 +84,7 @@ class _HomescreenState extends State<Homescreen> with TickerProviderStateMixin {
}
}
}
- } catch(e) {
+ } catch (e) {
print(e);
}
}
@@ -149,9 +151,9 @@ class _HomescreenState extends State<Homescreen> with TickerProviderStateMixin {
var railSize = 160.0;
var iconSize = railSize / 2;
var foregroundColor = Theme.of(context)
- .navigationBarTheme
- .iconTheme!
- .resolve({MaterialState.pressed})!.color!;
+ .navigationBarTheme
+ .iconTheme!
+ .resolve({MaterialState.pressed})!.color!;
return Scaffold(
body: Column(
@@ -211,9 +213,8 @@ class _HomescreenState extends State<Homescreen> with TickerProviderStateMixin {
endIndent: railSize / 16)),
Container(
color: NavigationBarTheme.of(context).backgroundColor,
- child: ClockWidget(
- textColor: foregroundColor,
- size: railSize)),
+ child:
+ ClockWidget(textColor: foregroundColor, size: railSize)),
Container(
color: NavigationBarTheme.of(context).backgroundColor,
child: VerticalDivider(
@@ -225,70 +226,64 @@ class _HomescreenState extends State<Homescreen> with TickerProviderStateMixin {
Container(
color: NavigationBarTheme.of(context).backgroundColor,
child: Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- children: <Widget>[
- Icon(Icons.bluetooth, color: foregroundColor, size: 32),
- Icon(Icons.wifi, color: foregroundColor, size: 32),
- Icon(Icons.signal_cellular_4_bar, color: foregroundColor, size: 32),
- ])),
+ crossAxisAlignment: CrossAxisAlignment.center,
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: <Widget>[
+ Icon(Icons.bluetooth, color: foregroundColor, size: 32),
+ Icon(Icons.wifi, color: foregroundColor, size: 32),
+ Icon(Icons.signal_cellular_4_bar,
+ color: foregroundColor, size: 32),
+ ])),
SizedBox(
width: 16,
child: Container(
- color:
- Theme.of(context).navigationBarTheme.backgroundColor)),
+ color: Theme.of(context)
+ .navigationBarTheme
+ .backgroundColor)),
]),
),
// This is the main content.
Expanded(
- child: ChangeNotifierProvider(
- // See: https://docs.flutter.dev/development/data-and-backend/state-mgmt/simple
- // Also: https://docs.flutter.dev/development/data-and-backend/state-mgmt/options
- create: (context) => HomescreenModel(),
- child: AnimatedSwitcher(
- duration: const Duration(milliseconds: 500),
- reverseDuration: const Duration(milliseconds: 500),
- switchInCurve: Curves.easeInOut,
- switchOutCurve: Curves.easeInOut,
- transitionBuilder: (Widget child, Animation<double> animation) {
- if (child.key != ValueKey(_selectedIndex)) {
- return FadeTransition(
- opacity: Tween<double>(begin: 1.0, end: 1.0)
- .animate(animation),
- child: child,
- );
- }
- Offset beginOffset = new Offset(
- 0.0, (_selectedIndex > _previousIndex ? 1.0 : -1.0));
- return SlideTransition(
- position:
- Tween<Offset>(begin: beginOffset, end: Offset.zero)
- .animate(animation),
- child: FadeTransition(
- opacity: Tween<double>(begin: 0.0, end: 1.0).animate(
- CurvedAnimation(
- parent: animation,
- curve: Interval(0.5, 1.0),
- ),
+ child: AnimatedSwitcher(
+ duration: const Duration(milliseconds: 500),
+ reverseDuration: const Duration(milliseconds: 500),
+ switchInCurve: Curves.easeInOut,
+ switchOutCurve: Curves.easeInOut,
+ transitionBuilder: (Widget child, Animation<double> animation) {
+ if (child.key != ValueKey(_selectedIndex)) {
+ return FadeTransition(
+ opacity:
+ Tween<double>(begin: 1.0, end: 1.0).animate(animation),
+ child: child,
+ );
+ }
+ Offset beginOffset = new Offset(
+ 0.0, (_selectedIndex > _previousIndex ? 1.0 : -1.0));
+ return SlideTransition(
+ position: Tween<Offset>(begin: beginOffset, end: Offset.zero)
+ .animate(animation),
+ child: FadeTransition(
+ opacity: Tween<double>(begin: 0.0, end: 1.0).animate(
+ CurvedAnimation(
+ parent: animation,
+ curve: Interval(0.5, 1.0),
),
- child: child,
),
- );
- },
- child: _childForIndex(_selectedIndex),
- ),
+ child: child,
+ ),
+ );
+ },
+ child: _childForIndex(_selectedIndex),
),
),
- SizedBox(
- height: railSize,
- child: Container(
- color: NavigationBarTheme.of(context).backgroundColor,
- child: Align(
- alignment: Alignment.center,
- child: ScalableImageWidget.fromSISource(
- si: ScalableImageSource.fromSvg(rootBundle,
- 'images/Utility_Logo_Grey-01.svg'))))
- )
+ Stack(children: [
+ BottomPanelWidget(
+ height: railSize,
+ color: NavigationBarTheme.of(context).backgroundColor),
+ Align(
+ alignment: Alignment.bottomLeft,
+ child: GetConfig(client: widget.client))
+ ]),
],
),
);
diff --git a/lib/homescreen_model.dart b/lib/homescreen_model.dart
deleted file mode 100644
index 7c1a26f..0000000
--- a/lib/homescreen_model.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-import 'dart:collection';
-
-import 'package:flutter/foundation.dart';
-import 'package:flutter/material.dart';
-
-enum SwitchId {
- hvacLeftSeat,
- hvacRigthSeat,
- hvacAc,
- hvacAuto,
- hvacCirculation,
- hvacFan,
- hvacAirDown,
- hvacAirUp,
- hvacFront,
- hvacRear,
-}
-
-enum TemperatureId { leftSeat, rightSeat }
-
-class HomescreenModel extends ChangeNotifier {
- // HVAC page
-
- // fan speed
- double _fanSpeed = 20;
-
- double get fanSpeed => _fanSpeed;
-
- set fanSpeed(double newhvacFanSpeed) {
- _fanSpeed = newhvacFanSpeed;
- notifyListeners();
- }
-
- // switch buttons
- HashMap _switches = new HashMap<SwitchId, bool>();
-
- bool getSwitchState(SwitchId id) => _switches[id] ?? false;
-
- void setSwitchState(SwitchId id, bool newValue) {
- _switches[id] = newValue;
- notifyListeners();
- }
-
- void flipSwitch(SwitchId id) {
- _switches[id] = !_switches[id];
- notifyListeners();
- }
-
- // temperatures
- HashMap _temperatures = new HashMap<TemperatureId, int>();
-
- int getTemperature(TemperatureId id) => _temperatures[id] ?? 22;
-
- void setTemperature(TemperatureId id, int newTemp) {
- _temperatures[id] = newTemp;
- notifyListeners();
- }
-
- HomescreenModel() {
- // initialize the values
- for (var id in SwitchId.values) {
- _switches[id] = false;
- }
- for (var id in TemperatureId.values) {
- _temperatures[id] = 22;
- }
- }
-}
diff --git a/lib/main.dart b/lib/main.dart
index c09f328..f5ea0f7 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,14 +1,22 @@
+import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_homescreen/homescreen.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:flutter_homescreen/vehicle-signals/viss_config.dart';
-void main() {
- runApp(MyApp());
+Future<void> main() async {
+ WidgetsFlutterBinding.ensureInitialized();
+ HttpClient client = await initializeClient();
+ runApp(ProviderScope(child: MyApp(client: client)));
}
-class MyApp extends StatelessWidget {
+class MyApp extends ConsumerWidget {
+ MyApp({Key? key, required this.client}) : super(key: key);
+ final HttpClient client;
+
// This widget is the root of your application.
@override
- Widget build(BuildContext context) {
+ Widget build(BuildContext context, WidgetRef ref) {
const navBarColor = const Color(0xff181818);
const navBarIconColor = Colors.white;
@@ -24,7 +32,7 @@ class MyApp extends StatelessWidget {
color: navBarIconColor,
))),
),
- home: Homescreen(),
+ home: Homescreen(client: client),
);
}
}
diff --git a/lib/page_apps.dart b/lib/page_apps.dart
index 39fb754..9ea6c92 100644
--- a/lib/page_apps.dart
+++ b/lib/page_apps.dart
@@ -1,9 +1,7 @@
import 'dart:io';
import 'dart:convert';
import 'package:flutter/material.dart';
-import 'package:provider/provider.dart';
import 'package:jovial_svg/jovial_svg.dart';
-import 'package:flutter_homescreen/homescreen.dart';
import 'package:flutter_homescreen/layout_size_helper.dart';
import 'package:flutter_homescreen/generated/applauncher.pb.dart';
@@ -11,7 +9,7 @@ import 'package:flutter_homescreen/generated/applauncher.pb.dart';
class AppsPage extends StatefulWidget {
final Future<List<AppInfo>> Function() getApps;
final Function(String id) startApp;
-
+
const AppsPage({Key? key, required this.getApps, required this.startApp})
: super(key: key);
@@ -26,7 +24,7 @@ class _AppsPageState extends State<AppsPage> {
initState() {
widget.getApps().then((val) => setState(() {
apps = val;
- }));
+ }));
super.initState();
}
@@ -94,8 +92,8 @@ class _AppsPageEntryState extends State<_AppsPageEntry> {
void initState() {
if (widget.iconPath.endsWith(".svg")) {
readSvgIcon().then((val) => setState(() {
- svgIconLoaded = val;
- }));
+ svgIconLoaded = val;
+ }));
}
super.initState();
}
@@ -104,7 +102,8 @@ class _AppsPageEntryState extends State<_AppsPageEntry> {
if (widget.iconPath.endsWith(".svg")) {
var iconFile = File(widget.iconPath);
if (await iconFile.exists()) {
- svgIcon = await ScalableImage.fromSvgStream(iconFile.openRead().transform(utf8.decoder));
+ svgIcon = await ScalableImage.fromSvgStream(
+ iconFile.openRead().transform(utf8.decoder));
return true;
}
}
@@ -114,25 +113,21 @@ class _AppsPageEntryState extends State<_AppsPageEntry> {
Widget buildIcon() {
if (svgIconLoaded) {
return GestureDetector(
- onTap: () {
- widget.appSelected(widget.id);
- },
- child: SizedBox.expand(
- child: ScalableImageWidget(si: svgIcon))
- );
+ onTap: () {
+ widget.appSelected(widget.id);
+ },
+ child: SizedBox.expand(child: ScalableImageWidget(si: svgIcon)));
} else {
return OutlinedButton(
- style: ElevatedButton.styleFrom(
- shape: CircleBorder(),
- padding: EdgeInsets.all(8),
- side: BorderSide(width: 4, color: iconColor),
- ),
- onPressed: () {
- widget.appSelected(widget.id);
- },
- child: Icon(Icons.question_mark,
- color: iconColor,
- size: 160.0));
+ style: ElevatedButton.styleFrom(
+ shape: CircleBorder(),
+ padding: EdgeInsets.all(8),
+ side: BorderSide(width: 4, color: iconColor),
+ ),
+ onPressed: () {
+ widget.appSelected(widget.id);
+ },
+ child: Icon(Icons.question_mark, color: iconColor, size: 160.0));
}
}
diff --git a/lib/page_dashboard.dart b/lib/page_dashboard.dart
deleted file mode 100644
index c354415..0000000
--- a/lib/page_dashboard.dart
+++ /dev/null
@@ -1,218 +0,0 @@
-import 'dart:async';
-import 'dart:math';
-
-import 'package:flutter/material.dart';
-import 'package:flutter_homescreen/layout_size_helper.dart';
-
-// The Dashboard page.
-class DashboardPage extends StatefulWidget {
- DashboardPage({Key? key}) : super(key: key);
-
- @override
- _DashboardPageState createState() => _DashboardPageState();
-}
-
-class _DashboardPageState extends State<DashboardPage> {
- late Timer _timer;
-
- double speed = 20;
- // between 0 and 1.0
- double rpm = 0.2;
- // between 0 and 1.0
- double fuel = 0.2;
-
- @override
- void initState() {
- _timer = new Timer.periodic(
- Duration(milliseconds: 10),
- (Timer timer) {
- setState(() {
- double now = DateTime.now().millisecondsSinceEpoch / 2000;
- speed = 50 + 40 * sin(now);
- rpm = 0.5 + sin(now) / 3.0;
- fuel = 0.6 + cos(now) / 4.0;
- });
- },
- );
- // Animate the values for the demo.
- // Eventually, we will get the state of the car from the API.
- super.initState();
- }
-
- @override
- void dispose() {
- _timer.cancel();
- super.dispose();
- }
-
- @override
- Widget build(BuildContext context) {
- var sizeHelper = LayoutSizeHelper(context);
- return Container(
- decoration: BoxDecoration(
- gradient: LinearGradient(
- begin: Alignment.topRight,
- end: Alignment.bottomLeft,
- colors: [Colors.teal.shade900, Colors.grey.shade900])),
- constraints: BoxConstraints.expand(),
- alignment: Alignment.center,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- Column(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- Container(
- height: sizeHelper.largeIconSize * 1,
- width: sizeHelper.largeIconSize * 2,
- decoration: BoxDecoration(
- border: Border.all(
- color: Theme.of(context).primaryColorLight,
- width: sizeHelper.defaultBorder,
- ),
- borderRadius: BorderRadius.all(
- Radius.circular(sizeHelper.largeIconSize / 2.0))),
- child: Center(
- child: Text(
- '${speed.floor()} kpm',
- style: Theme.of(context).textTheme.headline2,
- ),
- ),
- ),
- _RPMWidget(rpm),
- _FuelWidget(fuel),
- ],
- ),
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- crossAxisAlignment: CrossAxisAlignment.stretch,
- children: [
- Column(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- crossAxisAlignment: CrossAxisAlignment.end,
- children: [
- _TireWidget('Left front tire', 21, CrossAxisAlignment.end),
- _TireWidget('Left rear tire', 23, CrossAxisAlignment.end),
- ],
- ),
- Image.asset(
- 'images/HMI_Dashboard_Car_720.png',
- width: 2.0 * sizeHelper.largeIconSize,
- fit: BoxFit.contain,
- ),
- Column(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- _TireWidget('Right front tire', 21, CrossAxisAlignment.start),
- _TireWidget('Right rear tire', 23, CrossAxisAlignment.start),
- ],
- ),
- ],
- ),
- ],
- ),
- );
- }
-}
-
-// The RPM indicator.
-class _RPMWidget extends StatelessWidget {
- final double rpm;
-
- _RPMWidget(this.rpm);
-
- @override
- Widget build(BuildContext context) {
- var sizeHelper = LayoutSizeHelper(context);
- return Stack(
- alignment: Alignment.center,
- children: [
- Text(
- 'RPM',
- style: Theme.of(context).textTheme.headline4,
- ),
- Container(
- height: sizeHelper.largeIconSize * 1.5,
- width: sizeHelper.largeIconSize * 1.5,
- child: RotatedBox(
- quarterTurns: 2,
- child: CircularProgressIndicator(
- value: rpm,
- color: HSLColor.fromColor(Colors.redAccent)
- .withSaturation(rpm)
- .toColor(),
- strokeWidth: sizeHelper.largeIconSize / 2.0,
- semanticsLabel: 'RPM indicator',
- ),
- ),
- )
- ],
- );
- }
-}
-
-// The fuel indicator.
-class _FuelWidget extends StatelessWidget {
- final double fuel;
-
- _FuelWidget(this.fuel);
-
- @override
- Widget build(BuildContext context) {
- var sizeHelper = LayoutSizeHelper(context);
- return Row(
- children: [
- Container(
- height: sizeHelper.largeIconSize / 4.0,
- width: sizeHelper.largeIconSize / 2.0,
- child: Center(
- child: Text(
- 'Fuel',
- style: Theme.of(context).textTheme.headline4,
- ),
- ),
- ),
- Container(
- height: sizeHelper.largeIconSize / 4.0,
- width: sizeHelper.largeIconSize * 1.5,
- margin: EdgeInsets.fromLTRB(
- 0, sizeHelper.largePadding, 0, sizeHelper.largePadding),
- child: LinearProgressIndicator(
- value: fuel,
- color: HSLColor.fromColor(Colors.blueAccent)
- .withSaturation(fuel)
- .toColor(),
- semanticsLabel: 'RPM indicator',
- ),
- )
- ],
- );
- }
-}
-
-// The small indicator for the state of each tire.
-class _TireWidget extends StatelessWidget {
- final String label;
- final int value;
- final CrossAxisAlignment crossAlign;
-
- _TireWidget(this.label, this.value, this.crossAlign);
-
- @override
- Widget build(BuildContext context) {
- return Column(
- crossAxisAlignment: crossAlign,
- children: [
- Text(
- label,
- style: Theme.of(context).textTheme.headline6,
- ),
- Text(
- '$value PSI',
- style: Theme.of(context).textTheme.headline4,
- ),
- ],
- );
- }
-}
diff --git a/lib/page_hvac.dart b/lib/page_hvac.dart
deleted file mode 100644
index 65d77b6..0000000
--- a/lib/page_hvac.dart
+++ /dev/null
@@ -1,313 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_homescreen/homescreen_model.dart';
-import 'package:flutter_homescreen/layout_size_helper.dart';
-import 'package:flutter_homescreen/switchable_image.dart';
-import 'package:numberpicker/numberpicker.dart';
-import 'package:provider/provider.dart';
-
-// image assets
-const String LEFT_SEAT = 'images/HMI_HVAC_Left_Chair_ON.png';
-const String RIGHT_SEAT = 'images/HMI_HVAC_Right_Chair_ON.png';
-const String CIRCULATION = 'images/HMI_HVAC_Circulation_Active.png';
-const String AIRDOWN = 'images/HMI_HVAC_AirDown_Active.png';
-const String AIRUP = 'images/HMI_HVAC_AirUp_Active.png';
-const String FRONT = 'images/HMI_HVAC_Front_Active.png';
-const String REAR = 'images/HMI_HVAC_Rear_Active.png';
-
-// The page for heating, ventilation, and air conditioning.
-class HVACPage extends StatelessWidget {
- HVACPage({Key? key}) : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- var sizeHelper = LayoutSizeHelper(context);
-
- Widget fanSpeedControl = Container(
- padding: EdgeInsets.symmetric(
- vertical: sizeHelper.defaultPadding,
- horizontal: 3.0 * sizeHelper.defaultPadding,
- ),
- child: Row(
- children: [
- Expanded(
- flex: 3,
- child: HVACFanSpeed(),
- ),
- Expanded(
- flex: 1,
- child: Container(
- alignment: Alignment.centerLeft,
- child: Image.asset('images/HMI_HVAC_Fan_Icon.png',
- width: sizeHelper.defaultIconSize,
- height: sizeHelper.defaultIconSize,
- fit: BoxFit.contain)),
- ),
- ],
-
- mainAxisAlignment: MainAxisAlignment.start,
- mainAxisSize: MainAxisSize.max,
- crossAxisAlignment: CrossAxisAlignment.center,
- ),
- );
-
- Widget centerView = Container(
- padding: EdgeInsets.all(sizeHelper.defaultPadding),
- child: Column(
- children: [
- _HVACToggleButton(
- label: 'A/C',
- switchId: SwitchId.hvacAc,
- ),
- _HVACToggleButton(
- label: 'Auto',
- switchId: SwitchId.hvacAuto,
- ),
- _HVACToggleButton(
- imageAssetId: CIRCULATION,
- switchId: SwitchId.hvacCirculation,
- ),
- ],
- ),
- );
-
- Widget actions =
- Consumer<HomescreenModel>(builder: (context, model, child) {
- return Column(
- children: [
- _ActionButton(switchId: SwitchId.hvacAirDown, imageAssetId: AIRDOWN),
- SizedBox(height: sizeHelper.defaultPadding),
- _ActionButton(switchId: SwitchId.hvacAirUp, imageAssetId: AIRUP),
- SizedBox(height: sizeHelper.defaultPadding),
- _ActionButton(switchId: SwitchId.hvacFront, imageAssetId: FRONT),
- SizedBox(height: sizeHelper.defaultPadding),
- _ActionButton(switchId: SwitchId.hvacRear, imageAssetId: REAR),
- ],
- );
- });
-
- return Container(
- decoration: BoxDecoration(
- gradient: LinearGradient(
- begin: Alignment.topRight,
- end: Alignment.bottomLeft,
- colors: [Colors.blueGrey.shade900, Colors.grey.shade900])),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: <Widget>[
- fanSpeedControl,
- Row(children: [
- Expanded(
- flex: 1,
- child: _SeatButton(
- switchId: SwitchId.hvacLeftSeat,
- temperatureId: TemperatureId.leftSeat,
- imageAssetId: LEFT_SEAT,
- )),
- Expanded(flex: 1, child: centerView),
- Expanded(
- flex: 1,
- child: _SeatButton(
- switchId: SwitchId.hvacRigthSeat,
- temperatureId: TemperatureId.rightSeat,
- imageAssetId: RIGHT_SEAT,
- )),
- Expanded(flex: 1, child: actions)
- ])
- ],
- ));
- }
-}
-
-// The temperature selector.
-class _TemperatureSelector extends StatelessWidget {
- final TemperatureId temperatureId;
-
- _TemperatureSelector({Key? key, required this.temperatureId})
- : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- var sizeHelper = LayoutSizeHelper(context);
- return Consumer<HomescreenModel>(
- builder: (context, model, child) {
- return NumberPicker(
- value: model.getTemperature(temperatureId),
- minValue: 18,
- maxValue: 25,
- onChanged: (value) => model.setTemperature(temperatureId, value),
- textStyle: DefaultTextStyle.of(context).style.copyWith(
- color: Colors.teal.shade200,
- fontSize: sizeHelper.baseFontSize,
- ),
- selectedTextStyle: DefaultTextStyle.of(context).style.copyWith(
- fontSize: sizeHelper.baseFontSize * 1.5,
- ),
- itemHeight: sizeHelper.baseFontSize * 3,
- itemWidth: sizeHelper.baseFontSize * 6,
- );
- },
- );
- }
-}
-
-/// The fan speed control.
-class HVACFanSpeed extends StatelessWidget {
- const HVACFanSpeed({Key? key}) : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- return SliderTheme(
- data: SliderThemeData(
- thumbColor: Colors.greenAccent.shade700,
- activeTrackColor: Colors.greenAccent.shade700,
- inactiveTrackColor: Colors.blueGrey.shade200,
- ),
- child: Consumer<HomescreenModel>(
- builder: (context, model, child) {
- return Slider(
- value: model.fanSpeed,
- min: 0,
- max: 300,
- label: model.fanSpeed.round().toString(),
- onChanged: (double newValue) {
- model.fanSpeed = newValue;
- },
- );
- },
- ),
- );
- }
-}
-
-// the button to enable A/C on each seat
-class _SeatButton extends StatelessWidget {
- final SwitchId switchId;
- final TemperatureId temperatureId;
- final String imageAssetId;
-
- const _SeatButton({
- Key? key,
- required this.switchId,
- required this.temperatureId,
- required this.imageAssetId,
- }) : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- var sizeHelper = LayoutSizeHelper(context);
- return Container(
- padding: EdgeInsets.all(sizeHelper.defaultPadding),
- child: Column(
- children: [
- Consumer<HomescreenModel>(
- builder: (context, model, child) {
- return IconButton(
- onPressed: () => model.flipSwitch(switchId),
- iconSize: sizeHelper.largeIconSize,
- icon: SwitchableImage(
- value: model.getSwitchState(switchId),
- imageAssetId: imageAssetId,
- width: sizeHelper.largeIconSize,
- height: sizeHelper.largeIconSize,
- ),
- );
- },
- ),
- SizedBox(height: sizeHelper.defaultPadding),
- _TemperatureSelector(temperatureId: temperatureId),
- ],
- ),
- );
- }
-}
-
-// Each one of the large toggle buttons in the UI.
-class _HVACToggleButton extends StatelessWidget {
- final String? label;
- final String? imageAssetId;
- final SwitchId switchId;
-
- _HVACToggleButton(
- {Key? key, required this.switchId, this.label, this.imageAssetId})
- : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- var sizeHelper = LayoutSizeHelper(context);
- TextStyle buttonTextStyle = DefaultTextStyle.of(context).style.copyWith(
- fontSize: sizeHelper.baseFontSize,
- fontWeight: FontWeight.bold,
- );
- TextStyle unselectedButtonTextStyle = buttonTextStyle.copyWith(
- color: Colors.grey,
- fontWeight: FontWeight.normal,
- );
-
- return Container(
- width: sizeHelper.defaultButtonWidth,
- height: sizeHelper.defaultButtonHeight,
- margin: EdgeInsets.all(sizeHelper.defaultPadding),
- child: Consumer<HomescreenModel>(
- builder: (context, model, child) {
- return OutlinedButton(
- onPressed: () => model.flipSwitch(switchId),
- style: OutlinedButton.styleFrom(
- shape: RoundedRectangleBorder(
- borderRadius:
- BorderRadius.circular(sizeHelper.defaultButtonHeight / 4.0),
- ),
- side: BorderSide(
- width: sizeHelper.defaultBorder,
- color:
- model.getSwitchState(switchId) ? Colors.green : Colors.grey,
- style: BorderStyle.solid,
- ),
- ),
- child: (imageAssetId != null)
- ? SwitchableImage(
- value: model.getSwitchState(switchId),
- imageAssetId: imageAssetId ?? '',
- width: sizeHelper.defaultIconSize,
- height: sizeHelper.defaultIconSize,
- )
- : Text(
- label ?? '',
- style: model.getSwitchState(switchId)
- ? buttonTextStyle
- : unselectedButtonTextStyle,
- ),
- );
- },
- ),
- );
- }
-}
-
-// Each one of the small action buttons.
-class _ActionButton extends StatelessWidget {
- final SwitchId switchId;
- final String imageAssetId;
-
- const _ActionButton(
- {Key? key, required this.switchId, required this.imageAssetId})
- : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- var sizeHelper = LayoutSizeHelper(context);
- return Consumer<HomescreenModel>(
- builder: (context, model, child) {
- return IconButton(
- onPressed: () => model.flipSwitch(switchId),
- iconSize: sizeHelper.defaultIconSize,
- icon: SwitchableImage(
- value: model.getSwitchState(switchId),
- imageAssetId: imageAssetId,
- width: sizeHelper.defaultIconSize,
- height: sizeHelper.defaultIconSize,
- ),
- );
- },
- );
- }
-}
diff --git a/lib/vehicle-signals/viss_config.dart b/lib/vehicle-signals/viss_config.dart
new file mode 100644
index 0000000..c2be5ee
--- /dev/null
+++ b/lib/vehicle-signals/viss_config.dart
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: Apache-2.0
+//import 'dart:convert';
+import 'dart:io';
+
+import 'package:flutter_homescreen/config.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+//import 'package:http/http.dart' as http;
+
+final sockConnectprovider = FutureProvider.family<WebSocket, HttpClient>(
+ (ref, client) => connect(client, ref));
+
+Future<HttpClient> initializeClient() async {
+ SecurityContext ctx = SecurityContext.defaultContext;
+
+ HttpClient client = HttpClient(context: ctx)
+ ..findProxy = null
+ ..badCertificateCallback = (cert, host, port) {
+ return true;
+ };
+ return client;
+}
+
+Future<WebSocket> connect(HttpClient client, ref) async {
+ final config = ref.read(ConfigStateprovider);
+ WebSocket socket = await WebSocket.connect(
+ "wss://${config.hostname}:${config.port}",
+ customClient: client);
+ return socket;
+}
diff --git a/lib/vehicle-signals/viss_connected_widget.dart b/lib/vehicle-signals/viss_connected_widget.dart
new file mode 100644
index 0000000..dd3e4aa
--- /dev/null
+++ b/lib/vehicle-signals/viss_connected_widget.dart
@@ -0,0 +1,65 @@
+// SPDX-License-Identifier: Apache-2.0
+import 'dart:async';
+import 'dart:io';
+
+import 'package:flutter_homescreen/vehicle-signals/viss_config.dart';
+import 'package:flutter_homescreen/vehicle-signals/viss_methods.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:flutter_homescreen/vehicle-signals/vss_providers.dart';
+
+class VISServerConnectedWidget extends ConsumerStatefulWidget {
+ const VISServerConnectedWidget(
+ {Key? key, required this.client, required this.socket})
+ : super(key: key);
+ final WebSocket socket;
+ final HttpClient client;
+
+ @override
+ ConsumerState<VISServerConnectedWidget> createState() =>
+ _VISServerConnectedWidgetState();
+}
+
+class _VISServerConnectedWidgetState
+ extends ConsumerState<VISServerConnectedWidget> {
+ late Timer _timer;
+
+ void _updateSocket() {
+ ref.read(VISServerSocketProvider.notifier).update(widget.socket);
+ }
+
+ @override
+ void initState() {
+ super.initState();
+ VISS.init(widget.socket, ref);
+ Future.delayed(Duration.zero, () => _updateSocket());
+ _timer = Timer.periodic(const Duration(seconds: 2), (timer) {
+ if (widget.socket.readyState == 3) {
+ ref.refresh(sockConnectprovider(widget.client));
+ }
+ });
+ WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
+ widget.socket.listen(
+ (data) {
+ VISS.parseData(ref, data);
+ },
+ onError: (e, stk) {
+ print(e.toString());
+ ref.refresh(sockConnectprovider(widget.client));
+ },
+ );
+ });
+ }
+
+ @override
+ void dispose() {
+ super.dispose();
+ _timer.cancel();
+ widget.socket.close(786887, "Connection lost with server!");
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Container();
+ }
+}
diff --git a/lib/vehicle-signals/viss_connection_widget.dart b/lib/vehicle-signals/viss_connection_widget.dart
new file mode 100644
index 0000000..a2abee7
--- /dev/null
+++ b/lib/vehicle-signals/viss_connection_widget.dart
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: Apache-2.0
+import 'dart:io';
+import 'package:flutter_homescreen/vehicle-signals/viss_config.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+
+import 'viss_connected_widget.dart';
+
+class VISServerConnectionWidget extends ConsumerWidget {
+ VISServerConnectionWidget({Key? key, required this.client}) : super(key: key);
+ final HttpClient client;
+ late WebSocket socket;
+
+ @override
+ Widget build(BuildContext context, ref) {
+ final sockConnect = ref.watch(sockConnectprovider(client));
+
+ return sockConnect.when(
+ data: (socket) {
+ this.socket = socket;
+ this.socket.pingInterval = const Duration(seconds: 2);
+ return VISServerConnectedWidget(client: client, socket: this.socket);
+ },
+ error: (e, stk) {
+ print(e);
+ ref.refresh(sockConnectprovider(client));
+ return Container(
+ child: const Text('Connection Error',
+ style: TextStyle(
+ fontSize: 20,
+ fontWeight: FontWeight.bold,
+ color: Colors.white)));
+ },
+ loading: () => Container(
+ child: Text('Connected',
+ style: TextStyle(
+ fontSize: 20,
+ fontWeight: FontWeight.bold,
+ color: Colors.white))));
+ }
+}
diff --git a/lib/vehicle-signals/viss_methods.dart b/lib/vehicle-signals/viss_methods.dart
new file mode 100644
index 0000000..8adcc80
--- /dev/null
+++ b/lib/vehicle-signals/viss_methods.dart
@@ -0,0 +1,116 @@
+// SPDX-License-Identifier: Apache-2.0
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:flutter_homescreen/vehicle-signals/vss_providers.dart';
+import 'package:flutter_homescreen/vehicle-signals/vss_path.dart';
+import 'package:flutter_homescreen/config.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+
+class VISS {
+ static const requestId = "test-id";
+
+ static void init(WebSocket socket, WidgetRef ref) {
+ authorize(socket, ref);
+ subscribe(socket, ref, VSSPath.vehicleMediaVolume);
+ }
+
+ static void update(WebSocket socket, WidgetRef ref) {
+ get(socket, ref, VSSPath.vehicleMediaVolume);
+ }
+
+ static void authorize(WebSocket socket, WidgetRef ref) {
+ final config = ref.read(ConfigStateprovider);
+
+ Map<String, dynamic> map = {
+ "action": "authorize",
+ "tokens": config.kuksaAuthToken,
+ "requestId": requestId
+ };
+ socket.add(jsonEncode(map));
+ }
+
+ static void get(WebSocket socket, WidgetRef ref, String path) {
+ final config = ref.read(ConfigStateprovider);
+
+ Map<String, dynamic> map = {
+ "action": "get",
+ "tokens": config.kuksaAuthToken,
+ "path": path,
+ "requestId": requestId
+ };
+ socket.add(jsonEncode(map));
+ }
+
+ static void set(WebSocket socket, WidgetRef ref, String path, String value) {
+ final config = ref.read(ConfigStateprovider);
+ Map<String, dynamic> map = {
+ "action": "set",
+ "tokens": config.kuksaAuthToken,
+ "path": path,
+ "requestId": requestId,
+ "value": value
+ };
+ socket.add(jsonEncode(map));
+ }
+
+ static void subscribe(WebSocket socket, WidgetRef ref, String path) {
+ final config = ref.read(ConfigStateprovider);
+
+ Map<String, dynamic> map = {
+ "action": "subscribe",
+ "tokens": config.kuksaAuthToken,
+ "path": path,
+ "requestId": requestId
+ };
+ socket.add(jsonEncode(map));
+ }
+
+ static void parseData(WidgetRef ref, String data) {
+ Map<String, dynamic> dataMap = jsonDecode(data);
+ if (dataMap["action"] == "subscription" || dataMap["action"] == "get") {
+ if (dataMap.containsKey("data")) {
+ if ((dataMap["data"] as Map<String, dynamic>).containsKey("dp") &&
+ (dataMap["data"] as Map<String, dynamic>).containsKey("path")) {
+ String path = dataMap["data"]["path"];
+ Map<String, dynamic> dp = dataMap["data"]["dp"];
+ if (dp.containsKey("value")) {
+ if (dp["value"] != "---") {
+ switch (path) {
+ case VSSPath.vehicleMediaVolume:
+ ref
+ .read(vehicleSignalMediaVolumeProvider.notifier)
+ .update(volume: dp["value"]);
+ break;
+ case VSSPath.vehicleInsideTemperature:
+ ref
+ .read(vehicleSignalInsideTempProvider.notifier)
+ .update(temp: dp["value"]);
+ break;
+ case VSSPath.vehicleOutsideTemperature:
+ ref
+ .read(vehicleSignalOutsideTempProvider.notifier)
+ .update(temp: dp["value"]);
+ break;
+ default:
+ break;
+ }
+ } else {
+ print("ERROR: Invalid VIS response, data not available");
+ }
+ } else {
+ print("ERROR: Invalid VIS response, no 'value' key");
+ }
+ } else if ((!dataMap["data"] as Map<String, dynamic>)
+ .containsKey("path")) {
+ print("ERROR: Invalid VIS response, no 'path' key");
+ } else if ((dataMap["data"] as Map<String, dynamic>)
+ .containsKey("dp")) {
+ print("ERROR: Invalid VIS response, no 'dp' key");
+ }
+ } else {
+ print("ERROR: Invalid VIS response, no 'data' key");
+ }
+ }
+ }
+}
diff --git a/lib/vehicle-signals/vss_path.dart b/lib/vehicle-signals/vss_path.dart
new file mode 100644
index 0000000..3bfc9c1
--- /dev/null
+++ b/lib/vehicle-signals/vss_path.dart
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: Apache-2.0
+class VSSPath {
+ static const String vehicleSpeed = "Vehicle.Speed";
+
+ static const String vehicleEngineRPM =
+ "Vehicle.Powertrain.CombustionEngine.Speed";
+
+ static const String vehicleFuelLevel = "Vehicle.Powertrain.FuelSystem.Level";
+
+ static const String vehicleInsideTemperature =
+ "Vehicle.Cabin.HVAC.AmbientAirTemperature";
+
+ static const String vehicleOutsideTemperature =
+ "Vehicle.Exterior.AirTemperature";
+
+ static const String vehicleFrontLeftTire =
+ "Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure";
+
+ static const String vehicleFrontRightTire =
+ "Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure";
+
+ static const String vehicleRearLeftTire =
+ "Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure";
+
+ static const String vehicleRearRightTire =
+ "Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure";
+
+ static const String vehicleIsChildLockActiveLeft =
+ "Vehicle.Cabin.Door.Row2.Left.IsChildLockActive";
+
+ static const String vehicleIsChildLockActiveRight =
+ "Vehicle.Cabin.Door.Row2.Right.IsChildLockActive";
+
+ static const String vehicleCurrentLongitude =
+ "Vehicle.CurrentLocation.Longitude";
+
+ static const String vehicleCurrentLatitude =
+ "Vehicle.CurrentLocation.Latitude";
+
+ static const String vehicleFuelRate = "Vehicle.OBD.FuelRate";
+
+ static const String vehicleMediaVolume =
+ "Vehicle.Cabin.Infotainment.Media.Volume";
+}
diff --git a/lib/vehicle-signals/vss_providers.dart b/lib/vehicle-signals/vss_providers.dart
new file mode 100644
index 0000000..630a273
--- /dev/null
+++ b/lib/vehicle-signals/vss_providers.dart
@@ -0,0 +1,130 @@
+// SPDX-License-Identifier: Apache-2.0
+//import 'dart:ffi';
+import 'dart:io';
+import 'package:meta/meta.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+
+@immutable
+class VISServerSocket {
+ const VISServerSocket({required this.socket});
+
+ final WebSocket? socket;
+
+ VISServerSocket copyWith({WebSocket? socket}) {
+ return VISServerSocket(socket: socket ?? this.socket);
+ }
+}
+
+class VISServerSocketNotifier extends StateNotifier<VISServerSocket> {
+ VISServerSocketNotifier() : super(_initialValue);
+
+ static final VISServerSocket _initialValue = VISServerSocket(socket: null);
+
+ void update(WebSocket socket) {
+ state = state.copyWith(socket: socket);
+ }
+}
+
+final VISServerSocketProvider =
+ StateNotifierProvider<VISServerSocketNotifier, VISServerSocket>((ref) {
+ return VISServerSocketNotifier();
+});
+
+// Media Volume
+
+@immutable
+class VehicleSignalMediaVolume {
+ const VehicleSignalMediaVolume({required this.volume});
+
+ final int volume;
+
+ VehicleSignalMediaVolume copyWith({int? volume}) {
+ return VehicleSignalMediaVolume(volume: volume ?? this.volume);
+ }
+}
+
+class VehicleSignalMediaVolumeNotifier
+ extends StateNotifier<VehicleSignalMediaVolume> {
+ VehicleSignalMediaVolumeNotifier() : super(_initialValue);
+
+ static final VehicleSignalMediaVolume _initialValue =
+ VehicleSignalMediaVolume(volume: 50);
+
+ void update({int? volume}) {
+ int? n = volume;
+ if (n != null) {
+ n = n.toUnsigned(8);
+ if (n > 100) n = 100;
+ }
+ state = state.copyWith(volume: n);
+ }
+}
+
+//final vehicleSignalMediaVolumeProvider = StateNotifierProvider<
+// VehicleSignalMediaVolumeNotifier, VehicleSignalMediaVolume>((ref) {
+// return VehicleSignalMediaVolumeNotifier();
+//});
+
+final vehicleSignalMediaVolumeProvider = StateNotifierProvider<
+ VehicleSignalMediaVolumeNotifier,
+ VehicleSignalMediaVolume>((ref) => VehicleSignalMediaVolumeNotifier());
+
+// Inside Temperature
+
+@immutable
+class VehicleSignalInsideTemp {
+ const VehicleSignalInsideTemp({required this.temp});
+
+ final double temp;
+
+ VehicleSignalInsideTemp copyWith({double? temp}) {
+ return VehicleSignalInsideTemp(temp: temp ?? this.temp);
+ }
+}
+
+class VehicleSignalInsideTempNotifier
+ extends StateNotifier<VehicleSignalInsideTemp> {
+ VehicleSignalInsideTempNotifier() : super(_initialValue);
+
+ static final VehicleSignalInsideTemp _initialValue =
+ VehicleSignalInsideTemp(temp: 25);
+
+ void update({double? temp}) {
+ state = state.copyWith(temp: temp);
+ }
+}
+
+final vehicleSignalInsideTempProvider = StateNotifierProvider<
+ VehicleSignalInsideTempNotifier, VehicleSignalInsideTemp>(
+ (ref) => VehicleSignalInsideTempNotifier(),
+);
+
+// Outside Temperature
+
+@immutable
+class VehicleSignalOutsideTemp {
+ const VehicleSignalOutsideTemp({required this.temp});
+
+ final double temp;
+
+ VehicleSignalOutsideTemp copyWith({double? temp}) {
+ return VehicleSignalOutsideTemp(temp: temp ?? this.temp);
+ }
+}
+
+class VehicleSignalOutsideTempNotifier
+ extends StateNotifier<VehicleSignalOutsideTemp> {
+ VehicleSignalOutsideTempNotifier() : super(_initialValue);
+
+ static final VehicleSignalOutsideTemp _initialValue =
+ VehicleSignalOutsideTemp(temp: 32);
+
+ void update({double? temp}) {
+ state = state.copyWith(temp: temp);
+ }
+}
+
+final vehicleSignalOutsideTempProvider = StateNotifierProvider<
+ VehicleSignalOutsideTempNotifier, VehicleSignalOutsideTemp>(
+ (ref) => VehicleSignalOutsideTempNotifier(),
+);
diff --git a/lib/volume_slider.dart b/lib/volume_slider.dart
new file mode 100644
index 0000000..0665491
--- /dev/null
+++ b/lib/volume_slider.dart
@@ -0,0 +1,50 @@
+import 'dart:io';
+import 'package:async/async.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:flutter_homescreen/vehicle-signals/vss_providers.dart';
+import 'package:flutter_homescreen/vehicle-signals/vss_path.dart';
+import 'package:flutter_homescreen/vehicle-signals/viss_methods.dart';
+
+class VolumeSlider extends ConsumerWidget {
+ final Color thumbColor;
+ final Color activeColor;
+ final Color inactiveColor;
+ final RestartableTimer? activityTimer;
+
+ VolumeSlider(
+ {Key? key,
+ required this.thumbColor,
+ required this.activeColor,
+ required this.inactiveColor,
+ required this.activityTimer})
+ : super(key: key);
+
+ @override
+ Widget build(BuildContext context, WidgetRef ref) {
+ final signal = ref.watch(vehicleSignalMediaVolumeProvider);
+ return Slider(
+ thumbColor: thumbColor,
+ activeColor: activeColor,
+ inactiveColor: inactiveColor,
+ value: signal.volume.toDouble(),
+ max: 100,
+ label: "Volume",
+ onChangeStart: (value) {
+ activityTimer?.cancel();
+ },
+ onChangeEnd: (value) {
+ activityTimer?.reset();
+ },
+ onChanged: (value) {
+ ref
+ .read(vehicleSignalMediaVolumeProvider.notifier)
+ .update(volume: value.toInt());
+ WebSocket? s = ref.read(VISServerSocketProvider).socket;
+ if (s != null) {
+ VISS.set(
+ s, ref, VSSPath.vehicleMediaVolume, value.toInt().toString());
+ }
+ });
+ }
+}
diff --git a/pubspec.lock b/pubspec.lock
index 21e1809..ff838ee 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -64,13 +64,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
- cupertino_icons:
- dependency: "direct main"
- description:
- name: cupertino_icons
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.0.3"
fake_async:
dependency: transitive
description:
@@ -97,6 +90,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
+ flutter_riverpod:
+ dependency: "direct main"
+ description:
+ name: flutter_riverpod
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.3"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -117,7 +117,7 @@ packages:
source: hosted
version: "3.1.0"
http:
- dependency: transitive
+ dependency: "direct main"
description:
name: http
url: "https://pub.dartlang.org"
@@ -137,13 +137,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.2"
- infinite_listview:
- dependency: transitive
- description:
- name: infinite_listview
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.1.0"
intl:
dependency: "direct main"
description:
@@ -194,26 +187,12 @@ packages:
source: hosted
version: "0.1.5"
meta:
- dependency: transitive
+ dependency: "direct main"
description:
name: meta
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0"
- nested:
- dependency: transitive
- description:
- name: nested
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.0.0"
- numberpicker:
- dependency: "direct main"
- description:
- name: numberpicker
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.1"
path:
dependency: transitive
description:
@@ -242,13 +221,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
- provider:
- dependency: "direct main"
+ riverpod:
+ dependency: transitive
description:
- name: provider
+ name: riverpod
url: "https://pub.dartlang.org"
source: hosted
- version: "6.0.1"
+ version: "2.1.3"
sky_engine:
dependency: transitive
description: flutter
@@ -268,6 +247,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.10.0"
+ state_notifier:
+ dependency: transitive
+ description:
+ name: state_notifier
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.7.2+1"
stream_channel:
dependency: transitive
description:
@@ -317,6 +303,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.0"
+ yaml:
+ dependency: "direct main"
+ description:
+ name: yaml
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "3.1.1"
sdks:
dart: ">=2.18.0 <3.0.0"
flutter: ">=3.0.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index dfc2877..115dde6 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -32,13 +32,11 @@ dependencies:
flutter:
sdk: flutter
- # The following adds the Cupertino Icons font to your application.
- # Use with the CupertinoIcons class for iOS style icons.
- cupertino_icons: ^1.0.2
-
+ meta: ^1.8.0
+ flutter_riverpod: ^2.1.1
intl: ^0.17.0
- numberpicker: ^2.1.1
- provider: ^6.0.1
+ http: ^0.13.5
+ yaml: ^3.1.1
jovial_svg: ^1.1.6
@@ -70,15 +68,6 @@ flutter:
# To add assets to your application, add an assets section, like this:
assets:
- images/Utility_Logo_Grey-01.svg
- - images/HMI_HVAC_Fan_Icon.png
- - images/HMI_HVAC_Left_Chair_ON.png
- - images/HMI_HVAC_Right_Chair_ON.png
- - images/HMI_HVAC_Circulation_Active.png
- - images/HMI_HVAC_Rear_Active.png
- - images/HMI_HVAC_Front_Active.png
- - images/HMI_HVAC_AirDown_Active.png
- - images/HMI_HVAC_AirUp_Active.png
- - images/HMI_Dashboard_Car_720.png
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware