/*!
 *
 * 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    DisinfectStack.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      28-Jan-2022
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  17-Apr-2021
 *
 */

// Qt
import QtQuick 2.12

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

    stackView.initialItem   : null

    property int stackStepIndex : 1

    readonly property string disinfectTitle : qsTr("Disinfection")
    readonly property string flushTitle     : qsTr("Water Flush")
    readonly property string heatTitle      : qsTr("Heat Disinfect")
    readonly property string chemicalTitle  : qsTr("Chemical Disinfect")

    function doDisinfectBack    () {
        vDisinfectAdjustDisinfect   .doDisinfectClear   ()
        page ( _disinfectHome )
    }
    function doDisinfectConfirm () {
        vDisinfectAdjustDisinfect   .doDisinfectConfirm ()
    }
    function doDisinfectFlush   () {
        vDisinfectAdjustDisinfect   .doDisinfectFlush   ()
        page( _disinfectFlush      )
    }
    function doDisinfectHeat    () {
        vDisinfectAdjustDisinfect   .doDisinfectHeat    ()
        page( _disinfectHeat       )
    }
    function doDisinfectChemical() {
        vDisinfectAdjustDisinfect   .doDisinfectChemical()
        page( _disinfectChemical   )
    }
    function doDisplayReasonText(vPage) {
        if ( vDisinfectAdjustDisinfect.adjustment_Accepted ){ vPage.reasonText = ""                                }
        else                                                { vPage.reasonText = vDisinfectAdjustDisinfect.text()  }
    }

    DisinfectBase { id          :  _disinfectHome
        objectName              : "_disinfectHome"
        property int stackStepIndex : 0
        header.stepNames        : [ _root.disinfectTitle ]
        title.text              :   _root.disinfectTitle
        footer.childrenWidth    : 350
        footer.children: [
            TouchRect { text.text: _root.flushTitle     ; onClicked: { doDisinfectFlush     () } },
            TouchRect { text.text: _root.heatTitle      ; onClicked: { doDisinfectHeat      () } },
            TouchRect { text.text: _root.chemicalTitle  ; onClicked: { doDisinfectChemical  () } }
        ]
        instructionBased        : true
        header.backVisible      :   vDisinfectAdjustDisinfect   .hasCancel          // if initiated by User from setting can be canceled.
        onBackClicked           : { vDisinfectAdjustDisinfect   .doDisinfectCancel          () }
    }

    DisinfectBase { id          :  _disinfectFlush
        objectName              : "_disinfectFlush"
        header.stepNames        : [ _root.disinfectTitle ,  _root.flushTitle ]
        title.text              :                           _root.flushTitle
        instructionBased        : true
        header.backVisible      : true
        header.confirmVisible   : true
        onBackClicked           : doDisinfectBack     ()
        onConfirmClicked        : doDisinfectConfirm  ()
    }

    DisinfectBase { id          :  _disinfectHeat
        objectName              : "_disinfectHeat"
        header.stepNames        : [ _root.disinfectTitle ,  _root.heatTitle ]
        title.text              :                           _root.heatTitle
        instructionBased        : true
        header.backVisible      : true
        header.confirmVisible   : true
        onBackClicked           : doDisinfectBack     ()
        onConfirmClicked        : doDisinfectConfirm  ()
    }

    DisinfectBase { id          :  _disinfectChemical
        objectName              : "_disinfectChemical"
        header.stepNames        : [ _root.disinfectTitle ,  _root.chemicalTitle ]
        title.text              :                           _root.chemicalTitle
        instructionBased        : true
        header.backVisible      : true
        header.confirmVisible   : true
        onBackClicked           : doDisinfectBack     ()
        onConfirmClicked        : doDisinfectConfirm  ()
    }

    // ----- Navigation
    Connections { target: vHDOperationMode
        onStandbyWaitDisinfectChanged                   : { page( _disinfectHome    , vstandbyWaitDisinfect        )} // initialItem
    }

    // ----- Responses
    Connections { target:  vDisinfectAdjustDisinfect
        onAdjustment_DisinfectModeTriggered             : { doDisplayReasonText( _disinfectHome     )}
        onAdjustment_DisinfectStartFlushTriggered       : { doDisplayReasonText( _disinfectFlush    )}
        onAdjustment_DisinfectStartHeatTriggered        : { doDisplayReasonText( _disinfectHeat     )}
        onAdjustment_DisinfectStartChemicalTriggered    : { doDisplayReasonText( _disinfectChemical )}
    }

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