/*!
 *
 * Copyright (c) 2020-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    TreatmentHome.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      10-Jan-2024
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  27-Jan-2020
 *
 */

// Qt
import QtQuick 2.12

// Project

//  Qml imports
import "qrc:/globals"
import "qrc:/components"
import "qrc:/dialogs"
import "qrc:/pages/treatment/sections"

/*!
 * \brief   ManagerHome is the screen
 * which is the default screen in the "Manager" stack
 */
ScreenItem { id: _root
    property int          bloodFlow_MeasuredFlow_Precision: 0
    property int dialysateInletFlow_MeasuredFlow_Precision: 0

    signal backClicked()

    signal sectionFlowClicked()
    signal sectionVitalsClicked()
    signal sectionPressuresClicked()
    signal sectionTimeClicked()
    signal sectionUltrafiltrationClicked()
    signal logVitalTime()

    readonly property int cellWidth : (_root.width / 7) - 10 // = screen width / # columns
    readonly property int cellHeight: (_root.height / 2) - Variables.notificationHeight - (Variables.defaultMargin * 2) // = screen height / # rows - header bar - margin

    onLogVitalTime: _treatmentVitals.updateVitalTime()

    AutoHideInfo { id: _lockDialog
        objectName      : "lockDialog"

        width: 600
        height: 400
        backgroundColor: "#091E31"
        fontSize: 35
        verticalOffset: Variables.defaultMargin * 5

        Rectangle { id: _mainCircle
            objectName:    "lockDialogMainCircle"
            anchors {
                top: parent.top
                topMargin: Variables.defaultMargin * 2
                horizontalCenter: parent.horizontalCenter
            }
            height      : 200
            width       : height
            radius      : height
            color       : "transparent"
            border.color: _treatmentFlows.editEnabled ? "#6697D2" :
                                                        "#A47E38"
            border.width: 2

            Image { id  : _iconImage
                objectName:    "lockDialogIcon"

                anchors.centerIn    : parent
                height  : 80
                width   : 80
                fillMode: Image.PreserveAspectFit
                source  : _treatmentFlows.editEnabled ? "qrc:/images/iUnlock" :
                                                        "qrc:/images/iLock"
            }

            Rectangle { id: _innerCircle
                objectName:    "lockDialogInnerCircle"

                anchors.centerIn: parent
                color           : "transparent"
                border.color    : _treatmentFlows.editEnabled ? "#8FC1FE" :
                                                                "#CDAF78"
                border.width    : 1
                height          : parent.height - 20
                width           : height
                radius          : height
            }
        }
    }

    Column { id: _column
        objectName:    "column"

        spacing: Variables.defaultMargin

        anchors {
            fill: parent
            margins: Variables.defaultMargin
            topMargin : Variables.notificationHeight + 30
        }

        Row { id: _topRow
            objectName:    "topRow"

            spacing: Variables.defaultMargin
            height: cellHeight

            TreatmentTime { id: _treatmentTime
                objectName:    "treatmentTime"
                width:  (cellWidth * 2) - (Variables.defaultMargin * 2)
                height: cellHeight
                onClicked: sectionTimeClicked()
            }

            TreatmentSaline { id: _treatmentSaline
                objectName:    "treatmentSaline"

                width:  cellWidth + Variables.defaultMargin
                height: cellHeight
            }

            TreatmentVitals { id: _treatmentVitals
                objectName:    "treatmentVitals"

                width:  cellWidth + Variables.defaultMargin
                height: cellHeight
                onEditClicked: sectionVitalsClicked()

                Text { id: _vitalCountdown
                    objectName:    "vitalCountdown"

                    color   : "gray"
                    anchors {
                        top         : parent.top
                        topMargin   : Variables.defaultMargin * 4
                        right       : parent.right
                    }
                    horizontalAlignment : Text.AlignHCenter
                    verticalAlignment   : Text.AlignVCenter
                    height  : 15
                    width   : 100
                    text    : vTreatmentVitals.interval ? ( vTreatmentVitals.countdown ) : ""
                    font.pixelSize: 16
                }
            }

            TreatmentPressures          { id: _treatmentPressures
                objectName:    "treatmentPressures"

                width:  (cellWidth * 3) - (Variables.defaultMargin * 2) // without auto layouts needs to fine tune
                height: cellHeight
                onEditClicked: sectionPressuresClicked()
            }
        }

        Row { id: _bottomRow
            objectName:    "bottomRow"

            spacing: Variables.defaultMargin
            height: cellHeight

            TreatmentUltrafiltration    { id: _treatmentUltrafiltration;
                objectName:    "treatmentUltrafiltration"

                width:  cellWidth * 3
                height: cellHeight
                onEditClicked   : sectionUltrafiltrationClicked()
            }

            TreatmentFlows { id: _treatmentFlows
                objectName:    "treatmentFlows"

                width:  cellWidth * 4
                height: cellHeight

                onEditClicked   : sectionFlowClicked()
                onLockClicked   :  {
                    _lockDialog.showDialog (
                                editEnabled ? qsTr("Treatment Parameters Unlocked") :
                                              qsTr("Treatment Parameters Locked"),
                                750
                                )
                }
            }
        }
    }

    onVisibleChanged: {
        if (visible) {
            _mainMenu.hidden = true
            _treatmentMenu.hidden = false
        }
    }
}
