
// Qt
import QtQuick 2.12

// Project
//  Qml imports
import "qrc:/globals"
import "qrc:/components"
import "qrc:/pages/pretreatment"

/*!
 * \brief   the pre treatment water sample stack screen
 */
StackItem { id: _root
    stackView.initialItem   : null

    enum Step {
        BloodSetTubing          ,
        BloodLines              ,
        PressureLinesAndDialyzer,
        Count
    }

    property int subStepIndex: PreTreatmentInstallStack.Step.BloodSetTubing

    signal goToNextStep()
    signal goToPreviousStep()

    function initStack() { page ( _preTreatmentBloodSetTubing ) }

    function continueClicked() {
        switch ( _root.subStepIndex ) {
        case PreTreatmentInstallStack.Step.BloodSetTubing:
            vPreTreatmentAdjustmentDisposablesConfirm.doConfirm()
            break
        case PreTreatmentInstallStack.Step.BloodLines:
            page ( _preTreatmentPressureLinesAndDialyzer )
            break
        case PreTreatmentInstallStack.Step.PressureLinesAndDialyzer:
            goToNextStep ()
            break
        default:
            break
        }
    }

    function backClicked() {
        switch ( _root.subStepIndex ) {
        case PreTreatmentInstallStack.Step.BloodSetTubing:
            goToPreviousStep ()
            break
        case PreTreatmentInstallStack.Step.BloodLines:
            // cannot go back from here
            break
        case PreTreatmentInstallStack.Step.PressureLinesAndDialyzer:
            page ( _preTreatmentBloodLines )
            break
        default:
            break
        }
    }

    function confirmButtonText() {
        switch ( _root.subStepIndex ) {
        case PreTreatmentInstallStack.Step.BloodSetTubing:
            return qsTr("Auto Load")
        case PreTreatmentInstallStack.Step.BloodLines:
        case PreTreatmentInstallStack.Step.PressureLinesAndDialyzer: // fall through
        default:
            return qsTr("Next")
        }
    }

    function backEnabled() {
        return subStepIndex !== PreTreatmentInstallStack.Step.BloodLines
    }

    // ----- Screens definitions
    PreTreatmentBase { id: _preTreatmentBloodSetTubing
        instructionBased    : true
        onVisibleChanged    : if (visible) { _root.subStepIndex = PreTreatmentInstallStack.Step.BloodSetTubing ; updateModel()          }
        subStepName         : qsTr("Blood Tubing Set")
    }

    PreTreatmentBase { id: _preTreatmentBloodLines
        instructionBased        : true
        onVisibleChanged    : if (visible) { _root.subStepIndex = PreTreatmentInstallStack.Step.BloodLines ; updateModel()              }
        subStepName         : qsTr("Bloodlines")
    }

    PreTreatmentBase { id: _preTreatmentPressureLinesAndDialyzer
        instructionBased        :  true
        onVisibleChanged    : if (visible) { _root.subStepIndex = PreTreatmentInstallStack.Step.PressureLinesAndDialyzer ; updateModel()}
        subStepName         : qsTr("Pressure Lines and Dialyzer")
    }

    // blood tubing set auto-load
    Connections { target: vPreTreatmentAdjustmentDisposablesConfirm
        function onAdjustmentTriggered              ( vValue ) {
            if ( vPreTreatmentAdjustmentDisposablesConfirm.adjustment_Accepted ) {
                _preTreatmentBloodSetTubing.reasonText     = ""
                if ( vSettings.advancedMode )   { goToNextStep ()                   }
                else                            { page ( _preTreatmentBloodLines )  }
            } else {
                 _preTreatmentBloodSetTubing.reasonText    = vPreTreatmentAdjustmentDisposablesConfirm.text()
            }
        }
    }
}
