/*!
 *
 * 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    PostTreatmentStack.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      22-Jan-2023
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  13-Apr-2021
 *
 */

// Qt
import QtQuick 2.12

// Project
//  Qml imports
import "qrc:/globals"
import "qrc:/components"
import "qrc:/compounds"
import "qrc:/pages/posttreatment"
/*!
 * \brief   the post treatment prime stack screen
 */
StackItem { id: _root
    objectName: "_PostTreatmentStack"

    stackView.initialItem   : null

    signal patientDisconnectionConfirm  ()
    signal treatmentReviewConfirm       ()
    signal disposablesRemovalConfirm    ()
    signal disposablesRemovalBack       ()

    onPatientDisconnectionConfirm  : {      vPostTreatmentAdjustmentPatientDisconnectionConfirm    .doConfirm( )
    /* No wait for Rsp, so navigates => */  page( _treatmentReviewConfirm                                      )
    /* After navigation ask for Tx data */  vPostTreatmentAdjustmentTreatmentLog                   .doRequest( )}
    onTreatmentReviewConfirm       :        page( _disposablesRemovalConfirm                                   )
    onDisposablesRemovalConfirm    :        vPostTreatmentAdjustmentDisposablesRemovalConfirm      .doConfirm( )
    onDisposablesRemovalBack       :        page( _treatmentReviewConfirm                                      )
    onVisibleChanged: {
        if (visible) {
            _mainMenu.hidden = true
        }
        else {
            stackView.initialItem = null
        }
    }

    PostTreatmentBase { id: _patientDisconnectionConfirm
        objectName        :"_patientDisconnectionConfirm"
        property int    stackStepIndex  : 0
        header.confirmVisible   : true
        title.text              : qsTr("Patient Disconnection")
        instructionBased        : true
        onConfirmClicked        : _root.patientDisconnectionConfirm()
    }

    PostTreatmentReview { id: _treatmentReviewConfirm
        objectName          :"_treatmentReviewConfirm"
        property int    stackStepIndex  : 1
        header.confirmVisible   : true
        title.text              : qsTr("Treatment Review")
        instructionBased        : false
        onConfirmClicked        : _root.treatmentReviewConfirm()
        onItemClicked           : {
            _detailTest.title.text = itemsText[vIndex]
            push(_detailTest)
        }
    }

    PostTreatmentBase { id: _detailTest
        objectName        :"_detailTest"
        property int    stackStepIndex  : 1
        onBackClicked           : pop()
        header.backVisible      : true
        header.confirmVisible   : false
    }

    PostTreatmentBase { id: _disposablesRemovalConfirm
        objectName        :"_disposablesRemovalConfirm"
        property int    stackStepIndex  : 2
        header.   backVisible   : true
        header.confirmVisible   : true
        title.text              : qsTr("Disposables Removal")
        instructionBased        : true
        onConfirmClicked        : _root.disposablesRemovalConfirm()
           onBackClicked        : _root.disposablesRemovalBack   ()
    }

    // connections
    Connections { target: vPostTreatmentStates
        function onPatientDisconnectionChanged  ( vValue ) { console.debug("patientDisconnection", vValue   )}
        function onDrainReservoirsChanged       ( vValue ) { console.debug("drainReservoirs     ", vValue   )}
        function onVerifyChanged                ( vValue ) { console.debug("verify              ", vValue   )}
    }

    Connections { target: vHDOperationMode
        function onPostTreatmentChanged         ( vValue ) { page( _patientDisconnectionConfirm  , vValue   )}
    }
    Connections { target: vPostTreatmentAdjustmentDisposablesRemovalConfirm
        function onAdjustmentTriggered          ( vValue ) {
            if ( vPostTreatmentAdjustmentDisposablesRemovalConfirm.adjustment_Accepted ) {
                _disposablesRemovalConfirm.reasonText = ""
            } else {
                _disposablesRemovalConfirm.reasonText = vPostTreatmentAdjustmentDisposablesRemovalConfirm.text()
            }
        }
    }

    Connections { target: vPostTreatmentAdjustmentTreatmentLog
        function onAdjustmentTriggered          ( vValue ) {
            if ( vPostTreatmentAdjustmentTreatmentLog.adjustment_Accepted ) {
                _treatmentReviewConfirm.reasonText = ""
            } else {
                _treatmentReviewConfirm.reasonText = vPostTreatmentAdjustmentTreatmentLog.text()
            }
        }
    }
}
