/*!
 *
 * 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    EndTreatmentRinsebackStack.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      19-Jul-2023
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  11-Apr-2021
 *
 */

// Qt
import QtQuick 2.12
import QtQuick.Controls 2.12 // StackView

// Project
//  Qml imports
import "qrc:/globals"
import "qrc:/components"
import "qrc:/pages/endtreatment/rinseback"

/*!
 * \brief   the end treatment rinseback stack screen
 */
StackItem { id: _root
    objectName: "_EndTreatmentRinsebackStack"

    stackView.initialItem   : null

    property int    stackStepIndex  : 0

    onVisibleChanged: {
        if (visible) {
            _headerBar.titleText = stackView.currentItem.headerTitle ?? ""
        }
        else {
            _headerBar.titleText = ""
        }
    }

    // Rinseback
    EndTreatmentRinsebackInit       { id: _endTreatmentRinsebackInit        }
    EndTreatmentRinseback           { id: _endTreatmentRinseback            }

    Connections                     { target: stackView
        function onCurrentItemChanged() {
            _headerBar.titleText = stackView.currentItem.headerTitle ?? ""
        }
    }

    Connections                     { target: _endTreatmentRinsebackInit
        function onRinsebackClicked             ( vValue ) { vTreatmentAdjustmentRinseback.doStart              ()} //82.0
    }
    Connections                     { target: _endTreatmentRinseback
        function onAccelerateClicked            ( vValue ) { vTreatmentAdjustmentRinseback.doIncrement          ()} //82.1
        function onDeccelerateClicked           ( vValue ) { vTreatmentAdjustmentRinseback.doDecrement          ()} //82.2
        function onPauseClicked                 ( vValue ) { vTreatmentAdjustmentRinseback.doPause              ()} //82.3
        function onResumeClicked                ( vValue ) { vTreatmentAdjustmentRinseback.doResume             ()} //82.4
    }

    Connections                     { target: _rinsebackCompleteDialog
        function onAccepted ()                  { vTreatmentAdjustmentRinseback.doAdditional()          }   // Fluid Blus
        function onRejected ()                  { vTreatmentAdjustmentRinseback.doTreatmentEnd()        }   // End Treatment
        function onExtraButtonClicked ()        { vTreatmentAdjustmentRinseback.doConfirm ()            }   // Recirculate
    }

    Connections { target: vTDTreatmentStates
        function onRbInitChanged                ( vValue ) { page( _endTreatmentRinsebackInit        , vValue    )}
        function onRbRunChanged                 ( vValue ) { page( _endTreatmentRinseback            , vValue    )}
        function onRbPausedChanged              ( vValue ) { page( _endTreatmentRinseback            , vValue    )}
        function onRbStopChanged                ( vValue ) { if ( vValue ) { _rinsebackCompleteDialog.open()     }}
        function onRbAdditionalChanged          ( vValue ) { page( _endTreatmentRinseback            , vValue    )}
    }

    Connections { target: vTreatmentAdjustmentRinseback
        function onAdjustmentTriggered          ( vValue ) {
            // there is only one message to handle all the sub pages of rinseback
            // since the rejection reason will be cleared by each trasition
            // so it's fine to set all at the same time
            // and let them cleared for their own message when each get visible.
            _endTreatmentRinsebackInit      .reasonText = vTreatmentAdjustmentRinseback.text();
            _endTreatmentRinseback          .reasonText = vTreatmentAdjustmentRinseback.text();
        }
    }
}
