From 2496a947558110a7ee41300333d1a882bbe7039c Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Mon, 2 Oct 2017 14:48:03 +0200 Subject: iot-sensortag: Specify package source location This enables the build system to use the manual manifest file and is a regression of the UI clean up changes. Change-Id: Ib3ece60c01f1055b7104defbd9752af534bf52ac Reviewed-by: Oliver Wolff Reviewed-by: Tino Pyssysalo Reviewed-by: Alex Blasche --- tradeshow/iot-sensortag/SensorTagDemo.pro | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tradeshow') diff --git a/tradeshow/iot-sensortag/SensorTagDemo.pro b/tradeshow/iot-sensortag/SensorTagDemo.pro index bae8f07..71fa871 100644 --- a/tradeshow/iot-sensortag/SensorTagDemo.pro +++ b/tradeshow/iot-sensortag/SensorTagDemo.pro @@ -115,6 +115,8 @@ UPDATE_TO_AZURE { RESOURCES += base.qrc +android: ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources + !DEPLOY_TO_FS: RESOURCES += uismall.qrc uiVariant.files = resources/small uiVariant.path = /opt/$${TARGET}/resources -- cgit v1.2.3 From 21ab77013bb37eebb584c21256481ab2abe64aa0 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Wed, 18 Oct 2017 09:31:08 +0200 Subject: iot-sensortag: Make any cloud backend optional Previously, either the MQTT or Azure backend was enabled. But there are users who prefer to have a pure local build. Hence UPDATE_TO_AZURE is an optional setting now. Change-Id: Ie1ff8b6eaa1c357f83a971bd2ded59d40f2c2eb0 Reviewed-by: Shrikant Dhumal --- tradeshow/iot-sensortag/SensorTagDemo.pro | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'tradeshow') diff --git a/tradeshow/iot-sensortag/SensorTagDemo.pro b/tradeshow/iot-sensortag/SensorTagDemo.pro index 71fa871..10f86be 100644 --- a/tradeshow/iot-sensortag/SensorTagDemo.pro +++ b/tradeshow/iot-sensortag/SensorTagDemo.pro @@ -27,6 +27,11 @@ win32|linux|android:!qnx { # This enables both, host and client mode # CONFIG += UPDATE_TO_MQTT_BROKER +# For using Azure cloud connectivity enable +# this config. This enabled both, host and +# client mode +# CONFIG += UPDATE_TO_AZURE + win32:!contains(CONFIG, UPDATE_TO_MQTT_BROKER) { WASTORAGE_PATH = $$(WASTORAGE_LOCATION) isEmpty(WASTORAGE_PATH): message("Location for Azure Storage libs unknown. Please specify WASTORAGE_LOCATION") @@ -61,11 +66,6 @@ HEADERS += \ mockdataproviderpool.h BLUETOOTH_HOST { - win32 { - !isEmpty(WASTORAGE_PATH):!isEmpty(CPPRESTSDK_LOCATION): CONFIG += UPDATE_TO_AZURE - } else { - CONFIG += UPDATE_TO_AZURE - } DEFINES += RUNS_AS_HOST SOURCES += \ -- cgit v1.2.3 From 514c3404213629814387949f277889c72bb3283f Mon Sep 17 00:00:00 2001 From: Andrew O'Doherty Date: Wed, 1 Nov 2017 13:25:47 +0100 Subject: iot-sensortag: Adapt demo to the screen size of a smartwatch mainSmall.qml requires a SwipeView since the smartwatch screen is too small too display all the charts. The charts have been scaled to smaller size and some alignment adjustments have been made Change-Id: I229b6150135c8a1a65bc8114f430904a15397b1e Reviewed-by: Maurice Kalinowski --- tradeshow/iot-sensortag/SensorTagDemo.pro | 13 +- tradeshow/iot-sensortag/main.cpp | 6 +- .../iot-sensortag/resources/base/BaseChart.qml | 3 +- .../iot-sensortag/resources/base/TopToolbar.qml | 6 + tradeshow/iot-sensortag/resources/base/main.qml | 8 +- .../iot-sensortag/resources/small/StyleSmall.qml | 5 + .../iot-sensortag/resources/watch/MainWatch.qml | 240 +++++++++++++++++++++ .../iot-sensortag/resources/watch/StyleWatch.qml | 64 ++++++ .../resources/watch/images/Toolbar/exit_button.png | Bin 0 -> 1262 bytes tradeshow/iot-sensortag/uiwatch.qrc | 34 +++ 10 files changed, 372 insertions(+), 7 deletions(-) create mode 100644 tradeshow/iot-sensortag/resources/watch/MainWatch.qml create mode 100644 tradeshow/iot-sensortag/resources/watch/StyleWatch.qml create mode 100644 tradeshow/iot-sensortag/resources/watch/images/Toolbar/exit_button.png create mode 100644 tradeshow/iot-sensortag/uiwatch.qrc (limited to 'tradeshow') diff --git a/tradeshow/iot-sensortag/SensorTagDemo.pro b/tradeshow/iot-sensortag/SensorTagDemo.pro index 10f86be..6be190e 100644 --- a/tradeshow/iot-sensortag/SensorTagDemo.pro +++ b/tradeshow/iot-sensortag/SensorTagDemo.pro @@ -13,6 +13,9 @@ QT += \ CONFIG += c++11 DEFINES += QT_NO_FOREACH +# Specify UI layout to use: UI_SMALL or UI_WATCH +DEFINES += UI_WATCH + # To overcome the bug QTBUG-58648, uncomment this define # Needed at least for RPi3 and iMX #CONFIG += DEPLOY_TO_FS @@ -117,8 +120,14 @@ RESOURCES += base.qrc android: ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources -!DEPLOY_TO_FS: RESOURCES += uismall.qrc -uiVariant.files = resources/small +contains(DEFINES, UI_SMALL) { + !DEPLOY_TO_FS: RESOURCES += uismall.qrc + uiVariant.files = resources/small +} else:contains(DEFINES, UI_WATCH) { + !DEPLOY_TO_FS: RESOURCES += uiwatch.qrc + uiVariant.files = resources/watch +} else: error("No layout specified") + uiVariant.path = /opt/$${TARGET}/resources # Additional import path used to resolve QML modules in Qt Creator's code model diff --git a/tradeshow/iot-sensortag/main.cpp b/tradeshow/iot-sensortag/main.cpp index ba5324b..34cdcfc 100644 --- a/tradeshow/iot-sensortag/main.cpp +++ b/tradeshow/iot-sensortag/main.cpp @@ -167,9 +167,13 @@ int main(int argc, char *argv[]) addressString.append(QLatin1Char('/')); } } +#ifdef UI_WATCH + mainFile = namingScheme + QStringLiteral("/resources/watch/MainWatch.qml"); + styleFile = namingScheme + QStringLiteral("/resources/watch/StyleWatch.qml"); +#else mainFile = namingScheme + QStringLiteral("/resources/small/MainSmall.qml"); styleFile = namingScheme + QStringLiteral("/resources/small/StyleSmall.qml"); - +#endif qmlRegisterSingletonType(styleFile, "Style", 1,0, "Style"); if (qEnvironmentVariableIsSet("QT_IOS_DEMO_NO_FULLSCREEN")) { diff --git a/tradeshow/iot-sensortag/resources/base/BaseChart.qml b/tradeshow/iot-sensortag/resources/base/BaseChart.qml index 7c846a5..bc850fc 100644 --- a/tradeshow/iot-sensortag/resources/base/BaseChart.qml +++ b/tradeshow/iot-sensortag/resources/base/BaseChart.qml @@ -74,7 +74,7 @@ Item { Image { id: titleIcon - + visible: Style.uiStyle == "small" anchors.top: parent.top source: pathPrefix + "General/icon_sensor.png" } @@ -148,6 +148,7 @@ Item { axis.z: 0 angle: rightSide ? 180 : 0 } + visible: Style.uiStyle == "small" } MouseArea { diff --git a/tradeshow/iot-sensortag/resources/base/TopToolbar.qml b/tradeshow/iot-sensortag/resources/base/TopToolbar.qml index 69722b7..3c92c05 100644 --- a/tradeshow/iot-sensortag/resources/base/TopToolbar.qml +++ b/tradeshow/iot-sensortag/resources/base/TopToolbar.qml @@ -57,6 +57,9 @@ Item { height: 100 width: implicitWidth + property alias topbar: topbar + property alias date: dateLabel + SensorSettings { id: sensorList @@ -130,6 +133,7 @@ Item { } Text { + id: dateLabel property bool showAddress : false text: showAddress ? mainWindow.addresses : Qt.formatDateTime(new Date, "dddd, MMMM d, yyyy") color: "white" @@ -168,6 +172,7 @@ Item { } Text { + id: utcGmt text: "UTC/GMT" color: "white" anchors.left: timeLabel.right @@ -187,6 +192,7 @@ Item { } Image { + id: topbar anchors.bottom: parent.bottom anchors.bottomMargin: -18 source: pathPrefix + "Toolbar/topbar_all.png" diff --git a/tradeshow/iot-sensortag/resources/base/main.qml b/tradeshow/iot-sensortag/resources/base/main.qml index c756c6d..05b0f21 100644 --- a/tradeshow/iot-sensortag/resources/base/main.qml +++ b/tradeshow/iot-sensortag/resources/base/main.qml @@ -48,11 +48,13 @@ ** ****************************************************************************/ import QtQuick 2.6 +import QtQuick.Controls 1.4 import QtQuick.Window 2.0 import SensorTag.DataProvider 1.0 import SensorTag.SeriesStorage 1.0 +import Style 1.0 -Window { +ApplicationWindow { id: mainWindow property var singleSensorSource : null @@ -73,8 +75,8 @@ Window { } // Size defaults to the small display - width: 1920 - height: 1080 + width: Style.width + height: Style.height visible: true color: "black" diff --git a/tradeshow/iot-sensortag/resources/small/StyleSmall.qml b/tradeshow/iot-sensortag/resources/small/StyleSmall.qml index e4d439d..aa19262 100644 --- a/tradeshow/iot-sensortag/resources/small/StyleSmall.qml +++ b/tradeshow/iot-sensortag/resources/small/StyleSmall.qml @@ -56,4 +56,9 @@ QtObject { property int topToolbarSmallFontSize: 20 property int topToolbarLargeFontSize: 62 + + property int height: 1080 + property int width: 1920 + + property string uiStyle: "small" // "watch",... } diff --git a/tradeshow/iot-sensortag/resources/watch/MainWatch.qml b/tradeshow/iot-sensortag/resources/watch/MainWatch.qml new file mode 100644 index 0000000..801c38b --- /dev/null +++ b/tradeshow/iot-sensortag/resources/watch/MainWatch.qml @@ -0,0 +1,240 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of Qt for Device Creation. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 2.7 +import QtQuick.Layouts 1.3 +import QtQuick.Controls 2.2 +import SensorTag.DataProvider 1.0 +import "../base" + +Item { + id: main + + function startRescan(sensor) { + // ### Only do this magic when a local device is connected +// if (sensor.state === SensorTagData.NotFound) +// dataProviderPool.startScanning(); +// else if (sensor.state === SensorTagData.Scanning) +// dataProviderPool.disconnectProvider(sensor.providerId) +// else if (sensor.state !== SensorTagData.Connected) +// sensor.startServiceScan(); + } + + anchors.fill: parent + + Component.onCompleted: { + localProviderPool.startScanning(); + remoteProviderPool.startScanning(); + } + + property int titleFontSize: 22 + + SwipeView { + id: swipePane + currentIndex: 5 + anchors.left: main.left + anchors.leftMargin: 8 + anchors.top: topToolbar.bottom + anchors.bottom: main.bottom + width: main.width + height: main.height + + Item { + RotationPage { + scale: 0.35 + width: swipePane.width + height: swipePane.height + } + } + + Item { + Text { + text: qsTr("Ambient Temperature") + anchors.fill: parent + color: "white" + font.pixelSize: titleFontSize + } + TemperatureChart { + id: ambientTemp + width: swipePane.width + height: swipePane.height + onClicked: main.startRescan(sensor) + scale: 0.85 + title: "" + } + } + + Item { + Text { + text: qsTr("Object Temperature") + anchors.fill: parent + color: "white" + font.pixelSize: titleFontSize + } + ObjectTemperatureChart { + id: objectTemp + anchors.fill: parent + anchors.leftMargin: -40 + onClicked: main.startRescan(sensor) + scale: 0.8 + title: "" + } + } + + Item { + Text { + text: qsTr("Humidity") + anchors.fill: parent + color: "white" + font.pixelSize: titleFontSize + } + HumidityChart { + id: humidity + onClicked: main.startRescan(sensor) + title: "" + scale: 0.80 + anchors.fill: parent + anchors.leftMargin: -40 + anchors.topMargin: 17 + } + } + + Item { + Text { + text: qsTr("Altitude") + anchors.fill: parent + color: "white" + font.pixelSize: titleFontSize + } + AltitudeChart { + id: airPressure + width: swipePane.width + height: swipePane.height + onClicked: main.startRescan(sensor) + title: "" + scale: 0.80 + } + } + + Item { + Text { + text: qsTr("Light Intensity") + anchors.fill: parent + color: "white" + font.pixelSize: titleFontSize + } + LightChart { + id: light + height: swipePane.height + width: swipePane.width*1.1 + scale: 0.70 + onClicked: main.startRescan(sensor) + title: "" + } + } + + Item { + Text { + text: qsTr("Magnetometer") + anchors.fill: parent + color: "white" + font.pixelSize: titleFontSize + } + MagnetometerChart { + id: magnetometer + width: swipePane.width + height: swipePane.height + onClicked: main.startRescan(sensor) + title: "" + } + } + + Item { + Text { + text: qsTr("Gyroscope") + anchors.fill: parent + color: "white" + font.pixelSize: titleFontSize + } + GyroChart { + id: rotation + width: swipePane.width + height: swipePane.height + onClicked: main.startRescan(sensor) + title: "" + } + } + + Item { + Text { + text: qsTr("Accelometer") + anchors.fill: parent + color: "white" + font.pixelSize: titleFontSize + } + AccelChart { + id: accelometer + width: swipePane.width + height: swipePane.height + onClicked: main.startRescan(sensor) + title: "" + } + } + } + + TopToolbar { + id: topToolbar + anchors.top: main.top + anchors.left: main.left + anchors.right: main.right + height: 48 + topbar.visible: false + date.visible: false + } +} diff --git a/tradeshow/iot-sensortag/resources/watch/StyleWatch.qml b/tradeshow/iot-sensortag/resources/watch/StyleWatch.qml new file mode 100644 index 0000000..857b0f1 --- /dev/null +++ b/tradeshow/iot-sensortag/resources/watch/StyleWatch.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of Qt for Device Creation. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +pragma Singleton +import QtQuick 2.0 + +QtObject { + property int indicatorTitleFontSize: 22 + property int indicatorTitleSize: 20 + + property int topToolbarSmallFontSize: 10 + property int topToolbarLargeFontSize: 30 + + property int height: 320 + property int width: 320 + + property string uiStyle: "watch" +} diff --git a/tradeshow/iot-sensortag/resources/watch/images/Toolbar/exit_button.png b/tradeshow/iot-sensortag/resources/watch/images/Toolbar/exit_button.png new file mode 100644 index 0000000..06f2ebe Binary files /dev/null and b/tradeshow/iot-sensortag/resources/watch/images/Toolbar/exit_button.png differ diff --git a/tradeshow/iot-sensortag/uiwatch.qrc b/tradeshow/iot-sensortag/uiwatch.qrc new file mode 100644 index 0000000..74093da --- /dev/null +++ b/tradeshow/iot-sensortag/uiwatch.qrc @@ -0,0 +1,34 @@ + + + resources/watch/MainWatch.qml + resources/watch/StyleWatch.qml + resources/watch/images/Toolbar/exit_button.png + resources/small/images/General/icon_sensor.png + resources/small/images/General/separator.png + resources/small/images/Light/light_base_gauge.png + resources/small/images/Light/light_brightness.png + resources/small/images/Toolbar/icon_topbar_sensor.png + resources/small/images/Toolbar/topbar_all.png + resources/small/images/Toolbar/icon_topbar_cloud.png + resources/small/images/Accelometer/inner_ring.png + resources/small/images/Accelometer/outer_ring.png + resources/small/images/AmbientTemperature/temp_ring.png + resources/small/images/AmbientTemperature/temp_sensor.png + resources/small/images/Toolbar/Cloud_button_change_active.png + resources/small/images/Toolbar/Cloud_icon_settings.png + resources/small/images/ObjectTemperature/objTemp_display_obj_blue.png + resources/small/images/ObjectTemperature/objTemp_display_obj_green.png + resources/small/images/ObjectTemperature/objTemp_display_obj_orange.png + resources/small/images/ObjectTemperature/objTemp_display_obj_red.png + resources/small/images/ObjectTemperature/objTemp_outer_inner_ring.png + resources/small/images/Humidity/Hum_combined_all.png + resources/small/images/Altitude/Height_bar.png + resources/small/images/Altitude/Altitude_base_gauge.png + resources/small/images/Altitude/Altitude_base_gauge_outer.png + resources/small/images/Gyro/gyro_center.png + resources/small/images/Gyro/gyro_ring1.png + resources/small/images/Gyro/gyro_ring2.png + resources/small/images/Gyro/gyro_ring3.png + resources/small/images/Gyro/gyro_outer.png + + -- cgit v1.2.3