Index: denali.qrc
===================================================================
diff -u -rd26aff743bca7eceb609ce5b30cea7cbfa39748f -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- denali.qrc (.../denali.qrc) (revision d26aff743bca7eceb609ce5b30cea7cbfa39748f)
+++ denali.qrc (.../denali.qrc) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -32,6 +32,7 @@
sources/gui/qml/dialogs/NotificationDialog.qml
sources/gui/qml/dialogs/AlarmListDialog.qml
sources/gui/qml/dialogs/DiagnosticsDialog.qml
+ sources/gui/qml/dialogs/StatusDialog.qml
resources/images/Logo d.png
@@ -69,6 +70,10 @@
resources/images/chevron-left.png
resources/images/chevron-right.png
resources/images/DenaliDevice.png
+ resources/images/BTLogoNotConnected.png
+ resources/images/BTLogoConnected.png
+ resources/images/WifiLogoConnected.png
+ resources/images/WifiLogoNotConnected.png
sources/gui/qml/components/MainMenu.qml
@@ -146,6 +151,8 @@
sources/gui/qml/KeyboardItem.qml
sources/gui/qml/SDCProgressItem.qml
sources/gui/qml/USBProgressItem.qml
+ sources/gui/qml/BluetoothStatusIndicator.qml
+ sources/gui/qml/WifiStatusIndicator.qml
sources/gui/qml/plugins/virtualkeyboard/styles/denali/images/backspace.svg
Index: sources/bluetooth/BluetoothInterface.cpp
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/bluetooth/BluetoothInterface.cpp (.../BluetoothInterface.cpp) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/bluetooth/BluetoothInterface.cpp (.../BluetoothInterface.cpp) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -1233,9 +1233,20 @@
*/
void BluetoothInterface::interpretInformation()
{
+ QString vendorName;
+ QString modelNumberString;
for ( auto const &detail: _serviceDeviceInformation->characteristics()) {
+ switch(detail.uuid().toUInt32())
+ {
+ case QBluetoothUuid::ManufacturerNameString : vendorName = detail.value(); break;
+ case QBluetoothUuid::ModelNumberString : modelNumberString = detail.value(); break;
+ default:
+ break;
+ }
+
qDebug() << " ~~~~~ " << detail.name() << detail.uuid() << detail.value();
}
+ emit didDeviceInfoUpdated(vendorName, modelNumberString);
}
/*!
Index: sources/bluetooth/BluetoothInterface.h
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/bluetooth/BluetoothInterface.h (.../BluetoothInterface.h) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/bluetooth/BluetoothInterface.h (.../BluetoothInterface.h) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -174,6 +174,7 @@
void didActionReceive (const UIBloodPressureData &vData);
void didDeviceChange (const BluetoothDeviceData &vDevice);
void didDeviceSelect (const BluetoothDeviceData &vDevice);
+ void didDeviceInfoUpdated (const QString &vVendorName, const QString &vModelName);
SAFE_CALL(doStart) // start the bluetooth adapter.
SAFE_CALL(doScan ) // scan for devices.
Index: sources/gui/qml/SDCProgressItem.qml
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/gui/qml/SDCProgressItem.qml (.../SDCProgressItem.qml) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/gui/qml/SDCProgressItem.qml (.../SDCProgressItem.qml) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -35,7 +35,6 @@
readonly property int sizePowers : 1000000
- readonly property alias totalText : _totalText.text
readonly property alias total : _progressCircle.maximum
readonly property alias avail : _progressCircle.value
readonly property alias percent : _percent.text
@@ -69,15 +68,6 @@
value : _GuiView.sdAvail / sizePowers // convert to MB since the value in byte is too big for ProgressCircle.
color : ! _GuiView.sdIsReady ? "red" : _GuiView.sdIsReadOnly ? "gray" : _GuiView.sdIsLow ? Colors.red : "green"
}
- Text { id: _totalText
- visible : _GuiView.sdIsReady && displayInformation
- anchors.top: parent.bottom
- anchors.horizontalCenter: parent.horizontalCenter
- color : Colors.white
- text : Variables.sizeConverted( _GuiView.sdTotal, _root.sizePowers )
- font.pixelSize: 12
- font.bold: true
- }
MouseArea { id: _mouseArea
anchors.fill : parent
Index: sources/gui/qml/globals/Colors.qml
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -125,6 +125,11 @@
readonly property color scrollBarBgColor : white //"#80696969" // half transparent dimgray
+ readonly property color progressCircleConnected : "green"
+ readonly property color progressCircleNotReady : "#53667d" // unselected color
+ readonly property color progressCircleError : "red"
+ readonly property color statusDialogTitle : "#438FEB"
+
// ---------- < PRS > Related Section ----------
// Alarm priority colors
function alarmPriorityColors(vPriority) {
Index: sources/gui/qml/globals/Fonts.qml
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -88,6 +88,7 @@
readonly property int fontPixelDebugTitle : 25
readonly property int fontPixelDebugText : 28
readonly property int fontPixelDebugLabel : 15
+ readonly property int fontPixelStatusDialogText : 15
readonly property string fontFamilyFixed : "Noto Sans CJK SC"
}
Index: sources/gui/qml/globals/Variables.qml
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -67,6 +67,7 @@
readonly property int dialogWidth : applicationWidth - dialogMargin
readonly property int dialogHeight : applicationHeight - dialogMargin
readonly property int dialogRadius : 10
+ readonly property int dialogSpaceFromIcon : 2
readonly property int rangeRectMargin : 1
readonly property int rangeRectRadius : 2
Index: sources/gui/qml/main.qml
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/gui/qml/main.qml (.../main.qml) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/gui/qml/main.qml (.../main.qml) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -297,21 +297,6 @@
font.pixelSize: 14
}
- Text { // TEST : Wireless IP
- color : Colors.textMain
- anchors {
- top : parent.top
- left : parent.left
- leftMargin : 325
- }
- horizontalAlignment : Text.Alignleft
- verticalAlignment : Text.AlignBottom
-
- height : 15
- text : "W:" + vNetwork.wirelessIP
- font.pixelSize: 15
- }
-
Text { // TEST : Ethernet IP
color : Colors.textMain
anchors {
@@ -327,21 +312,6 @@
font.pixelSize: 15
}
- Text { // TEST : BluetoothStatus
- color : Colors.textMain
- anchors {
- top : parent.top
- left : parent.left
- leftMargin : 615
- }
- horizontalAlignment : Text.Alignleft
- verticalAlignment : Text.AlignBottom
-
- height : 15
- text : "B:" + vBluetooth.pairedAddr
- font.pixelSize: 14
- }
-
Text { // TEST : The treatment vital dialog countdown time
color : Colors.textMain
anchors {
@@ -361,8 +331,10 @@
color : Colors.textMain
anchors {
top : parent.top
- left : parent.left
- leftMargin : 1080
+ topMargin : 10
+
+ right : parent.right
+ rightMargin : 75
}
horizontalAlignment : Text.Alignleft
verticalAlignment : Text.AlignBottom
@@ -376,8 +348,10 @@
color : Colors.textMain
anchors {
top : parent.top
- left : parent.left
- leftMargin : 1220
+ topMargin : 10
+
+ right : parent.right
+ rightMargin : 25
}
horizontalAlignment : Text.Alignleft
verticalAlignment : Text.AlignBottom
@@ -387,8 +361,32 @@
font.pixelSize: 14
}
+ WifiStatusIndicator { id: _wifiStatusIndicator
+ anchors {
+ top : parent.top
+ topMargin : 5
+
+ right : _bluetoothStatusIndicator.right
+ rightMargin : 50
+ }
+ }
+ BluetoothStatusIndicator { id: _bluetoothStatusIndicator
+ anchors {
+ top : parent.top
+ right : parent.right
+ topMargin : 5
+ rightMargin : 300
+ }
+ }
+
SDCProgressItem { id: _sdcProgressItem
// TODO: disable this later. this is only for diagnostic purpose.
+ anchors {
+ top : parent.top
+ right : parent.right
+ topMargin : 5
+ rightMargin : 250
+ }
onDoubleClicked : {
if ( _GuiView.dryDemoMode ) {
let dryDemoTempID = 99
Index: sources/model/hd/alarm/MAlarmMapping.cpp
===================================================================
diff -u -rbe412cdc8b103d4b9de5c883e4f521668bc9bcec -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision be412cdc8b103d4b9de5c883e4f521668bc9bcec)
+++ sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -307,7 +307,7 @@
/*0271*/case GuiAlarmID::ALARM_ID_DG_SAFETY_SHUTDOWN_POST_TEST_FAILED : { result = QObject::tr("DG POST Safety Shutdown failure." ); break; } /* 271*/
/*0272*/case GuiAlarmID::ALARM_ID_HD_FAN_RPM_OUT_OF_RANGE : { result = QObject::tr("HD Fan RPM out of range." ); break; } /* 272*/
/*0273*/case GuiAlarmID::ALARM_ID_AVAILABLE_10 : { result = QObject::tr("Available for use." ); break; } /* 273*/
-/*0274*/case GuiAlarmID::ALARM_ID_AVAILABLE_11 : { result = QObject::tr("Available for use." ); break; } /* 274*/
+/*0274*/case GuiAlarmID::ALARM_ID_DG_INACTIVE_RESERVOIR_WEIGHT_OUT_OF_RANGE : { result = QObject::tr("DG inactive reservoir weight out of range." ); break; } /* 274*/
/*0275*/case GuiAlarmID::ALARM_ID_HD_ARTERIAL_PRESSURE_OUT_OF_RANGE : { result = QObject::tr("HD arterial pressure sensor is reading out of range." ); break; } /* 275*/
/*0276*/case GuiAlarmID::ALARM_ID_HD_VENOUS_PRESSURE_OUT_OF_RANGE : { result = QObject::tr("HD venous pressure sensor is reading out of range." ); break; } /* 276*/
/*0277*/case GuiAlarmID::ALARM_ID_HD_BP_OCCLUSION_OUT_OF_RANGE : { result = QObject::tr("HD BP occlusion sensor is reading out of range." ); break; } /* 277*/
Index: sources/view/settings/VBluetooth.cpp
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/view/settings/VBluetooth.cpp (.../VBluetooth.cpp) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/view/settings/VBluetooth.cpp (.../VBluetooth.cpp) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -38,8 +38,11 @@
this , SLOT( onStateChange (BluetoothData )));
connect(&_BluetoothInterface, SIGNAL(didDeviceChange(BluetoothDeviceData)),
this , SLOT( onDeviceChange(BluetoothDeviceData)));
+ connect(&_BluetoothInterface, SIGNAL(didDeviceInfoUpdated(QString, QString )),
+ this , SLOT( onDeviceInfoUpdated(QString, QString )));
connect(this , SIGNAL(didDeviceSelect(QString, QString )),
this , SLOT( onDeviceSelect(QString, QString )));
+
}
/*!
@@ -142,6 +145,7 @@
case MBluetooth::eIS_Device_Waiting : // Selected device connected and is in waiting mode for read.
pairedAddr(vData.deviceAddr);
pairedBatt(vData.deviceBatt);
+ pairedName(vData.deviceName);
scanEnabled(true);
break;
@@ -317,6 +321,18 @@
}
/*!
+ * \brief View::VBluetooth::onDeviceInfoUpdated
+ * \details Sets the vendor name and model name properties
+ * \param vVendorName - the vendor name associated with the remote device
+ * \param vModelName - the model string of the remote device
+ */
+void View::VBluetooth::onDeviceInfoUpdated(const QString &vVendorName, const QString &vModelName)
+{
+ pairedVendorName(vVendorName);
+ pairedModelName (vModelName );
+}
+
+/*!
* \brief View::VBluetooth::doScan
* \details calls the Bluetooth Interface scan to start discovering the Bluetooth devices.
*/
Index: sources/view/settings/VBluetooth.h
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/view/settings/VBluetooth.h (.../VBluetooth.h) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/view/settings/VBluetooth.h (.../VBluetooth.h) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -16,6 +16,7 @@
// Qt
#include
+#include
// Project
#include "main.h" // Doxygen : do not remove
@@ -50,7 +51,10 @@
PROPERTY(qint16 , error , 0 )
PROPERTY(QString , pairedAddr , "" )
+ PROPERTY(QString , pairedName , "" )
PROPERTY(quint8 , pairedBatt , 0 )
+ PROPERTY(QString , pairedVendorName , "" )
+ PROPERTY(QString , pairedModelName , "" )
// List Model
public:
@@ -83,6 +87,8 @@
QString toText (Model::MBluetooth::InterfaceStates vState) const;
void notify (Model::MBluetooth::InterfaceStates vState);
+ void onDeviceInfoUpdated(const QString &vVendorName, const QString &vModelName);
+
public slots:
void doScan ();
};
Index: sources/view/settings/VNetworkModel.cpp
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/view/settings/VNetworkModel.cpp (.../VNetworkModel.cpp) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/view/settings/VNetworkModel.cpp (.../VNetworkModel.cpp) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -302,7 +302,18 @@
dns(vNetwork.mIPSettings.mDNS.trimmed());
ssid(vNetwork.ssid().trimmed());
macAddress(vNetwork.macAddress().trimmed());
+ wifiSignalStrength(vNetwork.signalLevel());
+
+ QString securityTypes = MWifiNetwork::securityTypesToStringList(vNetwork.securityTypes()).join("/");
+ wifiSecurityType(securityTypes);
+
status(tr("Connected to %1.").arg(vNetwork.ssid()).trimmed());
+
+ // If the security type list is empty, this indicates that this is a reconnection
+ // upon start-up. Need to do a scan and get updated
+ if (securityTypes.isEmpty()){
+ doScan();
+ }
}
/*!
Index: sources/view/settings/VNetworkModel.h
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/view/settings/VNetworkModel.h (.../VNetworkModel.h) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/view/settings/VNetworkModel.h (.../VNetworkModel.h) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -56,6 +56,8 @@
PROPERTY(QString , macAddress , "")
PROPERTY(QString , ethernetIP , "")
PROPERTY(QString , wirelessIP , "")
+ PROPERTY(QString , wifiSecurityType , "")
+ PROPERTY(int ,wifiSignalStrength, 0)
public:
// Note: VIEW_DEC_CLASS(VNetworkModel) requires QObject as the parent, so it's necessary to define it here
Index: sources/wifi/WifiInterface.cpp
===================================================================
diff -u -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 -raff2e3d6f0cf3827ed741e8dcd278d3e4008945a
--- sources/wifi/WifiInterface.cpp (.../WifiInterface.cpp) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9)
+++ sources/wifi/WifiInterface.cpp (.../WifiInterface.cpp) (revision aff2e3d6f0cf3827ed741e8dcd278d3e4008945a)
@@ -256,7 +256,23 @@
LOG_DEBUG(QString("stderr: %1").arg(err));
_scanRunning = false;
emit didScanStatusChanged(_scanRunning);
- parseWifiScan(out);
+ QList networks = parseWifiScan(out);
+
+ // A non-empty macAddress indicates UI is connected to a network
+ // if the network security type list is empty, this indicates that the connection
+ // was a result of a start-up reconnection. Traverse through discovered networks
+ // and update the security type list and signal strength info
+ if(!_network.macAddress().isEmpty() && _network.securityTypes().isEmpty()) {
+ foreach(WifiNetworkData network, networks){
+ if(network.macAddress() == _network.macAddress()){
+ // update the security and signal info
+ _network.securityTypes(network.securityTypes());
+ _network.signalLevel(network.signalLevel());
+ emit didConnectToNetwork(_network);
+ }
+ }
+ }
+
LOG_DEBUG("WiFi Scan Finished");
}