diff options
Diffstat (limited to 'app')
47 files changed, 3319 insertions, 0 deletions
diff --git a/app/SettingPage.qml b/app/SettingPage.qml new file mode 100644 index 0000000..10aea21 --- /dev/null +++ b/app/SettingPage.qml @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import AGL.Demo.Controls 1.0 + +Page { + id: root + readonly property bool isSetting: true + property string icon + property bool checkable: false + property bool checked: false + function done() { + parent.pop() + } + + Connections { + target: root + onCheckedChanged: { + checkedSwitch.checked = checked + } + } + + Row { + anchors.right: parent.right + anchors.rightMargin: 100 + anchors.bottom: parent.top + anchors.bottomMargin: 10 + spacing: 20 + + Switch { + id: checkedSwitch + visible: root.checkable + onCheckedChanged: root.checked = checked + } + + ImageButton { + id: back + anchors.bottom: parent.bottom + offImage: '../images/HMI_Settings_X.svg' + onClicked: root.done() + } + } + +} diff --git a/app/Settings.qml b/app/Settings.qml new file mode 100644 index 0000000..42fed66 --- /dev/null +++ b/app/Settings.qml @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 + +import 'datetime' +import 'bluetooth' +import 'wifi' +import 'example' + +ApplicationWindow { + id: root + + StackView { + id: stack + anchors.fill: parent + initialItem: settings + + SettingsLauncher { + id: settings + onLaunch: { + stack.push(app) + } + + Component.onCompleted: { + for (var a in stack.children) { + var app = stack.children[a] + if (!app.isSetting) continue + settingsModel.append({'icon': app.icon, 'title': app.title, 'checkable': app.checkable, 'app': app}) + app.visible = false + } + } + + model: ListModel { id: settingsModel } + } + + DateTime {} + + Bluetooth {} + + Wifi {} + + Example {} + } +} diff --git a/app/SettingsLauncher.qml b/app/SettingsLauncher.qml new file mode 100644 index 0000000..c627324 --- /dev/null +++ b/app/SettingsLauncher.qml @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 + +Page { + id: root + title: 'Settings' + property alias model: view.model + signal launch(var app) + signal toggled(var app, bool on) + ListView { + id: view + anchors.fill: parent + anchors.margins: root.width * 0.075 + clip: true + + delegate: MouseArea { + id: delegate + width: ListView.view.width + height: width / 6 + RowLayout { + anchors.fill: parent + Item { + Layout.preferredWidth: 100 + Layout.preferredHeight: 100 + Image { + anchors.centerIn: parent + source: model.icon + } + } + Label { + Layout.fillWidth: true + text: model.title.toUpperCase() + color: '#59FF7F' + } + Switch { + id: checkedSwitch + visible: model.checkable + onCheckedChanged: model.app.checked = checked + } + Connections { + target: model.app + onCheckableChanged: { + checkedSwitch.visible = model.app.checkable + } + onCheckedChanged: { + checkedSwitch.checked = model.app.checked + } + } + } + Image { + source: '../images/HMI_Settings_DividingLine.svg' + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + visible: model.index > 0 + } + + onClicked: launch(model.app) + } + } +} diff --git a/app/api/Binding.qml b/app/api/Binding.qml new file mode 100644 index 0000000..834bdf8 --- /dev/null +++ b/app/api/Binding.qml @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtWebSockets 1.0 +import 'MessageId.js' as MessageId + +WebSocket { + id: root + active: true + + property string statusString: "waiting..." + + property real fanSpeed: 0.0 + + property Connections c : Connections { + target: root + onFanSpeedChanged: { + var json = [MessageId.call, '9999', 'hvac/set', {'FanSpeed': fanSpeed}] + console.debug(JSON.stringify(json)) + sendTextMessage(JSON.stringify(json)) + } + } + + onTextMessageReceived: { + var json = JSON.parse(message) + var request = json[2].request + var response = json[2].response + switch (json[0]) { + case MessageId.call: + break + case MessageId.retok: + root.statusString = request.info + break + case MessageId.reterr: + root.statusString = "Bad return value, binding probably not installed" + break + case MessageId.event: + break + } + } + onStatusChanged: { + switch (status) { + case WebSocket.Error: + root.statusString = "WebSocket error: " + root.errorString + break + } + } +} diff --git a/app/api/MessageId.js b/app/api/MessageId.js new file mode 100644 index 0000000..001ea93 --- /dev/null +++ b/app/api/MessageId.js @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.pragma library + +var call = 2 +var retok = 3 +var reterr = 4 +var event = 5 diff --git a/app/app.pri b/app/app.pri new file mode 100644 index 0000000..014646f --- /dev/null +++ b/app/app.pri @@ -0,0 +1,12 @@ +TEMPLATE = app + +load(configure) +qtCompileTest(libhomescreen) + +config_libhomescreen { + CONFIG += link_pkgconfig + PKGCONFIG += homescreen + DEFINES += HAVE_LIBHOMESCREEN +} + +DESTDIR = $${OUT_PWD}/../package/root/bin diff --git a/app/app.pro b/app/app.pro new file mode 100644 index 0000000..b35e40e --- /dev/null +++ b/app/app.pro @@ -0,0 +1,15 @@ +TARGET = settings +QT = quickcontrols2 + +SOURCES = main.cpp + +RESOURCES += \ + settings.qrc \ + images/images.qrc \ + datetime/datetime.qrc \ + wifi/wifi.qrc \ + bluetooth/bluetooth.qrc \ + example/example.qrc + + +include(app.pri) diff --git a/app/bluetooth/Bluetooth.qml b/app/bluetooth/Bluetooth.qml new file mode 100644 index 0000000..ded2c36 --- /dev/null +++ b/app/bluetooth/Bluetooth.qml @@ -0,0 +1,341 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import '..' + +SettingPage { + id: root + icon: '/bluetooth/images/HMI_Settings_BluetoothIcon.svg' + title: 'Bluetooth' + checkable: true + + property string protocol: 'http://' + property string ipAddress: '127.0.0.1' + property string portNumber: Qt.application.arguments[1] + property string tokenString: Qt.application.arguments[2] + property string btAPI: '/api/Bluetooth-manager/' + property string btAPIpath: protocol + ipAddress + ':' + portNumber + btAPI + property var jsonObjectBT + property string currentState: 'idle' + + Text { + id: log + anchors.fill: parent + anchors.margins: 10 + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + //text: "log" + } + + onCheckedChanged: { + console.log("Bluetooth set to", checked) + if (checked == true) { + request(btAPIpath + 'power?value=1', function (o) { + // log the json response + console.log(o.responseText) + }) + request(btAPIpath + 'start_discovery', function (o) { + console.log(o.responseText) + }) + currentState = 'discovering' + //search_device() + periodicRefresh.start() + + } else { + //console.log(networkPath) + btDeviceList.clear() + periodicRefresh.stop() + request(btAPIpath + 'stop_discovery', function (o) { + // log the json response + console.log(o.responseText) + }) + request(btAPIpath + 'power?value=0', function (o) { + // log the json response + //showRequestInfo(o.responseText) + console.log(o.responseText) + }) + currentState = 'idle' + } + } + + ListModel { + id: btDeviceList + } + + Rectangle { + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.margins: 80 + width: buttonScan.width + 10 + height: buttonScan.height + 10 + color: "#222" + border.color: "white" + + Button { + id: buttonScan + anchors.centerIn: parent + width: 100 + text: "SEARCH" + + MouseArea { + //id: mouseArea + anchors.fill: parent + + onClicked: { + if (buttonScan.text == "SEARCH"){ + request(btAPIpath + 'start_discovery', function (o) { + + // log the json response + //showRequestInfo(o.responseText) + console.log(o.responseText) + }) + buttonScan.text = "CANCEL" + currentState = 'discovering' + periodicRefresh.start() + }else{ + request(btAPIpath + 'stop_discovery', function (o) { + + // log the json response + //showRequestInfo(o.responseText) + console.log(o.responseText) + }) + buttonScan.text = "SEARCH" + currentState = 'idle' + //periodicRefresh.stop() //in order to update the content from bluez + } + } + } + } + } + + function request(url, callback) { + var xhr = new XMLHttpRequest() + xhr.onreadystatechange = (function (myxhr) { + return function () { + if (xhr.readyState == 4 && xhr.status == 200){ + callback(myxhr) + } + } + })(xhr) + xhr.open('GET', url, false) + xhr.send('') + } + + Component { + id:blueToothDevice + Rectangle { + height: 150 + width: parent.width + color: "#222" + + Column { + Text { + id: btName + text: deviceName + font.pointSize: 36 + color: "#ffffff" + } + Text { + id: btAddr + text: deviceAddress + visible: false + } + Text { + text: { + if ((devicePairable === "True") + && (deviceConnect === "False")) + text = "paired" + else if ((devicePairable === "True") + && (deviceConnect === "True") + && (connectAVP) === "True") + text = "AV Connection" + else if ((devicePairable === "True") + && (deviceConnect === "True") + && (connectHFP) === "True") + text = "Handsfree Connection" + else + text = "" + } + font.pointSize: 18 + color: "#ffffff" + font.italic: true + } + Text { + id: btPairable + text: devicePairable + visible: false + } + Text { + id: btConnectstatus + text: deviceConnect + visible: false + } + + } + Button { + id: connectButton + anchors.top:parent.top + anchors.topMargin: 15 + anchors.right: parent.right + anchors.rightMargin: 10 + + text:(btConnectstatus.text == "True")? "Disconnect":((btPairable.text == "True")? "Connect":"Pair") + MouseArea { + anchors.fill: parent + onClicked: { + if (currentState == 'discovering'){ + request(btAPIpath + 'stop_discovery', function (o) { + currentState = "idle" + console.log(o.responseText) + }) + } + if (connectButton.text == "Pair"){ + connectButton.text = "Connect" + request(btAPIpath + 'pair?value=' + btAddr.text, function (o) { + btPairable.text = "True" + console.log(o.responseText) + }) + request(btAPIpath + 'set_property?Address=' + btAddr.text + '\&Property=Trusted\&value=true', function (o) { + console.log(o.responseText) + }) + } + else if (connectButton.text == "Connect"){ + connectButton.text = "Disconnect" + request(btAPIpath + 'connect?value=' + btAddr.text, function (o) { + console.log(o.responseText) + }) + } + else if (connectButton.text == "Disconnect"){ + request(btAPIpath + 'disconnect?value=' + btAddr.text, function (o) { + console.log(o.responseText) + }) + connectButton.text = "Connect" + btDeviceList.remove(findDevice(btAddr.text)) + } + } + } + } + /*Image{ + id: removeDevice + anchors.top:parent.top + anchors.topMargin: 15 + anchors.right: parent.right + anchors.rightMargin: 5 + width: 25 + height: 25 + source: "component/images/trash.png" + + MouseArea { + anchors.fill: parent + onClicked: { + request(btAPIpath + 'remove_device?value=' + btAddr.text, function (o) { + console.log(o.responseText) + }) + btDeviceList.remove(findDevice(btAddr.text)) + } + } + }*/ + } + } + + ListView { + width: parent.width + anchors.top: parent.top + anchors.topMargin: 200 + anchors.bottom: parent.bottom + anchors.bottomMargin: 150 + model: btDeviceList + delegate: blueToothDevice + clip: true + } + + function findDevice(address){ + for (var i = 0; i < jsonObjectBT.length; i++) { + if (address === jsonObjectBT[i].Address){ + return i + } + } + } + function search_device(){ + btDeviceList.clear() + request(btAPIpath + 'discovery_result', function (o) { + + // log the json response + console.log(o.responseText) + + // translate response into object + var jsonObject = eval('(' + o.responseText + ')') + + jsonObjectBT = eval('(' + JSON.stbtPairableringify( + jsonObject.response) + ')') + + console.log("BT list refreshed") + + //console.log(jsonObject.response) + for (var i = 0; i < jsonObjectBT.length; i++) { + btDeviceList.append({ + deviceAddress: jsonObjectBT[i].Address, + deviceName: jsonObjectBT[i].Name, + devicePairable:jsonObjectBT[i].Paired, + deviceConnect: jsonObjectBT[i].Connected, + connectAVP: jsonObjectBT[i].AVPConnected, + connectHFP: jsonObjectBT[i].HFPConnected + }) + } + }) + } + + //Timer for periodic refresh; this is BAD solution, need to figure out how to subscribe for events + Timer { + id: periodicRefresh + interval: (currentState == "idle")? 10000:5000 // 5seconds + onTriggered: { + + btDeviceList.clear() + + request(btAPIpath + 'discovery_result', function (o) { + + // log the json response + console.log(o.responseText) + + // translate response into object + var jsonObject = eval('(' + o.responseText + ')') + + jsonObjectBT = eval('(' + JSON.stringify( + jsonObject.response) + ')') + + console.log("BT list refreshed") + + //console.log(jsonObject.response) + for (var i = 0; i < jsonObjectBT.length; i++) { + btDeviceList.append({ + deviceAddress: jsonObjectBT[i].Address, + deviceName: jsonObjectBT[i].Name, + devicePairable:jsonObjectBT[i].Paired, + deviceConnect: jsonObjectBT[i].Connected, + connectAVP: jsonObjectBT[i].AVPConnected, + connectHFP: jsonObjectBT[i].HFPConnected + }) + } + }) + start() + } + } + } + diff --git a/app/bluetooth/bluetooth.qrc b/app/bluetooth/bluetooth.qrc new file mode 100644 index 0000000..bc8b70a --- /dev/null +++ b/app/bluetooth/bluetooth.qrc @@ -0,0 +1,8 @@ +<RCC> + <qresource prefix="/bluetooth"> + <file>Bluetooth.qml</file> + <file>images/HMI_Pair_Button.svg</file> + <file>images/HMI_Paired_Button.svg</file> + <file>images/HMI_Settings_BluetoothIcon.svg</file> + </qresource> +</RCC> diff --git a/app/bluetooth/images/HMI_Pair_Button.svg b/app/bluetooth/images/HMI_Pair_Button.svg new file mode 100644 index 0000000..930a75b --- /dev/null +++ b/app/bluetooth/images/HMI_Pair_Button.svg @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 151 51" + style="enable-background:new 0 0 151 51;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Pair_Button.svg"><metadata + id="metadata33"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs31" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview29" + showgrid="false" + inkscape:zoom="4.4503311" + inkscape:cx="-17.97619" + inkscape:cy="25.5" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:none;stroke:url(#SVGID_1_);stroke-miterlimit:10;} + .st1{opacity:0.3;fill:url(#SVGID_2_);} + .st2{fill:#FFFFFF;} + .st3{font-family:'Roboto-Regular';} + .st4{font-size:19.7348px;} + .st5{letter-spacing:3;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="24.7258" + y1="75.9063" + x2="126.2742" + y2="-24.9063"><stop + offset="0" + style="stop-color:#59FF7F" + id="stop12" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop14" /></linearGradient><rect + x="0.5" + y="0.5" + class="st0" + width="150" + height="50" + id="rect16" /><linearGradient + id="SVGID_2_" + gradientUnits="userSpaceOnUse" + x1="-25.8746" + y1="126.14" + x2="190.2191" + y2="-88.3878"><stop + offset="0" + style="stop-color:#59FF7F" + id="stop19" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop21" /></linearGradient><rect + x="0.5" + y="0.5" + class="st1" + width="150" + height="50" + id="rect23" /><g + id="g25"><text + transform="matrix(1 0 0 1 46.5699 33.9046)" + class="st2 st3 st4 st5" + id="text27">Pair</text> +</g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/bluetooth/images/HMI_Paired_Button.svg b/app/bluetooth/images/HMI_Paired_Button.svg new file mode 100644 index 0000000..17419d4 --- /dev/null +++ b/app/bluetooth/images/HMI_Paired_Button.svg @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 151 51" + style="enable-background:new 0 0 151 51;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Paired_Button.svg"><metadata + id="metadata33"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs31" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview29" + showgrid="false" + inkscape:zoom="4.4503311" + inkscape:cx="-11.909226" + inkscape:cy="25.5" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:none;stroke:url(#SVGID_1_);stroke-miterlimit:10;} + .st1{opacity:0.84;fill:url(#SVGID_2_);} + .st2{fill:#27232B;} + .st3{font-family:'Roboto-Regular';} + .st4{font-size:19.7348px;} + .st5{letter-spacing:2.9;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="24.7258" + y1="75.9063" + x2="126.2742" + y2="-24.9063"><stop + offset="0" + style="stop-color:#59FF7F" + id="stop12" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop14" /></linearGradient><rect + x="0.5" + y="0.5" + class="st0" + width="150" + height="50" + id="rect16" /><linearGradient + id="SVGID_2_" + gradientUnits="userSpaceOnUse" + x1="-25.8746" + y1="126.14" + x2="190.2191" + y2="-88.3878"><stop + offset="0" + style="stop-color:#59FF7F" + id="stop19" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop21" /></linearGradient><rect + x="0.5" + y="0.5" + class="st1" + width="150" + height="50" + id="rect23" /><g + id="g25"><text + transform="matrix(1.0253 0 0 1 33.1099 33.9038)" + class="st2 st3 st4 st5" + id="text27">PairED</text> +</g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/bluetooth/images/HMI_Settings_BluetoothIcon.svg b/app/bluetooth/images/HMI_Settings_BluetoothIcon.svg new file mode 100644 index 0000000..d41de2a --- /dev/null +++ b/app/bluetooth/images/HMI_Settings_BluetoothIcon.svg @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 100 100" + style="enable-background:new 0 0 100 100;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_BluetoothIcon.svg"><metadata + id="metadata16"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs14" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview12" + showgrid="false" + inkscape:zoom="2.36" + inkscape:cx="-130.29661" + inkscape:cy="50" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="Bluetooth_Icon"><path + class="st0" + d="M48.3,86.9V53.4L30.9,69.7l-1.4-1.5l18.8-17.6v-0.2L27.9,36.4l1.1-1.6L48.3,48v-35l23.6,18.2l-20.3,19 l20.5,14.1L48.3,86.9z M50.3,51.8v30.5l18.6-17.6L50.3,51.8z M50.3,17.1v31.6l18.5-17.3L50.3,17.1z" + id="path10" /></g></g></switch></svg>
\ No newline at end of file diff --git a/app/config.tests/libhomescreen/.qmake.stash b/app/config.tests/libhomescreen/.qmake.stash new file mode 100644 index 0000000..d1c4687 --- /dev/null +++ b/app/config.tests/libhomescreen/.qmake.stash @@ -0,0 +1,14 @@ +QMAKE_DEFAULT_INCDIRS = \ + /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5 \ + /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5/x86_64-pc-linux-gnu \ + /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5/backward \ + /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include \ + /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include-fixed \ + /usr/include +QMAKE_DEFAULT_LIBDIRS = \ + /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0 \ + /usr/lib64 \ + /lib64 \ + /usr/x86_64-pc-linux-gnu/lib \ + /usr/lib \ + /lib diff --git a/app/config.tests/libhomescreen/libhomescreen.cpp b/app/config.tests/libhomescreen/libhomescreen.cpp new file mode 100644 index 0000000..d698b05 --- /dev/null +++ b/app/config.tests/libhomescreen/libhomescreen.cpp @@ -0,0 +1,8 @@ +#include <libhomescreen.hpp> + +int main(int argc,char **argv) +{ + LibHomeScreen libHomeScreen; + return 0; +} + diff --git a/app/config.tests/libhomescreen/libhomescreen.pro b/app/config.tests/libhomescreen/libhomescreen.pro new file mode 100644 index 0000000..eb4e8f3 --- /dev/null +++ b/app/config.tests/libhomescreen/libhomescreen.pro @@ -0,0 +1,5 @@ +SOURCES = libhomescreen.cpp + +CONFIG -= qt +CONFIG += link_pkgconfig +PKGCONFIG += homescreen diff --git a/app/datetime/DateEdit.qml b/app/datetime/DateEdit.qml new file mode 100644 index 0000000..f9f75fd --- /dev/null +++ b/app/datetime/DateEdit.qml @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import AGL.Demo.Controls 1.0 + +GridLayout { + id: root + flow: GridLayout.TopToBottom + rows: 3 + + property int year: yearControl.model[yearControl.currentIndex] + property int month: monthControl.currentIndex + 1 + property int day: dayControl.currentIndex + 1 + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg' + onClicked: monthControl.currentIndex++ + } + Tumbler { + id: monthControl + implicitWidth: 200 + model: ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'] + onCurrentIndexChanged: dayControl.regenerateModel() + + EditSeparator { anchors.fill: parent } + } + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg' + onClicked: monthControl.currentIndex-- + } + + Item { width: 10; height: 10 } + Label { text: ':' } + Item { width: 10; height: 10 } + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg' + onClicked: dayControl.currentIndex++ + } + + Tumbler { + id: dayControl + model: ListModel{ + id: monthModel + } + Component.onCompleted: regenerateModel() + function regenerateModel() { + var eom = 0 + var y = yearControl.model[yearControl.currentIndex] + var m = monthControl.currentIndex + 1 + switch (m) { + case 2: + eom = 28 + parseInt(1 / (y % 4 + 1)) - parseInt(1 - 1 / (y % 100 + 1)) + parseInt(1 / (y % 400 + 1)) + break + case 4: + case 6: + case 9: + case 11: + eom = 30 + break + default: + eom = 31 + break + } + while (monthModel.count < eom) + monthModel.append({modelData: monthModel.count + 1}) + while (monthModel.count > eom) + monthModel.remove(monthModel.count - 1, 1) + } + EditSeparator { anchors.fill: parent } + } + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg' + onClicked: dayControl.currentIndex-- + } + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg' + onClicked: yearControl.currentIndex++ + } + + Tumbler { + id: yearControl + Component.onCompleted: { + var arr = new Array + for (var i = 2010; i < 2050; i++) { + arr.push(i) + } + yearControl.model = arr + } + onCurrentIndexChanged: dayControl.regenerateModel() + EditSeparator { anchors.fill: parent } + } + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg' + onClicked: yearControl.currentIndex-- + } +} diff --git a/app/datetime/DateTime.qml b/app/datetime/DateTime.qml new file mode 100644 index 0000000..5030b1e --- /dev/null +++ b/app/datetime/DateTime.qml @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import AGL.Demo.Controls 1.0 +import '..' + +SettingPage { + id: root + icon: '/datetime/images/HMI_Settings_TimeIcon.svg' + title: 'Date & Time' + + ColumnLayout { + anchors.fill: parent + anchors.margins: 100 + Label { text: 'Date'} + DateEdit {} + Image { + source: '../images/HMI_Settings_DividingLine.svg' + } + Label { text: 'Time'} + TimeEdit {} + RowLayout { + anchors.right: parent.right + Button { + text: 'OK' + highlighted: true + onClicked: root.done() + } + } + Item { + Layout.fillHeight: true + } + } +} diff --git a/app/datetime/EditSeparator.qml b/app/datetime/EditSeparator.qml new file mode 100644 index 0000000..e833b52 --- /dev/null +++ b/app/datetime/EditSeparator.qml @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 + +ColumnLayout { + anchors.fill: parent + z: -1 + Item { + Layout.fillHeight: true + Layout.preferredHeight: 1 + } + Repeater { + model: 2 + Image { + Layout.fillHeight: true + Layout.preferredHeight: 2 + Layout.alignment: Layout.Center + source: './images/HMI_Settings_TimeDate_Arrow_DividingLine.svg' + } + } + Item { + Layout.fillHeight: true + Layout.preferredHeight: 1 + } +} diff --git a/app/datetime/TimeEdit.qml b/app/datetime/TimeEdit.qml new file mode 100644 index 0000000..69a049b --- /dev/null +++ b/app/datetime/TimeEdit.qml @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import AGL.Demo.Controls 1.0 + +GridLayout { + id: root + flow: GridLayout.TopToBottom + rows: 3 + + property int hour: hourControl.currentIndex + property int minutes: minutesControl.currentIndex + property string ampm: ampmControl.model[ampmControl.currentIndex] + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg' + onClicked: hourControl.currentIndex++ + } + Tumbler { + id: hourControl + model: 12 + EditSeparator { anchors.fill: parent } + } + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg' + onClicked: hourControl.currentIndex-- + } + + Item { width: 10; height: 10 } + Label { text: ':' } + Item { width: 10; height: 10 } + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg' + onClicked: minutesControl.currentIndex++ + } + + Tumbler { + id: minutesControl + model: 60 + EditSeparator { anchors.fill: parent } + } + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg' + onClicked: minutesControl.currentIndex-- + } + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Up.svg' + onClicked: ampmControl.currentIndex++ + } + + Tumbler { + id: ampmControl + model: ['AM', 'PM', 'AM', 'PM'] + EditSeparator { anchors.fill: parent } + } + + ImageButton { + Layout.alignment: Layout.Center + offImage: './images/HMI_Settings_TimeDate_Arrow_Down.svg' + onClicked: ampmControl.currentIndex-- + } +} diff --git a/app/datetime/datetime.qrc b/app/datetime/datetime.qrc new file mode 100644 index 0000000..c60c626 --- /dev/null +++ b/app/datetime/datetime.qrc @@ -0,0 +1,14 @@ +<RCC> + <qresource prefix="/datetime"> + <file>DateEdit.qml</file> + <file>DateTime.qml</file> + <file>TimeEdit.qml</file> + <file>EditSeparator.qml</file> + <file>images/HMI_Settings_TimeDate_Arrow_DividingLine.svg</file> + <file>images/HMI_Settings_TimeDate_Arrow_Down.svg</file> + <file>images/HMI_Settings_TimeDate_Arrow_Up.svg</file> + <file>images/HMI_Settings_TimeDate_Button_Cancel.svg</file> + <file>images/HMI_Settings_TimeDate_Button_Set.svg</file> + <file>images/HMI_Settings_TimeIcon.svg</file> + </qresource> +</RCC> diff --git a/app/datetime/images/HMI_Settings_TimeDate_Arrow_DividingLine.svg b/app/datetime/images/HMI_Settings_TimeDate_Arrow_DividingLine.svg new file mode 100644 index 0000000..5a7fa7f --- /dev/null +++ b/app/datetime/images/HMI_Settings_TimeDate_Arrow_DividingLine.svg @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 93 20" + style="enable-background:new 0 0 93 20;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_TimeDate_Arrow_DividingLine.svg"><metadata + id="metadata15"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs13" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview11" + showgrid="false" + inkscape:zoom="7.2258065" + inkscape:cx="-15.569196" + inkscape:cy="10" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:none;stroke:#66FF99;stroke-miterlimit:10;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><line + class="st0" + x1="0.3" + y1="10" + x2="92.7" + y2="10" + id="line9" /></g></switch></svg>
\ No newline at end of file diff --git a/app/datetime/images/HMI_Settings_TimeDate_Arrow_Down.svg b/app/datetime/images/HMI_Settings_TimeDate_Arrow_Down.svg new file mode 100644 index 0000000..a4fad6b --- /dev/null +++ b/app/datetime/images/HMI_Settings_TimeDate_Arrow_Down.svg @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 90 70" + style="enable-background:new 0 0 90 70;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_TimeDate_Arrow_Down.svg"><metadata + id="metadata18"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs16" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview14" + showgrid="false" + inkscape:zoom="3.3714286" + inkscape:cx="-85.95339" + inkscape:cy="35" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill-rule:evenodd;clip-rule:evenodd;fill:#66FF99;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="previous_11_"><g + id="g10"><path + class="st0" + d="M45,46.4L23.9,25.7c0,0,4.2-2.1,4.3-2.1c0,0,16.8,16.5,16.8,16.5c0,0,16.9-16.5,16.9-16.5 c0,0,4.2,2.1,4.2,2.1L45,46.4z" + id="path12" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/datetime/images/HMI_Settings_TimeDate_Arrow_Up.svg b/app/datetime/images/HMI_Settings_TimeDate_Arrow_Up.svg new file mode 100644 index 0000000..49b0c88 --- /dev/null +++ b/app/datetime/images/HMI_Settings_TimeDate_Arrow_Up.svg @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 90 70" + style="enable-background:new 0 0 90 70;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_TimeDate_Arrow_Up.svg"><metadata + id="metadata18"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs16" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview14" + showgrid="false" + inkscape:zoom="3.3714286" + inkscape:cx="-118.4322" + inkscape:cy="35" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill-rule:evenodd;clip-rule:evenodd;fill:#66FF99;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="previous_11_"><g + id="g10"><path + class="st0" + d="M45,23.6L23.9,44.3c0,0,4.2,2.1,4.3,2.1c0,0,16.8-16.5,16.8-16.5c0,0,16.9,16.5,16.9,16.5 c0,0,4.2-2.1,4.2-2.1L45,23.6z" + id="path12" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/datetime/images/HMI_Settings_TimeDate_Button_Cancel.svg b/app/datetime/images/HMI_Settings_TimeDate_Button_Cancel.svg new file mode 100644 index 0000000..c04e11e --- /dev/null +++ b/app/datetime/images/HMI_Settings_TimeDate_Button_Cancel.svg @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 151 51" + style="enable-background:new 0 0 151 51;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_TimeDate_Button_Cancel.svg"><metadata + id="metadata33"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs31" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview29" + showgrid="false" + inkscape:zoom="4.4503311" + inkscape:cx="-33.143601" + inkscape:cy="25.5" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:none;stroke:url(#SVGID_1_);stroke-miterlimit:10;} + .st1{opacity:0.3;fill:url(#SVGID_2_);} + .st2{fill:#FFFFFF;} + .st3{font-family:'Roboto-Regular';} + .st4{font-size:20px;} + .st5{letter-spacing:3;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="24.7258" + y1="75.9063" + x2="126.2742" + y2="-24.9063"><stop + offset="0" + style="stop-color:#59FF7F" + id="stop12" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop14" /></linearGradient><rect + x="0.5" + y="0.5" + class="st0" + width="150" + height="50" + id="rect16" /><linearGradient + id="SVGID_2_" + gradientUnits="userSpaceOnUse" + x1="-25.8746" + y1="126.14" + x2="190.2191" + y2="-88.3878"><stop + offset="0" + style="stop-color:#59FF7F" + id="stop19" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop21" /></linearGradient><rect + x="0.5" + y="0.5" + class="st1" + width="150" + height="50" + id="rect23" /><g + id="g25"><text + transform="matrix(1 0 0 1 29.5984 34.017)" + class="st2 st3 st4 st5" + id="text27">CANCEL</text> +</g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/datetime/images/HMI_Settings_TimeDate_Button_Set.svg b/app/datetime/images/HMI_Settings_TimeDate_Button_Set.svg new file mode 100644 index 0000000..4b103cc --- /dev/null +++ b/app/datetime/images/HMI_Settings_TimeDate_Button_Set.svg @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 151 51" + style="enable-background:new 0 0 151 51;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_TimeDate_Button_Set.svg"><metadata + id="metadata33"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs31" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview29" + showgrid="false" + inkscape:zoom="4.4503311" + inkscape:cx="-24.941964" + inkscape:cy="25.5" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:none;stroke:url(#SVGID_1_);stroke-miterlimit:10;} + .st1{opacity:0.84;fill:url(#SVGID_2_);} + .st2{fill:#27232B;} + .st3{font-family:'Roboto-Regular';} + .st4{font-size:20px;} + .st5{letter-spacing:3;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="24.7258" + y1="75.9063" + x2="126.2742" + y2="-24.9063"><stop + offset="0" + style="stop-color:#59FF7F" + id="stop12" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop14" /></linearGradient><rect + x="0.5" + y="0.5" + class="st0" + width="150" + height="50" + id="rect16" /><linearGradient + id="SVGID_2_" + gradientUnits="userSpaceOnUse" + x1="-25.8746" + y1="126.14" + x2="190.2191" + y2="-88.3878"><stop + offset="0" + style="stop-color:#59FF7F" + id="stop19" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop21" /></linearGradient><rect + x="0.5" + y="0.5" + class="st1" + width="150" + height="50" + id="rect23" /><g + id="g25"><text + transform="matrix(1 0 0 1 53.2699 34.0168)" + class="st2 st3 st4 st5" + id="text27">SET</text> +</g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/datetime/images/HMI_Settings_TimeIcon.svg b/app/datetime/images/HMI_Settings_TimeIcon.svg new file mode 100644 index 0000000..d4b2ef6 --- /dev/null +++ b/app/datetime/images/HMI_Settings_TimeIcon.svg @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 100 100" + style="enable-background:new 0 0 100 100;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_TimeIcon.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview17" + showgrid="false" + inkscape:zoom="2.36" + inkscape:cx="-145.55085" + inkscape:cy="50" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><g + id="g11"><path + class="st0" + d="M50,81.2c-17.3,0-31.4-14-31.4-31.2c0-1.3,0.1-2.7,0.3-4l1.9,0.2c-0.2,1.3-0.2,2.5-0.2,3.8 c0,16.2,13.2,29.3,29.5,29.3S79.5,66.2,79.5,50c0-16.2-13.2-29.3-29.5-29.3c-7.2,0-14.1,2.6-19.5,7.3l-1.2-1.4 c5.7-5,13.1-7.8,20.7-7.8c17.3,0,31.4,14,31.4,31.2C81.4,67.2,67.3,81.2,50,81.2z" + id="path13" /></g><polygon + class="st0" + points="51,49.8 51,33.7 49,33.7 49,51.7 50,51.7 51,51.7 60,51.7 60,49.8 " + id="polygon15" /></g></g></switch></svg>
\ No newline at end of file diff --git a/app/example/Example.qml b/app/example/Example.qml new file mode 100644 index 0000000..18e3efc --- /dev/null +++ b/app/example/Example.qml @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import AGL.Demo.Controls 1.0 +import '..' + +SettingPage { + id: root + icon: '/example/images/HMI_Settings_Example.svg' + title: 'Example' + checkable: true + + ColumnLayout { + anchors.fill: parent + anchors.margins: 100 + RowLayout { + spacing: 20 + Button { + text: 'Sushi' + highlighted: true + } + Button { + text: 'Sashimi' + } + Button { + text: 'Ramen' + } + } + + Image { + source: '../images/HMI_Settings_DividingLine.svg' + } + + ListView { + Layout.fillWidth: true + Layout.fillHeight: true + clip: true + model: 10 + delegate: MouseArea { + width: ListView.view.width + height: 110 + RowLayout { + anchors.fill: parent + anchors.margins: 5 + spacing: 30 + Image { + source: './images/HMI_Settings_Example.svg' + } + + ColumnLayout { + Label { + id: title + Layout.fillWidth: true + text: 'Title' + font.pixelSize: 48 + } + Label { + id: subtitle + Layout.fillWidth: true + text: 'Subtitle' + color: '#66FF99' + font.pixelSize: 24 + } + } + + Button { + text: 'Go' + } + } + + Image { + source: '../images/HMI_Settings_DividingLine.svg' + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + visible: model.index > 0 + } + } + } + } +} diff --git a/app/example/example.qrc b/app/example/example.qrc new file mode 100644 index 0000000..5739f8e --- /dev/null +++ b/app/example/example.qrc @@ -0,0 +1,6 @@ +<RCC> + <qresource prefix="/example"> + <file>Example.qml</file> + <file>images/HMI_Settings_Example.svg</file> + </qresource> +</RCC> diff --git a/app/example/images/HMI_Settings_Example.svg b/app/example/images/HMI_Settings_Example.svg new file mode 100644 index 0000000..5ad9479 --- /dev/null +++ b/app/example/images/HMI_Settings_Example.svg @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&#38;ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + x="0px" + y="0px" + viewBox="0 0 45 45" + style="enable-background:new 0 0 45 45;" + xml:space="preserve" + id="svg2" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_ContactScreen_X-01.svg"><metadata + id="metadata66"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs64" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview62" + showgrid="false" + inkscape:zoom="5.2444444" + inkscape:cx="-132.61653" + inkscape:cy="22.5" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg2" /><style + type="text/css" + id="style4"> + .st0{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;} + .st1{display:none;} + .st2{display:inline;opacity:0.15;fill:url(#SVGID_1_);} + .st3{display:inline;opacity:0.35;fill:url(#SVGID_2_);} + .st4{display:inline;} + .st5{opacity:0.15;fill:url(#SVGID_3_);} + .st6{opacity:0.15;fill:url(#SVGID_4_);stroke:url(#SVGID_5_);stroke-miterlimit:10;} + .st7{fill:url(#SVGID_6_);} +</style><switch + id="switch6"><g + i:extraneous="self" + id="g8"><g + id="Inactive"><g + id="g11"><line + class="st0" + x1="44.8" + y1="44.8" + x2="0.2" + y2="0.2" + id="line13" /><line + class="st0" + x1="45" + y1="0" + x2="0" + y2="45" + id="line15" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/images/HMI_Settings_DividingLine.svg b/app/images/HMI_Settings_DividingLine.svg new file mode 100644 index 0000000..d63589c --- /dev/null +++ b/app/images/HMI_Settings_DividingLine.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 932.8 1" + style="enable-background:new 0 0 932.8 1;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_DividingLine.svg"><metadata + id="metadata18"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs16" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview14" + showgrid="false" + inkscape:zoom="0.72041167" + inkscape:cx="-116.6" + inkscape:cy="0.5" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{opacity:0.302;} + .st1{fill-rule:evenodd;clip-rule:evenodd;fill:#A8A8A8;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="Divider_2_" + class="st0"><g + id="g10"><polygon + class="st1" + points="719.7,0 0,0 0,1 932.8,1 " + id="polygon12" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/images/HMI_Settings_X.svg b/app/images/HMI_Settings_X.svg new file mode 100644 index 0000000..5ad9479 --- /dev/null +++ b/app/images/HMI_Settings_X.svg @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&#38;ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + x="0px" + y="0px" + viewBox="0 0 45 45" + style="enable-background:new 0 0 45 45;" + xml:space="preserve" + id="svg2" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_ContactScreen_X-01.svg"><metadata + id="metadata66"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs64" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview62" + showgrid="false" + inkscape:zoom="5.2444444" + inkscape:cx="-132.61653" + inkscape:cy="22.5" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg2" /><style + type="text/css" + id="style4"> + .st0{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;} + .st1{display:none;} + .st2{display:inline;opacity:0.15;fill:url(#SVGID_1_);} + .st3{display:inline;opacity:0.35;fill:url(#SVGID_2_);} + .st4{display:inline;} + .st5{opacity:0.15;fill:url(#SVGID_3_);} + .st6{opacity:0.15;fill:url(#SVGID_4_);stroke:url(#SVGID_5_);stroke-miterlimit:10;} + .st7{fill:url(#SVGID_6_);} +</style><switch + id="switch6"><g + i:extraneous="self" + id="g8"><g + id="Inactive"><g + id="g11"><line + class="st0" + x1="44.8" + y1="44.8" + x2="0.2" + y2="0.2" + id="line13" /><line + class="st0" + x1="45" + y1="0" + x2="0" + y2="45" + id="line15" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/images/images.qrc b/app/images/images.qrc new file mode 100644 index 0000000..0bb2c0d --- /dev/null +++ b/app/images/images.qrc @@ -0,0 +1,6 @@ +<RCC> + <qresource prefix="/images"> + <file>HMI_Settings_DividingLine.svg</file> + <file>HMI_Settings_X.svg</file> + </qresource> +</RCC> diff --git a/app/main.cpp b/app/main.cpp new file mode 100644 index 0000000..ff3ca1e --- /dev/null +++ b/app/main.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <QtCore/QDebug> +#include <QtCore/QCommandLineParser> +#include <QtCore/QUrlQuery> +#include <QtGui/QGuiApplication> +#include <QtQml/QQmlApplicationEngine> +#include <QtQml/QQmlContext> +#include <QtQuickControls2/QQuickStyle> + +#ifdef HAVE_LIBHOMESCREEN +#include <libhomescreen.hpp> +#endif + +int main(int argc, char *argv[]) +{ +#ifdef HAVE_LIBHOMESCREEN + LibHomeScreen libHomeScreen; + + if (!libHomeScreen.renderAppToAreaAllowed(0, 1)) { + qWarning() << "renderAppToAreaAllowed is denied"; + return -1; + } +#endif + + QGuiApplication app(argc, argv); + app.setApplicationName(QStringLiteral("HVAC")); + app.setApplicationVersion(QStringLiteral("0.1.0")); + app.setOrganizationDomain(QStringLiteral("automotivelinux.org")); + app.setOrganizationName(QStringLiteral("AutomotiveGradeLinux")); + + QQuickStyle::setStyle("AGL"); + + QCommandLineParser parser; + parser.addPositionalArgument("port", app.translate("main", "port for binding")); + parser.addPositionalArgument("secret", app.translate("main", "secret for binding")); + parser.addHelpOption(); + parser.addVersionOption(); + parser.process(app); + QStringList positionalArguments = parser.positionalArguments(); + + + QQmlApplicationEngine engine; + if (positionalArguments.length() == 2) { + int port = positionalArguments.takeFirst().toInt(); + QString secret = positionalArguments.takeFirst(); + QUrl bindingAddress; + bindingAddress.setScheme(QStringLiteral("ws")); + bindingAddress.setHost(QStringLiteral("localhost")); + bindingAddress.setPort(port); + bindingAddress.setPath(QStringLiteral("/api")); + QUrlQuery query; + query.addQueryItem(QStringLiteral("token"), secret); + bindingAddress.setQuery(query); + QQmlContext *context = engine.rootContext(); + context->setContextProperty(QStringLiteral("bindingAddress"), bindingAddress); + } + engine.load(QUrl(QStringLiteral("qrc:/Settings.qml"))); + + return app.exec(); +} + diff --git a/app/settings.qrc b/app/settings.qrc new file mode 100644 index 0000000..189f441 --- /dev/null +++ b/app/settings.qrc @@ -0,0 +1,7 @@ +<RCC> + <qresource prefix="/"> + <file>Settings.qml</file> + <file>SettingsLauncher.qml</file> + <file>SettingPage.qml</file> + </qresource> +</RCC> diff --git a/app/wifi/Wifi.qml b/app/wifi/Wifi.qml new file mode 100644 index 0000000..7851967 --- /dev/null +++ b/app/wifi/Wifi.qml @@ -0,0 +1,435 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import '..' + +SettingPage { + id: root + icon: '/wifi/images/HMI_Settings_WifiIcon.svg' + title: 'Wifi' + checkable: true + + property string protocol: 'http://' + property string ipAddress: '127.0.0.1' + property string portNumber: Qt.application.arguments[1] + property string tokenString: Qt.application.arguments[2] + property string wifiAPI: '/api/wifi-manager/' + property string wifiAPIpath: protocol + ipAddress + ':' + portNumber + wifiAPI + + Text { + id: log + anchors.fill: parent + anchors.margins: 10 + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + //text: "log" + } + + onCheckedChanged: { + console.log("Wifi set to", checked) + if (checked == true) { + periodicRefresh.start() + request(wifiAPIpath + 'activate', function (o) { + // log the json response + console.log(o.responseText) + }) + + } else { + //console.log(networkPath) + networkList.clear() + request(wifiAPIpath + 'deactivate', function (o) { + // log the json response + console.log(o.responseText) + }) + } + } + function listWifiNetworks() { + console.log("test #4") + } + ListModel { + id: networkList + } + + Rectangle { + id: buttonNetworkList + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.margins: 10 + width: buttonNetworkListText.width + 10 + height: buttonScanText.height + 10 + border.width: buttonNetworkListMouseArea.pressed ? 2 : 1 + radius: 5 + antialiasing: true + color: "#222" + border.color: "white" + Text { + color: "white" + id: buttonNetworkListText + anchors.centerIn: parent + text: "GET NETWORK LIST" + font.pixelSize: 40 + } + ListModel { + id: listModel + } + MouseArea { + id: buttonNetworkListMouseArea + anchors.fill: parent + onClicked: { + log.text = "" + console.log("\n") + networkList.clear() + request(wifiAPIpath + 'scan_result', function (o) { + // log the json response + console.log(o.responseText) + // translate response into object + var jsonObject = eval('(' + o.responseText + ')') + var jsonObjectNetworks = eval( + '(' + JSON.stringify(jsonObject.response) + ')') + //console.log(jsonObject.response) + for (var i = 0; i < jsonObjectNetworks.length; i++) { + networkList.append({ + number: jsonObjectNetworks[i].Number, + name: jsonObjectNetworks[i].ESSID, + strength: jsonObjectNetworks[i].Strength, + serviceState: jsonObjectNetworks[i].State, + security: jsonObjectNetworks[i].Security, + address: jsonObjectNetworks[i].IPAddress + }) + console.log(jsonObjectNetworks[i].Number, + jsonObjectNetworks[i].ESSID, + jsonObjectNetworks[i].Strength, + jsonObjectNetworks[i].State, + jsonObjectNetworks[i].Security, + jsonObjectNetworks[i].IPAddress) + } + }) + } + } + } + Rectangle { + id: buttonScan + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.margins: 80 + width: buttonScanText.width + 10 + height: buttonScanText.height + 10 + border.width: mouseArea.pressed ? 2 : 1 + //radius: 5 + //antialiasing: true + //color: "black" + color: "#222" + border.color: "white" + Text { + id: buttonScanText + anchors.centerIn: parent + text: "SCAN" + color: "white" + font.pixelSize: 40 + } + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: { + log.text = "" + console.log("\n") + request(wifiAPIpath + 'scan', function (o) { + // log the json response + console.log(o.responseText) + }) + } + } + } + function request(url, callback) { + var xhr = new XMLHttpRequest() + xhr.onreadystatechange = (function (myxhr) { + return function () { + if (xhr.readyState == 4 && xhr.status == 200) + callback(myxhr) + } + }) + (xhr) + xhr.open('GET', url, false) + xhr.send('') + } + + function securityType(security) { + if (security === "Open") + return "unsecured" + else + return "secured" + } + + Component { + id: wifiDevice + Rectangle { + height: 150 + width: parent.width + color: "#222" + Image { + anchors.top: parent.top + anchors.topMargin: 7 + anchors.left: parent.left + width: 70 + height: 50 + id: icon + source: { + if (securityType(security) === "unsecured") { + if (strength < 30) + source = "images/HMI_Settings_Wifi_1Bar.svg" + else if (strength >= 30 && strength < 50) + source = "images/HMI_Settings_Wifi_2Bars.svg" + else if (strength >= 50 && strength < 70) + source = "images/HMI_Settings_Wifi_3Bars.svg" + else + source = "images/HMI_Settings_Wifi_Full.svg" + } else { + if (strength < 30) + source = "images/HMI_Settings_Wifi_Locked_1Bar.svg" + else if (strength >= 30 && strength < 50) + source = "images/HMI_Settings_Wifi_Locked_2Bars.svg" + else if (strength >= 50 && strength < 70) + source = "images/HMI_Settings_Wifi_Locked_3Bars.svg" + else + source = "images/HMI_Settings_Wifi_Locked_Full.svg" + } + } + } + Column { + anchors.left: icon.right + anchors.leftMargin: 10 + Text { + text: name + font.pointSize: 30 + font.bold: { + if ((serviceState === "ready") + || serviceState === "online") + font.bold = true + else + font.bold = false + } + color: { + if ((serviceState === "ready") + || serviceState === "online") + color = "#00ff00" + else + color = "#ffffff" + } + } + Text { + visible: ((serviceState === "ready") + || serviceState === "online") ? true : false + text: "connected, " + address + font.pointSize: 18 + color: "#ffffff" + font.italic: true + } + } + Button { + id: connectButton + anchors.top: parent.top + anchors.right: parent.right + anchors.rightMargin: 5 + width: 250 + + MouseArea { + anchors.fill: parent + + Text { + anchors.fill: parent + id: buttonTextLabel + font.pixelSize: 15 + font.bold: true + color: "black" + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + text: { + if ((serviceState === "ready") + || serviceState === "online") + text = "Forget" + else + text = "Connect" + } + } + + onClicked: { + + //connectButton.border.color = "steelblue" + if ((serviceState === "ready") + || serviceState === "online") { + + //means we are connected + console.log("Disconnecting from", index, " ,", name) + request(wifiAPIpath + 'disconnect?network=' + index, + function (o) { + + //showRequestInfo(o.responseText) + console.log(o.responseText) + }) + } else { + console.log("Conect to", index, " ,", name) + + //passwordDialog.open() + request(wifiAPIpath + 'connect?network=' + index, + function (o) { + + // log the json response + //showRequestInfo(o.responseText) + console.log(o.responseText) + }) + } + } + } + } + + Button { + id: passwordButton + anchors.top: parent.top + anchors.right: parent.right + width: 40 + visible: (securityType(security) === "unsecured") ? false : true + + //anchors.rightMargin: connectButton.width + 5 + //buttonText: "Connect" + text: { + "Key" //or some icon? + } + + MouseArea { + anchors.fill: parent + + onClicked: { + + //connectButton.border.color = "steelblue" + passwordInputText.visible = true + connectButton.visible = false + passwordValidateButton.visible = true + + System.showKeyboard = visible + + //passwordInputText.o + periodicRefresh.stop() + + var passkey = passwordInputText.text.valueOf() + + //var passkey = 'randompassword' + console.log("Disconnecting from", index, " ,", name) + } + } + } + + Button { + id: passwordValidateButton + anchors.top: parent.top + anchors.right: parent.right + anchors.rightMargin: connectButton.width + 5 + width: 40 + visible: false + + //anchors.rightMargin: connectButton.width + 5 + //buttonText: "Connect" + text: { + "ok" //or some icon? + } + + MouseArea { + anchors.fill: parent + + onClicked: { + //passwordInputText = "" + var passkey = passwordInputText.text.valueOf() + console.log("Validating", passkey) + System.showKeyboard = false + + console.log("Passkey is", passkey) + request(wifiAPIpath + 'security?passkey=' + passkey, + function (o) { + + //showRequestInfo(o.responseText) + console.log(o.responseText) + }) + passwordValidateButton.visible = false + passwordInputText.visible = false + connectButton.visible = true + + keyboard.currentString = "" + + periodicRefresh.start() + } + } + } + + TextInput { + id: passwordInputText + anchors.top: parent.top + anchors.right: parent.right + anchors.rightMargin: 5 + + font.pointSize: 15 + color: "#ffffff" + + width: connectButton.width + visible: false + text: keyboard.currentString + } + } + } + ListView { + width: parent.width + anchors.top: parent.top + anchors.topMargin: 70 + anchors.bottom: parent.bottom + anchors.bottomMargin: 150 + model: networkList //WifiList {} + delegate: wifiDevice + clip: true + } + + //Timer for periodic refresh; this is BAD solution, need to figure out how to subscribe for events + Timer { + id: periodicRefresh + interval: 5000 // 5seconds + onTriggered: { + + networkList.clear() + request(wifiAPIpath + 'scan_result', function (o) { + // log the json response + console.log(o.responseText) + + // translate response into object + var jsonObject = eval('(' + o.responseText + ')') + var jsonObjectNetworks = eval('(' + JSON.stringify( + jsonObject.response) + ')') + console.log("WiFi list refreshed") + //console.log(jsonObject.response) + for (var i = 0; i < jsonObjectNetworks.length; i++) { + networkList.append({ + number: jsonObjectNetworks[i].Number, + name: jsonObjectNetworks[i].ESSID, + strength: jsonObjectNetworks[i].Strength, + serviceState: jsonObjectNetworks[i].State, + security: jsonObjectNetworks[i].Security, + address: jsonObjectNetworks[i].IPAddress + }) + } + }) + start() + } + } +} diff --git a/app/wifi/images/HMI_Settings_WifiIcon.svg b/app/wifi/images/HMI_Settings_WifiIcon.svg new file mode 100644 index 0000000..4314729 --- /dev/null +++ b/app/wifi/images/HMI_Settings_WifiIcon.svg @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 100 100" + style="enable-background:new 0 0 100 100;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_WifiIcon.svg"><metadata + id="metadata20"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs18" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview16" + showgrid="false" + inkscape:zoom="2.36" + inkscape:cx="-191.52542" + inkscape:cy="50" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="Wifi_Icon"><path + class="st0" + d="M49.6,32.8c10.8-0.2,21.2,4.3,31,13.4l1.6-1.6C72,35,61,30.2,49.6,30.5c-15.2,0.4-26.9,9.4-31.8,13.9 l1.6,1.6C24.1,41.7,35.4,33.1,49.6,32.8z" + id="path10" /><path + class="st0" + d="M29,55.8l1.6,1.6c2.9-2.7,10.1-8.2,19.1-8.4c6.9-0.2,13.4,2.7,19.6,8.5L71,56c-6.7-6.3-13.9-9.4-21.3-9.2 C39.7,47,32.1,52.9,29,55.8z" + id="path12" /><path + class="st0" + d="M49.8,63.5c-4.7,0.1-8.2,3.3-9,4.2l1.6,1.6c0.7-0.7,3.6-3.4,7.5-3.5c2.6,0,5.3,1.2,7.7,3.7l1.6-1.6 C56.3,64.9,53.2,63.5,49.8,63.5z" + id="path14" /></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_1Bar.svg b/app/wifi/images/HMI_Settings_Wifi_1Bar.svg new file mode 100644 index 0000000..e692c69 --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_1Bar.svg @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 80 80" + style="enable-background:new 0 0 80 80;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_1Bar.svg"><metadata + id="metadata29"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs27" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview25" + showgrid="false" + inkscape:zoom="2.95" + inkscape:cx="-129.15254" + inkscape:cy="40" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} + .st1{fill:#545157;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><ellipse + class="st0" + cx="39.3" + cy="64.2" + rx="5.2" + ry="5" + id="ellipse11" /><g + id="g13"><path + class="st1" + d="M7.9,39.8c7.7-8.3,18.9-13.6,31.4-13.6c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8c-9.1-11.2-23.1-18.3-38.9-18.3 C25,19.1,12,25.1,3,34.6L7.9,39.8z" + id="path15" /></g><g + id="g17"><path + class="st1" + d="M17.1,49.3c5.3-6.2,13.3-10.2,22.2-10.2c9.8,0,18.4,4.8,23.7,12l5.3-4.8c-6.6-8.6-17.1-14.2-29-14.2 c-10.9,0-20.6,4.7-27.2,12L17.1,49.3z" + id="path19" /></g><g + id="g21"><path + class="st1" + d="M27.1,59.8c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9c-3.8-5.9-10.6-9.8-18.3-9.8 c-7.1,0-13.3,3.3-17.3,8.4L27.1,59.8z" + id="path23" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_2Bars.svg b/app/wifi/images/HMI_Settings_Wifi_2Bars.svg new file mode 100644 index 0000000..f7cf642 --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_2Bars.svg @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 80 80" + style="enable-background:new 0 0 80 80;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_2Bars.svg"><metadata + id="metadata29"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs27" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview25" + showgrid="false" + inkscape:zoom="2.95" + inkscape:cx="-131.86441" + inkscape:cy="40" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} + .st1{fill:#545157;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><ellipse + class="st0" + cx="39.3" + cy="64.2" + rx="5.2" + ry="5" + id="ellipse11" /><g + id="g13"><path + class="st1" + d="M7.9,39.8c7.7-8.3,18.9-13.6,31.4-13.6c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8c-9.1-11.2-23.1-18.3-38.9-18.3 C25,19.1,12,25.1,3,34.6L7.9,39.8z" + id="path15" /></g><g + id="g17"><path + class="st1" + d="M17.1,49.3c5.3-6.2,13.3-10.2,22.2-10.2c9.8,0,18.4,4.8,23.7,12l5.3-4.8c-6.6-8.6-17.1-14.2-29-14.2 c-10.9,0-20.6,4.7-27.2,12L17.1,49.3z" + id="path19" /></g><g + id="g21"><path + class="st0" + d="M27.1,59.8c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9c-3.8-5.9-10.6-9.8-18.3-9.8 c-7.1,0-13.3,3.3-17.3,8.4L27.1,59.8z" + id="path23" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_3Bars.svg b/app/wifi/images/HMI_Settings_Wifi_3Bars.svg new file mode 100644 index 0000000..8a26f3f --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_3Bars.svg @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 80 80" + style="enable-background:new 0 0 80 80;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_3Bars.svg"><metadata + id="metadata29"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs27" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview25" + showgrid="false" + inkscape:zoom="2.95" + inkscape:cx="-135.76271" + inkscape:cy="40" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} + .st1{fill:#545157;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><ellipse + class="st0" + cx="39.3" + cy="64.2" + rx="5.2" + ry="5" + id="ellipse11" /><g + id="g13"><path + class="st1" + d="M7.9,39.8c7.7-8.3,18.9-13.6,31.4-13.6c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8c-9.1-11.2-23.1-18.3-38.9-18.3 C25,19.1,12,25.1,3,34.6L7.9,39.8z" + id="path15" /></g><g + id="g17"><path + class="st0" + d="M17.1,49.3c5.3-6.2,13.3-10.2,22.2-10.2c9.8,0,18.4,4.8,23.7,12l5.3-4.8c-6.6-8.6-17.1-14.2-29-14.2 c-10.9,0-20.6,4.7-27.2,12L17.1,49.3z" + id="path19" /></g><g + id="g21"><path + class="st0" + d="M27.1,59.8c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9c-3.8-5.9-10.6-9.8-18.3-9.8 c-7.1,0-13.3,3.3-17.3,8.4L27.1,59.8z" + id="path23" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_Full.svg b/app/wifi/images/HMI_Settings_Wifi_Full.svg new file mode 100644 index 0000000..9ad1869 --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_Full.svg @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 80 80" + style="enable-background:new 0 0 80 80;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_Full.svg"><metadata + id="metadata29"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs27" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview25" + showgrid="false" + inkscape:zoom="2.95" + inkscape:cx="-164.40678" + inkscape:cy="40" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><ellipse + class="st0" + cx="39.3" + cy="64.2" + rx="5.2" + ry="5" + id="ellipse11" /><g + id="g13"><path + class="st0" + d="M7.9,39.8c7.7-8.3,18.9-13.6,31.4-13.6c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8c-9.1-11.2-23.1-18.3-38.9-18.3 C25,19.1,12,25.1,3,34.6L7.9,39.8z" + id="path15" /></g><g + id="g17"><path + class="st0" + d="M17.1,49.3c5.3-6.2,13.3-10.2,22.2-10.2c9.8,0,18.4,4.8,23.7,12l5.3-4.8c-6.6-8.6-17.1-14.2-29-14.2 c-10.9,0-20.6,4.7-27.2,12L17.1,49.3z" + id="path19" /></g><g + id="g21"><path + class="st0" + d="M27.1,59.8c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9c-3.8-5.9-10.6-9.8-18.3-9.8 c-7.1,0-13.3,3.3-17.3,8.4L27.1,59.8z" + id="path23" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_Locked_1Bar.svg b/app/wifi/images/HMI_Settings_Wifi_Locked_1Bar.svg new file mode 100644 index 0000000..5da957f --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_Locked_1Bar.svg @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 90 90" + style="enable-background:new 0 0 90 90;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_Locked_1Bar.svg"><metadata + id="metadata35"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs33" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview31" + showgrid="false" + inkscape:zoom="2.6222222" + inkscape:cx="-164.74576" + inkscape:cy="45" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} + .st1{fill:#545157;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><ellipse + class="st0" + cx="39.3" + cy="69" + rx="5.2" + ry="5" + id="ellipse9" /><g + id="g11"><path + class="st1" + d="M7.9,44.6C15.7,36.3,26.9,31,39.3,31c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8C69.1,31.2,55.1,24,39.3,24 C25,24,12,29.9,3,39.4L7.9,44.6z" + id="path13" /></g><g + id="g15"><path + class="st1" + d="M17.1,54.2C22.4,48,30.4,44,39.3,44c9.8,0,18.4,4.8,23.7,12l5.3-4.8C61.8,42.6,51.2,37,39.3,37 c-10.9,0-20.6,4.7-27.2,12L17.1,54.2z" + id="path17" /></g><g + id="g19"><path + class="st1" + d="M27.1,64.7c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9C53.8,54.9,47,51,39.3,51 c-7.1,0-13.3,3.3-17.3,8.4L27.1,64.7z" + id="path21" /></g><g + id="g23"><path + class="st0" + d="M87.9,74H75.4c-0.7,0-1.2-0.6-1.2-1.2v-6.6h2V72h10.9v-9H75.4c0.1,0,0.1,0,0.2,0h-1.4v-0.7 c0-0.7,0.6-1.2,1.2-1.2h12.4c0.7,0,1.2,0.6,1.2,1.2v10.5C89.1,73.4,88.5,74,87.9,74z" + id="path25" /></g><g + id="g27"><path + class="st0" + d="M87.2,60h-2v-3.5c0-1.9-1.6-3.5-3.5-3.5s-3.5,1.6-3.5,3.5V60h-2v-3.5c0-3,2.5-5.5,5.5-5.5s5.5,2.5,5.5,5.5 V60z" + id="path29" /></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_Locked_2Bars.svg b/app/wifi/images/HMI_Settings_Wifi_Locked_2Bars.svg new file mode 100644 index 0000000..7f180aa --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_Locked_2Bars.svg @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 90 90" + style="enable-background:new 0 0 90 90;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_Locked_2Bars.svg"><metadata + id="metadata35"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs33" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview31" + showgrid="false" + inkscape:zoom="2.6222222" + inkscape:cx="-135.38136" + inkscape:cy="45" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} + .st1{fill:#545157;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><ellipse + class="st0" + cx="39.3" + cy="69" + rx="5.2" + ry="5" + id="ellipse9" /><g + id="g11"><path + class="st1" + d="M7.9,44.6C15.7,36.3,26.9,31,39.3,31c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8C69.1,31.2,55.1,24,39.3,24 C25,24,12,29.9,3,39.4L7.9,44.6z" + id="path13" /></g><g + id="g15"><path + class="st1" + d="M17.1,54.2C22.4,48,30.4,44,39.3,44c9.8,0,18.4,4.8,23.7,12l5.3-4.8C61.8,42.6,51.2,37,39.3,37 c-10.9,0-20.6,4.7-27.2,12L17.1,54.2z" + id="path17" /></g><g + id="g19"><path + class="st0" + d="M27.1,64.7c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9C53.8,54.9,47,51,39.3,51 c-7.1,0-13.3,3.3-17.3,8.4L27.1,64.7z" + id="path21" /></g><g + id="g23"><path + class="st0" + d="M87.9,74H75.4c-0.7,0-1.2-0.6-1.2-1.2v-6.6h2V72h10.9v-9H75.4c0.1,0,0.1,0,0.2,0h-1.4v-0.7 c0-0.7,0.6-1.2,1.2-1.2h12.4c0.7,0,1.2,0.6,1.2,1.2v10.5C89.1,73.4,88.5,74,87.9,74z" + id="path25" /></g><g + id="g27"><path + class="st0" + d="M87.2,60h-2v-3.5c0-1.9-1.6-3.5-3.5-3.5s-3.5,1.6-3.5,3.5V60h-2v-3.5c0-3,2.5-5.5,5.5-5.5s5.5,2.5,5.5,5.5 V60z" + id="path29" /></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_Locked_3Bars.svg b/app/wifi/images/HMI_Settings_Wifi_Locked_3Bars.svg new file mode 100644 index 0000000..276c758 --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_Locked_3Bars.svg @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 90 90" + style="enable-background:new 0 0 90 90;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_Locked_3Bars.svg"><metadata + id="metadata35"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs33" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview31" + showgrid="false" + inkscape:zoom="2.6222222" + inkscape:cx="-125.65678" + inkscape:cy="45" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} + .st1{fill:#545157;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><ellipse + class="st0" + cx="39.3" + cy="69" + rx="5.2" + ry="5" + id="ellipse9" /><g + id="g11"><path + class="st1" + d="M7.9,44.6C15.7,36.3,26.9,31,39.3,31c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8C69.1,31.2,55.1,24,39.3,24 C25,24,12,29.9,3,39.4L7.9,44.6z" + id="path13" /></g><g + id="g15"><path + class="st0" + d="M17.1,54.2C22.4,48,30.4,44,39.3,44c9.8,0,18.4,4.8,23.7,12l5.3-4.8C61.8,42.6,51.2,37,39.3,37 c-10.9,0-20.6,4.7-27.2,12L17.1,54.2z" + id="path17" /></g><g + id="g19"><path + class="st0" + d="M27.1,64.7c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9C53.8,54.9,47,51,39.3,51 c-7.1,0-13.3,3.3-17.3,8.4L27.1,64.7z" + id="path21" /></g><g + id="g23"><path + class="st0" + d="M87.9,74H75.4c-0.7,0-1.2-0.6-1.2-1.2v-6.6h2V72h10.9v-9H75.4c0.1,0,0.1,0,0.2,0h-1.4v-0.7 c0-0.7,0.6-1.2,1.2-1.2h12.4c0.7,0,1.2,0.6,1.2,1.2v10.5C89.1,73.4,88.5,74,87.9,74z" + id="path25" /></g><g + id="g27"><path + class="st0" + d="M87.2,60h-2v-3.5c0-1.9-1.6-3.5-3.5-3.5s-3.5,1.6-3.5,3.5V60h-2v-3.5c0-3,2.5-5.5,5.5-5.5s5.5,2.5,5.5,5.5 V60z" + id="path29" /></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_Locked_Full.svg b/app/wifi/images/HMI_Settings_Wifi_Locked_Full.svg new file mode 100644 index 0000000..9058511 --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_Locked_Full.svg @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 90 90" + style="enable-background:new 0 0 90 90;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_Locked_Full.svg"><metadata + id="metadata35"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs33" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview31" + showgrid="false" + inkscape:zoom="2.6222222" + inkscape:cx="-130.80508" + inkscape:cy="45" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><ellipse + class="st0" + cx="39.3" + cy="69" + rx="5.2" + ry="5" + id="ellipse9" /><g + id="g11"><path + class="st0" + d="M7.9,44.6C15.7,36.3,26.9,31,39.3,31c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8C69.1,31.2,55.1,24,39.3,24 C25,24,12,29.9,3,39.4L7.9,44.6z" + id="path13" /></g><g + id="g15"><path + class="st0" + d="M17.1,54.2C22.4,48,30.4,44,39.3,44c9.8,0,18.4,4.8,23.7,12l5.3-4.8C61.8,42.6,51.2,37,39.3,37 c-10.9,0-20.6,4.7-27.2,12L17.1,54.2z" + id="path17" /></g><g + id="g19"><path + class="st0" + d="M27.1,64.7c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9C53.8,54.9,47,51,39.3,51 c-7.1,0-13.3,3.3-17.3,8.4L27.1,64.7z" + id="path21" /></g><g + id="g23"><path + class="st0" + d="M87.9,74H75.4c-0.7,0-1.2-0.6-1.2-1.2v-6.6h2V72h10.9v-9H75.4c0.1,0,0.1,0,0.2,0h-1.4v-0.7 c0-0.7,0.6-1.2,1.2-1.2h12.4c0.7,0,1.2,0.6,1.2,1.2v10.5C89.1,73.4,88.5,74,87.9,74z" + id="path25" /></g><g + id="g27"><path + class="st0" + d="M87.2,60h-2v-3.5c0-1.9-1.6-3.5-3.5-3.5s-3.5,1.6-3.5,3.5V60h-2v-3.5c0-3,2.5-5.5,5.5-5.5s5.5,2.5,5.5,5.5 V60z" + id="path29" /></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_Locked_NoBars.svg b/app/wifi/images/HMI_Settings_Wifi_Locked_NoBars.svg new file mode 100644 index 0000000..6f389c6 --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_Locked_NoBars.svg @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 90 90" + style="enable-background:new 0 0 90 90;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_Locked_NoBars.svg"><metadata + id="metadata39"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs37" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview35" + showgrid="false" + inkscape:zoom="2.6222222" + inkscape:cx="-110.21186" + inkscape:cy="45" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#545157;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><ellipse + class="st0" + cx="39.3" + cy="69" + rx="5.2" + ry="5" + id="ellipse11" /><g + id="g13"><path + class="st0" + d="M7.9,44.6C15.7,36.3,26.9,31,39.3,31c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8C69.1,31.2,55.1,24,39.3,24 C25,24,12,29.9,3,39.4L7.9,44.6z" + id="path15" /></g><g + id="g17"><path + class="st0" + d="M17.1,54.2C22.4,48,30.4,44,39.3,44c9.8,0,18.4,4.8,23.7,12l5.3-4.8C61.8,42.6,51.2,37,39.3,37 c-10.9,0-20.6,4.7-27.2,12L17.1,54.2z" + id="path19" /></g><g + id="g21"><path + class="st0" + d="M27.1,64.7c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9C53.8,54.9,47,51,39.3,51 c-7.1,0-13.3,3.3-17.3,8.4L27.1,64.7z" + id="path23" /></g></g><g + id="g25"><g + id="g27"><path + class="st0" + d="M87.9,74H75.4c-0.7,0-1.2-0.6-1.2-1.2v-6.6h2V72h10.9v-9H75.4c0.1,0,0.1,0,0.2,0h-1.4v-0.7 c0-0.7,0.6-1.2,1.2-1.2h12.4c0.7,0,1.2,0.6,1.2,1.2v10.5C89.1,73.4,88.5,74,87.9,74z" + id="path29" /></g><g + id="g31"><path + class="st0" + d="M87.2,60h-2v-3.5c0-1.9-1.6-3.5-3.5-3.5s-3.5,1.6-3.5,3.5V60h-2v-3.5c0-3,2.5-5.5,5.5-5.5s5.5,2.5,5.5,5.5 V60z" + id="path33" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/images/HMI_Settings_Wifi_NoBars.svg b/app/wifi/images/HMI_Settings_Wifi_NoBars.svg new file mode 100644 index 0000000..e23fc1d --- /dev/null +++ b/app/wifi/images/HMI_Settings_Wifi_NoBars.svg @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:i="&ns_ai;" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 80 80" + style="enable-background:new 0 0 80 80;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="HMI_Settings_Wifi_NoBars.svg"><metadata + id="metadata29"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs27" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1464" + id="namedview25" + showgrid="false" + inkscape:zoom="2.95" + inkscape:cx="-152.20339" + inkscape:cy="40" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Layer_1" /><style + type="text/css" + id="style3"> + .st0{fill:#545157;} +</style><switch + id="switch5"><g + i:extraneous="self" + id="g7"><g + id="g9"><ellipse + class="st0" + cx="39.3" + cy="64.2" + rx="5.2" + ry="5" + id="ellipse11" /><g + id="g13"><path + class="st0" + d="M7.9,39.8c7.7-8.3,18.9-13.6,31.4-13.6c13.7,0,25.8,6.3,33.5,16.1l5.3-4.8c-9.1-11.2-23.1-18.3-38.9-18.3 C25,19.1,12,25.1,3,34.6L7.9,39.8z" + id="path15" /></g><g + id="g17"><path + class="st0" + d="M17.1,49.3c5.3-6.2,13.3-10.2,22.2-10.2c9.8,0,18.4,4.8,23.7,12l5.3-4.8c-6.6-8.6-17.1-14.2-29-14.2 c-10.9,0-20.6,4.7-27.2,12L17.1,49.3z" + id="path19" /></g><g + id="g21"><path + class="st0" + d="M27.1,59.8c2.6-4,7.1-6.6,12.2-6.6c5.6,0,10.5,3.1,12.9,7.7l5.4-4.9c-3.8-5.9-10.6-9.8-18.3-9.8 c-7.1,0-13.3,3.3-17.3,8.4L27.1,59.8z" + id="path23" /></g></g></g></switch></svg>
\ No newline at end of file diff --git a/app/wifi/wifi.qrc b/app/wifi/wifi.qrc new file mode 100644 index 0000000..063088a --- /dev/null +++ b/app/wifi/wifi.qrc @@ -0,0 +1,16 @@ +<RCC> + <qresource prefix="/wifi"> + <file>Wifi.qml</file> + <file>images/HMI_Settings_Wifi_1Bar.svg</file> + <file>images/HMI_Settings_Wifi_2Bars.svg</file> + <file>images/HMI_Settings_Wifi_3Bars.svg</file> + <file>images/HMI_Settings_Wifi_Full.svg</file> + <file>images/HMI_Settings_Wifi_Locked_1Bar.svg</file> + <file>images/HMI_Settings_Wifi_Locked_2Bars.svg</file> + <file>images/HMI_Settings_Wifi_Locked_3Bars.svg</file> + <file>images/HMI_Settings_Wifi_Locked_Full.svg</file> + <file>images/HMI_Settings_Wifi_Locked_NoBars.svg</file> + <file>images/HMI_Settings_Wifi_NoBars.svg</file> + <file>images/HMI_Settings_WifiIcon.svg</file> + </qresource> +</RCC> |