/*!
 *
 * Copyright (c) 2020-2022 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)      Behrouz NematiPour
 * \date    (last)      25-Oct-2022
 * \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")

    Column { id : _pressuresColumn
        spacing: 100
        anchors.centerIn: parent
        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
        }

        Line {
            anchors.horizontalCenter: parent.horizontalCenter
            length  : _root.width - 100
            color   : Colors.separatorLine
        }

        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
        }
    }
}
