/*!
 *
 * 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    PreTreatmentWaterSampleStack.qml
 * \author  (last)      Vy
 * \date    (last)      17-May-2023
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  18-Mar-2021
 *
 */

// Qt
import QtQuick 2.12

// Project
//  Qml imports
import "qrc:/globals"
import "qrc:/components"
import "qrc:/pages/pretreatment"

/*!
 * \brief   the pre treatment water sample stack screen
 */
StackItem { id: _root
    objectName: "_PreTreatmentSampleStack"

    stackView.initialItem   : null

    property int stackStepIndex : 1

    signal samplePressed ()
    signal sampleReleased()
    signal passClicked   ()
    signal failClicked   ()
    signal okClicked     ()

    // ----- Screens definitions
    PreTreatmentBase { id: _preTreatmentFilterFlush
        title.text              : qsTr("Flushing Carbon Filters for Water Sample")
        hasTimeCircle           : true
        timeCircleMinimum       : 0
        timeCircleMaximum       : vDGFilterFlush.total
        timeCircleProgressValue : vDGFilterFlush.elapsed
        timeCircleTimeTextValue : vDGFilterFlush.remaining * 60
    }

    PreTreatmentBase { id: _preTreatmentWaterSample
        header.confirmVisible   : true
        header.confirmText.text : qsTr("NEXT")
        title.text              : qsTr("Water Sample")
        instructionBased        : true
        footer.children: [
            TouchRect {
                text.text: qsTr("WATER  SAMPLE")
                onPressed   : _root.samplePressed ()
                onReleased  : _root.sampleReleased()
            }
        ]
    }

    PreTreatmentBase { id: _preTreatmentWaterSampleResult
        header.backVisible      : true
        title.text              : qsTr("Water Sample Result")
        instructionBased        :  true
        footer.childrenWidth    : 300
        footer.children: [
            TouchRect {
                text.text: qsTr("FAIL")
                onClicked: _root.failClicked()
            },
            TouchRect {
                text.text: qsTr("PASS")
                onClicked: _root.passClicked()
            }
        ]
    }

    PreTreatmentBase { id: _preTreatmentWaterSampleResultFail
        title.text              : qsTr("Water Sample Result Failed")
        instructionBased        :  true
        footer.children: [
            TouchRect {
                text.text: qsTr("OK")
                onClicked: _root.okClicked()
            }
        ]
    }

    // ----- Screens Navigations
    Connections { target: vPreTreatmentStates
        function onWaterSample_setupChanged     ( vValue ) { page( _preTreatmentFilterFlush      , vValue   )}
        function onWaterSample_runningChanged   ( vValue ) { page( _preTreatmentWaterSample      , vValue   )}
    }

    // ----- Screen Actions/Navigations
    Connections { target: _preTreatmentWaterSample
        function onConfirmClicked               ( vValue ) { page( _preTreatmentWaterSampleResult           )}
    }

    Connections { target: _preTreatmentWaterSampleResult
        function onBackClicked                  ( vValue ) { page( _preTreatmentWaterSample                 )}
    }

    onSamplePressed                 : { vPreTreatmentAdjustmentWaterSample.doSample( true           )}
    onSampleReleased                : { vPreTreatmentAdjustmentWaterSample.doSample( false          )}
    onPassClicked                   : { vPreTreatmentAdjustmentWaterSample.doResult( true           )}
    onFailClicked                   : { page( _preTreatmentWaterSampleResultFail                    )}
    onOkClicked                     : { vPreTreatmentAdjustmentWaterSample.doResult( false          )}

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

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