/*!
 *
 * Copyright (c) 2021-2024 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    TreatmentBloodPrime.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      13-Sep-2023
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  11-Apr-2021
 *
 */

// Qt
import QtQuick 2.12

// Project
//  Qml imports
import "qrc:/globals"
import "qrc:/components"
import "qrc:/pages/treatment/sections"

/*!
 * \brief   the in-treatment Blood Prime screen
 */
ScreenItem { id: _root
    objectName: "_TreatmentBloodPrime"

    signal pauseClicked  ()
    signal resumeClicked ()

    signal accelerateClicked  ()
    signal deccelerateClicked ()

    Connections { target: vTreatmentAdjustmentBloodFlowRate
        function onAdjustmentTriggered              ( vValue ) {
            if (vTreatmentAdjustmentBloodFlowRate.adjustment_Accepted) {
                _notification.text = ""
            }
            else {
                _notification.text = vTreatmentAdjustmentBloodFlowRate.text()
            }
        }
    }

    Text { id: _title
        anchors {
            top: parent.top
            topMargin: 65
            horizontalCenter: parent.horizontalCenter
        }
        color: Colors.textMain
        text: qsTr("Blood Priming")
        font.pixelSize: Fonts.fontPixelTitle
    }

    ProgressCircle { id: _volumeProgress
        objectName          : "_volumeProgress"
        anchors {
            left            : parent.left
            leftMargin      : Variables.defaultMargin * 3
            verticalCenter  : parent.verticalCenter
        }
        thickness           : 35
        circleShadowColor   : Colors.mainTreatmentLighterBlue
        circleFillColor     : Colors.mainTreatmentDarkerBlue
        minimum             : 0
        maximum             : vTreatmentBloodPrime.target
        value               : vTreatmentBloodPrime.current

        Text { id: _volumeText
            objectName      : "_volumeText"
            anchors.centerIn: parent
            height          : contentHeight
            font {
                pixelSize   : 76
                weight      : Font.Light
            }
            color           : Colors.textMain
            text            : vTreatmentBloodPrime.current.toFixed(0) + " " + qsTr(Variables.unitTextFluid)
        }
    }

    TreatmentSection { id: _bloodFlow
        objectName: "_bloodFlow"
        anchors {
            right           : _treatmentSaline.left
            rightMargin     : Variables.defaultMargin
            verticalCenter  : parent.verticalCenter
        }
        width           : 285
        height          : 420
        header.title    : qsTr("Blood Flow" )
        header.showEdit : false

        TreatmentFlowsComponent { id: _bloodFlowComponent
            objectName      : "bloodFlowComponent"
            anchors {
                top         : _bloodFlow.header.bottom
                left        : parent.left
                leftMargin  : Variables.defaultMargin
                right       : parent.right
                rightMargin : Variables.defaultMargin
            }
            height          : 250
            value           : vTreatmentParametersSetPoint.bloodFlow
            precision       : Variables.bloodFlowPrecision
            minimum         : vTreatmentRanges.bloodFlowRateMin
            maximum         : vTreatmentRanges.bloodFlowRateMax
            step            : vTreatmentRanges.bloodFlowRateRes
            unitText        : Variables.unitTextFlowRate
            color           : "transparent"

            onIncrement     : function(newValue) { vTreatmentAdjustmentBloodFlowRate.doAdjustment(newValue) }
            onDecrement     : function(newValue) { vTreatmentAdjustmentBloodFlowRate.doAdjustment(newValue) }
        }
    }

    TreatmentSaline { id: _treatmentSaline
        objectName      : "_treatmentSaline"
        anchors {
            right           : _treatmentPressures.left
            rightMargin     : Variables.defaultMargin
            verticalCenter  : parent.verticalCenter
        }
        width           : _bloodFlow.width
        height          : _bloodFlow.height
        header.showEdit : false
    }

    TreatmentPressures { id: _treatmentPressures
        objectName      : "_treatmentPressures"
        anchors {
            right           : parent.right
            rightMargin     : _volumeProgress.anchors.leftMargin
            verticalCenter  : parent.verticalCenter
        }
        width           : 750
        height          : _bloodFlow.height
        header.showEdit : false
    }

    NotificationBarSmall { id: _notification ; height: 60}
}
