Index: denali.qrc =================================================================== diff -u -r732bc047743c99a157cf147f5313194867c1f5e3 -r9e57e4c990afab0996def98521d4f9fee83f96d8 --- denali.qrc (.../denali.qrc) (revision 732bc047743c99a157cf147f5313194867c1f5e3) +++ denali.qrc (.../denali.qrc) (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -1,13 +1,9 @@ - sources/gui/qml/pages/TreatmentHome.qml - sources/gui/qml/pages/TreatmentStack.qml sources/gui/qml/pages/ManagerStack.qml sources/gui/qml/pages/SettingsStack.qml sources/gui/qml/pages/SettingsHome.qml sources/gui/qml/pages/ManagerHome.qml - sources/gui/qml/pages/TreatmentCreate.qml - sources/gui/qml/pages/TreatmentStart.qml sources/gui/qml/dialogs/PowerOff.qml @@ -54,4 +50,18 @@ sources/gui/qml/globals/qmldir sources/gui/qml/globals/Fonts.qml + + sources/gui/qml/pages/treatment/TreatmentHome.qml + sources/gui/qml/pages/treatment/TreatmentStack.qml + sources/gui/qml/pages/treatment/TreatmentCreate.qml + sources/gui/qml/pages/treatment/TreatmentStart.qml + + + sources/gui/qml/pages/treatment/sections/TreatmentFlows.qml + sources/gui/qml/pages/treatment/sections/TreatmentVitals.qml + sources/gui/qml/pages/treatment/sections/TreatmentPressure.qml + sources/gui/qml/pages/treatment/sections/TreatmentUltrafiltration.qml + sources/gui/qml/pages/treatment/sections/TreatmentFluid.qml + sources/gui/qml/pages/treatment/sections/TreatmentInfusion.qml + Index: sources/gui/qml/main.qml =================================================================== diff -u -r4209e0f69d1639b9f9255a2e9209c4287b155593 -r9e57e4c990afab0996def98521d4f9fee83f96d8 --- sources/gui/qml/main.qml (.../main.qml) (revision 4209e0f69d1639b9f9255a2e9209c4287b155593) +++ sources/gui/qml/main.qml (.../main.qml) (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -23,6 +23,7 @@ // Qml imports import "qrc:/globals" import "qrc:/pages" +import "qrc:/pages/treatment" import "qrc:/components" import "qrc:/dialogs" Fisheye: Tag 9e57e4c990afab0996def98521d4f9fee83f96d8 refers to a dead (removed) revision in file `sources/gui/qml/pages/TreatmentCreate.qml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 9e57e4c990afab0996def98521d4f9fee83f96d8 refers to a dead (removed) revision in file `sources/gui/qml/pages/TreatmentHome.qml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 9e57e4c990afab0996def98521d4f9fee83f96d8 refers to a dead (removed) revision in file `sources/gui/qml/pages/TreatmentStack.qml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 9e57e4c990afab0996def98521d4f9fee83f96d8 refers to a dead (removed) revision in file `sources/gui/qml/pages/TreatmentStart (test).qml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 9e57e4c990afab0996def98521d4f9fee83f96d8 refers to a dead (removed) revision in file `sources/gui/qml/pages/TreatmentStart.qml'. Fisheye: No comparison available. Pass `N' to diff? Index: sources/gui/qml/pages/treatment/TreatmentCreate.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/TreatmentCreate.qml (revision 0) +++ sources/gui/qml/pages/treatment/TreatmentCreate.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,42 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file ManagerHome.qml + * \date 2019/10/21 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief ManagerHome is the screen + * which is the default screen in the "Manager" stack + */ +ScreenItem { id: _root + signal backPressed() + BackButton { id : _backButton + onPressed: backPressed() + } + + Column { + spacing: Variables.columnSpacing + anchors.centerIn: parent + TitleText { id: _titleText + width: parent.width + text: qsTr("Create Treatment Placeholder") + } + } +} Index: sources/gui/qml/pages/treatment/TreatmentHome.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/TreatmentHome.qml (revision 0) +++ sources/gui/qml/pages/treatment/TreatmentHome.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,77 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file TreatmentHome.qml + * \date 2019/10/21 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +import Gui.Actions 0.1; + +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief TreatmentHome is the screen + * which is the default screen in the "Treatment" stack + */ +ScreenItem { id: _root + // exported items + property alias startTreatmentButton : _startTreatmentRect.button + property alias createTreatmentButton: _createTreatmentRect.button + + // 2 - Header + LogoD { id: _headerLogo } + + // exported properties + TreatmentStart { id : _treatmentStart + onBackPressed: { + _treatmentStack.pop() + } + } + TreatmentCreate { id : _treatmentCreate + onBackPressed: { + _treatmentStack.pop() + } + } + + // Definitions + Column { + spacing: Variables.columnSpacing + anchors.centerIn: parent + TitleText { id: _titleText + width: parent.width + text: qsTr("Good Morning") + } + TouchRect { id : _startTreatmentRect + text.text: qsTr("START TREATMENT") + button.onClicked: { + _treatmentStack.push(_treatmentStart) + } + } + TouchRect { id : _createTreatmentRect + text.text: qsTr("CREATE TREATMENT") + button.onClicked: { + _treatmentStack.push(_treatmentCreate) + } + } + } + + onVisibleChanged: { + if (visible) { + _mainMenu.hidden = false + } + } +} Index: sources/gui/qml/pages/treatment/TreatmentStack.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/TreatmentStack.qml (revision 0) +++ sources/gui/qml/pages/treatment/TreatmentStack.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,46 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file TreatmentStack.qml + * \date 2019/10/21 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project + +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief TreatmentStack is the screen + * which contains the main stack for all the Trearment screens + * This is the screen which will be show up when "Treatment" option + * is selected from the main menu. + */ +StackItem { id : _root + MainMenu { id: _treatmentMenu + y : -Variables.mainMenuHeight + position : MainMenu.Position.Top + hidden : true + titles : [ qsTr("Back") , qsTr("Treatment") , qsTr("Trending") , qsTr("Settings") ] + spacing : 20 + leftPdding : 20 + partitionWidth : 100 // Todo Important : max width should be the width for all + hasRightText : true + hasLogo : true + } + + TreatmentHome { id : _treatmentHome } + stackView.initialItem : _treatmentHome +} Index: sources/gui/qml/pages/treatment/TreatmentStart.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/TreatmentStart.qml (revision 0) +++ sources/gui/qml/pages/treatment/TreatmentStart.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,105 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file ManagerHome.qml + * \date 2019/10/21 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +import Gui.Actions 0.1; + +// Qml imports +import "qrc:/globals" +import "qrc:/components" +import "qrc:/pages/treatment/sections" + +/*! + * \brief ManagerHome is the screen + * which is the default screen in the "Manager" stack + */ +ScreenItem { id: _root + property int bloodFlow_MeasuredFlow_Precision: 0 + property int dialysateInletFlow_MeasuredFlow_Precision: 0 + + + property int leftColumnX : 40 + property int rightColumnX : 875 + + property int row1Y : 100 + property int row2Y : 320 + property int row3Y : 570 + + property int lineLength : 450 + property int leftLinesX : 0 + property int rightLinesX : Variables.applicationWidth - lineLength + property int row1LineY : 275 + property int row2LineY : 525 + + signal backPressed() + + // ---------- COLUMN LEFT + TreatmentFlows { id: _flowsTouchArea } + + Line { x: 0; y: row1LineY; length: lineLength } + + TreatmentVitals { id: _vitalsTouchArea } + + Line { x: 0; y: row2LineY; length: lineLength } + + TreatmentPressure { id: _pressureTouchArea } + + + // ---------- COLUMN RIGHT + TreatmentUltrafiltration { id: _ultrafiltrationTouchArea } + + Line { x: rightLinesX; y: row1LineY; length: lineLength } + + TreatmentFluid { id: _fluidManagementTouchArea } + + Line { x: rightLinesX; y: row2LineY; length: lineLength; } + + TreatmentInfusion { id: _solutionInfusionTouchArea } + + onVisibleChanged: { + if (visible) { + _mainMenu.hidden = true + _treatmentMenu.hidden = false + } + } + + Connections { target: _GuiView + onDidActionReceive: { + if ( ! visible ) return; + switch(vAction) { + case GuiActions.BloodFlow: + _flowsTouchArea.textRectBloodFlow.label = vData[GuiActions.BloodFlow_MeasuredFlow].toFixed(bloodFlow_MeasuredFlow_Precision); + break + case GuiActions.DialysateInletFlow: + _flowsTouchArea.textRectDialysateInletFlow.label = vData[GuiActions.DialysateInletFlow_MeasuredFlow].toFixed(dialysateInletFlow_MeasuredFlow_Precision); + break + } + } + } + Connections { target: _treatmentMenu + onItemPressed: { + // TEST : this is a test code since the back button has been removed + // and also we don't have Treatment complete yet. + if (vIndex == 0) { + _treatmentMenu.hidden = true + backPressed() + } + } + + } +} Index: sources/gui/qml/pages/treatment/sections/TreatmentFlows.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/sections/TreatmentFlows.qml (revision 0) +++ sources/gui/qml/pages/treatment/sections/TreatmentFlows.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,50 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file TreatmentFlows.qml + * \date 2020/01/27 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +import Gui.Actions 0.1; + +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief Treatment Screen Flows section + */ +TouchArea { id: _flowsTouchArea + property alias textRectBloodFlow : _bloodFlow + property alias textRectDialysateInletFlow : _dialysateInletFlow + + x: leftColumnX + y: row1Y + title: qsTr("FLOWS") + components: [ + TextRect { id: _bloodFlow + title: qsTr("Blood") + label: "600" // value + extra: qsTr("mL") // unit + labelFont.weight: Font.ExtraLight + } , + TextRect { id: _dialysateInletFlow + title: qsTr("Dialysate") + label: "500" // value + extra: qsTr("mL") // unit + labelFont.weight: Font.ExtraLight + } + ] +} Index: sources/gui/qml/pages/treatment/sections/TreatmentFluid.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/sections/TreatmentFluid.qml (revision 0) +++ sources/gui/qml/pages/treatment/sections/TreatmentFluid.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,50 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file TreatmentFluid.qml + * \date 2020/01/27 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +import Gui.Actions 0.1; + +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief Treatment Screen Fluid Management section + */ +TouchArea { id: _fluidManagementTouchArea + x: rightColumnX + y: row2Y + width: _flowsTouchArea.width + height: 200 + isTouchable: false + title: qsTr("FLUID MANAGEMENT") + titleVSpacing: 40 + TouchRect { + y : 60 + width : 340 + height : 55 + text.text: qsTr("START BOLUS (100 mL)") + text.font { + weight: Font.DemiBold + pixelSize : 20 + letterSpacing : 3 + } + animated: true + duration: 100 + } +} Index: sources/gui/qml/pages/treatment/sections/TreatmentInfusion.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/sections/TreatmentInfusion.qml (revision 0) +++ sources/gui/qml/pages/treatment/sections/TreatmentInfusion.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,89 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file TreatmentInfusion.qml + * \date 2020/01/27 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +import Gui.Actions 0.1; + +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief Treatment Screen Solution Infusion section + */ +TouchArea { id: _solutionInfusionTouchArea + x: rightColumnX + y: row3Y + width: _flowsTouchArea.width + height: 200 + isTouchable: false + orientation: TouchArea.Orientation.Vertical + title: qsTr("SOLUTION INFUSION") + + ProgressBar { id: _solutionInfusionProgressBar + y : 75 + width : parent.width + height : Variables.progressbarInfusionHeight + minText.visible : false + maxText.visible : false + marker.visible : false + + value : 0 + + // TEST : simulation code + minimum : 0 // TEST : only test values + maximum : 999 // TEST : only test values + NumberAnimation on value { + duration: 100000 + from: _solutionInfusionProgressBar.minimum + to: _solutionInfusionProgressBar.maximum + loops: Animation.Infinite + } + Text { id: _infusionText + anchors { + left: parent.left + top: parent.bottom + topMargin: 35 + 10 // + 10 to be aligned with Pressure lables. + } + text: qsTr("Amount Delivered") + font.pixelSize: Fonts.fontPixelInfusionText + color: Colors.infusionText + Text { id: _infusionValue + anchors { + left: parent.right + baseline: parent.baseline + } + horizontalAlignment: Text.AlignRight + text: _solutionInfusionProgressBar.value + width: 60 + font.pixelSize: Fonts.fontPixelInfusionValue + color: Colors.pressuresText + } + Text { id: _infusionUnit + anchors { + left: parent.right + leftMargin: _infusionValue.width + 5 + baseline: parent.baseline + } + text: qsTr("mL") + font.pixelSize: Fonts.fontPixelInfusionUnit + color: Colors.infusionUnit + } + } + } +} Index: sources/gui/qml/pages/treatment/sections/TreatmentPressure.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/sections/TreatmentPressure.qml (revision 0) +++ sources/gui/qml/pages/treatment/sections/TreatmentPressure.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,102 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file TreatmentPressure.qml + * \date 2020/01/27 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +import Gui.Actions 0.1; + +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief Treatment Screen Pressure section + */ +TouchArea { id: _pressureTouchArea + clip: false + x: leftColumnX + y: row3Y + width: _flowsTouchArea.width + height : 200 + isTouchable: true + orientation: TouchArea.Orientation.Horizontal + title: qsTr("PRESSURE") + " " + qsTr("(mmHg)") + RangeBar { id: _arterialRangeBar + x: 0 + y: 75 + width : 175 + height : 15 + rangebar.color: Colors.pressuresArterialBar + + value : 0 + + // TEST : simulation code + minimum : -400 + maximum : 400 + lowerBound: -300 + upperBound: 100 + NumberAnimation on value { + duration: 70000 + from: _arterialRangeBar.minimum + to: _arterialRangeBar.maximum + loops: Animation.Infinite + } + Text { id: _arterialText + anchors { + left: parent.left + top: parent.bottom + topMargin: 35 + } + text: qsTr("Arterial") + font.pixelSize: Fonts.fontPixelPresseuresText + color: Colors.pressuresText + } + } + + RangeBar { id: _venousRangeBar + x: 200 + y: 75 + width : 175 + height : 15 + rangebar.color: Colors.pressuresVenousBar + + value : 0 + + // TEST : simulation code + minimum: -100 + maximum: 800 + lowerBound: -100 + upperBound: 500 + + NumberAnimation on value { + duration: 70000 + from : _venousRangeBar.minimum + to : _venousRangeBar.maximum + loops : Animation.Infinite + } + Text { id: _venousText + anchors { + left: parent.left + top: parent.bottom + topMargin: 35 + } + text: qsTr("Venous") + font.pixelSize: Fonts.fontPixelPresseuresText + color: Colors.pressuresText + } + } +} Index: sources/gui/qml/pages/treatment/sections/TreatmentUltrafiltration.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/sections/TreatmentUltrafiltration.qml (revision 0) +++ sources/gui/qml/pages/treatment/sections/TreatmentUltrafiltration.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,53 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file TreatmentUltrafiltration.qml + * \date 2020/01/27 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +import Gui.Actions 0.1; + +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief Treatment Screen Ultrafiltration section + */ +TouchArea { id: _ultrafiltrationTouchArea + clip: false + x : rightColumnX + y : row1Y + width : _flowsTouchArea.width + height : 200 + isTouchable : true + orientation : TouchArea.Orientation.Vertical + title : qsTr("ULTRAFILTRATION VOLUME") + " " + qsTr("(mL)") + + ProgressBar { id: _progressbar + y : 75 + width : parent.width + height : Variables.progressbarHeight + + value : 0 + + // TEST : simulation code + property int r: Math.floor(Math.random() * 5000 + 1000) + minimum : 0 // TEST : only test values + maximum : 4000 // TEST : only test values + valueEx : 3000 // TEST : only test values + NumberAnimation on value { duration: 50000 /*_progressbar.r*/; from: _progressbar.minimum; to: _progressbar.maximum; loops: Animation.Infinite; } + } +} Index: sources/gui/qml/pages/treatment/sections/TreatmentVitals.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/sections/TreatmentVitals.qml (revision 0) +++ sources/gui/qml/pages/treatment/sections/TreatmentVitals.qml (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) @@ -0,0 +1,56 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file TreatmentVitals.qml + * \date 2020/01/27 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +import Gui.Actions 0.1; + +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief Treatment Screen Vitals section + */ +TouchArea { id: _vitalsTouchArea + property alias textRectBloodPressure : _bloodPressure + property alias textRectHeartBeat : _heartBeat + + x: leftColumnX + y: row2Y + isTouchable: false + orientation: TouchArea.Orientation.Vertical + title: qsTr("VITALS") + components: [ + TextRect { id: _bloodPressure + labelHeight: 60 + labelFont.pixelSize: Fonts.fontPixelVitals + labelFont.weight: Font.ExtraLight + labelAutoSize: true + label: "120/80" // value + extra: qsTr("mmHg") // unit + } , + TextRect { id: _heartBeat + labelHeight: 40 + labelFont.pixelSize: Fonts.fontPixelVitals + labelFont.weight: Font.ExtraLight + labelAutoSize: true + label: "130" // value + extra: qsTr("BPM") // unit + } + ] +}