/*!
 *
 * Copyright (c) 2021-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    EndTreatmentRinseback.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      24-Jul-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/endtreatment"
import "qrc:/pages/treatment/sections"

/*!
 * \brief   the end treatment rinseback screen
 */
EndTreatmentBase { id: _root
    objectName: "_EndTreatmentRinseback"

    signal pauseClicked  ()
    signal resumeClicked ()
    signal endClicked    ()

    signal accelerateClicked  ()
    signal deccelerateClicked ()


    title.text: qsTr("Rinseback")

    hasTimeout          : vTreatmentRinseback   .timeoutTotal
    timeoutValue        : vTreatmentRinseback   .timeoutCountDown * 60

    ImageText { id: _imageEnd
        visible: ! vHDTreatmentStates.rbAdditional
        anchors {
            right       : _root.right
            top         : _root.top
            rightMargin : 45
            topMargin   : 45
        }
        diameter        : Variables.rinsebackIconDiameterDefault
        source          : "qrc:/images/iRedCrossWCircle"
        text            : qsTr("End")
        fontSize        : Fonts.fontPixelRinsebackAdjustmentButton
        onClicked       : endClicked()
    }

    TreatmentPressures          { id: _pressuresTouchArea
        // maybe now it makes sense for the ranges to be displayed
        // arterialLowerBound  : 0 // requested to hide the bounds
        // arterialUpperBound  : 0 // requested to hide the bounds
        // venousLowerBound    : 0 // requested to hide the bounds
        // venousUpperBound    : 0 // requested to hide the bounds
        // valueOutRangeNotify : false

        isTouchable         : false
        x       : Variables.screenGridLeftColumnX
        y       : Variables.screenGridRow1Y
        width   : Variables.screenGridAreaWidth
        height  : Variables.screenGridAreaHeightRow1
    }
    Line { x: 0; y: Variables.screenGridRow1LineY; length: Variables.screenGridLineLength }

    ProgressCircle { id: _circle
        diameter: 335
        anchors {
            horizontalCenter: parent.horizontalCenter
            top             : parent.top
            topMargin       : vHDTreatmentStates.rbAdditional ?
                                  _root.height/2 - height/2   :  // move the progress circle in the center of the screen
                                  170
        }

        minimum : 0
        maximum : vTreatmentRinseback.target
        value   : vTreatmentRinseback.current

        Text { id: _textVolume
            anchors.centerIn: parent
            color: Colors.textMain
            text: vTreatmentRinseback.current.toFixed(0) + " " + qsTr(Variables.unitTextFluid)
            font.pixelSize: 76
            font.weight: Font.ExtraLight
        }

        Text { id: _labelRate
            anchors {
                top: parent.bottom
                topMargin: 20
                horizontalCenter: parent.horizontalCenter
            }
            color: Colors.textMain
            text: vTreatmentRinseback.rate.toFixed(0) + " " + qsTr(Variables.unitTextFlowRate)
            font.pixelSize: 23
        }
    }

    Row { id: _buttonRow
        spacing: 175
        anchors {
            horizontalCenter: _root.horizontalCenter
            bottom          : _root.bottom
            bottomMargin    : Variables.notificationHeight + 55 // + the texts height
        }

        ImageText { id: _imageDecelerate
            visible         : vHDTreatmentStates.rbRun || vHDTreatmentStates.rbPaused
            enabled         : vHDTreatmentStates.rbRun
            anchors.bottom  : _buttonRow.bottom
            diameter        : Variables.rinsebackIconDiameterDefault
            source          : "qrc:/images/iDecelerate"
            text            : qsTr("Decelerate")
            fontSize        : Fonts.fontPixelRinsebackAdjustmentButton
            onClicked       : deccelerateClicked()
        }

        ImageText { id: _imageResume
            visible         : vHDTreatmentStates.rbPaused
            anchors.bottom  : _buttonRow.bottom
            diameter        : Variables.rinsebackIconDiameterResumePause
            source          : "qrc:/images/iResume"
            text            : qsTr("Resume")
            fontSize        : Fonts.fontPixelRinsebackAdjustmentButton
            onClicked       : resumeClicked()
        }

        ImageText { id: _imagePause
            visible         : vHDTreatmentStates.rbRun // not sure if it's possible || vHDTreatmentStates.rbAdditional
            anchors.bottom  : _buttonRow.bottom
            diameter        : Variables.rinsebackIconDiameterResumePause
            source          : "qrc:/images/iPauseLightBlue"
            text            : qsTr("Pause")
            fontSize        : Fonts.fontPixelRinsebackAdjustmentButton
            onClicked       : pauseClicked()
        }

        ImageText { id: _imageAccelerate
            visible         : vHDTreatmentStates.rbRun || vHDTreatmentStates.rbPaused
            enabled         : vHDTreatmentStates.rbRun
            anchors.bottom  : _buttonRow.bottom
            diameter        : Variables.rinsebackIconDiameterDefault
            source          : "qrc:/images/iAccelerate"
            text            : qsTr("Accelerate")
            fontSize        : Fonts.fontPixelRinsebackAdjustmentButton
            onClicked       : accelerateClicked()
        }
    }
}
