/*!
 *
 * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved.
 * \copyright                                                       \n
 *          THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM,  \n
 *          IN PART OR IN WHOLE,                                    \n
 *          WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n
 *
 * \file    SettingsHome.qml
 * \date    2019/10/21
 * \author  Behrouz NematiPour
 *
 */

// Qt
import QtQuick 2.12
import QtQuick.Controls 2.12

// Project
import Gui.Actions 0.1;

//  Qml imports
import "qrc:/globals"
import "qrc:/components"

/*!
 * \brief   SettingsHome is the screen
 * which is the default screen in the "Settings" stack
 */
ScreenItem { id: _root

    USBButton { id: _usb
        anchors {
            top         : parent.top
            right       : _export.left
            topMargin   : (Variables.headerHeight - Variables.logoHeight) / 2
            rightMargin : (Variables.headerHeight - Variables.logoHeight) / 2
        }
    }

    ExportButton { id: _export
        width: 150
        height: 50
        anchors {
            top         : parent.top
            right       : _poweroff.left
            topMargin   : (Variables.headerHeight - Variables.logoHeight) / 2
            rightMargin : (Variables.headerHeight - Variables.logoHeight) / 2
        }
    }

    TouchRect { id : _poweroff
        width: 150
        height: Variables.logoHeight
        animated: true
        anchors {
            top         : parent.top
            right       : parent.right
            topMargin   : (Variables.headerHeight - Variables.logoHeight) / 2
            rightMargin : (Variables.headerHeight - Variables.logoHeight) / 2
        }
        text.text: qsTr("Shutdown")
        button.onPressed: {
            _GuiView.doActionTransmit(GuiActions.PowerOff, GuiActions.NoData)
        }
    }

    Column { id: _BloodFlowColumn
        width: 150
        spacing: 20
        topPadding: 100
        leftPadding: 10
        Text {
            id: _BloodFlow_Title
            text: qsTr("  Blood  ")
            width: _BloodFlowColumn.width
            horizontalAlignment: Text.AlignHCenter
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
            font.underline: true
        }
        Text {
            id: _BloodFlow_S32
            text: qsTr("")
            width: _BloodFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _BloodFlow_F32_1
            text: qsTr("")
            width: _BloodFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _BloodFlow_F32_2
            text: qsTr("")
            width: _BloodFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _BloodFlow_F32_3
            text: qsTr("")
            width: _BloodFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _BloodFlow_F32_4
            text: qsTr("")
            width: _BloodFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _BloodFlow_F32_5
            text: qsTr("")
            width: _BloodFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _BloodFlow_F32_6
            text: qsTr("")
            width: _BloodFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
    }

    Column { id: _DialysateInletFlowColumn
        width: 150
        spacing: 20
        topPadding: 100
        leftPadding: 180
        Text {
            id: _DialysateInletFlow_Title
            text: qsTr("  Dialysate I ")
            width: _DialysateInletFlowColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
            font.underline: true
        }
        Text {
            id: _DialysateInletFlow_S32
            text: qsTr("")
            width: _DialysateInletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateInletFlow_F32_1
            text: qsTr("")
            width: _DialysateInletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateInletFlow_F32_2
            text: qsTr("")
            width: _DialysateInletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateInletFlow_F32_3
            text: qsTr("")
            width: _DialysateInletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateInletFlow_F32_4
            text: qsTr("")
            width: _DialysateInletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateInletFlow_F32_5
            text: qsTr("")
            width: _DialysateInletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateInletFlow_F32_6
            text: qsTr("")
            width: _DialysateInletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
    }

    Column { id: _DialysateOutletFlowColumn
        width: 150
        spacing: 20
        topPadding: 100
        leftPadding: 400
        Text {
            id: _DialysateOutletFlow_Title
            text: qsTr("  Dialysate O ")
            width: _DialysateOutletFlowColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
            font.underline: true
        }
        Text {
            id: _DialysateOutletFlow_F32_0
            text: qsTr("")
            width: _DialysateOutletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateOutletFlow_F32_1
            text: qsTr("")
            width: _DialysateOutletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateOutletFlow_F32_2
            text: qsTr("")
            width: _DialysateOutletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateOutletFlow_F32_3
            text: qsTr("")
            width: _DialysateOutletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateOutletFlow_F32_4
            text: qsTr("")
            width: _DialysateOutletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateOutletFlow_F32_5
            text: qsTr("")
            width: _DialysateOutletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
        Text {
            id: _DialysateOutletFlow_F32_6
            text: qsTr("")
            width: _DialysateOutletFlowColumn.width
            horizontalAlignment: Text.AlignRight
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
        }
    }

    Column { id: _AlarmStatusColumn
        width: 270
        spacing: 5
        topPadding: 100
        leftPadding: 700
        Text {
            id: _AlarmStatus_Title
            text: qsTr("  Alarm Status  ")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
            font.underline: true
        }
        Text {
            id: _AlarmStatus_Priority
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text {
            id: _AlarmStatus_ID
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text {
            id: _AlarmStatus_EsclateIn
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_MuteTimeout
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_systemFault
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_stop
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_noClear
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_noResume
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_noRinseback
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_noEndTreatment
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_noNewTreatment
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_bypassDialyzer
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_alarmsToEscalate
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
        Text { id: _AlarmStatus_alarmsSilenced
            text: qsTr("")
            width: _AlarmStatusColumn.width
            horizontalAlignment: Text.AlignLeft
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelButton
        }
    }
    Connections {
        target: _GuiView
        onDidActionReceive: {
            if ( ! visible ) return;
            switch(vAction) {
            case GuiActions.BloodFlow:
                _BloodFlow_S32  .text =       vData[GuiActions.BloodFlow_FlowSetPoint   ];
                _BloodFlow_F32_1.text =       vData[GuiActions.BloodFlow_MeasuredFlow   ].toFixed(2);
                _BloodFlow_F32_2.text =       vData[GuiActions.BloodFlow_RotorSpeed     ].toFixed(2);
                _BloodFlow_F32_3.text =       vData[GuiActions.BloodFlow_MotorSpeed     ].toFixed(2);
                _BloodFlow_F32_4.text =       vData[GuiActions.BloodFlow_MotorCtlSpeed  ].toFixed(2);
                _BloodFlow_F32_5.text =       vData[GuiActions.BloodFlow_MotorCtlCurrent].toFixed(2);
                _BloodFlow_F32_6.text = "%" + vData[GuiActions.BloodFlow_PWMDtCycle     ].toFixed(2);
                break;

            case GuiActions.DialysateInletFlow:
                _DialysateInletFlow_S32  .text  =       vData[GuiActions.DialysateInletFlow_FlowSetPoint    ];
                _DialysateInletFlow_F32_1.text  =       vData[GuiActions.DialysateInletFlow_MeasuredFlow    ].toFixed(2);
                _DialysateInletFlow_F32_2.text  =       vData[GuiActions.DialysateInletFlow_RotorSpeed      ].toFixed(2);
                _DialysateInletFlow_F32_3.text  =       vData[GuiActions.DialysateInletFlow_MotorSpeed      ].toFixed(2);
                _DialysateInletFlow_F32_4.text  =       vData[GuiActions.DialysateInletFlow_MotorCtlSpeed   ].toFixed(2);
                _DialysateInletFlow_F32_5.text  =       vData[GuiActions.DialysateInletFlow_MotorCtlCurrent ].toFixed(2);
                _DialysateInletFlow_F32_6.text  = "%" + vData[GuiActions.DialysateInletFlow_PWMDtCycle      ].toFixed(2);
                break;

            case GuiActions.DialysateOutletFlow:
                _DialysateOutletFlow_F32_0.text =       vData[GuiActions.DialysateOutletFlow_RefUFVol        ].toFixed(2);
                _DialysateOutletFlow_F32_1.text =       vData[GuiActions.DialysateOutletFlow_MeasUFVol       ].toFixed(2);
                _DialysateOutletFlow_F32_2.text =       vData[GuiActions.DialysateOutletFlow_RotorSpeed      ].toFixed(2);
                _DialysateOutletFlow_F32_3.text =       vData[GuiActions.DialysateOutletFlow_MotorSpeed      ].toFixed(2);
                _DialysateOutletFlow_F32_4.text =       vData[GuiActions.DialysateOutletFlow_MotorCtlSpeed   ].toFixed(2);
                _DialysateOutletFlow_F32_5.text =       vData[GuiActions.DialysateOutletFlow_MotorCtlCurrent ].toFixed(2);
                _DialysateOutletFlow_F32_6.text = "%" + vData[GuiActions.DialysateOutletFlow_PWMDtCycle      ].toFixed(2);
                break;

            case GuiActions.AlarmStatus:
                _AlarmStatus_Priority        .text = _GuiView.alarmPriorityName(vData[GuiActions.AlarmStatus_Priority             ])
                _AlarmStatus_ID              .text = _GuiView.alarmIDName      (vData[GuiActions.AlarmStatus_AlarmID              ])
                _AlarmStatus_EsclateIn       .text = "Escalates In : "        + vData[GuiActions.AlarmStatus_EscalateIn           ]
                _AlarmStatus_MuteTimeout     .text = "MuteTimeout  : "        + vData[GuiActions.AlarmStatus_MuteTimeout          ]
                _AlarmStatus_systemFault     .text = (vData[GuiActions.AlarmStatus_Flag_systemFault     ] ? "1" : "0" ) + " : systemFault      "
                _AlarmStatus_stop            .text = (vData[GuiActions.AlarmStatus_Flag_stop            ] ? "1" : "0" ) + " : stop             "
                _AlarmStatus_noClear         .text = (vData[GuiActions.AlarmStatus_Flag_noClear         ] ? "1" : "0" ) + " : noClear          "
                _AlarmStatus_noResume        .text = (vData[GuiActions.AlarmStatus_Flag_noResume        ] ? "1" : "0" ) + " : noResume         "
                _AlarmStatus_noRinseback     .text = (vData[GuiActions.AlarmStatus_Flag_noRinseback     ] ? "1" : "0" ) + " : noRinseback      "
                _AlarmStatus_noEndTreatment  .text = (vData[GuiActions.AlarmStatus_Flag_noEndTreatment  ] ? "1" : "0" ) + " : noEndTreatment   "
                _AlarmStatus_noNewTreatment  .text = (vData[GuiActions.AlarmStatus_Flag_noNewTreatment  ] ? "1" : "0" ) + " : noNewTreatment   "
                _AlarmStatus_bypassDialyzer  .text = (vData[GuiActions.AlarmStatus_Flag_bypassDialyzer  ] ? "1" : "0" ) + " : bypassDialyzer   "
                _AlarmStatus_alarmsToEscalate.text = (vData[GuiActions.AlarmStatus_Flag_alarmsToEscalate] ? "1" : "0" ) + " : alarmsToEscalate "
                _AlarmStatus_alarmsSilenced  .text = (vData[GuiActions.AlarmStatus_Flag_alarmsSilenced  ] ? "1" : "0" ) + " : alarmsSilenced   "
                break;
            }
        }
    }
}
