/*!
 *
 * Copyright (c) 2020-2023 Diality Inc. - All Rights Reserved.
 * \copyright
 * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN
 * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER.
 *
 * \file    TreatmentAdjustmentPressuresLimits.qml
 * \author  (last)      Vy
 * \date    (last)      20-Mar-2023
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  01-Nov-2020
 *
 */

// Qt
import QtQuick 2.12

// Project

//  Qml imports
import "qrc:/globals"
import "qrc:/components"
import "qrc:/compounds"

/*!
 * \brief   TreatmentAdjustmentPressures.qml is the screen
 *          To adjust the treatment inline blood pressure ranges of Arterial and venous
 */
TreatmentAdjustmentBase { id: _root
    contentItem.objectName: "TreatmentAdjustmentPressures"  //SquishQt testability

    property alias   arterialPressureMinimum    : _arterialPressure.minimum
    property alias   arterialPressureLowerBound : _arterialPressure.lowerBound
    property alias   arterialPressureUpperBound : _arterialPressure.upperBound
    property alias   arterialPressureMaximum    : _arterialPressure.maximum
    property alias   arterialPressureValue      : _arterialPressure.value
    property real    arterialPressureStep       : vTreatmentRanges.arterialPressureLimitRes

    property alias     venousPressureMinimum    :   _venousPressure.minimum
    property alias     venousPressureLowerBound :   _venousPressure.lowerBound
    property alias     venousPressureUpperBound :   _venousPressure.upperBound
    property alias     venousPressureMaximum    :   _venousPressure.maximum
    property alias     venousPressureValue      :   _venousPressure.value
    property real      venousPressureStep       : vTreatmentRanges.venousPressureLimitRes

    readonly property int    textWidth          : 200

    titleText: qsTr("PRESSURES")

    PressureRangeSlider { id: _arterialPressure
        titleText       : qsTr("Arterial")
        anchors.horizontalCenter: parent.horizontalCenter
        progressColor   : Colors.pressuresArterialBar
        minimumMargin   : Math.abs(vTreatmentRanges.arterialPressureMonitorMin -    vTreatmentRanges.arterialPressureLimitLowMin )
        lowerBoundMin   :                                                           vTreatmentRanges.arterialPressureLimitLowMin
        lowerBoundMax   :                                                           vTreatmentRanges.arterialPressureLimitLowMax
        upperBoundMin   :                                                           vTreatmentRanges.arterialPressureLimitHighMin
        upperBoundMax   :                                                           vTreatmentRanges.arterialPressureLimitHighMax
        maximumMargin   : Math.abs(vTreatmentRanges.arterialPressureMonitorMax -    vTreatmentRanges.arterialPressureLimitHighMax)
        limitGap        :          vTreatmentRanges.arterialPressureLimitLowGap     // currently min & max are on the same slider/scale so used min as the main res
        step            : arterialPressureStep
        ticksVisible    : true
        anchors.top:parent.top
        anchors.topMargin: 125
        anchors.left    : parent.left
    }

    Line { id: _divider
        anchors.horizontalCenter: parent.horizontalCenter
        length  : _root.width - 100
        color   : Colors.separatorLine
        anchors.top: _arterialPressure.bottom
        anchors.topMargin: 25
    }

    PressureRangeSlider { id: _venousPressure
        titleText       : qsTr("Venous")
        anchors.horizontalCenter: parent.horizontalCenter
        progressColor   : Colors.pressuresVenousBar
        minimumMargin   : Math.abs(vTreatmentRanges.venousPressureMonitorMin -      vTreatmentRanges.venousPressureLimitLowMin )
        lowerBoundMin   :                                                           vTreatmentRanges.venousPressureLimitLowMin
        lowerBoundMax   :                                                           vTreatmentRanges.venousPressureLimitLowMax
        upperBoundMin   :                                                           vTreatmentRanges.venousPressureLimitHighMin
        upperBoundMax   :                                                           vTreatmentRanges.venousPressureLimitHighMax
        maximumMargin   : Math.abs(vTreatmentRanges.venousPressureMonitorMax -      vTreatmentRanges.venousPressureLimitHighMax)
        limitGap        :          vTreatmentRanges.venousPressureLimitLowGap       // currently min & max are on the same slider/scale so used min as the main res
        step            : venousPressureStep
        ticksVisible    : true
        anchors.top : _divider.bottom
        anchors.topMargin : 25
        anchors.left: parent.left
    }
}
