/*!
 *
 * Copyright (c) 2019-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    Variables.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      03-Mar-2023
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  09-Oct-2019
 *
 */

// Qt
pragma Singleton
import QtQuick 2.12

/*!
 * \brief
 * Variabes.qml file includes any constant variable definitions
 * which is going to be used in the project.
 */
QtObject {
    readonly property int keybardAnimationDuration              : 200

    readonly property int applicationWidth                      : 1280
    readonly property int applicationHeight                     : 800
    readonly property int buttonSpacing                         : 150
    readonly property int dialogIconHeight                      : 50
    readonly property int dialogIconWidth                       : 50
    readonly property int dialogIconHorizontalOffset            : 25
    readonly property int headerHeight                          : 100
    readonly property int headerButtonsMargin                   : 35

    readonly property int mainMenuHeight                        : 70

    readonly property int minVGap                               : 15
    readonly property int minVGap2                              : 30

    readonly property int logoDiameter                          : 50

    readonly property int iconsDiameter                         : 25

    readonly property int largeArrowWidth                       : 24
    readonly property int largeArrowHeight                      : 32

    readonly property int arrowWidth                            : 12
    readonly property int arrowHeight                           : 16

    readonly property int alarmListIconDiameter                 : 45

    readonly property int borderWidth                           : 2

    readonly property int touchRectWidth                        : 512   //K:D //425
    readonly property int touchRectHeight                       : 85    //K:D //70
    readonly property int touchRectRadius                       : 45

    readonly property int titleBottomPadding                    : 25

    readonly property int columnSpacing                         : 25    //K:D //20

    readonly property int dialogMargin                          : mainMenuHeight * 2
    readonly property int dialogWidth                           : applicationWidth  - dialogMargin
    readonly property int dialogHeight                          : applicationHeight - dialogMargin
    readonly property int dialogRadius                          : 5

    readonly property int rangeRectMargin                       : 1
    readonly property int rangeRectRadius                       : 2
    readonly property int rangeRectTextMargin                   : 7
    readonly property int rangeMarkerHeight                     : 60
    readonly property int rangeMarkerHeightMidle                : 40
    readonly property int rangeMarkerHeightShort                : 20
    readonly property int rangeMarkerWidth                      : 2

    readonly property int progressbarHeight                     : 30
    readonly property int progressbarHandler                    : 35
    readonly property int progressbarHandlerBorderWidth         : 4

    readonly property int progressbarFluidHeight                : 5
    readonly property int progressbarSmall                      : 5
    readonly property int progressbarSmallWidth                 : 600
    readonly property int progressbarRectHeight                 : 50
    readonly property int progressbarRectWidth                  : 620

    readonly property int circleNormalDiameter                  : 350
    readonly property int progressCircleDiameterNormal          : circleNormalDiameter
    readonly property int progressCircleDiameterSmall           : 150
    readonly property int opacityAnimationDuration              : 1200

    readonly property int sliderTextMargin                      : 20
    readonly property int treatmentSpacing                      : 80 // 60

    readonly property int notificationHeight                    : 60
    readonly property int notificationIconDiameter              : 36

    readonly property int checkListViewItemWidth                : 350
    readonly property int checkListViewItemHeight               :  60


    readonly property int pauseIconDiameter                     : 60
    readonly property int topBarMenuHeight                      : 100
    readonly property int sliderCircleDiameter                  : 30

    readonly property int pressuresProgressbarWidth             : 725
    
    readonly property int gridSelectionButtonHeight             : 100
    readonly property int gridSelectionButtonWidth              : 375

    readonly property int createTreatmentFlickableDeceleration  : 4500
    readonly property int createTreatmentTableHeight            : 800
    readonly property int createTreatmentTableWidth             : applicationWidth - 50
    readonly property int createTreatmentMargin                 : 45
    readonly property int createTreatmentHeaderHeight           : 130
    readonly property int createTreatmentTableMargin            : 20
    readonly property int createTreatmentSubTableHeight         : 50
    readonly property int createTreatmentSubTableWidth          : 500
    readonly property int createTreatmentSliderMargin           : 40
    readonly property int createTreatmentSliderHeight           : 50
    readonly property int createTreatmentSliderWidth            : 750

    readonly property int ultrafiltrationProgressbarWidth       : 880
    readonly property int ultrafiltrationAdjustmtenOptionWidth  : 520
    readonly property int ultrafiltrationAdjustmtenOptionHeight : 275

    readonly property int silenceIconMargin                     : 10
    readonly property int notificationBarIconMargin             : 10
    readonly property int notificationBarIconHeight             : 30
    readonly property int notificationBarIconWidth              : 30

    readonly property int rinsebackIconDiameterDefault          : 85
    readonly property int rinsebackIconDiameterResumePause      : 110

    readonly property int settingsArrowHeight                   : 30
    readonly property int settingsArrowWidth                    : 24
    readonly property int settingsButtonWidth                   : 300
    readonly property int settingsButtonHeight                  : 85
    readonly property int settingsMargin                        : 75
    readonly property int settingsSpacing                       : 20
    readonly property int settingsInputWidth                    : 225

    readonly property int settingsNotificationMargin            : 10
    readonly property int settingsContentSidesMargin            : headerButtonsMargin
    readonly property int settingsContentBottomMargin           : mainMenuHeight      + // Alarm          Bar height
                                                                  notificationHeight  + // notification   Bar height
                                                                  minVGap               // Min Gap to give content the min border

    readonly property int settingsOptionWidth                   : 550
    readonly property int settingsOptionHeight                  : 50

    readonly property int screenGridAreaWidth                   : 400
    readonly property int screenGridAreaHeightRow1              : 170
    readonly property int screenGridAreaHeightRow2              : 225
    readonly property int screenGridAreaHeightRow3              : 200

    readonly property int screenGridLeftColumnX                 :  40
    readonly property int screenGridRightColumnX                : applicationWidth - screenGridLeftColumnX - screenGridAreaWidth

    readonly property int screenGridRow1Y                       : 100
    readonly property int screenGridRow2Y                       : 290 // 320
    readonly property int screenGridRow3Y                       : 540 // 570

    readonly property int screenGridLineLength                  : 450
    readonly property int screenGridLeftLinesX                  :   0
    readonly property int screenGridRightLinesX                 : applicationWidth - screenGridLineLength
    readonly property int screenGridRow1LineY                   : 275
    readonly property int screenGridRow2LineY                   : 525


    // ---------- < PRS > Related Section ----------
    // blood flow rate
    readonly property int     bloodFlowMin          : 100 // PRS 30
    readonly property int     bloodFlowMax          : 500 // PRS 30
    readonly property int     bloodFlowResolution   :  25 // PRS 30

    // Dialysate flow rate
    readonly property int dialysateFlowResolution   :  50 // PRS 345

    // duration
    readonly property int      durationResolution   :  15 // PRS346

    // Ultrafiltration
    readonly property real ultrafiltrationMinDef    :  0.000
    readonly property real ultrafiltrationMaxDef    :  8.000
    readonly property int  ultrafiltrationPrecision :  3

    // Heparin
    readonly property int  heparinPrecision         : 1

    // Saline
    readonly property int  salinePrecision          : 1

    function sizeConverted(vSize, vSizePowers, vRound = 2) {
        return (  vSize
                / vSizePowers   // convert from byte to Giga byte
                / 1000)         // round to 1000
        .toFixed(vRound)        // round to 1 floating point
    }

    function notSetVariable(vVariable, vLength, vChar) {
        let notSetVariableText = "_" //"‑" //"-"
        if (vLength === 0 ) notSetVariableText = ""
        if (vVariable)
            return vVariable
        else
            if (vLength)
                return notSetVariableText.repeat(vLength)
            else
                return notSetVariableText
    }

    // it is prefered to use the regExp instead of the RegExpValidator
    // otherwise an extra RegExpValidator object will always created here.
    readonly property var regExp_PatientID: /[A-Za-z0-9]{1,20}/


    readonly property string preTreatmentStepLabelCreate            : qsTr("CREATE"   )
    readonly property string preTreatmentStepLabelConfirm           : qsTr("CONFIRM"  )
    readonly property string preTreatmentStepLabelPriming           : qsTr("PRIME"    )
    readonly property string preTreatmentStepLabelUltrafiltration   : qsTr("BEGIN"    )

    // Units
    // - Ultrafiltration
    readonly property string unitTextUltrafiltrationRate    : unitTextFlowRate
    readonly property string unitTextUltrafiltrationVolume  : unitTextVolume
    // - Duration/Interval
    readonly property string unitTextDuration               : qsTr("min")
    // - Flows
    readonly property string unitTextFlowRate               : qsTr("mL/min")
    readonly property string unitTextDispensingRate         : qsTr("mL/hr")
    // - Vitals
    readonly property string unitTextBloodPressure          : qsTr("mmHg")
    readonly property string unitTextHeartBeat              : qsTr("BPM" )
    // - Fluid
    readonly property string unitTextVolume                 : qsTr("(L)")
    readonly property string unitTextFluid                  : qsTr("mL")
    readonly property string unitTextSaline                 : unitTextFluid
    readonly property string unitTextHeparin                : unitTextFluid
    // - Temperature
    readonly property string unitTextTemperature            : qsTr("°C")
    // Concentration
    readonly property string unitTextConcentration          : qsTr("mEg/L")
    readonly property string unitTextHeparinConcentration   : qsTr("IU/mL")

}
