From 530657b2da3de454f3fd69f15f11b20485cc1f4d Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Sun, 6 Sep 2020 04:29:27 +0200 Subject: [PATCH] Rearrange some connectivity icons --- nymea-app/images.qrc | 41 ++--- nymea-app/resources.qrc | 1 + nymea-app/ui/MainPage.qml | 18 +- nymea-app/ui/Nymea.qml | 2 +- nymea-app/ui/SettingsPage.qml | 6 +- nymea-app/ui/appsettings/AppSettingsPage.qml | 2 +- nymea-app/ui/appsettings/CloudLoginPage.qml | 4 +- .../ui/components/ConnectionStatusIcon.qml | 10 +- nymea-app/ui/components/MainPageTile.qml | 2 +- nymea-app/ui/components/SetupStatusIcon.qml | 7 + nymea-app/ui/components/UpdateStatusIcon.qml | 21 +++ nymea-app/ui/connection/ConnectPage.qml | 30 ++-- .../wifisetup/BluetoothDiscoveryPage.qml | 2 +- .../connection/wifisetup/ConnectWiFiPage.qml | 16 +- nymea-app/ui/delegates/ThingDelegate.qml | 42 +++-- nymea-app/ui/devicepages/DevicePageBase.qml | 33 +++- .../ui/images/{ => connections}/bluetooth.svg | 0 .../images/{ => connections}/cloud-error.svg | 0 .../{ => connections}/cloud-offline.svg | 0 .../ui/images/{ => connections}/cloud.svg | 0 .../{ => connections}/network-secure.svg | 0 .../images/{ => connections}/network-vpn.svg | 0 .../network-wifi-offline.svg | 0 .../images/{ => connections}/network-wifi.svg | 0 .../network-wired-disabled.svg} | 0 .../connections/network-wired-offline.svg | 169 ++++++++++++++++++ .../{ => connections}/network-wired.svg | 0 .../{ => connections}/nm-signal-00-secure.svg | 0 .../images/{ => connections}/nm-signal-00.svg | 0 .../nm-signal-100-secure.svg | 0 .../{ => connections}/nm-signal-100.svg | 0 .../{ => connections}/nm-signal-25-secure.svg | 0 .../images/{ => connections}/nm-signal-25.svg | 0 .../{ => connections}/nm-signal-50-secure.svg | 0 .../images/{ => connections}/nm-signal-50.svg | 0 .../{ => connections}/nm-signal-75-secure.svg | 0 .../images/{ => connections}/nm-signal-75.svg | 0 nymea-app/ui/magic/EditRulePage.qml | 2 +- nymea-app/ui/system/CloudSettingsPage.qml | 6 +- .../ui/system/ConnectionInterfaceDelegate.qml | 4 +- nymea-app/ui/system/NetworkSettingsPage.qml | 22 +-- 41 files changed, 338 insertions(+), 102 deletions(-) create mode 100644 nymea-app/ui/components/UpdateStatusIcon.qml rename nymea-app/ui/images/{ => connections}/bluetooth.svg (100%) rename nymea-app/ui/images/{ => connections}/cloud-error.svg (100%) rename nymea-app/ui/images/{ => connections}/cloud-offline.svg (100%) rename nymea-app/ui/images/{ => connections}/cloud.svg (100%) rename nymea-app/ui/images/{ => connections}/network-secure.svg (100%) rename nymea-app/ui/images/{ => connections}/network-vpn.svg (100%) rename nymea-app/ui/images/{ => connections}/network-wifi-offline.svg (100%) rename nymea-app/ui/images/{ => connections}/network-wifi.svg (100%) rename nymea-app/ui/images/{network-wired-offline.svg => connections/network-wired-disabled.svg} (100%) create mode 100644 nymea-app/ui/images/connections/network-wired-offline.svg rename nymea-app/ui/images/{ => connections}/network-wired.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-00-secure.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-00.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-100-secure.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-100.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-25-secure.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-25.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-50-secure.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-50.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-75-secure.svg (100%) rename nymea-app/ui/images/{ => connections}/nm-signal-75.svg (100%) diff --git a/nymea-app/images.qrc b/nymea-app/images.qrc index 6db2a609..265e31b1 100644 --- a/nymea-app/images.qrc +++ b/nymea-app/images.qrc @@ -61,14 +61,10 @@ ui/images/audio-speakers-muted-symbolic.svg ui/images/audio-speakers-symbolic.svg ui/images/back.svg - ui/images/bluetooth.svg ui/images/Built_with_Qt_RGB_logo_vertical.svg ui/images/Built_with_Qt_RGB_logo.svg ui/images/clock-app-symbolic.svg ui/images/close.svg - ui/images/cloud-error.svg - ui/images/cloud-offline.svg - ui/images/cloud.svg ui/images/configure.svg ui/images/contact-new.svg ui/images/delete.svg @@ -101,21 +97,7 @@ ui/images/media-skip-forward.svg ui/images/media.svg ui/images/navigation-menu.svg - ui/images/network-secure.svg - ui/images/network-vpn.svg - ui/images/network-wifi.svg - ui/images/network-wired.svg ui/images/next.svg - ui/images/nm-signal-00-secure.svg - ui/images/nm-signal-00.svg - ui/images/nm-signal-25-secure.svg - ui/images/nm-signal-25.svg - ui/images/nm-signal-50-secure.svg - ui/images/nm-signal-50.svg - ui/images/nm-signal-75-secure.svg - ui/images/nm-signal-75.svg - ui/images/nm-signal-100-secure.svg - ui/images/nm-signal-100.svg ui/images/non-starred.svg ui/images/notification.svg ui/images/nymea-box-setup.svg @@ -171,8 +153,6 @@ ui/images/edit-copy.svg ui/images/stock_website.svg ui/images/sdk.svg - ui/images/network-wifi-offline.svg - ui/images/network-wired-offline.svg ui/images/preferences-look-and-feel.svg ui/images/sensors/closable.svg ui/images/lock-closed.svg @@ -235,5 +215,26 @@ ui/images/navigationpad.svg ui/images/qrcode.svg ui/images/energy.svg + ui/images/connections/cloud.svg + ui/images/connections/cloud-error.svg + ui/images/connections/cloud-offline.svg + ui/images/connections/network-secure.svg + ui/images/connections/network-vpn.svg + ui/images/connections/network-wifi.svg + ui/images/connections/network-wifi-offline.svg + ui/images/connections/network-wired.svg + ui/images/connections/network-wired-offline.svg + ui/images/connections/nm-signal-00.svg + ui/images/connections/nm-signal-00-secure.svg + ui/images/connections/nm-signal-25.svg + ui/images/connections/nm-signal-25-secure.svg + ui/images/connections/nm-signal-50.svg + ui/images/connections/nm-signal-50-secure.svg + ui/images/connections/nm-signal-75.svg + ui/images/connections/nm-signal-75-secure.svg + ui/images/connections/nm-signal-100.svg + ui/images/connections/nm-signal-100-secure.svg + ui/images/connections/bluetooth.svg + ui/images/connections/network-wired-disabled.svg diff --git a/nymea-app/resources.qrc b/nymea-app/resources.qrc index 8ff704a5..8a09163c 100644 --- a/nymea-app/resources.qrc +++ b/nymea-app/resources.qrc @@ -222,5 +222,6 @@ ui/components/ConnectionStatusIcon.qml ui/components/BatteryStatusIcon.qml ui/components/SetupStatusIcon.qml + ui/components/UpdateStatusIcon.qml diff --git a/nymea-app/ui/MainPage.qml b/nymea-app/ui/MainPage.qml index f77fba52..3b24e039 100644 --- a/nymea-app/ui/MainPage.qml +++ b/nymea-app/ui/MainPage.qml @@ -52,13 +52,13 @@ Page { case Connection.BearerTypeLan: case Connection.BearerTypeWan: if (engine.jsonRpcClient.availableBearerTypes & NymeaConnection.BearerTypeEthernet != NymeaConnection.BearerTypeNone) { - return "../images/network-wired.svg" + return "../images/connections/network-wired.svg" } - return "../images/network-wifi.svg"; + return "../images/connections/network-wifi.svg"; case Connection.BearerTypeBluetooth: - return "../images/network-wifi.svg"; + return "../images/connections/network-wifi.svg"; case Connection.BearerTypeCloud: - return "../images/cloud.svg" + return "../images/connections/cloud.svg" case Connection.BearerTypeLoopback: return "qrc:/styles/%1/logo.svg".arg(styleController.currentStyle) } @@ -579,15 +579,15 @@ Page { case Connection.BearerTypeLan: case Connection.BearerTypeWan: if (engine.jsonRpcClient.availableBearerTypes & NymeaConnection.BearerTypeEthernet != NymeaConnection.BearerTypeNone) { - return "../images/network-wired.svg" + return "../images/connections/network-wired.svg" } - return "../images/network-wifi.svg"; + return "../images/connections/network-wifi.svg"; case Connection.BearerTypeBluetooth: - return "../images/network-wifi.svg"; + return "../images/connections/bluetooth.svg"; case Connection.BearerTypeCloud: - return "../images/cloud.svg" + return "../images/connections/cloud.svg" case Connection.BearerTypeLoopback: - return "../images/network-wired.svg" + return "../images/connections/network-wired.svg" } return "" } diff --git a/nymea-app/ui/Nymea.qml b/nymea-app/ui/Nymea.qml index bec42a4b..87f17cb9 100644 --- a/nymea-app/ui/Nymea.qml +++ b/nymea-app/ui/Nymea.qml @@ -271,7 +271,7 @@ ApplicationWindow { case "weather": return Qt.resolvedUrl("images/weather-app-symbolic.svg") case "gateway": - return Qt.resolvedUrl("images/network-wired.svg") + return Qt.resolvedUrl("images/connections/network-wired.svg") case "notifications": return Qt.resolvedUrl("images/messaging-app-symbolic.svg") case "inputtrigger": diff --git a/nymea-app/ui/SettingsPage.qml b/nymea-app/ui/SettingsPage.qml index efacf5f0..726eb19f 100644 --- a/nymea-app/ui/SettingsPage.qml +++ b/nymea-app/ui/SettingsPage.qml @@ -94,7 +94,7 @@ Page { padding: 0 NymeaListItemDelegate { width: parent.width - iconName: "../images/network-wifi.svg" + iconName: "../images/connections/network-wifi.svg" text: qsTr("Networking") subText: qsTr("Configure the system's network connection") prominentSubText: false @@ -111,7 +111,7 @@ Page { padding: 0 NymeaListItemDelegate { width: parent.width - iconName: "../images/cloud.svg" + iconName: "../images/connections/cloud.svg" text: qsTr("Cloud") subText: qsTr("Connect this %1:core to %1:cloud").arg(app.systemName) prominentSubText: false @@ -127,7 +127,7 @@ Page { padding: 0 NymeaListItemDelegate { width: parent.width - iconName: "../images/network-vpn.svg" + iconName: "../images/connections/network-vpn.svg" text: qsTr("API interfaces") prominentSubText: false wrapTexts: false diff --git a/nymea-app/ui/appsettings/AppSettingsPage.qml b/nymea-app/ui/appsettings/AppSettingsPage.qml index d90a6d0f..9e049395 100644 --- a/nymea-app/ui/appsettings/AppSettingsPage.qml +++ b/nymea-app/ui/appsettings/AppSettingsPage.qml @@ -78,7 +78,7 @@ Page { width: parent.width text: qsTr("Cloud login") subText: qsTr("Log into %1:cloud and manage connected %1:core systems").arg(app.systemName) - iconName: "../images/cloud.svg" + iconName: "../images/connections/cloud.svg" prominentSubText: false wrapTexts: false onClicked: pageStack.push(Qt.resolvedUrl("CloudLoginPage.qml")) diff --git a/nymea-app/ui/appsettings/CloudLoginPage.qml b/nymea-app/ui/appsettings/CloudLoginPage.qml index a1eabb67..595e72a2 100644 --- a/nymea-app/ui/appsettings/CloudLoginPage.qml +++ b/nymea-app/ui/appsettings/CloudLoginPage.qml @@ -120,8 +120,8 @@ SettingsPageBase { progressive: false prominentSubText: false canDelete: true - iconName: "../images/cloud.svg" - secondaryIconName: !model.online ? "../images/cloud-error.svg" : "" + iconName: "../images/connections/cloud.svg" + secondaryIconName: !model.online ? "../images/connections/cloud-error.svg" : "" onClicked: { print("clicked, connected:", engine.jsonRpcClient.connected, model.id) diff --git a/nymea-app/ui/components/ConnectionStatusIcon.qml b/nymea-app/ui/components/ConnectionStatusIcon.qml index 925f734b..d3556547 100644 --- a/nymea-app/ui/components/ConnectionStatusIcon.qml +++ b/nymea-app/ui/components/ConnectionStatusIcon.qml @@ -15,17 +15,17 @@ ColorIcon { name: { if (!isWireless) { - return connectedState && connectedState.value === true ? "../images/network-wired.svg" : "../images/network-wired-offline.svg" + return connectedState && connectedState.value === true ? "../images/connections/network-wired.svg" : "../images/connections/network-wired-offline.svg" } if (connectedState && connectedState.value === false) { - return "../images/network-wifi-offline.svg" + return "../images/connections/nm-signal-00.svg" } - if (signalStrengthState && signalStrengthState.value === -1) { - return "../images/network-wifi.svg" + if (!signalStrengthState) { + return "../images/connections/nm-signal-100.svg" } - return "../images/nm-signal-" + NymeaUtils.pad(Math.round(signalStrengthState.value * 4 / 100) * 25, 2) + ".svg" + return "../images/connections/nm-signal-" + NymeaUtils.pad(Math.round(signalStrengthState.value * 4 / 100) * 25, 2) + ".svg" } color: connectedState && connectedState.value === false diff --git a/nymea-app/ui/components/MainPageTile.qml b/nymea-app/ui/components/MainPageTile.qml index 17b9ebf7..733d65e4 100644 --- a/nymea-app/ui/components/MainPageTile.qml +++ b/nymea-app/ui/components/MainPageTile.qml @@ -151,7 +151,7 @@ Item { ColorIcon { height: app.iconSize / 2 width: height - name: root.isWireless ? "../images/network-wifi-offline.svg" : "../images/network-wired-offline.svg" + name: root.isWireless ? "../images/connections/nm-signal-00.svg" : "../images/connections/network-wired-offline.svg" color: root.disconnected ? "red" : "orange" visible: root.setupStatus == Thing.ThingSetupStatusComplete && (root.disconnected || (root.isWireless && root.signalStrength < 20)) } diff --git a/nymea-app/ui/components/SetupStatusIcon.qml b/nymea-app/ui/components/SetupStatusIcon.qml index 9d780de3..62d800c3 100644 --- a/nymea-app/ui/components/SetupStatusIcon.qml +++ b/nymea-app/ui/components/SetupStatusIcon.qml @@ -13,4 +13,11 @@ ColorIcon { name: setupFailed ? "../images/dialog-warning-symbolic.svg" : setupInProgress ? "../images/settings.svg" : "../images/tick.svg" color: setupFailed ? "red" : keyColor + + RotationAnimation on rotation { + from: 0; to: 360 + duration: 2000 + running: root.setupInProgress + loops: Animation.Infinite + } } diff --git a/nymea-app/ui/components/UpdateStatusIcon.qml b/nymea-app/ui/components/UpdateStatusIcon.qml new file mode 100644 index 00000000..24d65b89 --- /dev/null +++ b/nymea-app/ui/components/UpdateStatusIcon.qml @@ -0,0 +1,21 @@ +import QtQuick 2.9 +import Nymea 1.0 + +ColorIcon { + id: root + + property Thing thing: null + + readonly property State updateStatusState: thing.stateByName("updateStatus") + readonly property bool updateAvailable: updateStatusState && updateStatusState.value === "available" + readonly property bool updateRunning: updateStatusState && updateStatusState.value === "updating" + + name: "../images/system-update.svg" + + RotationAnimation on rotation { + from: 0; to: 360 + duration: 2000 + running: root.updateRunning + loops: Animation.Infinite + } +} diff --git a/nymea-app/ui/connection/ConnectPage.qml b/nymea-app/ui/connection/ConnectPage.qml index 2e8a5ff8..29f8b930 100644 --- a/nymea-app/ui/connection/ConnectPage.qml +++ b/nymea-app/ui/connection/ConnectPage.qml @@ -72,8 +72,8 @@ Page { header: FancyHeader { title: qsTr("Connect %1").arg(app.systemName) model: ListModel { - ListElement { iconSource: "../images/network-vpn.svg"; text: qsTr("Manual connection"); page: "ManualConnectPage.qml" } - ListElement { iconSource: "../images/bluetooth.svg"; text: qsTr("Wireless setup"); page: "wifisetup/BluetoothDiscoveryPage.qml"; } + ListElement { iconSource: "../images/connections/network-vpn.svg"; text: qsTr("Manual connection"); page: "ManualConnectPage.qml" } + ListElement { iconSource: "../images/connections/bluetooth.svg"; text: qsTr("Wireless setup"); page: "wifisetup/BluetoothDiscoveryPage.qml"; } ListElement { iconSource: "../images/private-browsing.svg"; text: qsTr("Demo mode"); page: "" } ListElement { iconSource: "../images/stock_application.svg"; text: qsTr("App settings"); page: "../appsettings/AppSettingsPage.qml" } } @@ -166,13 +166,13 @@ Page { case Connection.BearerTypeLan: case Connection.BearerTypeWan: if (engine.jsonRpcClient.availableBearerTypes & NymeaConnection.BearerTypeEthernet != NymeaConnection.BearerTypeNone) { - return "../images/network-wired.svg" + return "../images/connections/network-wired.svg" } - return "../images/network-wifi.svg"; + return "../images/connections/network-wifi.svg"; case Connection.BearerTypeBluetooth: - return "../images/bluetooth.svg"; + return "../images/connections/bluetooth.svg"; case Connection.BearerTypeCloud: - return "../images/cloud.svg" + return "../images/connections/cloud.svg" case Connection.BearerTypeLoopback: return "qrc:/styles/%1/logo.svg".arg(styleController.currentStyle) } @@ -186,8 +186,8 @@ Page { progressive: false property bool isSecure: nymeaHost.connections.get(defaultConnectionIndex).secure property bool isOnline: nymeaHost.connections.get(defaultConnectionIndex).bearerType !== Connection.BearerTypeWan ? nymeaHost.connections.get(defaultConnectionIndex).online : true - tertiaryIconName: isSecure ? "../images/network-secure.svg" : "" - secondaryIconName: !isOnline ? "../images/cloud-error.svg" : "" + tertiaryIconName: isSecure ? "../images/connections/network-secure.svg" : "" + secondaryIconName: !isOnline ? "../images/connections/cloud-error.svg" : "" secondaryIconColor: "red" onClicked: { @@ -378,21 +378,21 @@ Page { case Connection.BearerTypeLan: case Connection.BearerTypeWan: if (engine.jsonRpcClient.availableBearerTypes & NymeaConnection.BearerTypeEthernet != NymeaConnection.BearerTypeNone) { - return "../images/network-wired.svg" + return "../images/connections/network-wired.svg" } - return "../images/network-wifi.svg"; + return "../images/connections/network-wifi.svg"; case Connection.BearerTypeBluetooth: - return "../images/bluetooth.svg"; + return "../images/connections/bluetooth.svg"; case Connection.BearerTypeCloud: - return "../images/cloud.svg" + return "../images/connections/cloud.svg" case Connection.BearerTypeLoopback: - return "../images/network-wired.svg" + return "../images/connections/network-wired.svg" } return "" } - tertiaryIconName: model.secure ? "../images/network-secure.svg" : "" - secondaryIconName: !model.online ? "../images/cloud-error.svg" : "" + tertiaryIconName: model.secure ? "../images/connections/network-secure.svg" : "" + secondaryIconName: !model.online ? "../images/connections/cloud-error.svg" : "" secondaryIconColor: "red" onClicked: { diff --git a/nymea-app/ui/connection/wifisetup/BluetoothDiscoveryPage.qml b/nymea-app/ui/connection/wifisetup/BluetoothDiscoveryPage.qml index b5597e52..83f842c2 100644 --- a/nymea-app/ui/connection/wifisetup/BluetoothDiscoveryPage.qml +++ b/nymea-app/ui/connection/wifisetup/BluetoothDiscoveryPage.qml @@ -119,7 +119,7 @@ Page { delegate: NymeaListItemDelegate { width: parent.width - iconName: Qt.resolvedUrl("../../images/bluetooth.svg") + iconName: Qt.resolvedUrl("../../images/connections/bluetooth.svg") text: model.name subText: model.address diff --git a/nymea-app/ui/connection/wifisetup/ConnectWiFiPage.qml b/nymea-app/ui/connection/wifisetup/ConnectWiFiPage.qml index 8255df69..1621c1b8 100644 --- a/nymea-app/ui/connection/wifisetup/ConnectWiFiPage.qml +++ b/nymea-app/ui/connection/wifisetup/ConnectWiFiPage.qml @@ -83,30 +83,30 @@ Page { iconName: { if (model.protected) { if (model.signalStrength <= 25) - return Qt.resolvedUrl("../../images/nm-signal-25-secure.svg") + return Qt.resolvedUrl("../../images/connections/nm-signal-25-secure.svg") if (model.signalStrength <= 50) - return Qt.resolvedUrl("../../images/nm-signal-50-secure.svg") + return Qt.resolvedUrl("../../images/connections/nm-signal-50-secure.svg") if (model.signalStrength <= 75) - return Qt.resolvedUrl("../../images/nm-signal-75-secure.svg") + return Qt.resolvedUrl("../../images/connections/nm-signal-75-secure.svg") if (model.signalStrength <= 100) - return Qt.resolvedUrl("../../images/nm-signal-100-secure.svg") + return Qt.resolvedUrl("../../images/connections/nm-signal-100-secure.svg") } else { if (model.signalStrength <= 25) - return Qt.resolvedUrl("../../images/nm-signal-25.svg") + return Qt.resolvedUrl("../../images/connections/nm-signal-25.svg") if (model.signalStrength <= 50) - return Qt.resolvedUrl("../../images/nm-signal-50.svg") + return Qt.resolvedUrl("../../images/connections/nm-signal-50.svg") if (model.signalStrength <= 75) - return Qt.resolvedUrl("../../images/nm-signal-75.svg") + return Qt.resolvedUrl("../../images/connections/nm-signal-75.svg") if (model.signalStrength <= 100) - return Qt.resolvedUrl("../../images/nm-signal-100.svg") + return Qt.resolvedUrl("../../images/connections/nm-signal-100.svg") } } diff --git a/nymea-app/ui/delegates/ThingDelegate.qml b/nymea-app/ui/delegates/ThingDelegate.qml index adfa6ae5..e0d7aac3 100644 --- a/nymea-app/ui/delegates/ThingDelegate.qml +++ b/nymea-app/ui/delegates/ThingDelegate.qml @@ -40,16 +40,35 @@ NymeaListItemDelegate { iconName: thing && thing.thingClass ? app.interfacesToIcon(thing.thingClass.interfaces) : "" text: thing ? thing.name : "" progressive: true - secondaryIconName: batteryCritical ? "../images/battery/battery-010.svg" : "" - tertiaryIconName: thing.setupStatus == Thing.ThingSetupStatusFailed - ? "../images/dialog-warning-symbolic.svg" - : thing.setupStatus == Thing.ThingSetupStatusInProgress - ? "../images/settings.svg" - : disconnected - ? isWireless - ? "../images/network-wifi-offline.svg" : "../images/network-wired-offline.svg" - : "" - tertiaryIconColor: thing.setupStatus == Thing.ThingSetupStatusInProgress ? iconKeyColor : "red" + secondaryIconName: thing.setupStatus == Thing.ThingSetupStatusComplete && batteryCritical ? "../images/battery/battery-010.svg" : "" + tertiaryIconName: { + if (thing.setupStatus == Thing.ThingSetupStatusFailed) { + return "../images/dialog-warning-symbolic.svg"; + } + if (thing.setupStatus == Thing.ThingSetupStatusInProgress) { + return "../images/settings.svg" + } + if (connectedState && connectedState.value === false) { + if (!isWireless) { + return "../images/connections/network-wired-offline.svg" + } + return "../images/connections/nm-signal-00.svg" + } + return "" + } + + tertiaryIconColor: { + if (thing.setupStatus == Thing.ThingSetupStatusFailed) { + return "red" + } + if (thing.setupStatus == Thing.ThingSetupStatusInProgress) { + return iconKeyColor + } + if (connectedState && connectedState.value === false) { + return "red" + } + return iconKeyColor + } property Device device: null property Thing thing: device @@ -65,6 +84,5 @@ NymeaListItemDelegate { readonly property bool disconnected: connectedState && connectedState.value === false ? true : false readonly property bool isWireless: root.thing.thingClass.interfaces.indexOf("wirelessconnectable") >= 0 - - + readonly property State signalStrengthState: root.thing.stateByName("signalStrength") } diff --git a/nymea-app/ui/devicepages/DevicePageBase.qml b/nymea-app/ui/devicepages/DevicePageBase.qml index b4253f75..502cb107 100644 --- a/nymea-app/ui/devicepages/DevicePageBase.qml +++ b/nymea-app/ui/devicepages/DevicePageBase.qml @@ -227,7 +227,7 @@ Page { Rectangle { id: infoPane - visible: setupInProgress || setupFailure || batteryState !== null || (connectedState !== null && connectedState.value === false) + visible: setupInProgress || setupFailure || batteryState !== null || (connectedState !== null && connectedState.value === false) || isWireless || updateAvailable height: visible ? contentRow.implicitHeight : 0 anchors { left: parent.left; top: parent.top; right: parent.right } property bool setupInProgress: root.thing.setupStatus == Thing.ThingSetupStatusInProgress @@ -235,10 +235,17 @@ Page { property State batteryState: root.thing.stateByName("batteryLevel") property State batteryCriticalState: root.thing.stateByName("batteryCritical") property State connectedState: root.thing.stateByName("connected") + property State signalStrengthState: root.thing.stateByName("signalStrength") + property State updateStatusState: root.thing.stateByName("updateStatus") + property bool updateAvailable: updateStatusState && updateStatusState.value === "available" + property bool updateRunning: updateStatusState && updateStatusState.value === "updating" + property bool isWireless: root.thingClass.interfaces.indexOf("wirelessconnectable") >= 0 property bool alertState: setupFailure || (connectedState !== null && connectedState.value === false) || (batteryCriticalState !== null && batteryCriticalState.value === true) - color: alertState ? "red" : "transparent" + property bool highlightState: updateAvailable || updateRunning + color: alertState ? "red" + : infoPane.highlightState ? app.accentColor : "transparent" z: 1000 RowLayout { @@ -256,17 +263,29 @@ Page { (root.device.setupDisplayMessage.length > 0 ? root.device.setupDisplayMessage : qsTr("Thing setup failed!")) : (infoPane.connectedState !== null && infoPane.connectedState.value === false) ? qsTr("Thing is not connected!") - : qsTr("Thing runs out of battery!") - visible: infoPane.alertState + : infoPane.updateAvailable ? + qsTr("Update available!") + : infoPane.updateRunning ? + qsTr("Updating...") + : qsTr("Thing runs out of battery!") + visible: infoPane.alertState || infoPane.updateAvailable || infoPane.updateRunning font.pixelSize: app.smallFont color: "white" } + UpdateStatusIcon { + height: app.iconSize / 2 + width: height + thing: root.thing + color: infoPane.alertState || infoPane.highlightState ? "white" : keyColor + visible: updateAvailable || updateRunning + } + BatteryStatusIcon { height: app.iconSize / 2 width: height * 1.23 thing: root.thing - color: infoPane.alertState ? "white" : keyColor + color: infoPane.alertState || infoPane.highlightState ? "white" : keyColor visible: thing.setupStatus == Thing.ThingSetupStatusComplete && (hasBatteryLevel || isCritical) } @@ -274,7 +293,7 @@ Page { height: app.iconSize / 2 width: height thing: root.thing - color: infoPane.alertState ? "white" : keyColor + color: infoPane.alertState || infoPane.highlightState ? "white" : keyColor visible: thing.setupStatus == Thing.ThingSetupStatusComplete && (hasSignalStrength || !isConnected) } @@ -282,7 +301,7 @@ Page { height: app.iconSize / 2 width: height thing: root.thing - color: infoPane.alertState ? "white" : keyColor + color: infoPane.alertState || infoPane.highlightState ? "white" : keyColor visible: setupFailed || setupInProgress } } diff --git a/nymea-app/ui/images/bluetooth.svg b/nymea-app/ui/images/connections/bluetooth.svg similarity index 100% rename from nymea-app/ui/images/bluetooth.svg rename to nymea-app/ui/images/connections/bluetooth.svg diff --git a/nymea-app/ui/images/cloud-error.svg b/nymea-app/ui/images/connections/cloud-error.svg similarity index 100% rename from nymea-app/ui/images/cloud-error.svg rename to nymea-app/ui/images/connections/cloud-error.svg diff --git a/nymea-app/ui/images/cloud-offline.svg b/nymea-app/ui/images/connections/cloud-offline.svg similarity index 100% rename from nymea-app/ui/images/cloud-offline.svg rename to nymea-app/ui/images/connections/cloud-offline.svg diff --git a/nymea-app/ui/images/cloud.svg b/nymea-app/ui/images/connections/cloud.svg similarity index 100% rename from nymea-app/ui/images/cloud.svg rename to nymea-app/ui/images/connections/cloud.svg diff --git a/nymea-app/ui/images/network-secure.svg b/nymea-app/ui/images/connections/network-secure.svg similarity index 100% rename from nymea-app/ui/images/network-secure.svg rename to nymea-app/ui/images/connections/network-secure.svg diff --git a/nymea-app/ui/images/network-vpn.svg b/nymea-app/ui/images/connections/network-vpn.svg similarity index 100% rename from nymea-app/ui/images/network-vpn.svg rename to nymea-app/ui/images/connections/network-vpn.svg diff --git a/nymea-app/ui/images/network-wifi-offline.svg b/nymea-app/ui/images/connections/network-wifi-offline.svg similarity index 100% rename from nymea-app/ui/images/network-wifi-offline.svg rename to nymea-app/ui/images/connections/network-wifi-offline.svg diff --git a/nymea-app/ui/images/network-wifi.svg b/nymea-app/ui/images/connections/network-wifi.svg similarity index 100% rename from nymea-app/ui/images/network-wifi.svg rename to nymea-app/ui/images/connections/network-wifi.svg diff --git a/nymea-app/ui/images/network-wired-offline.svg b/nymea-app/ui/images/connections/network-wired-disabled.svg similarity index 100% rename from nymea-app/ui/images/network-wired-offline.svg rename to nymea-app/ui/images/connections/network-wired-disabled.svg diff --git a/nymea-app/ui/images/connections/network-wired-offline.svg b/nymea-app/ui/images/connections/network-wired-offline.svg new file mode 100644 index 00000000..ee34f8db --- /dev/null +++ b/nymea-app/ui/images/connections/network-wired-offline.svg @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/nymea-app/ui/images/network-wired.svg b/nymea-app/ui/images/connections/network-wired.svg similarity index 100% rename from nymea-app/ui/images/network-wired.svg rename to nymea-app/ui/images/connections/network-wired.svg diff --git a/nymea-app/ui/images/nm-signal-00-secure.svg b/nymea-app/ui/images/connections/nm-signal-00-secure.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-00-secure.svg rename to nymea-app/ui/images/connections/nm-signal-00-secure.svg diff --git a/nymea-app/ui/images/nm-signal-00.svg b/nymea-app/ui/images/connections/nm-signal-00.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-00.svg rename to nymea-app/ui/images/connections/nm-signal-00.svg diff --git a/nymea-app/ui/images/nm-signal-100-secure.svg b/nymea-app/ui/images/connections/nm-signal-100-secure.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-100-secure.svg rename to nymea-app/ui/images/connections/nm-signal-100-secure.svg diff --git a/nymea-app/ui/images/nm-signal-100.svg b/nymea-app/ui/images/connections/nm-signal-100.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-100.svg rename to nymea-app/ui/images/connections/nm-signal-100.svg diff --git a/nymea-app/ui/images/nm-signal-25-secure.svg b/nymea-app/ui/images/connections/nm-signal-25-secure.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-25-secure.svg rename to nymea-app/ui/images/connections/nm-signal-25-secure.svg diff --git a/nymea-app/ui/images/nm-signal-25.svg b/nymea-app/ui/images/connections/nm-signal-25.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-25.svg rename to nymea-app/ui/images/connections/nm-signal-25.svg diff --git a/nymea-app/ui/images/nm-signal-50-secure.svg b/nymea-app/ui/images/connections/nm-signal-50-secure.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-50-secure.svg rename to nymea-app/ui/images/connections/nm-signal-50-secure.svg diff --git a/nymea-app/ui/images/nm-signal-50.svg b/nymea-app/ui/images/connections/nm-signal-50.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-50.svg rename to nymea-app/ui/images/connections/nm-signal-50.svg diff --git a/nymea-app/ui/images/nm-signal-75-secure.svg b/nymea-app/ui/images/connections/nm-signal-75-secure.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-75-secure.svg rename to nymea-app/ui/images/connections/nm-signal-75-secure.svg diff --git a/nymea-app/ui/images/nm-signal-75.svg b/nymea-app/ui/images/connections/nm-signal-75.svg similarity index 100% rename from nymea-app/ui/images/nm-signal-75.svg rename to nymea-app/ui/images/connections/nm-signal-75.svg diff --git a/nymea-app/ui/magic/EditRulePage.qml b/nymea-app/ui/magic/EditRulePage.qml index 6dd2d3c5..c7b1400f 100644 --- a/nymea-app/ui/magic/EditRulePage.qml +++ b/nymea-app/ui/magic/EditRulePage.qml @@ -416,7 +416,7 @@ Page { } } Repeater { - model: ["light-on", "light-off", "alarm-clock", "media-playback-start", "network-secure", "notification", "sensors", "shutter/shutter-050", "attention", "eye"] + model: ["light-on", "light-off", "alarm-clock", "media-playback-start", "connections/network-secure", "notification", "sensors", "shutter/shutter-050", "attention", "eye"] delegate: Item { Layout.fillWidth: true Layout.preferredHeight: app.iconSize + app.margins diff --git a/nymea-app/ui/system/CloudSettingsPage.qml b/nymea-app/ui/system/CloudSettingsPage.qml index f82b7d97..48225289 100644 --- a/nymea-app/ui/system/CloudSettingsPage.qml +++ b/nymea-app/ui/system/CloudSettingsPage.qml @@ -95,10 +95,10 @@ SettingsPageBase { Layout.preferredHeight: busyIndicator.height Layout.preferredWidth: height name: engine.jsonRpcClient.cloudConnectionState === JsonRpcClient.CloudConnectionStateConnected - ? "../images/cloud.svg" + ? "../images/connections/cloud.svg" : engine.jsonRpcClient.cloudConnectionState === JsonRpcClient.CloudConnectionStateUnconfigured - ? "../images/cloud-error.svg" - : "../images/cloud-offline.svg" + ? "../images/connections/cloud-error.svg" + : "../images/connections/cloud-offline.svg" } Label { diff --git a/nymea-app/ui/system/ConnectionInterfaceDelegate.qml b/nymea-app/ui/system/ConnectionInterfaceDelegate.qml index c865c8d9..78b0b48d 100644 --- a/nymea-app/ui/system/ConnectionInterfaceDelegate.qml +++ b/nymea-app/ui/system/ConnectionInterfaceDelegate.qml @@ -37,10 +37,10 @@ import "../components" NymeaListItemDelegate { text: qsTr("Interface: %1").arg(model.address === "0.0.0.0" ? qsTr("Any") : model.address === "127.0.0.1" ? qsTr("localhost") : model.address) subText: qsTr("Port: %1").arg(model.port) - iconName: "../images/network-vpn.svg" + iconName: "../images/connections/network-vpn.svg" progressive: false secondaryIconName: "../images/account.svg" secondaryIconColor: model.authenticationEnabled ? app.accentColor : secondaryIconKeyColor - tertiaryIconName: "../images/network-secure.svg" + tertiaryIconName: "../images/connections/network-secure.svg" tertiaryIconColor: model.sslEnabled ? app.accentColor : tertiaryIconKeyColor } diff --git a/nymea-app/ui/system/NetworkSettingsPage.qml b/nymea-app/ui/system/NetworkSettingsPage.qml index 0586b677..42da6468 100644 --- a/nymea-app/ui/system/NetworkSettingsPage.qml +++ b/nymea-app/ui/system/NetworkSettingsPage.qml @@ -137,7 +137,7 @@ SettingsPageBase { ColorIcon { Layout.preferredHeight: app.iconSize Layout.preferredWidth: app.iconSize - name: "../images/network-wired-offline.svg" + name: "../images/connections/network-wired-disabled.svg" } Label { Layout.fillWidth: true @@ -257,7 +257,7 @@ SettingsPageBase { NymeaListItemDelegate { Layout.fillWidth: true - iconName: model.pluggedIn ? "../images/network-wired.svg" : "../images/network-wired-offline.svg" + iconName: model.pluggedIn ? "../images/connections/network-wired.svg" : "../images/connections/network-wired-offline.svg" text: model.interface + " (" + model.macAddress + ")" visible: networkManager.available && networkManager.networkingEnabled subText: { @@ -335,21 +335,21 @@ SettingsPageBase { case NetworkDevice.NetworkDeviceStateDisconnected: case NetworkDevice.NetworkDeviceStateDeactivating: case NetworkDevice.NetworkDeviceStateFailed: - return "../images/network-wifi-offline.svg" + return "../images/connections/network-wifi-offline.svg" case NetworkDevice.NetworkDeviceStatePrepare: - return "../images/network-wifi.svg"; + return "../images/connections/network-wifi.svg"; case NetworkDevice.NetworkDeviceStateConfig: - return "../images/network-wifi-offline.svg" + return "../images/connections/network-wifi-offline.svg" case NetworkDevice.NetworkDeviceStateNeedAuth: - return "../images/network-wifi.svg"; + return "../images/connections/network-wifi.svg"; case NetworkDevice.NetworkDeviceStateIpConfig: - return "../images/network-wifi-offline.svg" + return "../images/connections/network-wifi-offline.svg" case NetworkDevice.NetworkDeviceStateIpCheck: - return "../images/network-wifi.svg"; + return "../images/connections/network-wifi.svg"; case NetworkDevice.NetworkDeviceStateSecondaries: - return "../images/network-wifi-offline.svg" + return "../images/connections/network-wifi-offline.svg" case NetworkDevice.NetworkDeviceStateActivated: - return "../images/network-wifi.svg"; + return "../images/connections/network-wifi.svg"; } console.warn("Unhandled enum", model.state) @@ -434,7 +434,7 @@ SettingsPageBase { subText: "%1 (%2)".arg(model.macAddress).arg(model.frequency < 3 ? "2.4GHz" : "5GHz") prominentSubText: false iconName: { - var ret = "../images/nm-signal-"; + var ret = "../images/connections/nm-signal-"; if (model.signalStrength > 90) { ret += "100"; } else if (model.signalStrength > 60) {