/*!
 *
 * Copyright (c) 2021-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    PostTreatmentStack.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      28-Feb-2022
 * \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       ()

    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 { target: vPostTreatmentStates
        onPatientDisconnectionChanged       : { console.debug("patientDisconnection", vpatientDisconnection         )}
        onDrainReservoirsChanged            : { console.debug("drainReservoirs     ", vdrainReservoirs              )}
        onVerifyChanged                     : { console.debug("verify              ", vverify                       )}
    }

    Connections { target: vHDOperationMode
        onPostTreatmentChanged              : { page( _patientDisconnectionConfirm  , vpostTreatment                )}
    }
    onPatientDisconnectionConfirm           : { vPostTreatmentAdjustmentPatientDisconnectionConfirm .doConfirm(     )
    /* No wait for Rsp, so navigates => */      page( _treatmentReviewConfirm                                       )
    /* After navigate ask for Tx data   */      vPostTreatmentAdjustmentTreatmentLog                .doRequest(     )}
    onTreatmentReviewConfirm                : { page( _disposablesRemovalConfirm                                    )}
    onDisposablesRemovalConfirm             : { vPostTreatmentAdjustmentDisposablesRemovalConfirm   .doConfirm(     )}
    onDisposablesRemovalBack                : { page( _treatmentReviewConfirm                                       )}

    Connections { target: vPostTreatmentAdjustmentDisposablesRemovalConfirm
        onAdjustmentTriggered   : {
            if ( vPostTreatmentAdjustmentDisposablesRemovalConfirm.adjustment_Accepted ) {
                _disposablesRemovalConfirm.reasonText = ""
            } else {
                _disposablesRemovalConfirm.reasonText = vPostTreatmentAdjustmentDisposablesRemovalConfirm.text()
            }
        }
    }

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

    onVisibleChanged: {
        if (visible) {
            _mainMenu.hidden = true
        }
        else {
            stackView.initialItem = null
        }
    }
}
