diff options
author | Scott Murray <scott.murray@konsulko.com> | 2022-12-28 15:05:26 -0500 |
---|---|---|
committer | Scott Murray <scott.murray@konsulko.com> | 2022-12-29 06:35:38 +0000 |
commit | 4fbd3fdb9e01c197d972b78961f0d033534a5cc7 (patch) | |
tree | def7bfc0d0f11746006439b33019b61dfc16e1b8 | |
parent | e21709c9601209e26d09dea0a45e37f0636bb605 (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
64 files changed, 797 insertions, 2388 deletions
diff --git a/images/HMI_Dashboard_Car_1080.png b/images/HMI_Dashboard_Car_1080.png Binary files differdeleted file mode 100644 index 387a4b1..0000000 --- a/images/HMI_Dashboard_Car_1080.png +++ /dev/null diff --git a/images/HMI_Dashboard_Car_720.png b/images/HMI_Dashboard_Car_720.png Binary files differdeleted file mode 100644 index 0e4079c..0000000 --- a/images/HMI_Dashboard_Car_720.png +++ /dev/null diff --git a/images/HMI_HVAC_Active.png b/images/HMI_HVAC_Active.png Binary files differdeleted file mode 100644 index f875fcf..0000000 --- a/images/HMI_HVAC_Active.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 948423c..0000000 --- a/images/HMI_HVAC_AirDown_Active.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 17b051e..0000000 --- a/images/HMI_HVAC_AirDown_Inactive.png +++ /dev/null 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="&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 Binary files differdeleted file mode 100644 index f7506f9..0000000 --- a/images/HMI_HVAC_AirRight_Active.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 3c8b4f7..0000000 --- a/images/HMI_HVAC_AirRight_Inactive.png +++ /dev/null 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="&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 Binary files differdeleted file mode 100644 index c3d5b0d..0000000 --- a/images/HMI_HVAC_AirUp_Active.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 770496d..0000000 --- a/images/HMI_HVAC_AirUp_Inactive.png +++ /dev/null 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="&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 Binary files differdeleted file mode 100644 index 510930f..0000000 --- a/images/HMI_HVAC_ChairIndicator_OFF.png +++ /dev/null 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="&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 Binary files differdeleted file mode 100644 index c157391..0000000 --- a/images/HMI_HVAC_ChairIndicator_One.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 4257841..0000000 --- a/images/HMI_HVAC_ChairIndicator_Two.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 680afb2..0000000 --- a/images/HMI_HVAC_Circulation_Active.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 0fac46d..0000000 --- a/images/HMI_HVAC_Circulation_Inactive.png +++ /dev/null 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="&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 Binary files differdeleted file mode 100644 index e55e008..0000000 --- a/images/HMI_HVAC_Fan_Icon.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index d1e2576..0000000 --- a/images/HMI_HVAC_Front_Active.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 69453ff..0000000 --- a/images/HMI_HVAC_Front_Inactive.png +++ /dev/null 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="&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 Binary files differdeleted file mode 100644 index a9a63f2..0000000 --- a/images/HMI_HVAC_Inactive.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 7a08d15..0000000 --- a/images/HMI_HVAC_Left_Chair_OFF.png +++ /dev/null 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="&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 Binary files differdeleted file mode 100644 index c09921d..0000000 --- a/images/HMI_HVAC_Left_Chair_ON.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 21ad47a..0000000 --- a/images/HMI_HVAC_Rear_Active.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 9a9dadf..0000000 --- a/images/HMI_HVAC_Rear_Inactive.png +++ /dev/null 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="&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 Binary files differdeleted file mode 100644 index 823f1ef..0000000 --- a/images/HMI_HVAC_Right_Chair_OFF.png +++ /dev/null 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="&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 Binary files differdeleted file mode 100644 index 5f19eaf..0000000 --- a/images/HMI_HVAC_Right_Chair_ON.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 3f553fe..0000000 --- a/images/vertical_background.png +++ /dev/null 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 |