From e7e5ed2fbd8c8d59ec65d25bdb9f11302e6987a5 Mon Sep 17 00:00:00 2001 From: Justin Hammond Date: Thu, 11 Jun 2020 22:05:22 +0800 Subject: [PATCH] Start work on the Client Interface --- .vscode/settings.json | 4 +- agent/CMakeLists.txt | 3 +- agent/include/daemon.h | 6 +- agent/source/daemon.cpp | 4 +- agent/source/main.cpp | 3 +- client/CMakeLists.txt | 6 +- client/icons/automotive/44x44/air-con.png | Bin 0 -> 1394 bytes client/icons/automotive/44x44/command.png | Bin 0 -> 1350 bytes client/icons/automotive/44x44/message.png | Bin 0 -> 479 bytes client/icons/automotive/44x44/music.png | Bin 0 -> 622 bytes client/icons/automotive/44x44/seats.png | Bin 0 -> 1017 bytes client/icons/automotive/44x44/settings.png | Bin 0 -> 1406 bytes client/icons/automotive/44x44/statistics.png | Bin 0 -> 324 bytes client/icons/automotive/44x44/windows.png | Bin 0 -> 564 bytes client/icons/automotive/44x44@2/air-con.png | Bin 0 -> 2337 bytes client/icons/automotive/44x44@2/command.png | Bin 0 -> 2461 bytes client/icons/automotive/44x44@2/message.png | Bin 0 -> 639 bytes client/icons/automotive/44x44@2/music.png | Bin 0 -> 1106 bytes .../icons/automotive/44x44@2/navigation.png | Bin 0 -> 1604 bytes client/icons/automotive/44x44@2/seats.png | Bin 0 -> 1793 bytes client/icons/automotive/44x44@2/settings.png | Bin 0 -> 2413 bytes .../icons/automotive/44x44@2/statistics.png | Bin 0 -> 394 bytes client/icons/automotive/44x44@2/windows.png | Bin 0 -> 999 bytes client/icons/automotive/icons.svg | 526 ++++++++++++++++++ client/icons/automotive/index.theme | 14 + client/icons/car.png | Bin 0 -> 14952 bytes client/icons/car@2x.png | Bin 0 -> 37391 bytes client/icons/icons.qrc | 29 + client/icons/warning.png | Bin 0 -> 1212 bytes client/icons/warning@2x.png | Bin 0 -> 2118 bytes client/icons/weather.png | Bin 0 -> 1092 bytes client/icons/weather@2x.png | Bin 0 -> 1798 bytes .../applicationwindow-background.png | Bin 0 -> 67 bytes .../applicationwindow-background@2x.png | Bin 0 -> 77 bytes .../button-background-checked-hovered.9.png | Bin 0 -> 347 bytes ...button-background-checked-hovered@2x.9.png | Bin 0 -> 636 bytes .../button-background-checked.9.png | Bin 0 -> 205 bytes .../button-background-checked@2x.9.png | Bin 0 -> 276 bytes .../button-background-hovered.9.png | Bin 0 -> 294 bytes .../button-background-hovered@2x.9.png | Bin 0 -> 560 bytes .../button-background-pressed.9.png | Bin 0 -> 205 bytes .../button-background-pressed@2x.9.png | Bin 0 -> 276 bytes client/imagine-assets/button-background.9.png | Bin 0 -> 196 bytes .../imagine-assets/button-background@2x.9.png | Bin 0 -> 257 bytes .../dial-background-hovered.png | Bin 0 -> 2532 bytes .../dial-background-hovered@2x.png | Bin 0 -> 4629 bytes .../dial-background-pressed.png | Bin 0 -> 1271 bytes .../dial-background-pressed@2x.png | Bin 0 -> 3230 bytes client/imagine-assets/dial-background.png | Bin 0 -> 1037 bytes client/imagine-assets/dial-background@2x.png | Bin 0 -> 2817 bytes client/imagine-assets/dial-handle-pressed.png | Bin 0 -> 115 bytes .../imagine-assets/dial-handle-pressed@2x.png | Bin 0 -> 151 bytes client/imagine-assets/dial-handle.png | Bin 0 -> 143 bytes client/imagine-assets/dial-handle@2x.png | Bin 0 -> 155 bytes client/imagine-assets/frame-background.9.png | Bin 0 -> 168 bytes .../imagine-assets/frame-background@2x.9.png | Bin 0 -> 209 bytes client/imagine-assets/imagine-assets.qrc | 80 +++ .../itemdelegate-background-checked.9.png | Bin 0 -> 120 bytes .../itemdelegate-background-checked@2x.9.png | Bin 0 -> 124 bytes .../itemdelegate-background-hovered.9.png | Bin 0 -> 176 bytes .../itemdelegate-background-hovered@2x.9.png | Bin 0 -> 222 bytes .../itemdelegate-background-pressed.9.png | Bin 0 -> 118 bytes .../itemdelegate-background-pressed@2x.9.png | Bin 0 -> 124 bytes .../itemdelegate-background.9.png | Bin 0 -> 112 bytes .../itemdelegate-background@2x.9.png | Bin 0 -> 118 bytes .../radiobutton-indicator-checked-hovered.png | Bin 0 -> 623 bytes ...diobutton-indicator-checked-hovered@2x.png | Bin 0 -> 1062 bytes .../radiobutton-indicator-checked-pressed.png | Bin 0 -> 271 bytes ...diobutton-indicator-checked-pressed@2x.png | Bin 0 -> 429 bytes .../radiobutton-indicator-checked.png | Bin 0 -> 291 bytes .../radiobutton-indicator-checked@2x.png | Bin 0 -> 452 bytes .../radiobutton-indicator-hovered.png | Bin 0 -> 444 bytes .../radiobutton-indicator-hovered@2x.png | Bin 0 -> 842 bytes .../radiobutton-indicator-pressed.png | Bin 0 -> 249 bytes .../radiobutton-indicator-pressed@2x.png | Bin 0 -> 420 bytes .../imagine-assets/radiobutton-indicator.png | Bin 0 -> 231 bytes .../radiobutton-indicator@2x.png | Bin 0 -> 384 bytes .../imagine-assets/scrollindicator-handle.png | Bin 0 -> 78 bytes .../scrollindicator-handle@2x.png | Bin 0 -> 79 bytes .../slider-background-horizontal.9.png | Bin 0 -> 127 bytes .../slider-background-horizontal@2x.9.png | Bin 0 -> 149 bytes .../imagine-assets/slider-handle-hovered.png | Bin 0 -> 196 bytes .../slider-handle-hovered@2x.png | Bin 0 -> 364 bytes .../imagine-assets/slider-handle-pressed.png | Bin 0 -> 125 bytes .../slider-handle-pressed@2x.png | Bin 0 -> 173 bytes client/imagine-assets/slider-handle.png | Bin 0 -> 125 bytes client/imagine-assets/slider-handle@2x.png | Bin 0 -> 173 bytes .../slider-progress-horizontal-pressed.9.png | Bin 0 -> 126 bytes ...lider-progress-horizontal-pressed@2x.9.png | Bin 0 -> 148 bytes .../slider-progress-horizontal.9.png | Bin 0 -> 126 bytes .../slider-progress-horizontal@2x.9.png | Bin 0 -> 148 bytes .../switchdelegate-background.9.png | Bin 0 -> 112 bytes .../switchdelegate-background@2x.9.png | Bin 0 -> 118 bytes .../switchdelegate-handle-checked-hovered.png | Bin 0 -> 253 bytes ...itchdelegate-handle-checked-hovered@2x.png | Bin 0 -> 441 bytes .../switchdelegate-handle-checked.png | Bin 0 -> 145 bytes .../switchdelegate-handle-checked@2x.png | Bin 0 -> 195 bytes .../switchdelegate-handle-hovered.png | Bin 0 -> 253 bytes .../switchdelegate-handle-hovered@2x.png | Bin 0 -> 452 bytes .../switchdelegate-handle-pressed.png | Bin 0 -> 145 bytes .../switchdelegate-handle-pressed@2x.png | Bin 0 -> 195 bytes .../imagine-assets/switchdelegate-handle.png | Bin 0 -> 139 bytes .../switchdelegate-handle@2x.png | Bin 0 -> 179 bytes .../switchdelegate-indicator-pressed.png | Bin 0 -> 129 bytes .../switchdelegate-indicator-pressed@2x.png | Bin 0 -> 180 bytes .../switchdelegate-indicator.png | Bin 0 -> 129 bytes .../switchdelegate-indicator@2x.png | Bin 0 -> 180 bytes .../toolseparator-separator-vertical.9.png | Bin 0 -> 115 bytes .../toolseparator-separator-vertical@2x.9.png | Bin 0 -> 120 bytes client/include/client.hpp | 10 +- client/qml/CustomGlow.qml | 57 ++ client/qml/FeatureButton.qml | 70 +++ client/qml/GlowingLabel.qml | 90 +++ client/qml/StatsView.qml | 45 ++ client/qml/automotive.qml | 419 ++++++++++++++ client/qml/basecomponent.qml | 4 + client/qml/components/Voltage.qml | 3 + client/qml/main.qml | 15 + client/qml/qml.qrc | 9 + client/qtquickcontrols2.conf | 10 + client/sbcbmc-client.qrc | 1 + client/source/client.cpp | 44 +- client/source/main.cpp | 15 +- 123 files changed, 1440 insertions(+), 27 deletions(-) create mode 100644 client/icons/automotive/44x44/air-con.png create mode 100644 client/icons/automotive/44x44/command.png create mode 100644 client/icons/automotive/44x44/message.png create mode 100644 client/icons/automotive/44x44/music.png create mode 100644 client/icons/automotive/44x44/seats.png create mode 100644 client/icons/automotive/44x44/settings.png create mode 100644 client/icons/automotive/44x44/statistics.png create mode 100644 client/icons/automotive/44x44/windows.png create mode 100644 client/icons/automotive/44x44@2/air-con.png create mode 100644 client/icons/automotive/44x44@2/command.png create mode 100644 client/icons/automotive/44x44@2/message.png create mode 100644 client/icons/automotive/44x44@2/music.png create mode 100644 client/icons/automotive/44x44@2/navigation.png create mode 100644 client/icons/automotive/44x44@2/seats.png create mode 100644 client/icons/automotive/44x44@2/settings.png create mode 100644 client/icons/automotive/44x44@2/statistics.png create mode 100644 client/icons/automotive/44x44@2/windows.png create mode 100644 client/icons/automotive/icons.svg create mode 100644 client/icons/automotive/index.theme create mode 100644 client/icons/car.png create mode 100644 client/icons/car@2x.png create mode 100644 client/icons/icons.qrc create mode 100644 client/icons/warning.png create mode 100644 client/icons/warning@2x.png create mode 100644 client/icons/weather.png create mode 100644 client/icons/weather@2x.png create mode 100644 client/imagine-assets/applicationwindow-background.png create mode 100644 client/imagine-assets/applicationwindow-background@2x.png create mode 100644 client/imagine-assets/button-background-checked-hovered.9.png create mode 100644 client/imagine-assets/button-background-checked-hovered@2x.9.png create mode 100644 client/imagine-assets/button-background-checked.9.png create mode 100644 client/imagine-assets/button-background-checked@2x.9.png create mode 100644 client/imagine-assets/button-background-hovered.9.png create mode 100644 client/imagine-assets/button-background-hovered@2x.9.png create mode 100644 client/imagine-assets/button-background-pressed.9.png create mode 100644 client/imagine-assets/button-background-pressed@2x.9.png create mode 100644 client/imagine-assets/button-background.9.png create mode 100644 client/imagine-assets/button-background@2x.9.png create mode 100644 client/imagine-assets/dial-background-hovered.png create mode 100644 client/imagine-assets/dial-background-hovered@2x.png create mode 100644 client/imagine-assets/dial-background-pressed.png create mode 100644 client/imagine-assets/dial-background-pressed@2x.png create mode 100644 client/imagine-assets/dial-background.png create mode 100644 client/imagine-assets/dial-background@2x.png create mode 100644 client/imagine-assets/dial-handle-pressed.png create mode 100644 client/imagine-assets/dial-handle-pressed@2x.png create mode 100644 client/imagine-assets/dial-handle.png create mode 100644 client/imagine-assets/dial-handle@2x.png create mode 100644 client/imagine-assets/frame-background.9.png create mode 100644 client/imagine-assets/frame-background@2x.9.png create mode 100644 client/imagine-assets/imagine-assets.qrc create mode 100644 client/imagine-assets/itemdelegate-background-checked.9.png create mode 100644 client/imagine-assets/itemdelegate-background-checked@2x.9.png create mode 100644 client/imagine-assets/itemdelegate-background-hovered.9.png create mode 100644 client/imagine-assets/itemdelegate-background-hovered@2x.9.png create mode 100644 client/imagine-assets/itemdelegate-background-pressed.9.png create mode 100644 client/imagine-assets/itemdelegate-background-pressed@2x.9.png create mode 100644 client/imagine-assets/itemdelegate-background.9.png create mode 100644 client/imagine-assets/itemdelegate-background@2x.9.png create mode 100644 client/imagine-assets/radiobutton-indicator-checked-hovered.png create mode 100644 client/imagine-assets/radiobutton-indicator-checked-hovered@2x.png create mode 100644 client/imagine-assets/radiobutton-indicator-checked-pressed.png create mode 100644 client/imagine-assets/radiobutton-indicator-checked-pressed@2x.png create mode 100644 client/imagine-assets/radiobutton-indicator-checked.png create mode 100644 client/imagine-assets/radiobutton-indicator-checked@2x.png create mode 100644 client/imagine-assets/radiobutton-indicator-hovered.png create mode 100644 client/imagine-assets/radiobutton-indicator-hovered@2x.png create mode 100644 client/imagine-assets/radiobutton-indicator-pressed.png create mode 100644 client/imagine-assets/radiobutton-indicator-pressed@2x.png create mode 100644 client/imagine-assets/radiobutton-indicator.png create mode 100644 client/imagine-assets/radiobutton-indicator@2x.png create mode 100644 client/imagine-assets/scrollindicator-handle.png create mode 100644 client/imagine-assets/scrollindicator-handle@2x.png create mode 100644 client/imagine-assets/slider-background-horizontal.9.png create mode 100644 client/imagine-assets/slider-background-horizontal@2x.9.png create mode 100644 client/imagine-assets/slider-handle-hovered.png create mode 100644 client/imagine-assets/slider-handle-hovered@2x.png create mode 100644 client/imagine-assets/slider-handle-pressed.png create mode 100644 client/imagine-assets/slider-handle-pressed@2x.png create mode 100644 client/imagine-assets/slider-handle.png create mode 100644 client/imagine-assets/slider-handle@2x.png create mode 100644 client/imagine-assets/slider-progress-horizontal-pressed.9.png create mode 100644 client/imagine-assets/slider-progress-horizontal-pressed@2x.9.png create mode 100644 client/imagine-assets/slider-progress-horizontal.9.png create mode 100644 client/imagine-assets/slider-progress-horizontal@2x.9.png create mode 100644 client/imagine-assets/switchdelegate-background.9.png create mode 100644 client/imagine-assets/switchdelegate-background@2x.9.png create mode 100644 client/imagine-assets/switchdelegate-handle-checked-hovered.png create mode 100644 client/imagine-assets/switchdelegate-handle-checked-hovered@2x.png create mode 100644 client/imagine-assets/switchdelegate-handle-checked.png create mode 100644 client/imagine-assets/switchdelegate-handle-checked@2x.png create mode 100644 client/imagine-assets/switchdelegate-handle-hovered.png create mode 100644 client/imagine-assets/switchdelegate-handle-hovered@2x.png create mode 100644 client/imagine-assets/switchdelegate-handle-pressed.png create mode 100644 client/imagine-assets/switchdelegate-handle-pressed@2x.png create mode 100644 client/imagine-assets/switchdelegate-handle.png create mode 100644 client/imagine-assets/switchdelegate-handle@2x.png create mode 100644 client/imagine-assets/switchdelegate-indicator-pressed.png create mode 100644 client/imagine-assets/switchdelegate-indicator-pressed@2x.png create mode 100644 client/imagine-assets/switchdelegate-indicator.png create mode 100644 client/imagine-assets/switchdelegate-indicator@2x.png create mode 100644 client/imagine-assets/toolseparator-separator-vertical.9.png create mode 100644 client/imagine-assets/toolseparator-separator-vertical@2x.9.png create mode 100644 client/qml/CustomGlow.qml create mode 100644 client/qml/FeatureButton.qml create mode 100644 client/qml/GlowingLabel.qml create mode 100644 client/qml/StatsView.qml create mode 100644 client/qml/automotive.qml create mode 100644 client/qml/basecomponent.qml create mode 100644 client/qml/components/Voltage.qml create mode 100644 client/qml/qml.qrc create mode 100644 client/qtquickcontrols2.conf diff --git a/.vscode/settings.json b/.vscode/settings.json index 840b58b..41eaeac 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,7 +3,9 @@ "qobject": "cpp", "array": "cpp", "string": "cpp", - "string_view": "cpp" + "string_view": "cpp", + "typeinfo": "cpp", + "locale": "cpp" }, "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools" } \ No newline at end of file diff --git a/agent/CMakeLists.txt b/agent/CMakeLists.txt index 57e0ab2..09aa71b 100644 --- a/agent/CMakeLists.txt +++ b/agent/CMakeLists.txt @@ -38,8 +38,7 @@ add_executable(sbcbmc-agent target_include_directories(sbcbmc-agent PRIVATE "${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/include/" - "${CMAKE_SOURCE_DIR}/plugins/thermal/include/" - "${CMAKE_SOURCE_DIR}/plugins/thermal/" + "${CMAKE_CURRENT_BINARY_DIR}/include/" ${LibUSB_INCLUDE_DIRS} ) diff --git a/agent/include/daemon.h b/agent/include/daemon.h index cd6c9e5..9723735 100644 --- a/agent/include/daemon.h +++ b/agent/include/daemon.h @@ -7,12 +7,12 @@ #include "pluginbase.h" -class daemon : public QObject +class sbc_agent : public QObject { Q_OBJECT public: - daemon(QObject *parent = nullptr); - ~daemon(); + sbc_agent(QObject *parent = nullptr); + ~sbc_agent(); private: QHash m_Plugins; QRemoteObjectHost *m_rohost; diff --git a/agent/source/daemon.cpp b/agent/source/daemon.cpp index 6fafd58..bc6e801 100644 --- a/agent/source/daemon.cpp +++ b/agent/source/daemon.cpp @@ -2,7 +2,7 @@ #include "dcdc-usb-200.h" #include "thermal.h" -daemon::daemon(QObject *parent) : +sbc_agent::sbc_agent(QObject *parent) : QObject(parent) { this->m_roregistryhost = new QRemoteObjectRegistryHost(QUrl("tcp://0.0.0.0:1999"), this); @@ -22,7 +22,7 @@ daemon::daemon(QObject *parent) : } } -daemon::~daemon() +sbc_agent::~sbc_agent() { } \ No newline at end of file diff --git a/agent/source/main.cpp b/agent/source/main.cpp index cbc1093..b225907 100644 --- a/agent/source/main.cpp +++ b/agent/source/main.cpp @@ -27,8 +27,7 @@ int main(int argc, char *argv[]) { parser.process(a); - daemon carserver; - carserver; + sbc_agent sbcagent; a.exec(); } \ No newline at end of file diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index e026827..c0fb529 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -18,6 +18,7 @@ find_package(Qt5 COMPONENTS RemoteObjects REQUIRED) find_package(Qt5 COMPONENTS Qml REQUIRED) find_package(Qt5 COMPONENTS Quick REQUIRED) find_package(Qt5 COMPONENTS QuickControls2 REQUIRED) +find_package(Qt5 COMPONENTS Charts REQUIRED) find_package(PkgConfig REQUIRED) @@ -45,6 +46,9 @@ add_executable(sbcbmc-client ${HEADERS} ${REPSOURCES} sbcbmc-client.qrc + qml/qml.qrc + imagine-assets/imagine-assets.qrc + icons/icons.qrc ) target_include_directories(sbcbmc-client PRIVATE @@ -55,4 +59,4 @@ target_include_directories(sbcbmc-client PRIVATE ${LibUSB_INCLUDE_DIRS} ) -target_link_libraries(sbcbmc-client Qt5::Core Qt5::RemoteObjects Qt5::Qml Qt5::Quick) \ No newline at end of file +target_link_libraries(sbcbmc-client Qt5::Core Qt5::RemoteObjects Qt5::Qml Qt5::Quick Qt5::Charts) \ No newline at end of file diff --git a/client/icons/automotive/44x44/air-con.png b/client/icons/automotive/44x44/air-con.png new file mode 100644 index 0000000000000000000000000000000000000000..70175f6f05d41345794f1816a1b89698bdd429b4 GIT binary patch literal 1394 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv9xeFgXPHgt!8^4FCT({Qn>Ne^tZ( z{b~Qtg#N#p`~P;r|NVvkj{&(Q|1W0!znb*_Nbdg=KyJbR^U42@W&b}3Was`rm+}8% z{{ItM|4#wAIUw$ZT#$MYHygw~pY#7>=Ks@K|IeoXKcD^oLJmm$LdO5ong7p%wV%%Z ze+I|~>dpFp9w-js0@*nrT_7o-IS_URn4Jky3AF1h&`cmZ^ZywLBm4h(2s;C$03@Cb zRs+-y5eG6L;$Zb4V}W)-^g=8GvcXz_f*^!!0)z`x09Fsug`^!Q2s9Z=0!@Ip5Ud8I z9^wqR6%f5}F4%b>Wk@QaMu7!ECPPdB8w*v5%!cSiB0F9SHZe6bx3IFdv9)t>baHlabNBG{_Vx1*2nr4f4GWKm zijIwoPe@EkNzcg2&M7D^si>@~uBol7Z)k35>*(z2nJ{tklxfpv%$zlE{=!9zmn>bj ze8s9Y>(+1Fv}Nn|oxAqz-M9b1!9z!m9Y1mE^qI5g&R@KIVCD{GO5a% zIXx#Y-jjK={a@Z4(_YTA>wX5v@CyD)E7sAw=(c#)0kO#QEk@5;A{iz2UA zv@d4QJgJ0x4q9g{GS4Q;Oifj`tIm4($uK6&a?`|BHvRK=#xKwo-L7+-$we!jrA|co z;3h@Y zgkAaP)!iSe*10aJHpwx*Z@>KT+6{~KdDe&N1{IzCq3nfGGb zx@G2X@%K=X-}ie_dBKa?pH)k={FFJ?Z=3pjtxum4!{Su6e3;OVH(8wxqDhq67mj`-9(9Tz<`q+@Tuv;B3;LDJBY~uToX?Shp5@ z6|jq{mU%p-Hik`O_w|Fb_*mt3HEv~Du-*PfY{EXa6H@vo3%RvQQ-lIC>O!ybNiJSA z>r7=kMwEUdw2?7g?v$38mV76U3gJzf1=);T3K0RXh| B6HfpD literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44/command.png b/client/icons/automotive/44x44/command.png new file mode 100644 index 0000000000000000000000000000000000000000..8f712c788108eb7f3ef3d1d08a5574d6540f3b1f GIT binary patch literal 1350 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv9xeFuo7)32_B-8UFuo`2Roj|Eh-n z`_ulP3H^UH_y6sL|N9I79|Lkr{$I@ce>Lg<5g@zZ|M}$q$Fl#Q1hRAgpUe1vG5`OG ztpBHSK-AeE~Nq!FkRA_Y_r)DBd07H9>K0W<{20IC5h0CRy-KsJaA)(&BV zNFWzXLQR8dhp2>_26G9>D4+=tdm*O5*jIHr z$3VoPB-k_*5wLoY^T6tXB*F@~V<56H5^4oZ3os~VC1a&q(Xi%ZHYDyyn%nwnc$+uA$2`X)}EGIjdgdGi-8TD)ZG zvgIpRuUWfp{f5n3w(i)uYxkbL`}Q9=c=+hClc!FfIeY2ym1{Td+`E7O!NW(7pFDl` z{Kd;xuiw0V`|kb6PoKZP%{yAgz`&H~>Eak-aXL9+f&7CjWuJOGK9pX0rm`gH#Nxcb z;H)L<^HZ`uFOn*EwDC$6dbV7$@L+GnP$AmI{ z0&iZb(rH`m_c85A8r$OgDWW`Ejn_QL*|^|MinN-=^)$9wSuZs?wz^$b@_BnI`=`Jv zb?-$#)?So87dDH_Ok)kpL#_Q)De-J#$|;}b925!O%ox+L@{G7Q3JHDVbI<|6@eTx$cPv zf>(3w3f0Z>?Emt)|4c??$V;UI4h#humOt9sf8WY3GPuCcz`%K`aqZtbELxxf(bLt> JWt~$(698Hx-t7PY literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44/message.png b/client/icons/automotive/44x44/message.png new file mode 100644 index 0000000000000000000000000000000000000000..7773ca63baf6df3f12dd37b0eab1b01e3ba71fbc GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv81S$pJngu0T5b|Aox|r*rI0n z1ZWPB0Wk+C2s8nt5{5urur82dFgmmM-`&?hXBn0R`2{nmsq5+)n)-)?M8(F%XB1Ub zR#w;4H8!`-Sg>^I^3|u$U%7Gf(c`Djp1*wg=Iy6XU%omY%69;2KIQ4+7-Dhy?Umzv zhYWbw64*0truJ`gUpVFOKY#Zy=FB%m>wm@9{8YI;QKrGD^+dw{vnSW(KYY6T`Q%I+ zGcmsB)2*&fb?v@ztkFGFth8B&&8e7M@7UH2634b|(J0%x$>LmAE@#f`D?vZPrM;6r ztc%(loRt~lnHRMA^WI?gv{g~b zKYoX)c_~Y5jM^=+)ysOuhM@G1Et{Oq=j^HSd)X|z@0ysL{O5g5hdEA(D9MNPOFmiW S*VGF16@#a%pUXO@geCx}IRA72 literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44/music.png b/client/icons/automotive/44x44/music.png new file mode 100644 index 0000000000000000000000000000000000000000..dc73322bfed1583f87cf053a9134df7fd17dd788 GIT binary patch literal 622 zcmV-!0+IcRP)0Ie&cmIPI|*cDWMpKtlQBKpKcUiy z@A_OPWmYq;(r$-BAQXfKLqK1QZUWOj866XDB=Gh;2q<*+lrDbNzvLtq&MVrS zgE6oZz$U-}KU>wsEKY(ok@bHyCla1eY0#nDg8o%g4_a5-VAC1!ZVB&GqWVa6uYs&5 zYVrf$?glKL_D%5?j;UM#w)?JMjj&6={IZeHh6-PKfBcFKFZkwow}ipbW{oE7ZL9ig z7QW0Y+PeW8j$v*m;mo9&^Syr^Z(+eF;6Q_^`!VjUPsR;9JP+LQy=No5TSC}nTX`Ck zLFX!Hq$ZLI)_Tbjc}4v>f@2PSDYNn6lpSn&oMmKWWMr(#FU%af#|rJm1poj507*qo IM6N<$f))B4!~g&Q literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44/seats.png b/client/icons/automotive/44x44/seats.png new file mode 100644 index 0000000000000000000000000000000000000000..2f9eaa622726b6326909398ebe2714f1444db933 GIT binary patch literal 1017 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv9xeFfI@932_B-8UFuo`2Roj|Eh-n z`*Z)_PWZpSKy zoXP%wA@l#~od0Li|DOYrU^VBn|DVbFe?H^?>CFFUGyh-A0WpAj&*c0+n*|a%2SnNb zfyy9UpdmmJpq8@`22dA}0W<`x9m>f1e;TX+s0^eMVjz$WGX!Klgbh&uG$9LSEYKVv z8)6{L5RlbicY=&U)d-OSItj#pmMG%Cme~9orskH`_KvRZ z-o6QwrcRqVYtGzx^A{{%xq9t}&0Dwc*tL7_zC*`Oo;q{x;-$-1Zrr?m=fT6rPo6$| z{_@qEx9{G6{QULzAJGGcd4XxE#M8ww#Nu>vf`rF`lYU!*POmz*&OzzwFOd_55iSDD z!J!7lC8gHsBa1+zp? zDQ<}}GmJbX?DV@*@G(~=$K2&U5o<$uTb{j7I6NWw>X(kwXHI!_@|Ru;e!|9O(eA7g zv)FJ7+t#$7Gghoxks*1LP4!v%wI!@mG8$4XvX)*HJ-(bnsaW#p7F(eM+g^*iFI+t} zBjNDFqJJ-x#7q=ld)$#bYv3ZxQFLVO4UxMG5~}ZX^*+AH^5#&1cHb6P;R*VOSB5Qc zu`3=9v#Jy@5o SzV{rIhdo{WT-G@yGywn#k1_WE literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44/settings.png b/client/icons/automotive/44x44/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..b65598b58c6154d33f9f047406a38f18a8217d70 GIT binary patch literal 1406 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv9xeFsTOkgt!8^4FCT({Qn>Ne^tZ( z{b~Qtg#N#p`~P;r|NVvkkCpttnDzf^(*Gm5|4#s=3jUwZ{C_F=|FPWv=Q93Z%>REP z>;EaBc+UTGxgeDwb~Z@re9r%ing37c{y&rT|7`mI^V$C|0u_VQgAIo;5F}hX*g%jt7=ereYKQ1TG6!NQNEz7i5XC?e zWGPH9PzvN8I2WuK#D(|{B96>PR*9++>IRqssPkZIAkILx2o!n{1P&ZzDHJxuYe1DJ zIX)f$rjzX@L4Lsuj7-cdtZeKYoZLLTeEb4}LZV{g5|UCfvU2hYib~2Vs%jdVS~`0A zhDOHbR@OGQcJ>aAPR=f_ZtfnQzWxD0!69K0kukAx@d-)EDXD20nOWI+`2|JAC1vFm z)phmFEghX*-MxJiCQh0%b=u6?bLK8sxOnOE6)RV-S-Woi#?9Nd@7}X_-~I!K4j(yo z{KTm&lpTB+o@$=X3pz87f zV44r~ba4!^IGvoZKwW@=*=^Akul#6UmT1$Cpf}N6O2x_@K`{?mm1LzpYE8Px6zrp| z;vn+hs!ZUh#Nz(Yw}+-yIyppTtF_!uW>Trh{vDnWsJq)>f_<`U$DVk1F&Bk}6IvZp z)67=0F3VaFrLgkWmNiFw1*A021}~mg%_J$YN-@hZ&qZiUe)A8e*wPC*W;G9kTMnhJ zId@>~wMsqxRSf@a)MK(lr)4kVUa22`Y~8fvMfS@Q61C=>T)XZd^YbIu6IVTrTE~%k za_aiIHkrAiJ=uo5%6|)wO?8Z{I=!gzSW&CKdF!v*UF~K9C!Cfx&tAU%rbWE$A;G95 z&O`}a;dX;NzZ(-AIYSCP7p-Er)3wCMM@(SHLDAico#%quH;RZ0hU}RsD;F3Y!KoRi z%)$S_x2HwK-10z#+1wj*CT?A5eVqMS$a2mLDn~E9O*<>0siR~4>`QTz-#5u<&-)u-d2Z5ALAGCs#acTS8d;u{xOnyk_vWdN=Gzw= zpBFebIZCx>rp2XI8}o|19xnm`dY?L zWZ&JWx;tHxzk>o;jcy;vY`V(hDLmiQVxOe(uM0j&TI*TbHec;o`MO$mp`pZ%lDy?+ zW?Ol9-soC-eJ#$Byy3ji@#^g*=br3c;vmu;l`zLYMwZh{EXZ4d^+3{wgipWh*6b4$ zYrHT)f?K0)n$(|)(=Wpc)YggTe~DWM4fm#PE& literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44/statistics.png b/client/icons/automotive/44x44/statistics.png new file mode 100644 index 0000000000000000000000000000000000000000..979702989b89498eb91c3878bfca96fe59c26c2c GIT binary patch literal 324 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 literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44@2/command.png b/client/icons/automotive/44x44@2/command.png new file mode 100644 index 0000000000000000000000000000000000000000..918e2b69eb41b27dd78911c3b72ff3271de2d8fa GIT binary patch literal 2461 zcmZWrc|25mA0DHbdPkGO*q3Z$3*C$*DNBPaF(X1rGh{G`iJLnpLko&jNS3ZGH;I^3 z_H2=51`~Q+OIa${5+cn-ocGL(bbId~^PA`SKHu{^&pDs-$BDz)St1dV2nYm%v^s)y z0RLS$zis^BX<<_jhd`i3I9o?^kU{`}1^`Y#Aq}V_0SqUgF8~-M0Cg0g1*9PWiwyL6 z051c8R*(h(UB19;Pp%XIbov0SK%kWjw1bjA&>6s4=3qad(;r~@0v!PWgA6defi6Fw z8>IdK!yD)Xu@4vf0!+|^%uyL21|2{QN<0c;f1rcRl|VyZj>_->m^|#qabSYx;2gxh zoX|}QmfWB|oU6cVIW;x`m<5{rn}WIAHJ&GkIjz1&aOh^lKQOq%DYlu&t+(Oxuapf# zUJ%b5tihxIGzUYul;gvjZ z+xL>Z`NnU-<*DD#A1UC3`&j-j=qLK!xkGU0E+G+=sF=8fq_m8zoVlX^ET^WN`SIl1@q9~3++d{k8YxTKW+ zyrQzIx~BF;U427i)6195Ev;?s9Smk?S2yc*Pw$)m_WwCBI5hnB-N@+J`1=nZC;pn8 znx6SIJ2$_u_+{xU`|stI)o*L-GE&{^5D2W+3Tx`<()7u7`Lv^xh;g6=>82S>SM!-f zF@8IWl3%1$-l%M8+M%q!^CY7iXSFZ2$kq!F#SWU#`(VegyKs79WSm7WmEUmj1#rYT zR_<+h@EjxK!`8_8Zy0t>a9!YRL`o z7M;+Z8bnRE*CCQL@7Ej}po~w+lgJCFT?P(f?7Oe6j`C+l;2+T^MGSj%U8mS)177or zXq{n$Z25)wn9<(`>k{mQ@H0J>(frb~3nc4^NK$-#1cr6PL9TVBsY0S@0AQ;_AkN0q zZRw&t(F!FwR@E%oj`pkPvJYv8N5XJYUFrI{$ne@0e(62N+kH)zq@cU-wi2^PNz6rpQU%3~#^sWWCojoEb9U~ijyp45s9k~f*J=Nc#y$}=zJ4Da;qz*q*;7Ad!z z)kw~(yQxO*jnZhpdlp(!Y~8j7MtRAtd^e2UzKINTwW#G5vOi&80#g?!ar>w^1N-)} zO%bZ3$%~|rh`nOHcu7ir1M8&tVSn$=Mr79(x46Zbh&6G!hnQoy z`q7EV(xFRvlD}jG)FN#h(_NA&V`N#$UL$>^uHo~~sV+q%c=Dp%BSWP^N0^I!1OGAj z4s}#5mYt1*2%bNnfVw777uo?fJr)Hgn z0(fi=-ycn-?G~>6(&_|d$6I5%rhFx}WeTL?}ZN~6iuChrtv9Svgnj7vS9kG<>KKLP8%q57`APCiNqpZoeO7M_MH;k!G1 zE$>KfYfM0xF3a{l-QZCJYKYmZ9x4M1Wh-ho`S5sPnwt!$IbmZvP(-qDl=&&7y!7GL|M zKeVD#YHwMks5<^RG%mX9DkbjFis8Z%cD%4^Wj%62h;@EQqET_>pmmr0;`PwTXDuVNrV;{5qd;r7qQQu*+ZlIqt$N%a1X_$?zLgRB z07}%LGzYr>8~Q@{NPTs;2(!4_F#o-(#QAHWRqC5NT3gy8g9QRAef`tvaP~RswUnFGQfpIcaXhIZG_C zMIp9qt-3p78k=)91GiRw(cScHQmN&GHcYYb1Lg@z%<*i`gyZACILni+`q42(p}D>_ zUq39hrQq~!=DpBLr>-RT43;3%++dE&Ro2D=y)||ht^3oZOir~BW~rI@t!}4LtttZJ z3-J0=FTSD#Q~&blv9E|)@q#04zXZyJKzuaYPKduVj*eB$jf^;VyiF6rUVJd6wk_`I zM-26%5ZP!i;EHf(ywQYBoHU2*446RZojfYyz_K)-oP20xx?tQlS*G1HaQF%5JIl)4 K4*S@Q5dA+4y*;4- literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44@2/message.png b/client/icons/automotive/44x44@2/message.png new file mode 100644 index 0000000000000000000000000000000000000000..1debfdfb26382e08ea31b69a7dca9b1d4ccc74aa GIT binary patch literal 639 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL3?$vW53m8Lt^l79S0K&s|9{&5Gll<;0m+R2 z7t;Tq%l&^Y>;L(T|EIy|Z1(?ing7pb{6Cxd{~VCa0?C5d*&y~AARB@p-0c5nzzm2W zTo$4QsuH3;6RHv<1w>!o^h*I9qgxW>7tFxO%E=|IrEg$p=H#56)7Uw2>a@Ab*6!Z3 z_wbRk7cX7D`}D<|4<9~${`&pr-+zneKT}{}U@Z4^aSVxQeS70%)L{jYw!~FOtoRGp zL@l>E()fG7ZLpUH3)6o^fAgw+cW>_TcS>+Pj#SdWd$>|cjCE6)E8nuy+UEShsgIcqeBZ^e zEIVaOKVNLJRfpF-&u&{nld@`&1Rc7bB#zt^LV` zr3amhj;J0gw0suyaE46j$pVezu~s%a1Lob?WxqZ8@x!N|?^+jG*Y8`sIza8vuf21x zUif@ZN$GOJ=6PXe#Xf2WzgbJ(JSRAl$@+f$>2ortSZ>@7FIqNFKeYJ5*~Xs3d;i`# z)hB(*KxPiJW$|4Hw}&TwPWt`t&1nUjf;?d(Hs^Kv&IT{4jF=9u6WATbmeBP2MCFVp z>z?ZPl&qc8d@@fx{Q=YU6OucQ#Gd5$tO$IP^;5U@>0c}D-Jj-}&D{MZP48uB?Y^1! hxnzzP%6xDC&B``0XU$(Ng9=be@^tlcS?83{1OTbsOp*Wq literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44@2/music.png b/client/icons/automotive/44x44@2/music.png new file mode 100644 index 0000000000000000000000000000000000000000..01a3ece417bb118d6f97adc6b4385261e323f07a GIT binary patch literal 1106 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL3?$vW53n&XFfI@932_B-8UFuo`2Roj|Eh-n z`_ulP3H^UH;s5@^|Hn%HU(EV{6)2MY|5*0_lR!r9|8p7tFXsP00c7WZ*cWpCUrhgh zKJ)+Stp8`z|DVeSiJZy)ecI>Y^DJ89_s;;S}t!rd#VrFh*YwzIZ<+v*#~fzIy%U?Ys9MK7RWA`RljuKYsrH^Y>qy zgVtPNQab19;usQf`0e%7U?xX~V;@C#Gw%ih>kZLI-ia}@^7z!)ZP6Fm`&ndf^7Was zZ~njC{+rkM&RN}-4;40Y@8vHad9pq1g4@b!QYZ?u*Pm&H1;^T)TaH*P}c2_s-4;*8a<~TRP$NECzsAVe{-|@%>(Ig9tfI!(6p|INd3Us7Q!ZNxWX#pIGbG>JO75p z{u>AX<~(qIwIMp{_pyIf_ZV|6il6^o&|^1i!}@ohGrWcQ?ugBqS^e^0-0TGA>z#f- zZHrEx*wnf7-jDnT3A42eJ}EIgIH%Xjee{3nuBRK~)_&{fRxOw(pT|Q=KG@59k;5V8%UP=^!L^k)$J7e!^FOZnPJ^7 z<)?Quos)KW{o?F@)A#UMjQmdjwzwzrT7{!J-vvi&nNCmPxO3R0O7G$ui-_uYfrXK8 tKHff^sMr~xx1=hwc$G>II5y^2v2J~wD)5}sL>N>!c)I$ztaD0e0sxgUd|3bh literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44@2/navigation.png b/client/icons/automotive/44x44@2/navigation.png new file mode 100644 index 0000000000000000000000000000000000000000..3a18fb5f4e2e8227dd6cbaa30152931d763cb9eb GIT binary patch literal 1604 zcmZvd3p7-D9LLA2ythO%%CH_~C`2J?i<*jPn$gglax95?dM&G?MT1pCwKX0?HP~7T zElb`_#$*s?hKyv>gV5$xsYylYzjx+J+c|sAy}$eY{(ryU=l8qk+;eUk9=AtFbCo6n zfza{v!1_Q>lKfUzf#Pm2!4d>Qc@y57xC^of0GI&yf>I`E3I$?c&=&?C27;z2&<5EU z&_e@#M?gy$XoqYh=%xZ`FleKL4#^GvUDJZETk6&1BhrqOqUlxKnYbLAQ~NrsPf`2DAMIE z5{f(}w~Fk7fKDI_F~0!65ehQY`;`L^f?8k*3{~d43|ASUjlVZFGq+e{ ziLtU?x8BCqZiBtUMn~t(TU@tpbKim8?XlMjhbQrNyIUvOr(>jxR#DG15&ClJ^yv+Nx?(xU33)>sGD-d@u+CD`<=@P>4w zaW@yA-==Qx3Qm;g#ks`Rg^*+OXG`Khh0JKM|KrR9a%etToq)&VBTufi!Rdx!2~AX& zpRaGJ>C(PcRHoB(SIb-X3bVA&yy&M@V}Z%8m3dd3vc{FPv#qT4(hBnRg*c@=Z}onc zvzmJc`oxxk_S9!_XS9z8@p7}PR096sY#1N#^+pDk_7AL|2&neBzm|hjZe-Ly9x|wq z{^>sFBw!#p*9?9sOr2MGTS*6vnVhJIy0WCX_wl5f%m!~F&m>lPjBL*B-X^ee7S`IL zIKpUkLU<~ADZh%Xb#Th<6lKyULCeIiibOC?-*pPDl2|e6pXE5jMA4aiL$}N>k?&K7 z%-j3xV}mOlr#wo|M^A0e*Ql}WxgQ-gvn{z)bl%*1wMaKQ$XUbt^2AOqtAd}5v@ss^ zN48e%6#ON%ITG%W^02&l;t5GOOt^LE-o{y@JxIH0QQ2f=WGL$Jx;N(-%ZlGS($=HvmKZsOzOwhisM%A6i64{nH}y_u$S`##^(W1& zhcTk!dA~WO4r0qFy1MqUBZr`aj&d>{h^?C9>8U#!GU~Y2+(L`m@Qe#GbaxO|sz-j1 z&*e?CIXS9^V%gwJWK`b8T;j--KdlqU*iJdVj6n!aeWK zO&QRLW@!&^SaH{5bVx1Ib7kd|j#HKfeyBb7Zm>M}Wp540$X}EBx7`^G2J^}JlNyPF V8e7pOGnM}iJa^%+whAi#&1 zA;N)36~Q#nLIz; zj!=;qIw2Jgg;CIqV3-d9G>9k+S?oo|iAxYr5f4%lM~P!aA>t^QGY{ZOigMj@>3!%h z<*1*3Kp>4C6dV#79&zf-*>mS3FJ6j@ijIkmW3mzwlaf=eq^4cHc0K(@MrKy_&0Du~ za_;2b&AXRhe7~gh!NW)86_r(gJ+7&JTKBBJfz#O3%x&TE+XU?$e|Noj+0)b8*FP{g zG(0jo_GVl-F**76-TMzypFU5|%*=lI`fcuCM#1ifC=~jPy^WQ-s@g>D#1Xd$&E*4M z8G|e)>I}Jkv#0961m)+BW&9KZ!GS=yUC3(s6=U3lA@W_C3B=5F<+FNBn``J)EwLGcSAOhw zG(TU5riAND+LS31bzC(O^HdT7^$HdI_H~l$NB7o^xwD64l1KGy^P)1Ogrp27DRZqX zYved3V47vhgdIP&Z7|%3(^&4iRu`IXMxK{Pda*+s?6sS2R<0Ufn-p{5*@=%c4M4$h zMqkk%o)ib}4L4eO@RO4Lkh9UssZ~?c_!OB^8FbH%sV|h_+%+tL{5#I70l!X?CmPox z;nHBr3QM;294y$I6?Jb1gY=vszuVQrKYYt=&7swX!_=Lox&blf>?uXGH%pBoJ$$}F zj%DGzt*&r@VlcQY1C3{Pv+ScWmr^avG7{{o!<6p`Uk5mbsmCcKTfjZ3 zpW3FNOI+p?FNup(bR|{C#i&m**|?dlcP)7nYrFn6?6`u2iZ!gB0?@P zQ9~=g7-L)?ZaAaE-RVyh()tc0C7!4}F@0-2Zs(iEXEAykGSF9^P=*bm7ddxkJ zEGjCxAJYASmxZhTbi~(ZfPZk@*eChD4)^fTXbEw8)0xM)m8kY(TPjaQwokU}+9nr=n-47L&M(q^k>3cF1dbA zS3WYkusF0d2i3S4#5KxldnFBH3&@=*jy_Y`9~E*Bq-l?zydQ%6%k1|!*%Vt-qW%Ms CY~h9g literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44@2/settings.png b/client/icons/automotive/44x44@2/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce2a1f1b4d5b3ff1a2e151e33ab69cb14a05aad GIT binary patch literal 2413 zcmZXW3pkT~AIFDA4x7ATj3lQ*$SG+;y-sUL4y95iHHXb%4n>bLizJ6aZ%(Vo8=j7H zsFufRt(=)*o{*YyiZLB1E#2=u!>jkbuHC!8pZkCRzTfZtzwT?-Qruh}VNysb2m}H{ zJK4E|XK%r=UJU$pz%+b?Op&o1Q^5u^+cc%#3+Cj z46siEFGGN45W@jx5YX)pG~$645JP~@K!6nnGzSB%AQA-F6(SfBAYOn>0>BCZ+Jk|P z0Dy@Hx`Kc2l2y}oNFYxRD zBZN9g5WR|E;bjaI_<*wlT=EoXaB9g=AiyTV>tGEKR}4WdD7h9_{lO)nUb<&lFPVTN z%O-2Hgb_l2p(j{rHEva}^%v%X{-9WC{$FRI$x5Q2e_Ilze^CM7;mIg>R}YAY zsMtEFxWsx%DQOuPTy}%pKQ_uMC?b@Ukt(X2)HbVc(bUq`*}6?vPv5}MXos2=8a$kAiReX)Kg{ZE|^2n-6w6GB46 z!if=)(Pv^}&;1d1{z5z{fqXGB>C)wtE2(Me8P_tivakQ^Mow-4<>sxzqT+wwEiJou z|G~pYkE!Jql~qrkKBGOa{;Q_8zJdON@$yw;Q*%peTYCqyi`CuJ%l`Xy|G?mzp||fi z!|y+gjE;>@e4L!(PS5aWKYjl4b#DIK_k|z)pNqeG+U=Af5GWCCx7X8~F`f7EnCEGw z#?3fCn4Fv2R#eo0{M{1tnv0JrJh26 zD0^7L$`3fxc<=p? zGismn{9y9~`OGJGV&6s=ji~0DYy)rC*qCsSD zN)HkBIt68IfGKvp_DO7`pO>U)jz+<_N_lNLpw#8tp6J-&uH-IYp&RVH`2k)T3&n30JF|o$YUCSxhsx zFaoHG&*R4TbH6Faz3pdn&}IuVp^Wf4k09gLIH*cd)ce}ha9{ef4Wp;Zayue?>1-zs z%CU$&j^s6-tBcg#A1BUqFpn?T&d{J^D?{H+D!ZQ3qC!9ZME59c*$jvyYR0jz*B4U%4((rzJdFs0!koM-rmECPnUy2W_rvuPKhD~a3|R`b5)>gOZ}B-!)KNm zO_91c?S^1wr|HLF6Re#O34emm`HJy~^uPu=C@YuIFlVOWe!A~{H0}i%Mdd2*-P?c8 zsu?ENu8lk^@eVd{()QZ`>4KvgKiyVLuVjNQ4xH#QtDxVuimxXy2(2mB%Yv3d4H`A&Ctn+d`HCbYe)-J^Y2@_zt*K{^8f literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44@2/statistics.png b/client/icons/automotive/44x44@2/statistics.png new file mode 100644 index 0000000000000000000000000000000000000000..afc2cc0906763a9f8df743d003b046a5d032f004 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL3?$vW53m8LoB*E?S0Ekwe^tZ({ki{dC;Z=E z^8aG){}Y-2FXjF}m-YWt?*EHv|IcLnKc5RCPiOx>m-+u}&i~U{|IcLoKL_LjQP%&n zK*4N~$QcM1%svYg2P=axKxDJq?6pAqluLsAf*F`u*g3fQ1Vtrez|-9W_@1O*iPE3)4;Sa=K8SKZ z1QhvacE_7x&HFAlp@h4YOP?@I@aANg8Nx8ZgPCFD76t(i{$qb$@qP}f>npurxD)7V N22WQ%mvv4FO#l+4yVd{z literal 0 HcmV?d00001 diff --git a/client/icons/automotive/44x44@2/windows.png b/client/icons/automotive/44x44@2/windows.png new file mode 100644 index 0000000000000000000000000000000000000000..59bac584edf32b8d7664ee61596040fa69525c97 GIT binary patch literal 999 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL3?$vW53n&XFjfWlgt!8^4FCT({Qn>Ne^tZ( z{b~Qtg#N#p`~P;r|NVvkj{&(Q|1W0!znb*_Nbdg=KyK#$OF%LMBzOwUxBz72{J)s_ z|8&m(GwJ`&W&gjB0cL0ZKb!UcJdn%*37!G6v;UvV`F}d={}~`7^Zz*@BL}4BESL=> zfrbN>odwGR*$@Uu7HkwyB~T+=Jy0c_3sebF57G`c0V)Ml0~UdbgUx}f0jWer5NAL{ zfNp>=;8ugVAX|{NfZ0%$a4i@LfX>6zb=KDBryVfxYfFOsf*BZ@m|0la*f}`4xOsT_ z_ytA8BqXI}71cGgv~_g#42(_8t?V2eon74AJv@B_Lc=4XVq()WvUBna3X6(MN*h`` zx_bL2Oqw!v`uv59mn>hsZvDnh+x8qdbmZu<6DQA}yKwQ!jhlDwK6v!(`HRU43jz51v;m*25wa9;R z>na=FpI;GpQ*&U3z=JEwI>!tjaL$QnWtg6|{^_9x^M}H0Z;tiOWqP0NAyFW@?y|-Q zBezz@^i2JmB0JbuJ2h^<;MZ7u>-PQU8H1J)S}518pr@@tgds4Q}0@&871w)YF? zF-0rS>SZ!d2-o_JHG!>nFH3 z>Rv3cVbwd<8Sp@DP4NRepTdOsGjA_rk8?I=|F(Dvv;9H8# + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ! + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/icons/automotive/index.theme b/client/icons/automotive/index.theme new file mode 100644 index 0000000..cd84146 --- /dev/null +++ b/client/icons/automotive/index.theme @@ -0,0 +1,14 @@ +[Icon Theme] +Name=Automotive +Comment=Icon theme for the Qt Quick Controls 2 Automotive Imagine Style Example + +Directories=44x44,44x44@2 + +[44x44] +Size=44 +Type=Fixed + +[44x44@2] +Size=44 +Scale=2 +Type=Fixed diff --git a/client/icons/car.png b/client/icons/car.png new file mode 100644 index 0000000000000000000000000000000000000000..4bfc9a474adbcf867d7a5c52439493f47382bd50 GIT binary patch literal 14952 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 Yxtq@aERf9mUj?bMyoOwZj78}G06sEUcK`qY literal 0 HcmV?d00001 diff --git a/client/icons/car@2x.png b/client/icons/car@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..966bc47bc7d941235923a735472a4552528da41a GIT binary patch literal 37391 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 literal 0 HcmV?d00001 diff --git a/client/icons/icons.qrc b/client/icons/icons.qrc new file mode 100644 index 0000000..5cb7978 --- /dev/null +++ b/client/icons/icons.qrc @@ -0,0 +1,29 @@ + + + car.png + car@2x.png + warning.png + warning@2x.png + weather.png + weather@2x.png + automotive/icons.svg + automotive/index.theme + automotive/44x44/air-con.png + automotive/44x44/command.png + automotive/44x44/message.png + automotive/44x44/music.png + automotive/44x44/seats.png + automotive/44x44/settings.png + automotive/44x44/statistics.png + automotive/44x44/windows.png + automotive/44x44@2/air-con.png + automotive/44x44@2/command.png + automotive/44x44@2/message.png + automotive/44x44@2/music.png + automotive/44x44@2/navigation.png + automotive/44x44@2/seats.png + automotive/44x44@2/settings.png + automotive/44x44@2/statistics.png + automotive/44x44@2/windows.png + + diff --git a/client/icons/warning.png b/client/icons/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..590a61eb800db1fa51f663739d35086da44e3e9f GIT binary patch literal 1212 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv9xeFn$W~32_B-|3gveRc-CtDk}FC z6duc1o{=)XsHX=MxuLFpTgCjmg25#@-Rl|}H`R=9s~BEX*1N2zb5%k6nx^p$b;Fx# z`WIF7E-UL?RWiP=U~pZ-;D);1B{kiv%0}0e46ZBb-%!+pil`V~Rnfn$q0LZwe zqIX?c_p*}V6(xhKiuza8^slQJURE}^qHJ(gN&l*%-ZfQSkcbLUME|Oi-Zdq|YpMp9 zRrId_^(q-$Rs}Njt|=Q_Q`Wztq<2*Xh``2z6dORSxC%51Xctf=kO5)?rGWMtTvG)q z*1xI@v;xRB02&C?eg!BCVt@<**$7s14Xg|-4%7&;@hV6P#0IH^vO%T+&AbBE3w8;_ zD3D5!6vz;WfgrVmVOT(~l>Qk2+&sK|0)oOKqGI9_l2Xz#vT_Ovib^V~YU=75TH3k>hDOFFreaA&MvNQ?p{8=0fE6Gp<&@sQ85V#iK%Jn8Cm&7C8cHMm9=#Zjm<6X9bG-W zef<+BO_?@x=B#-O7A{`8a@Cr3n>KIRx^4T8oxArQIDF*TiIZo}p1*qI=B?Xz?>~I> z`02CfFJ8WW_wN0NkDoq&`TFhq?qwRGz~p+x)5S4FLh|gvpU&NkG6x=>59(REtuNGR z=eCT%K7olb#Y;IR8k=pB(R4RWe^+E$5)gI!`~NMscE7E?U-tLL=M4p-b9X+=i*mKn z*?X|jS}%WrdjFIh``w>8HEUjMp4gPRLiXs>MB$UARlFKJ_xvW^G6?p&lC^(sN?eTl z(_`9`GGxxW9sTl}fitzvvh&!={799ekI8IOlJ9SODAX58TU`xqJ@S3Q>DGz; z?}V=}dnwvt>FOsC_9dUYP~u*UQ=!L^&P9LMHva7Emk2cJka5}gI}izO3Vu>bRjAsWhO$hEE;ftKGh1r3+)Pg@wIwTW%&nT2YLHr2m(KC2bfb?e{8r!IG@I@=|Ke{pP+6b>f;kf6v%lZqq)c=-79I*FP&ux?aEHy0G(s>Jp0? z-G1F2!m`B|xZeEhi32kCK8$+sL7~dpX5QHsd$U W3Z|q*A~%5vlEKr}&t;ucLK6UZ=mWC= literal 0 HcmV?d00001 diff --git a/client/icons/warning@2x.png b/client/icons/warning@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..487fbafcfd2a3147cc0774a6ae5d5e31cf943bdc GIT binary patch literal 2118 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 literal 0 HcmV?d00001 diff --git a/client/icons/weather@2x.png b/client/icons/weather@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4333ab1517bdccb750c115c0cf0465a15d1382 GIT binary patch literal 1798 zcmbW1dpOg39LJZ-nA^tG5W-mpk!z3BPFdzstB}@O92_~8Tq~uTkomdhQlmSm6*`(k zoFp|7j)C3riOLSvnBOrkVq__eJut0+mF$n;%mQ)~@ z0Fn?eK!2Bu2fyPbA>e@)TcE`jz#v&_fd(O15@4woli&KUgJSXHxOjFcu=EhIUYbbW zN-QLUl3e^CuuCe*A(HCHWGTE9`;nBiKOOmLC>i;G0{?oh2z+XSaFXjT*fJ?;8CkfT zJVHTHNm&JnQdL8%FJFPt&|0ajqpN4I`d33E<25FxYt76pEUm29*{sL?zG0&+-i~1J z;OMk@3vt_aXO|srJ4w69yD59z|M2$N>+47L-yawh91?oqVA$dCqsM6xCnBSwV`Agt z6B3h>Q_|AUFfz`bzi>G_=jt_PUjEI3!rMi~C3j29{<+64zhCjNn)9fpwvJoR<2MOf z+S)rhA9p?Je%kY_xBvNzftN#~;gPZNR}*h0-%d@>ynFv)_T#6y`Gv*L{|-mbn!sSv z&{jtRSwr(p&1cVD`(W^a{b}h8#-+kRVU|at+Vvax^(pF(%~+B(8!i7clwP$ z;}u5xn9=(27DvtW4dQATvT^SgcedOKzJlpy~4q1 znv|)N=|x&ITG&CV9JUnjydn~OtI6EV;zOiHf9o5T)$=B}C#9UlIf&uKWtR?|u1%4~ z#O0M6AXHld4Hmp8#EO`ORn%NrRS`{-X09xp{H$l!rq(w+h=1;-;BxhTji-vU-@}Gx zN&q!9w->slMe9^)(Vg(My=f$JR|#jV%tK2Jncs%Y@Wbb+1>4qJ$UP{TcUS7t)J=3f zJ*DVur5uI}pHYwI%X>l}E9%XFA%E$3(b_o4I>$Gxw1x?`r&Iwb?o?aJz zB+*lq(yG|*V%>~lr}VeC9E{TPr6e31qv8!sFFkJPzJ9hPBq7K!2Er>9MXg#BNngoK zy@<2IK+#nhQaXJ@!@9}BNDoDw$I~BsF8$RnbKI`XTiYi!(2G2aC7_4?OgK1bmc%=P zw3GHk&siGKhHa9NRD05VWt>t~V)D#0evRMj(B$k;hkm`D3#mq#Hs1S)G2LxpVMvR- z;M`>$n%4>|ToK)@oXyzI@Eca&P=J)zm<{irn!JaLauk{+GRd`Cm-t36R8(y%SjkOpOlYH zZPXjLo}@G5O!Nb&##rxBQbFlCeKgshlPQa%#Bfwu7|4gfKnEn5cIKk;H_7Z|Nh1(n bB4VVwF@?eHQ?Ui$F9X}^9Q75DwYo1R$GV|*`Mw6ZKzRmFS3j3^P6A*3;ly@hBcL{Jdq91HJ) zm_QnXyRuU)fA#G!Ofj;}Pf1!n{-JDZiP1I%vt3{U^a)!fFc{OF=k;L%bOfUonubXH zfqRBw&3e>;_cJtV2MS$>WBQJ%@EJe@&JNi$@R*R}+ZU>@wKn~fH%i2 zTEwLM+i#+QmgM*yj~HCBW;{8bGXC%CFtti*l@yiac&fvc@l=PYRTB6HWLxppp=}k+ z9BouCc!LV&)fDDPX{$)dCB43VrI_Jq{2bZ t%o!>xJQ&lRYt^v7PQN|;uNv;x=@Z0BR?WR3wSWKs002ovPDHLkV1h~sn|J^K literal 0 HcmV?d00001 diff --git a/client/imagine-assets/button-background-checked-hovered@2x.9.png b/client/imagine-assets/button-background-checked-hovered@2x.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b64640e2b142a9bbb5f56aac8a2f56da6269ce0d GIT binary patch literal 636 zcmbu4`%4pW6vc-L4NX!Ijee*c87zuc(JYK|bE6Gvu5G=9Sedd%*>i1)%5p^`DHfQK zSY~DgBaDpffkSe0>ehVCt?8ytmvb)7b^1b3e?W(O&$;)Pd->cI3J#?ttxuv* zC@Fj%M?|uaG@H7LxF@pHLSj*PSi%J$K<}SA3Y!G>brjNHbk9;4M5y9dt$jMuhY}s{^#(&z{D#|8WDJd z;9CUEm}%s&*!itCp$x~b|ssYdS_gtk=3pY-#S5SrqWFN zMuUnqMcMM2^6)O*!JdWzntL-x)I(2*97|4K+sPQnYi79 z(0PvJBU*88eE0nwU5eLF)$V^5%vDrojRn=e3Nq*4<;XT>QMu;0tL|!sq_}a=+$jAl z3oXbeEi8d)o6>N-R2R9J-n6}wj*=k1Ur)JULsucwP+h{y5d1O}#g#w`aK*$fh1?edn1 zSjZ5PTRJ^rgG9!cTXR+Qjxc<`xm`rUB5(N)0rorJ%nSO|D z>jlytZ pah2D8*ZsL$Q}ywGPT_wo^H=i?4c+g)EC70(!PC{xWt~$(69DCGcA@|P literal 0 HcmV?d00001 diff --git a/client/imagine-assets/button-background-hovered@2x.9.png b/client/imagine-assets/button-background-hovered@2x.9.png new file mode 100644 index 0000000000000000000000000000000000000000..905d9e470503c6771af7bcde297babb57d787f14 GIT binary patch literal 560 zcmeAS@N?(olHy`uVBq!ia0vp^Q9$g(!3HF+>mK~Vz`*$3)5S5QV$Rz;dwmZFNVGou zz9=N%07r+^1apN&ZY_cmje2=wZPsxU>EBzDaO1~evx3R@^gZl9 zf0thVTEt@cxe|^y&lSF3`pdC{wQ2p#b+@NHRk?lVh0XNiFBhE6oAd7U2dR>>*5gO_ z+%c8E<+%Io=U`L$D#ex^((6BOzI{i~JnD#J_m<{wFJ5#=>k2q^@PYUhZrwXBD&=hf z3O!ojYGdVcCqs~3_t8bgM=*(Iv5zkV3KzS|Z0T@s2Pp$f05vamKGG{zctHusG>!r> z7rP>9w#X3d=L6XZmXO)v&|_Fp(gC!KFKUT+G7s~qJ%7$EUaXwA#l!lAZ`AIFH>b@$ z^)o*8;@h?8UfNbho0{X{e;qAfWVw8tlK#na*L$Yyn*aB9+^<`^R7d^hzU@YzB`uiW z74EiA=8Ryy)+n1W@z^OJ{l>TFW~*+PT>t!1Hk3s!yjI$tF<5-8s5>EamTaXdMJfoYy`%RxpqgM?SRyk#O5GKA!o zPLJ3ik@4l$Tvfdz4Bu~V7m={YTfRep{mwTtgMzyyiehJC4;-kTn{jokxJ1QzfwflC zRIct5mpIqQaJAemw11UcsO_q%kgqFV1zvStHShV-rCCBziQ=9)4<}x$QrVR%#g{d6 o(zREr8(n)@Dhjq=QepF literal 0 HcmV?d00001 diff --git a/client/imagine-assets/button-background.9.png b/client/imagine-assets/button-background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..85ed1a03ba429fa342c5f7048fc7f09403ccb896 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^dO)ni!VDxYg?_6CQW60^A+G=b|M&ZU9vJ~;fZPwS zr0xJ&Y$ZW{!3+Wl0S7MhKNMjHiiCQ)IEHAPPfkck@OEbBm?){S2}Yb;=qJH-#LvTA2$VlOw{eOw%zbp==dzY?hVVL-4b>koqA5O ffmhX^fsw(-(Cp=2*`QfK3m80I{an^LB{Ts57>Y-~ literal 0 HcmV?d00001 diff --git a/client/imagine-assets/button-background@2x.9.png b/client/imagine-assets/button-background@2x.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb7ebed20477a9f417bdcd9a4accf616c8fe1f1 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^Q9$g(!VDx;neQA2QgQ)4A+G=b|M&ZU9uooOfr3$f z3@d>wj*=k1Us{Dlck}@*o|E#`@WSeWTzoyY$3Amgp`m> zMY8rZw$eo8>HQ7w<2&bffA^kqzuj}sxyhy&6p)#ZnTCc2h&IqQKjXSTU^;j95B%8u zXlUrnO^q$}PESuUr?39M{}cGH638W;K+j4x9B7WQprNHZN6&DckqN-e!U|+#=KyhX zfw_4uKzRB11uhCgF9`{Yh{D9gB`!-!Nz2H}!Q~Yc5lYG`s#nz1HLfBxuW4!P=<4aC z4A6!~#wM8Sre@|Amew}54!5w5PPhMZcEP#2xqEo~;C=o40|Gtf+ikRbBIh)Y#n8+ScCD+11*+T$ zvvY6Xkv}eeTK>GUy0*Tt`DJ%+|J!#=9?XS?=6o1hSIZK@OX)wfvpf)F+zt6f*qUg4 z>9YnflCnELv#(7K$$ILO$=ITspPy2;%?nS_dRPcUTTk_I@U^(HZDt4y>!fnD+?gsm zJjPNJOG-8xStsGHhsS+e@!V3@B;N$#*4Xfx%+gJ~=DmueM+KIBX|qRDpi0zzDBj!q zW7{veU$%C3=};(|t9WZh^iIZf^Y@LhCiWlO<1Ralqx!!qn#}fk+#Z?%L77u>2it@F0~Jn)0|H z`Ltcc>4}7Sk{Z_ENIc&3f$6hvFlr!9M?!ndD{R{29*${(M}Z$3c!S70puq5QHLni$@>tcZEct%PyJR zY<;8d@eIJQYZg$MSMVaSD>?sXFn-vTem@8De!I1ae!rsNZpk;YpoQKo-F1szD)J@M zDsdyGG?wM+SS$jYC(z|%DD5pQ7Mf(@h&GATm>7nd*u;z-Q*X-JD$u2FK|YR*x-s%p zIxn7yPTuI@z;vHA=NA4{4)BL@bOycu79>0&Z<=jYRAEPBa6+9o+P+}whHpR*;JGnM zsy!Ja!swp+?Jq-V64mC4<|v`*l9tlxdQ}2F59e_x3rdr*DFd&$Ffc8?belFtvUI&V zi+;UU{SbeeekY#zaa9opYyY9q zg`~Kg;PKIg%Rp-is^rsG19cMNzDEB-rl3tR8*=LAE`pR0n;yU;kYJ_u6XM#BAXOjB zPmKetzf0ihrO18!{VB@3`i+lJcSLNaMY=$wO{YaB>+kSC<}rtBA;9`eH@n|66=1C; zg)rq|(a872;nhtF2Z_+}*6;1yx!ND~K}A6qqjG}xwWcs0jaeIlt6xcRIoj;L`pmfU zd+fWdneg}dS3M8O0q2{8pt5UQzACsGOzwV=`Jk8oQAE#U*m_wVHJ~*IKL4c+T)(Jx z?>SporSHKU?If&f-d9ORp52PHToVIdy7oR?qZR1b(*fOH`I4wMDegAdE#Q4Ant@e! zdrd+iDxO|!d)ZAmDxQh#&#q}_;HdQxdz@M-*UZu!;&9>-SMi-G2c0Rkb1D^xP5f{XjL>rTS?iLrZjy6Gtt9!E3J#-w+yld2d8nin3 z4VdnHx?L*N7`NNd7O>|DG3xlaN6`oi0~uxOFL(<);N=WWs`6R6#EnA6O+OvKE0b{T zmL<_EXMUWOJ2a*Auxfs4C{s>8sBy@Sv5J0wo%n=P&MK3gfr;NUF61r52`q|~?NSs( zIStt~>>BPoycP{U8MN!(E3YqeL=u;+!L8Nn|}i;r&sTH_Q;FivdJ_LLk(u zEX~0_oH%2R6|it*0nLYe_(Zx$uI?r-PX>>EU8T@kjE(!zjhoceC4`l$N_5#sgOhkT#)p4w8&P!26t_ zaNilF;A(+c5jqT)JRhm+u}w}an9DadX*0IJHWl>8@Bxu4BJNPECYpaVB5MHch9hny z_c^P0+c|{3Jb;?q5n-5M)GS4E!$(FuZrP7u5evfcjfm2-ROzZdY7>N!&t-Ph)B^lrJ{x-2mlUTqj&qoD#OwHcxMHk g>57rycUfVI|ABJ!|?f?J) literal 0 HcmV?d00001 diff --git a/client/imagine-assets/dial-background-hovered@2x.png b/client/imagine-assets/dial-background-hovered@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..01d8136d516efe6709a0de4dd86e21daa0f59cdd GIT binary patch literal 4629 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 No|chjy@q|v{{b9{BlG|O literal 0 HcmV?d00001 diff --git a/client/imagine-assets/dial-background-pressed.png b/client/imagine-assets/dial-background-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..435acd1466ff1dc5473bb0e907a2948dd346e7e1 GIT binary patch literal 1271 zcmd6n`CHNl0LC%$h(ydyGka{MO-+|aiq2YA9?K({L%t}Pf$_{d$Rk6`bmWB`c}znd zMKi%GDRYYC!SX(z00sGul$npSXWmwdm8>!MU+jIJ_w)Jn{pqELpf18;7BC0|0uS)_ zMeq9Qe>H&aQk{%Q-c>=!C5)f;|CFA3uEXvy$6IJrD8%@v^Z5`AoSwRd#&42_PB%cd0I@5s3O;q{GFSo}jnoP)sngKjjU;WspW6N@8 zF$sz!QJzk@KR_Eq$$)xe@9`x5)bw+>W3436(&v-z9jDOIw~bhod@!BTjOtTz|7soX z3lMA4iH$jV3{jYW5A8SqlX}6B!!HKfUK_z? zjQ&xNIxDK8GxnOYXj8SJ`H{Q>tePJ&otgQu`%*s(6Hh-mWwa_K+K0}Ip4odX$}gc` zmAn#|q%B5TF~`}ak?DXr$ctNGCCnzE=~3szoLfO~-9R*}Brd%Epg|Ls>z25d9s~?bypDd_CQ$wjBapMG7%Y^(Dt)_C8NgdUvP? z%zD>Ou$S5VbPBUAxYwkULhr7co?p#WWoj_;G#z9e;X{JNx!|$qklZ75@Fl4jd^sC< zv^y}Q)MUB9DfoxuNQZLKdY7D5f!%6d**?WjzU*-KUGap|5v0=wm-n%6g8r@<;AGHeuqo&b$Do=);}ijom>ce23TVS z)^)twYpzlS?#?bP6X+aa5iw!Dl}9ceIke}Ue1Ozf?NVFysi>blR1BsY59+xjV=5^w z!nfhFbY{jyXPm5}vw5P3*1-MQXiY^7ToI?l;J(j|$BcSfpay{k4YYrsQl|HTu8ezG zmMZE`p80MBSvVLr5;4;5Gc2gd}4+rx>{ zb^pqcv~8iha;Bv`i?C_l7af@`KA_8)gt=?YZU~)~s%Ut;jZn`$@d}?%rs?RytyfTy zws?mW{VdwD^4%l0@O90@%rE`BUESdEPGd-~xz&tL3-g$2iK+SZu*rs?-qoxfE8*vM vG)H9_aTt3>_(JPqIFqHsgG~Tm>!*d3?yun(jAl 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 literal 0 HcmV?d00001 diff --git a/client/imagine-assets/dial-background.png b/client/imagine-assets/dial-background.png new file mode 100644 index 0000000000000000000000000000000000000000..8aab4d3280dc26d3d52ba002fcd76ada8d6ef028 GIT binary patch literal 1037 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 Bb*lgX literal 0 HcmV?d00001 diff --git a/client/imagine-assets/dial-handle-pressed.png b/client/imagine-assets/dial-handle-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..93992626ced27cefc4dfe9a4ef3951566f923d93 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^+(696!3HEnjZ%I9DJxGG#}J9jt)~z2GAMAc9Nf(8 zy-~$`Ly1+yJtdBlwI|jvsNO!%^`DC=f=A0k?9T(?k`G*L2CA}O)A>~O_Iq(nTdD#y Og~8L+&t;ucLK6UBx*);; literal 0 HcmV?d00001 diff --git a/client/imagine-assets/dial-handle-pressed@2x.png b/client/imagine-assets/dial-handle-pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c563abba5ac61c762a81a07470642756ef06616 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{e!3HEJoIX|yq~bhX978nDuf24Tx50qN`67Q( zL*5~eHP-?q8Ut?}kYT(yY0Ju`cixnrQsGP&DyZrzX5PVk^Xjye*hwWX{I;2`UBLa0 z(RYXVpH}4r(Y_|v3YH&@?v45tl{VkJY@`pc%4!B|{KFP98)y@Qr>mdKI;Vst0GmWM AZvX%Q literal 0 HcmV?d00001 diff --git a/client/imagine-assets/dial-handle.png b/client/imagine-assets/dial-handle.png new file mode 100644 index 0000000000000000000000000000000000000000..a997dd58f87761bc891a5416a9b67ba581046aad GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^+(696!3HEnjZ%I9sW49$#}J9jt=*2i4F&=%%R>Xy z6&P7{`6e(0O=xP46V;WMJG+#3@|)!MX%k!g!}e~<`t-eHae{dPlmEe>|J}?Vf4q9c rUZ`Xw#o}qaaXDl3iB;MgKKJk4qhtD+H$zzgXaj?%tDnm{r-UW|?(r_U literal 0 HcmV?d00001 diff --git a/client/imagine-assets/dial-handle@2x.png b/client/imagine-assets/dial-handle@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..afd13307040dd4d8e3c9af6518341a45e132aa8d GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{e!VDynp5FEYQv3lvA+G=b|M&ZU9*&f}H7@|A zSW1HYf*AxBTxd^ReI3X*_jGX#;gC&EU|?i4;8dHzBbXzazJq0QH+PKF(W9(tj3RB` s46TVm35hFMA|#X;McKR^S{;QLJVN-G8z!5t02;yI>FVdQ&MBb@0BRg8MF0Q* literal 0 HcmV?d00001 diff --git a/client/imagine-assets/frame-background.9.png b/client/imagine-assets/frame-background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7d5453ff155a92e760a5de4a2e14ccd78b8df9 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;6Yw0G|-o|NsB{{XY*uKrtZWNwW1S zAd96W$S;_|;K7Fy>!x2ozN4p$V~E7mmdKI;Vst E01n19M*si- literal 0 HcmV?d00001 diff --git a/client/imagine-assets/frame-background@2x.9.png b/client/imagine-assets/frame-background@2x.9.png new file mode 100644 index 0000000000000000000000000000000000000000..83284457e4d455e2a37e2ad929022793081e77e4 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcg3?!FMH)8=(5&=FTuK)l4_xpby83AR0+z+p$ z?f_YAB|(0{3<3!a3oiU=6j}=uN%C}Y46!(!oWQ`i%|vAagIH1mm%cmuQZ9$W??pZV zOd)Z3CmQ%#PK!!JbW0jERx&VGD~c6 + + applicationwindow-background.png + applicationwindow-background@2x.png + button-background.9.png + button-background@2x.9.png + button-background-checked.9.png + button-background-checked@2x.9.png + button-background-checked-hovered.9.png + button-background-checked-hovered@2x.9.png + button-background-hovered.9.png + button-background-hovered@2x.9.png + button-background-pressed.9.png + button-background-pressed@2x.9.png + dial-background.png + dial-background@2x.png + dial-background-hovered.png + dial-background-hovered@2x.png + dial-background-pressed.png + dial-background-pressed@2x.png + dial-handle.png + dial-handle@2x.png + dial-handle-pressed.png + dial-handle-pressed@2x.png + frame-background.9.png + frame-background@2x.9.png + itemdelegate-background.9.png + itemdelegate-background@2x.9.png + itemdelegate-background-checked.9.png + itemdelegate-background-checked@2x.9.png + itemdelegate-background-hovered.9.png + itemdelegate-background-hovered@2x.9.png + itemdelegate-background-pressed.9.png + itemdelegate-background-pressed@2x.9.png + radiobutton-indicator.png + radiobutton-indicator@2x.png + radiobutton-indicator-checked.png + radiobutton-indicator-checked@2x.png + radiobutton-indicator-checked-hovered.png + radiobutton-indicator-checked-hovered@2x.png + radiobutton-indicator-checked-pressed.png + radiobutton-indicator-checked-pressed@2x.png + radiobutton-indicator-hovered.png + radiobutton-indicator-hovered@2x.png + radiobutton-indicator-pressed.png + radiobutton-indicator-pressed@2x.png + scrollindicator-handle.png + scrollindicator-handle@2x.png + slider-background-horizontal.9.png + slider-background-horizontal@2x.9.png + slider-handle.png + slider-handle@2x.png + slider-handle-hovered.png + slider-handle-hovered@2x.png + slider-handle-pressed.png + slider-handle-pressed@2x.png + slider-progress-horizontal.9.png + slider-progress-horizontal@2x.9.png + slider-progress-horizontal-pressed.9.png + slider-progress-horizontal-pressed@2x.9.png + switchdelegate-background.9.png + switchdelegate-background@2x.9.png + switchdelegate-handle.png + switchdelegate-handle@2x.png + switchdelegate-handle-checked.png + switchdelegate-handle-checked@2x.png + switchdelegate-handle-checked-hovered.png + switchdelegate-handle-checked-hovered@2x.png + switchdelegate-handle-hovered.png + switchdelegate-handle-hovered@2x.png + switchdelegate-handle-pressed.png + switchdelegate-handle-pressed@2x.png + switchdelegate-indicator.png + switchdelegate-indicator@2x.png + switchdelegate-indicator-pressed.png + switchdelegate-indicator-pressed@2x.png + toolseparator-separator-vertical.9.png + toolseparator-separator-vertical@2x.9.png + + diff --git a/client/imagine-assets/itemdelegate-background-checked.9.png b/client/imagine-assets/itemdelegate-background-checked.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4c6b475441dc2b8f571f10e8012bea8022d749cf GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#L!3HANhlBwsdrud~5R21qFKy&xP~c&`ILBiC z++yoXJDZv^Rl?iDYnr4QK3YuWvxqSk%9<<_@pif0BJwU*oivf0y3$ShQz* SOb9p7C`no`Fk#q zVk!yp3uXwBni_Ex$W!oiaSV~ToO~gQm04S2S=%9p6AH=g4-@$L%9|S5X0R~ii{^x0 Tw^pwOs%7wW^>bP0l+XkKr6D5% literal 0 HcmV?d00001 diff --git a/client/imagine-assets/itemdelegate-background-hovered.9.png b/client/imagine-assets/itemdelegate-background-hovered.9.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c189c9e3eded43de85c7e20155d1543e82c387 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#L!VDz;HhQK4DXjpX5ZC|z|9@>>_p*D#ovE8I z%-ecs<&G_zcQ4z!Z^nrOotF<+-#wP|@?`9nGeG6)=lNa(Dc+JGzhDMdE&(xF6)i&x zdpBR(H%BG{B{V!;978x}CO_KC&CcV~KJ{TkV`rcMpT@Hohi4K2d0V- zN2!GEU=1UHllU@>sD#A55{#vjPT&=2m<9}6y0y~`cbZ|^l>pvh4zQEof2pq5*FQc= YAEk0Lu2+F<_+@qIo9hOzPSHqT1CazxEC+~@~Z6@%WY&@ R@)~FmgQu&X%Q~loCIGrvDG~qx literal 0 HcmV?d00001 diff --git a/client/imagine-assets/itemdelegate-background-pressed@2x.9.png b/client/imagine-assets/itemdelegate-background-pressed@2x.9.png new file mode 100644 index 0000000000000000000000000000000000000000..bbbbb8b1d863f2041d7ef704f386dc02738c09c1 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^IzTML#0(_UCv3F`Qk(%kA+GbP0l+XkK7=k2( literal 0 HcmV?d00001 diff --git a/client/imagine-assets/itemdelegate-background.9.png b/client/imagine-assets/itemdelegate-background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1fbb562689f1d6c4d403c42e5f3e244666f88a4b GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#L$P6S+6OV}kDYgKg5ZC|z{{xw!hc4FvDaMi@ zzhDN3XE)M-90^Ys#}JO_79}Emk^91-#oxk%FsD{DQ)z4*} HQ$iB}>c$}7 literal 0 HcmV?d00001 diff --git a/client/imagine-assets/itemdelegate-background@2x.9.png b/client/imagine-assets/itemdelegate-background@2x.9.png new file mode 100644 index 0000000000000000000000000000000000000000..18880980f0897b9bc4b0834a36f7dc38e592ce5b GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^IzTML$P6SE49>p?QfvV}A+G=b{|7Qd4_&SUQj8@* ze!&b5&u*jvIdYyZjv*W~lUMxbXW^HSk~q-tYYGFGYpS$_#Ek|C2HkT)O=nme<^okR Nc)I$ztaD0e0swfjAEy8S literal 0 HcmV?d00001 diff --git a/client/imagine-assets/radiobutton-indicator-checked-hovered.png b/client/imagine-assets/radiobutton-indicator-checked-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..f64c9665b27b5b53e7f378a5c5b954edbb63af0d GIT binary patch literal 623 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{3?%2B3|#`Go&@-Wxc>kD-|zos1ou7tFxK#?3D*F0G)V zrlDhCXkuw&>)`0>>gDGb5s{FXl$@HHkyq8+**S62lxcJ3&0DZ&$kl41d-3tJ#Tz$Sps61`T^vIsBz+IIS1~$@uw953T4R(gDR_64_ZOi> zZu;f-{?`_Xe_mVsLE(3_(yec*Hc53kYPELpn=0pU+dN(QZ`oDN{@sVJR(+4S&NO4e zkK?N?I2lg2-Je=0qyD(ubXtQAYedDen9T(Zb5+>pD*O)S-|u)$GGV$YkMi;@a}p(P z%4!^m^2%6Wd#!A0%ii2sX_1+!mrdT{yq90z m`Z87d!NkYRg0jbi%Kw)Zm?rMCb?ycFox#)9&t;ucLK6Uw{#17W literal 0 HcmV?d00001 diff --git a/client/imagine-assets/radiobutton-indicator-checked-hovered@2x.png b/client/imagine-assets/radiobutton-indicator-checked-hovered@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ace1717a97dec24036621ef2d5382d28f4ef7dc3 GIT binary patch literal 1062 zcmeAS@N?(olHy`uVBq!ia0vp^S|H593?x6vT4pjZFh&OWgt-3y|KIQbc}mdq|Br#% zC;xwhX~_Qn@6ZI-{C|liQt|&5P^278B1_Ex8;dLgWKaD65KRP=`}O~y&;S2?`2QOy z_3r;KWCbt({{(WM|Nj9IeDeRtgwk1;pOAw>lY9h91GGAU*Kgdqedq3jhmW2-d-3wshtJk?-|S{!VB+?4aSV}=tUdTs`Hq7G+k^Gx zQQvoU{(h0sy-lKPYe)5+?}9qhBAgCJ(x#LKtaMa zS&zZe{?_+nm(8v88F%y?(qT;4`Zu@nTPVY!MM~RPu6f-T)r@6c;>&2${^r4Nj^@ZG z7NQRhWFBqz5M9ooK7a1vU&sGPxt~)zJIUg=$YY*Mi^7?=iBUN|sh6Q= z-p(6(C$pn1!smT%-8N}Y?v5vk4!JY)1AmI0u90O>R%)DEv{-K~*OJ$#dSyA3xFuFx zk-DU%a5rEjFN2FrdFZi8TAM;r?=((se%f+vu~U`MEhCvC!_c*BS4^0imCL2)>2oDR zT@^|> zUbG%KToB*$ke#C{)ib8PyO1|?V%qb9FOT>4P1t<$c;oDi^Cuq5WAJ0G;OjTuuXM&n z>A2>Bb4t#=2EEz>tAM$yAdWEcGkN9(P<=5kd`oENA>qM2IlRI&XUZB@9ZvrZ)UJT z)IcXKfz9ZBTv|fhfr7?H(Iae9HH^ph^&MgBR$k3M>oT`7`^}n^>WO!o-}s4qSN_fY bFrGndp`)t$=Ow&ACoy=s`njxgN@xNAC2)B` literal 0 HcmV?d00001 diff --git a/client/imagine-assets/radiobutton-indicator-checked-pressed@2x.png b/client/imagine-assets/radiobutton-indicator-checked-pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2798f77f0f330b596b02a9968806af019e9f34ae GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^S|H5A3?$9pUdaG)0(?ST{}TS^dG)!1<;KG9smA5ZeGcYi!db&7054aJ; ztvI*WuAxkq`V(~tyu*}@j;P%h(!|aFe{9|1HS6ca7 zYS(h(!m3-X&y(I4Kk`;SA6=pFm8D_Dl;dJ<%g)U*(0IFqbA8UerAMFLW$n}{^OEVx zezN4-EzSE3Ou>~U8O91*XSy>7Gl;Dfa#QX_t42`_~=*t<7@Av;a8E9he`CmXo zgi3<^f*A}PLgJH4>X)tBy8pzftJhzCN&I|M6)4;8>Eak7F|~B!YoS&Jj+Q_z{g)TN z{gvN#Va_bRy8Q|6iHwWdzOp)eoF?b9>Z0N1Zqu2H>o{yUBJw}p_>pKmE9ZllzGRTf z*Y|oY52_}Xl&%-jm2`?zSvjp{%7b>lX)0A(XNA~wwOih$Uzqh^^}AJ7`>(z(nl4SupiNVv=&t;ucLK6U#n2GcN literal 0 HcmV?d00001 diff --git a/client/imagine-assets/radiobutton-indicator-checked@2x.png b/client/imagine-assets/radiobutton-indicator-checked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4f29b80b31c9deef0d141cb25b070fd5146c63eb GIT binary patch literal 452 zcmeAS@N?(olHy`uVBq!ia0vp^S|H593?x6vT4n+%*8rao*Z=?j`~5#pA&P&iAd2n5#YaL?&PJR?!6BV0H5hS=N|pS00C`XBQ=sk5zg) zte7ax{^MYZgw2Cl#-BGfZhyw|ITW8HrE@{yYy9fe zRu>FoJ1E|`A`LA!F^=DNAk6VBsIDcVG;ePj@ zViIW?YciAQ$LUXCEx)EeaDj~;RL)^25xvR}=%cLtL;Sr5;nP4`BUoSX!v;QK(B1C+ zV5n>4zIx51V`)P+<8SzS3x#j-2JaHldcN4r`B(4+$2h{DLP`~*c!_`b(C+*ssIYY*oBwLJH|i1x#dH+yl9|f@0000_* z%g5I*ATT&2IyNaizo@*Xp?%`K1q&A~UAAK7=B?Xz?b&-i5C zS@>#tz6*^@5tcu}GCxAppid_K%IuF05fba~pT2TjoasStUboB!lZyR^9|%2AD(z&} z`EL8-(smxjus+|+e!Dk`TYR&w9y}EHfAPFu-w(WUo3rWD4?pcC8`rru{#9rF#yN4F zMPHUb_m#eaT`3Dbt_fi7(W|&NZ+gUG?c{_9uAPbolVo1&d#`=Ggu^XvsubhNqCdNu zlGg}{WsB-eI$`{GSySd7rpfu*GgLU(v=|TW_Hy{JPe`C<1&c^V-I@iS6Vjgrvl>^Z zuBls>Fx6$+^rN!)U0q4&wsc5(|&NfNuIy9T`0OD*5JagxD~8! z(`A+?e`QKuZV}tb#BR?eBcK%99lWjnUgm6*YrNd;!uzXcS+K0;Gkcozt(<>z`jRlq zLg}(u^}9^U7s#&me$sF^Y_W5;c)`RxV>yfaGv;rex$|dl@d4?tX)>1QRy6q5CBF(c<262{Lp>|K|5>q_?*qHK#LhXUHx3vIVCg! E03CC7i2wiq literal 0 HcmV?d00001 diff --git a/client/imagine-assets/radiobutton-indicator-pressed@2x.png b/client/imagine-assets/radiobutton-indicator-pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8b9cd829a65dfd7bacf91ee890f19dd287e03f GIT binary patch literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^S|H593?x6vT4n+%*8rao*Z? z>A(M6W`m0*n_rq#t}F0JU8%BZ@rv6fOg$^tK5f$4pd6BZh~>$?&#PALdu=?S?}#fy z(&Bs*L5`!#H_cJ7`g_22#;LuV=ADe=|1h)idOUCQW#>B#`L~MHUTIGJxxOta=>j*~ zvbEbC%EE)DbFQBM;HwaS_x_iwF08$?#qQO+CF`HwEcm}7OQl2P!X0mEft4qJHTdZ2 z{uR#j*Y14RxkdS8Mf$6>w;Buj8~#t1x@9yY^#{}8k8XWzW-`8GRQo-T&G7n^k{@cGgoqm&d>`VDNPHb6Mw< G&;$S(PUTVn literal 0 HcmV?d00001 diff --git a/client/imagine-assets/radiobutton-indicator.png b/client/imagine-assets/radiobutton-indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..b59ba0cef88465217b69d9fc11406abe45a04c65 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw|3?!p1cPs@`DgizruK)l4_xpbyKYGJ2eg~+Y zyCldjn8Cmyp<%*;0~a2A;5uYC3n-lK>Eal|5uKcnkPz_t-rZ#kOBx+&RxvfdDq$3u zT*=*$a+61C?Exj8AT}PJ9_fQV24~+fBpUB9HppSf<|fd*a{L5BdxXzKhRY7$|fCXeEQEtDnm{r-UW|{)AqC literal 0 HcmV?d00001 diff --git a/client/imagine-assets/radiobutton-indicator@2x.png b/client/imagine-assets/radiobutton-indicator@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a2b9a2b942cfed11d2ba185b1941f83ca8bc41 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^S|H5A3?$9pUdaG)0(?ST|NsB*_y0UG=xp2lbwFLb zB|(0{3<3%U4gn1l796vw<5mDwHidc z*K^tA^h)oDqM3QXoXgb`IaltnYAlM`?l`UBj+ldB>YdvRDz)nuRBuPH zW;yExmznRZ3<~ZfII!>K<=Hgd&?Q&j;7Hy9fv5XUO^9w#JXP15n8(nj@!Gd-FQ3FB zo$ZqEj1ro5hX@?alP;T{_?@*({&Nzq>>I_CMeNZllKT~9Hg?)R+qhiljV71-tHbkx w99Kp$J_~bMb!;AU!4okVOYRo}Q(`z6ZcHz%<+SfR0}KNOPgg&ebxsLQ0Fo)B`Tzg` literal 0 HcmV?d00001 diff --git a/client/imagine-assets/scrollindicator-handle.png b/client/imagine-assets/scrollindicator-handle.png new file mode 100644 index 0000000000000000000000000000000000000000..99206d7e26a87a4cf2b689c0797bc56beb0dc5b7 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^%plCc1|-8Yw(bW~qMj~}Asp9}zx=MZYhmP?Au)l0 bi=82IF;m(6#Yu~S3K%?H{an^LB{Ts5TzV3g literal 0 HcmV?d00001 diff --git a/client/imagine-assets/scrollindicator-handle@2x.png b/client/imagine-assets/scrollindicator-handle@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..85a9ebccf7c091067a8639fc68b8fd955e26fe23 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_`5A|IT2?*XL5JY5_^IIbsu`CV_}oRQ p+kr;EZ9T{S!9`c-I*TzdY^tIqa*x wGg>zk&JCRAEPGwDVaLk7EZv9o9{gqR{ABz8?9L18fX-s@boFyt=akR{05eKaGynhq literal 0 HcmV?d00001 diff --git a/client/imagine-assets/slider-handle-hovered@2x.png b/client/imagine-assets/slider-handle-hovered@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..000db404446cbba669ef05117c3d5704fb1eed5f GIT binary patch literal 364 zcmV-y0h9iTP)u-;crc-j_7dzp3QI8iX4eiz zfdBb2WO#l}+R9mBRusyqqO=t&43EXPbD{w4rf|h|MFj2%dG0gk|Ni~||NmdC zxaAd4oUtUxFZjUiCaG&cj=ZOfV+emdKI;Vst0FWRmO8@`> literal 0 HcmV?d00001 diff --git a/client/imagine-assets/slider-handle-pressed@2x.png b/client/imagine-assets/slider-handle-pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..903c1024401eaaff7288ffbe81dc78de4e4e94a6 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NV3?%C=ER6$F5&=FTuK)l4-??+=+qZ8+LPFx> z7fLupU7sn8d^T`Pz`tHoGOgxXCN-UV* zXnR$Hw?))&3j1R2S<{TCEbf+^ogi!?Cn_TZOi@POfCkUI!iOPt|2sq|+iYZslZV^p9&v9cD55w10N3M%= SEV~OdjKR~@&t;ucLK6UE0yo|O literal 0 HcmV?d00001 diff --git a/client/imagine-assets/slider-progress-horizontal-pressed.9.png b/client/imagine-assets/slider-progress-horizontal-pressed.9.png new file mode 100644 index 0000000000000000000000000000000000000000..7789f09f2c1cce17d34cc5970f03eef1c74fdd5e GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^r+`?Pi5W<)v8uWQq&Ne7LR|m<{|{sW$-4Lb{y-LE zNswPKgTu2MX+Vy$r;B5V#>8X+UR6;G0}F!*d~RPa`1fDa3UWNW;M@5Xa+??!CTNK00;An>CAX$7xw&X-*S7_Y te%pGE{ac~Ccw5gcqpZ^_be+W*7=lyRv0A>Hv>s>(gQu&X%Q~loCIA@DGtdA4 literal 0 HcmV?d00001 diff --git a/client/imagine-assets/slider-progress-horizontal.9.png b/client/imagine-assets/slider-progress-horizontal.9.png new file mode 100644 index 0000000000000000000000000000000000000000..8e65ca35c5de17a691e511774db01c6d1eb4587b GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^r+`?Pi5W<)v8uWQq&Ne7LR|m<{|{vP{XaivmG%)J zi?JlgFPOpM*^M+HN7>WGF+^ixvH-8DsD*)r!2~|HuNVCLuW1E29$xV6{0g~E3=9)A VP0!z7^c!RogQu&X%Q~loCIDAVCd&W- literal 0 HcmV?d00001 diff --git a/client/imagine-assets/slider-progress-horizontal@2x.9.png b/client/imagine-assets/slider-progress-horizontal@2x.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d512e40708611f31098cb47c7200102eb017b1b7 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0y~yV4MVGt1vMG$$K0jTY(g3fKQ0)|NsAiOuzr<=d98` z0%S3k1o;IsI6S+N2IN?Jx;Tb-98VVDU20p9P>`^IU1DqMm1%*|Zn=_MQJ;(m7&|SQ(=ax~{=@q)pVhjwysq0uR-%VN%G=#y^)z4*}Q$iB}x12KB literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-background.9.png b/client/imagine-assets/switchdelegate-background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1fbb562689f1d6c4d403c42e5f3e244666f88a4b GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#L$P6S+6OV}kDYgKg5ZC|z{{xw!hc4FvDaMi@ zzhDN3XE)M-90^Ys#}JO_79}Emk^91-#oxk%FsD{DQ)z4*} HQ$iB}>c$}7 literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-background@2x.9.png b/client/imagine-assets/switchdelegate-background@2x.9.png new file mode 100644 index 0000000000000000000000000000000000000000..18880980f0897b9bc4b0834a36f7dc38e592ce5b GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^IzTML$P6SE49>p?QfvV}A+G=b{|7Qd4_&SUQj8@* ze!&b5&u*jvIdYyZjv*W~lUMxbXW^HSk~q-tYYGFGYpS$_#Ek|C2HkT)O=nme<^okR Nc)I$ztaD0e0swfjAEy8S literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-handle-checked-hovered.png b/client/imagine-assets/switchdelegate-handle-checked-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..e66ef7137cc797be3b3cbd4e29c9a74fe1232fb4 GIT binary patch literal 253 zcmV;GPwR2XA$QPK&;CCDF&j9LTvmwJ~KiRy&tcC@43v~Uq{43XM~aHmxU(uzcMUY|%J zXfdo=SwR3IJbmMt4!s_9V0+D|34gRUe{4i}u0YNbEu)(Znp>jf9a(_pm*~$&_i_D# zMny<$PC=u_ecuwr1m&4WzUP$MCWr~jp%%+`Yihj!VLvFpua;mL00000NkvXXu0mjf Dda-8w literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-handle-checked-hovered@2x.png b/client/imagine-assets/switchdelegate-handle-checked-hovered@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..05d6f82e7aa9f6b6e4c813ab38dc7ea5537db937 GIT binary patch literal 441 zcma)$>nnqC6vrRrI;32RP|6FEa!cNLG4^1^#!O;q$Sp;Y+>6LH%912f~^2X zXkxsW29N}m2&z=5CD3GICkML)&=x^gg8gzFRO7G?M~ygcg}ws@8BTj})`#;!TnyuK z99NULo&ht9+j$rlaJK|@1@{U(Zo#C%lMc^EcroDZ0`CkySbUoBl>v$8Y?G@P>J+HSFy*T;lEC3*B0)0c>MH&RQfW4!ouJn<3=@5wJ3<^f z`8=*TZuL$Z>9`zZZ)xa_pc6ROJ~xZsN^ZYQ5*DReOs}Z&3wSjOeFMGaA~7{NK|#)-{ZIqr1oc--SQxb!73K-?G*qlP+~58v e`pN_aF$RV}110BcUsr-GXYh3Ob6Mw<&;$V7PB23N literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-handle-checked@2x.png b/client/imagine-assets/switchdelegate-handle-checked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b9985f0fe3236be24114eb8a42d882241a39c818 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkh3?$9N*lqwR=>VS)*Z=?j`~5$U6(vs%Zw4yk zC<*clW)KaDPwKk=l6Tp~hd?oZPZ!4!i_^&o5?l>S7cuj0v36K$V`bpL9kNO(l#{n* zt85VA=U{&FO0lS1!%JQXf6$0351%HmK3Dfp5a-|b9%#%O_uWxB^EFzopr09(~bbN~PV literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-handle-hovered.png b/client/imagine-assets/switchdelegate-handle-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..3de8aa1512c7a1499420a762fa374b4683f93590 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%M?75|Lp(Z@|NQ@N&uq&e9GkOn zxvS0znff+vULGEvuOUXe3zeH4nR^a%bSnb|nSg@tB_$=qbki?*FFVra(dJ$J-`Lvt1Z`=R=nQ=yOU=k;fic!qpwj4p57hwi3_I*#^ao|JqLwWA9wNn^* zocA05SvuXdHqoV|M=kl_fG%MSO3!7|Ml1Z^wa|KEfE-GBewdjH#Y|Jrf?*=_&V zX#dt^|J7gr)LZ}4PXEtP|Ik$b(N_P_S^v^d|IbhV&sG1?Q~%LV|IbhV&rbi(PXEtN z|IbeU&qvv>iU0rrHgr->Qvd`82@4Gm5D^g*6&Dy88yz4bBqk^-EG{uJG&earJwHK1 zMMz3aPEb)(R9RtSgoe@H;OOb0O^Cn%005XtL_t(Y$L-KD4#F@D1<>C(A!-nu124V* zIq1;L+yRwd}-l|eBaL#mS^ z;hGx-We!xM22c%fVll)8&<)17$!8#Z2hnOt>mm1poeUW=Watx0qk7xEpvjS@f_In% uDy_#x|5p*H@1kDnQF__wh$Tb(J9+}F@EOWSE*YHw0000ARnw?B%$GC@I% Zfg#X9$@$vXl_1L*JYD@<);T3K0RXMbH97zQ literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-handle-pressed@2x.png b/client/imagine-assets/switchdelegate-handle-pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bb748aa46489667107bf9444a5cbb542d0416c GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkh3?$9N*lqwR=>VS)*Z;TyJFD1zpfZk*qCYz7u(!iBKs5xm#L7MFup4B|3H~iRSIqy(n0W-tutxJzSwd|<{ P8qMJ8>gTe~DWM4f%{5P} literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-handle.png b/client/imagine-assets/switchdelegate-handle.png new file mode 100644 index 0000000000000000000000000000000000000000..fd81422a882c4b21d193b4b4d3c5b9e443937203 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI23?!pd0{;Rj{s5m4*Z=?j`~5!;M@rtB7l2YM zB|(0{3<3=coF4r11oG8AT^vIs!jlsetu0!72xvX%CM(f7H$L b5a4DApUM@TI^mEmPz!^ntDnm{r-UW|LgXyD literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-handle@2x.png b/client/imagine-assets/switchdelegate-handle@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9a7456aa41827568c1e30a2be669241232a3c286 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkh3?$9N*lqwRp#Yx{*Z=?j`~5$Uj7+ODvw*U! zB|(0{3<3cc9^C&E@e?TE?djqeVsSb-L4vE{q^SsRi-yC}5NAUNfsj*IIqu3l72r54 zv8o}_Rl|qtaM=!lWg>@HTmeE6&mfDzopr0NiareE=%KvMDTt!b8#}J9j$t(W%Gt^7U87MHAA7)gM`>fHgA(zFms6~$d zkwtfo-V~V4x~!{dL6(6PhZ_{cF9`7sh~I9w+PrhFY^{-Win?0TVHu#g44$rjF6*2U FngEOjM%DlT literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-indicator.png b/client/imagine-assets/switchdelegate-indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..3db5fe2042db20e7fd6c989a38a6338e7714699d GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^CO|C3#0(@`H%zw!Qak}ZA+G=b|M&ZU9)b=kK4t}q zGnWMU1v4}(5Lf V)#=x^+y^RV@O1TaS?83{1OPh-C(!@^ literal 0 HcmV?d00001 diff --git a/client/imagine-assets/switchdelegate-indicator@2x.png b/client/imagine-assets/switchdelegate-indicator@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b5c10f7497789f83c1332fbfb212636f05f7fac2 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^89;2p!VDy*)FsFPDWL$L5ZC|z|NH$vkBm&KGqZrQ ztR+Ey!3+Wc7arXI6Y&!$;N$7y7~*mK?KMYU1_d7Hi$<#69BdyN7&rae-qiNa?NWXH z_kIhJ)khZHIeJrIHtVvkrUh9BRvd0n5WgVAHz0ny;cD~Fxw5rJ(kbd{Nrz>C<}!G? L`njxgN@xNA48%d- literal 0 HcmV?d00001 diff --git a/client/imagine-assets/toolseparator-separator-vertical.9.png b/client/imagine-assets/toolseparator-separator-vertical.9.png new file mode 100644 index 0000000000000000000000000000000000000000..02c7a564bee9b61e5bd546bc359f198c024e43b4 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^qCl*~#0(_QvQ-HHDb4_&5ZC|z{{xwR|Ig1^rF{g* zVk`;r3ubV5b|VeQk??eJ4B?1Q7U1RO;Z0RwvoI*&3F^vVU@$w$K5cPk-$|ev22WQ% Jmvv4FO#sO~9JT-e literal 0 HcmV?d00001 diff --git a/client/imagine-assets/toolseparator-separator-vertical@2x.9.png b/client/imagine-assets/toolseparator-separator-vertical@2x.9.png new file mode 100644 index 0000000000000000000000000000000000000000..e0390d36f59e5bf8af224d1d33e917fd7ee98d44 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^8bIvC#0(@O{?{A=Qk(%kA+G=b{|7St{-2+-O8W?q z#aI&L7tG-B>_!@pBkSqn7@`rJEWir{jKVx$Sos{zTroH$bM8zd6GQBK70n;dr7D05 O89ZJ6T-G@yGywn?sUgt- literal 0 HcmV?d00001 diff --git a/client/include/client.hpp b/client/include/client.hpp index 19cd4b2..8740824 100644 --- a/client/include/client.hpp +++ b/client/include/client.hpp @@ -1,12 +1,20 @@ #include #include +#include + +#include "rep_dcdc_usb_200_replica.h" +#include "rep_thermal_replica.h" + class SBCBMCClient : public QObject { Q_OBJECT public: SBCBMCClient(QObject *parent = nullptr); ~SBCBMCClient(); - + public Q_SLOTS: + void ready(); private: QQmlApplicationEngine *engine; + Thermal_PropertiesReplica *thermal; + QRemoteObjectNode *node; }; \ No newline at end of file diff --git a/client/qml/CustomGlow.qml b/client/qml/CustomGlow.qml new file mode 100644 index 0000000..483059a --- /dev/null +++ b/client/qml/CustomGlow.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtGraphicalEffects 1.12 + +Glow { + color: glowColor + samples: 20 + spread: 0.3 +} diff --git a/client/qml/FeatureButton.qml b/client/qml/FeatureButton.qml new file mode 100644 index 0000000..d86b39c --- /dev/null +++ b/client/qml/FeatureButton.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Layouts 1.12 +import QtQuick.Controls 2.12 + +Button { + id: button + checkable: true + font.pixelSize: fontSizeExtraSmall + leftPadding: 4 + rightPadding: 4 + topPadding: 12 + bottomPadding: 12 + implicitWidth: 60 + implicitHeight: 90 + + icon.name: "placeholder" + icon.width: 44 + icon.height: 44 + display: Button.TextUnderIcon +} diff --git a/client/qml/GlowingLabel.qml b/client/qml/GlowingLabel.qml new file mode 100644 index 0000000..088e9c1 --- /dev/null +++ b/client/qml/GlowingLabel.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// This container and the transform on the Label are +// necessary to get precise bounding rect of the text for layouting reasons, +// since some of the labels' font sizes can get quite large. +Item { + id: root + implicitHeight: labelTextMetrics.tightBoundingRect.height + implicitWidth: label.implicitWidth + + property alias text: label.text + property alias font: label.font + property alias horizontalAlignment: label.horizontalAlignment + property alias verticalAlignment: label.verticalAlignment + property bool glowEnabled: true + property color glowColor: colorGlow + property color color: colorBright + + Label { + id: label + anchors.baseline: root.baseline + color: root.color + + layer.enabled: root.glowEnabled + layer.effect: CustomGlow { + color: glowColor + } + + TextMetrics { + id: labelTextMetrics + text: label.text + font: label.font + } + + transform: Translate { + y: -labelTextMetrics.tightBoundingRect.y + } + } +} diff --git a/client/qml/StatsView.qml b/client/qml/StatsView.qml new file mode 100644 index 0000000..7df73dd --- /dev/null +++ b/client/qml/StatsView.qml @@ -0,0 +1,45 @@ +import QtQuick 2.12 +import QtQuick.Layouts 1.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Window 2.0 +import QtCharts 2.15 +import QtQuick.Extras 1.4 as OldExtras +import QtQuick.Controls.Styles 1.4 as Oldstyle +import QtRemoteObjects 5.12 + +Frame { + width: parent.width + Layout.fillWidth: true + Layout.fillHeight: true + ColumnLayout { + width: parent.width + GlowingLabel { + text: remoteModel.name + color: "white" + font.pixelSize: fontSizeMedium + Layout.alignment: Qt.AlignVCenter + Layout.fillWidth: true + + } + Frame { + width: parent.width + Layout.fillWidth: true + Layout.fillHeight: true + + OldExtras.CircularGauge { + style: Oldstyle.CircularGaugeStyle { + needle: Rectangle { + y: outerRadius * 0.15 + implicitWidth: outerRadius * 0.03 + implicitHeight: outerRadius * 0.9 + antialiasing: true + color: Qt.rgba(0.66, 0.3, 0, 1) + } + } + value: remoteModel.temp + anchors.centerIn: parent + } + } + } +} diff --git a/client/qml/automotive.qml b/client/qml/automotive.qml new file mode 100644 index 0000000..bac83c1 --- /dev/null +++ b/client/qml/automotive.qml @@ -0,0 +1,419 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Layouts 1.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Window 2.0 +import QtCharts 2.15 +import QtQuick.Extras 1.4 as OldExtras +import QtQuick.Controls.Styles 1.4 as Oldstyle + +ApplicationWindow { + id: window + width: 1024 + height: 768 + //minimumWidth: 750 + //minimumHeight: 1334 + visible: true + title: "Qt Quick Controls 2 - Imagine Style Example: Automotive" + + readonly property color colorGlow: "#1d6d64" + readonly property color colorWarning: "#d5232f" + readonly property color colorMain: "#6affcd" + readonly property color colorBright: "#ffffff" + readonly property color colorLightGrey: "#888" + readonly property color colorDarkGrey: "#333" + + readonly property int fontSizeExtraSmall: Qt.application.font.pixelSize * 0.8 + readonly property int fontSizeMedium: Qt.application.font.pixelSize * 1.5 + readonly property int fontSizeLarge: Qt.application.font.pixelSize * 2 + readonly property int fontSizeExtraLarge: Qt.application.font.pixelSize * 5 + + Component.onCompleted: { + x = Screen.width / 2 - width / 2 + y = Screen.height / 2 - height / 2 + } + + Shortcut { + sequence: "Ctrl+Q" + onActivated: Qt.quit() + } + Frame { + id: frame + anchors.fill: parent + anchors.margins: 5 + + RowLayout { + id: mainRowLayout + anchors.fill: parent + anchors.margins: 10 + spacing: 36 + + Container { + id: leftTabBar + + currentIndex: 0 + + Layout.fillWidth: false + Layout.fillHeight: true + + ButtonGroup { + buttons: columnLayout.children + } + + contentItem: ColumnLayout { + id: columnLayout + spacing: 3 + + Repeater { + model: leftTabBar.contentModel + } + } + + FeatureButton { + id: navigationFeatureButton + text: qsTr("Status") + icon.name: "statistics" + Layout.fillHeight: true + checked: true + onClicked: { + leftTabBar.currentIndex = 0 + } + } + + FeatureButton { + text: qsTr("Music") + icon.name: "music" + Layout.fillHeight: true + onClicked: { + leftTabBar.currentIndex = 1 + } + } + + FeatureButton { + text: qsTr("Message") + icon.name: "message" + Layout.fillHeight: true + onClicked: { + leftTabBar.currentIndex = 2 + } + } + + FeatureButton { + text: qsTr("Command") + icon.name: "command" + onClicked: { + leftTabBar.currentIndex = 3 + } + } + + FeatureButton { + text: qsTr("Settings") + icon.name: "settings" + onClicked: { + leftTabBar.currentIndex = 4 + } + } + } + + StackLayout { + currentIndex: leftTabBar.currentIndex + Layout.fillWidth: true + Layout.fillHeight: true + + ScrollView { + id: pluginView + spacing: 16 + clip : true + //ScrollBar.vertical.policy: ScrollBar.AlwaysOn + //ScrollBar.horizontal.policy: ScrollBar.AlwaysOn + ColumnLayout { + width: pluginView.width + height: parent.height + StatsView {} + StatsView {} + StatsView {} + StatsView {} + } + } + ColumnLayout { + spacing: 16 + + ButtonGroup { + id: viewButtonGroup + buttons: viewTypeRowLayout.children + } + + RowLayout { + id: viewTypeRowLayout + spacing: 3 + + Layout.bottomMargin: 12 + + Button { + text: qsTr("Compact") + font.pixelSize: fontSizeExtraSmall + checked: true + + Layout.fillWidth: true + } + Button { + text: qsTr("Full") + font.pixelSize: fontSizeExtraSmall + checkable: true + + Layout.fillWidth: true + } + } + + GlowingLabel { + text: qsTr("VOLUME") + color: "white" + font.pixelSize: fontSizeMedium + } + + Dial { + id: volumeDial + from: 0 + value: 42 + to: 100 + stepSize: 1 + + Layout.alignment: Qt.AlignHCenter + Layout.minimumWidth: 64 + Layout.minimumHeight: 64 + Layout.preferredWidth: 128 + Layout.preferredHeight: 128 + Layout.maximumWidth: 128 + Layout.maximumHeight: 128 + Layout.fillHeight: true + + Label { + text: volumeDial.value.toFixed(0) + color: "white" + font.pixelSize: Qt.application.font.pixelSize * 3 + anchors.centerIn: parent + } + } + + ButtonGroup { + id: audioSourceButtonGroup + } + + RowLayout { + Layout.topMargin: 16 + + GlowingLabel { + id: radioOption + text: qsTr("RADIO") + color: "white" + font.pixelSize: fontSizeMedium + horizontalAlignment: Label.AlignLeft + + Layout.fillWidth: true + } + GlowingLabel { + text: qsTr("AUX") + color: colorLightGrey + font.pixelSize: fontSizeMedium * 0.8 + horizontalAlignment: Label.AlignHCenter + glowEnabled: false + + Layout.alignment: Qt.AlignBottom + Layout.fillWidth: true + } + GlowingLabel { + text: qsTr("MP3") + color: colorDarkGrey + font.pixelSize: fontSizeMedium * 0.6 + horizontalAlignment: Label.AlignRight + glowEnabled: false + + Layout.alignment: Qt.AlignBottom + Layout.fillWidth: true + } + } + + Frame { + id: stationFrame + leftPadding: 1 + rightPadding: 1 + topPadding: 1 + bottomPadding: 1 + + Layout.fillWidth: true + Layout.fillHeight: true + Layout.preferredHeight: 128 + + ListView { + clip: true + anchors.fill: parent + + ScrollIndicator.vertical: ScrollIndicator { + parent: stationFrame + anchors.top: parent.top + anchors.right: parent.right + anchors.rightMargin: 1 + anchors.bottom: parent.bottom + } + + model: ListModel { + ListElement { name: "V-Radio"; frequency: "105.5 MHz" } + ListElement { name: "World News"; frequency: "93.4 MHz" } + ListElement { name: "TekStep FM"; frequency: "95.0 MHz" } + ListElement { name: "Classic Radio"; frequency: "89.9 MHz" } + ListElement { name: "Buena Vista FM"; frequency: "100.8 MHz" } + ListElement { name: "Drive-by Radio"; frequency: "99.1 MHz" } + ListElement { name: "Unknown #1"; frequency: "104.5 MHz" } + ListElement { name: "Unknown #2"; frequency: "91.2 MHz" } + ListElement { name: "Unknown #3"; frequency: "93.8 MHz" } + ListElement { name: "Unknown #4"; frequency: "80.4 MHz" } + ListElement { name: "Unknown #5"; frequency: "101.1 MHz" } + ListElement { name: "Unknown #6"; frequency: "92.2 MHz" } + } + delegate: ItemDelegate { + id: stationDelegate + width: parent.width + height: 22 + text: model.name + font.pixelSize: fontSizeExtraSmall + topPadding: 0 + bottomPadding: 0 + + contentItem: RowLayout { + Label { + text: model.name + font: stationDelegate.font + horizontalAlignment: Text.AlignLeft + Layout.fillWidth: true + } + Label { + text: model.frequency + font: stationDelegate.font + horizontalAlignment: Text.AlignRight + Layout.fillWidth: true + } + } + } + } + } + + Frame { + Layout.fillWidth: true + + RowLayout { + anchors.fill: parent + + Label { + text: qsTr("Sort by") + font.pixelSize: fontSizeExtraSmall + + Layout.alignment: Qt.AlignTop + } + + ColumnLayout { + RadioButton { + text: qsTr("Name") + font.pixelSize: fontSizeExtraSmall + } + RadioButton { + text: qsTr("Frequency") + font.pixelSize: fontSizeExtraSmall + } + RadioButton { + text: qsTr("Favourites") + font.pixelSize: fontSizeExtraSmall + checked: true + } + + } + } + } + } + ColumnLayout { + spacing: 16 + Layout.fillWidth: true + + GlowingLabel { + text: qsTr("Blah") + color: "white" + font.pixelSize: fontSizeMedium + Layout.alignment: Qt.AlignHCenter + + } + } + ColumnLayout { + spacing: 16 + + GlowingLabel { + text: qsTr("Boo") + color: "white" + font.pixelSize: fontSizeMedium + Layout.alignment: Qt.AlignHCenter + } + } + ColumnLayout { + spacing: 16 + + GlowingLabel { + text: qsTr("Bamn") + color: "white" + font.pixelSize: fontSizeMedium + Layout.alignment: Qt.AlignHCenter + + } + } + } + + } + } +} diff --git a/client/qml/basecomponent.qml b/client/qml/basecomponent.qml new file mode 100644 index 0000000..f239ad5 --- /dev/null +++ b/client/qml/basecomponent.qml @@ -0,0 +1,4 @@ +import QtQuick.Controls 2.15 +GroupBox { + title: qsTr("Synchronize") +} \ No newline at end of file diff --git a/client/qml/components/Voltage.qml b/client/qml/components/Voltage.qml new file mode 100644 index 0000000..5003da3 --- /dev/null +++ b/client/qml/components/Voltage.qml @@ -0,0 +1,3 @@ +basecomponent { + +} \ No newline at end of file diff --git a/client/qml/main.qml b/client/qml/main.qml index 0997d81..ee47d70 100644 --- a/client/qml/main.qml +++ b/client/qml/main.qml @@ -1,4 +1,9 @@ +import QtQuick 2.15 import QtQuick.Controls 2.12 +import QtQuick.Layouts 1.15 +import QtQuick.Window 2.0 +import QtCharts 2.15 + ApplicationWindow { visible: true @@ -17,5 +22,15 @@ ApplicationWindow { StackView { anchors.fill: parent + GridLayout { + id: grid + anchors.fill: parent + Text { text: "Three"; font.bold: true; } + Text { text: "words"; color: "red" } + Text { text: "in"; font.underline: true } + Text { text: "a"; font.pixelSize: 20 } + Text { text: "row"; font.strikeout: true } + } + } } \ No newline at end of file diff --git a/client/qml/qml.qrc b/client/qml/qml.qrc new file mode 100644 index 0000000..26e6f90 --- /dev/null +++ b/client/qml/qml.qrc @@ -0,0 +1,9 @@ + + + FeatureButton.qml + GlowingLabel.qml + CustomGlow.qml + automotive.qml + StatsView.qml + + diff --git a/client/qtquickcontrols2.conf b/client/qtquickcontrols2.conf new file mode 100644 index 0000000..c7fc7a6 --- /dev/null +++ b/client/qtquickcontrols2.conf @@ -0,0 +1,10 @@ +[Controls] +Style=Imagine + +[Imagine] +Path=:/imagine-assets + +[Imagine\Palette] +Text=#6affcd +ButtonText=#6affcd +WindowText=#6affcd diff --git a/client/sbcbmc-client.qrc b/client/sbcbmc-client.qrc index 8903331..be446ab 100644 --- a/client/sbcbmc-client.qrc +++ b/client/sbcbmc-client.qrc @@ -1,5 +1,6 @@ qml/main.qml +qtquickcontrols2.conf diff --git a/client/source/client.cpp b/client/source/client.cpp index f5e08e9..57c8941 100644 --- a/client/source/client.cpp +++ b/client/source/client.cpp @@ -1,9 +1,36 @@ +#include +#include #include "client.hpp" + + + SBCBMCClient::SBCBMCClient(QObject *parent) : QObject(parent) { - this->engine = new QQmlApplicationEngine("qrc:///qml/main.qml"); + node = new QRemoteObjectNode(); + node->connectToNode(QUrl("tcp://10.100.200.49:1998")); + + QObject::connect(node, &QRemoteObjectNode::remoteObjectAdded, + [](const QRemoteObjectSourceLocation& info){ + qDebug() << "New source added : " << info; + }); + +// qDebug() << "Waiting for registry "; +// node.waitForRegistry(10000); + + thermal = node->acquire(QStringLiteral("plugins/thermal/thermal_zone1/x86_pkg_temp")); + + qDebug() << "Waiting for Source"; + thermal->waitForSource(10000); + qDebug() << "Starting"; + qDebug() << thermal->state(); + //qmlRegisterType("custom",1,0,"DCDCUSB200_PropertiesReplica"); + qmlRegisterType("custom",1,0,"Thermal_PropertiesReplica"); + + ready(); +// this->engine = new QQmlApplicationEngine("qrc:/qml/automotive.qml"); + } SBCBMCClient::~SBCBMCClient() @@ -11,16 +38,13 @@ SBCBMCClient::~SBCBMCClient() } +void SBCBMCClient::ready() { + this->engine = new QQmlApplicationEngine(); + this->engine->rootContext()->setContextProperty("remoteModel", thermal); + this->engine->load("qrc:/qml/automotive.qml"); +} + #if 0 - QRemoteObjectNode node(QUrl("tcp://127.0.0.1:1999")); - - QObject::connect(&node, &QRemoteObjectNode::remoteObjectAdded, - [](const QRemoteObjectSourceLocation& info){ - qDebug() << "New source added : " << info; - }); - - qDebug() << "Waiting for registry "; - node.waitForRegistry(10000); qDebug() << "Already here sources : " << node.registry()->sourceLocations(); diff --git a/client/source/main.cpp b/client/source/main.cpp index 7ba5a7c..4d558f6 100644 --- a/client/source/main.cpp +++ b/client/source/main.cpp @@ -1,8 +1,9 @@ -#include +#include #include #include #include #include +#include #include "client.hpp" @@ -17,11 +18,18 @@ Q_LOGGING_CATEGORY(sbcclient, "sbcbmc.client"); int main(int argc, char *argv[]) { - QCoreApplication a(argc, argv); QCoreApplication::setApplicationName("sbcbmc-client"); //QCoreApplication::setApplicationVersion(DEF2STR(APP_VERSION)); QCoreApplication::setOrganizationName("DynamX"); QCoreApplication::setOrganizationDomain("dynam.com"); + QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + + QApplication a(argc, argv); + +QLoggingCategory::setFilterRules("qt.remoteobjects.debug=true"); + + QIcon::setThemeName("automotive"); QCommandLineParser parser; parser.setApplicationDescription("SBCBMC Client"); @@ -32,8 +40,5 @@ int main(int argc, char *argv[]) { SBCBMCClient client; - - - a.exec(); } \ No newline at end of file