/*!
 *
 * Copyright (c) 2019-2020 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)      15-Feb-2021
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  15-Feb-2021
 *
 */

// Qt
import QtQuick 2.12

// 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

    // Rinseback
    EndTreatmentRinsebackInit       { id: _endTreatmentRinsebackInit
        onRinsebackClicked          : vTreatmentAdjustmentRinseback.doStart         () //82.0
        onTreatmentEndClicked       : vTreatmentAdjustmentRinseback.doTreatmentEnd  () //82.8
        onTreatmentBackClicked      : vTreatmentAdjustmentRinseback.doTreatmentBack () //82.9
    }
    EndTreatmentRinseback           { id: _endTreatmentRinseback
        onAccelerateClicked         : vTreatmentAdjustmentRinseback.doIncrement     () //82.1
        onDeccelerateClicked        : vTreatmentAdjustmentRinseback.doDecrement     () //82.2
        onPauseClicked              : vTreatmentAdjustmentRinseback.doPause         () //82.3
        onResumeClicked             : vTreatmentAdjustmentRinseback.doResume        () //82.4
        onEndClicked                : vTreatmentAdjustmentRinseback.doEnd           () //82.5
    }
    EndTreatmentRinsebackComplete   { id: _endTreatmentRinsebackComplete
        onAdditionalClicked         : vTreatmentAdjustmentRinseback.doAdditional    () //82.6
        onTreatmentBackClicked      : vTreatmentAdjustmentRinseback.doTreatmentBack () //82.9
        onConfirmClicked            : vTreatmentAdjustmentRinseback.doConfirm       () //82.7
        onTreatmentEndClicked       : vTreatmentAdjustmentRinseback.doTreatmentEnd  () //82.8
    }
    EndTreatmentAdditional          { id: _endTreatmentAdditional           }

    Connections { target: vHDTreatmentStates
        onRbInitChanged             : { page( _endTreatmentRinsebackInit        , vrbInit           )}
        onRbRunChanged              : { page( _endTreatmentRinseback            , vrbRun            )}
        onRbPausedChanged           : { page( _endTreatmentRinseback            , vrbPaused         )}
        onRbStopChanged             : { page( _endTreatmentRinsebackComplete    , vrbStop           )}
        onRbAdditionalChanged       : { page( _endTreatmentAdditional           , vrbAdditional     )}
    }

    Connections { target: vTreatmentAdjustmentRinseback
        onAdjustmentTriggered: {
            // 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();
            _endTreatmentRinsebackComplete  .reasonText = vTreatmentAdjustmentRinseback.text();
        }
    }
}

/* TODO : stackView manual performance enhanced.
  // an idea that is being worked on for later performance imporovement
  // if the stackview becomes slow this idea is a manual transition with animation to be replacecd with stackView
    PropertyAnimation { id: _rbInitAnimation
            target: _endTreatmentRinsebackInit
            property: "opacity"
            duration: 1000
            to: vHDTreatmentStates.rbInit ? 1 : 0
    }
    PropertyAnimation { id: _rbStopAnimation
            target: _endTreatmentRinsebackComplete
            property: "opacity"
            duration: 1000
            to: vHDTreatmentStates.rbStop ? 1 : 0
    }
    Connections { target: vHDTreatmentStates
        onStateTriggered : { // this property is a TRIGGER and shall be set at the end of the property setters functions list
            _endTreatmentRinsebackInit      .visible = vHDTreatmentStates.rbInit
            _endTreatmentRinseback          .visible = vHDTreatmentStates.rbRun || vHDTreatmentStates.rbPaused
            _endTreatmentRinsebackComplete  .visible = vHDTreatmentStates.rbStop
            _endTreatmentAdditional         .visible = vHDTreatmentStates.rbAdditional

        }
        onRbInitChanged: _rbInitAnimation.running = true
        onRbStopChanged: _rbStopAnimation.running = true
    }
*/
