/*!
 *
 * Copyright (c) 2020-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    TreatmentAdjustmentUltrafiltrationConfirm.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      08-Mar-2021
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  18-May-2020
 *
 */

// Qt
import QtQuick 2.12
//import QtGraphicalEffects 1.0

// Project

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

/*!
 * \brief   TreatmentAdjustmentUltrafiltrationEdit.qml is the screen
 *          To adjust the treatment ultrafiltration
 */
TreatmentAdjustmentBase { id: _root
    contentItem.objectName: "TreatmentAdjustmentUltrafiltrationConfirm"  //SquishQt testability

    QtObject { id: _private
        property int  decimalVolume: Variables.ultrafiltrationPrecision
        property int  decimalRate  : 0
    }
    property real   ultrafiltrationVolume   : 0.000
    property int    treatmentDuration       : 0
    property int    treatmentDurationDiff   : 0
    property real   ultrafiltrationRate     : 0.000
    property real   ultrafiltrationRateDiff : 0.000
    property real   ultrafiltrationRateOld  : 0.000

    signal confirmRateClicked    (real vVolume)
    signal confirmDurationClicked(real vVolume)

      closeVisible  : false
    confirmVisible  : false
       backVisible  : true

   information {
       visible     : true && information.text && ! notification.visible
       imageSource : ufInfoImageSource
       text        : ufInfoText
   }

    titleText   : qsTr("ULTRAFILTRATION VOLUME") + "   " + Variables.unitTextUltrafiltrationVolume

    function reset() {
            _rateAdjustmentButton.selected = false
        _durationAdjustmentButton.selected = false
    }

    TitleText { id : _titleText
        text: qsTr("To confirm new UF Volume (%1),\nselect a treatment adjustment:")
            .arg(ultrafiltrationVolume.toFixed(_private.decimalVolume))
        font.pixelSize: Fonts.fontPixelTitle
        color: Colors.textMain
        height: Variables.mainMenuHeight
        anchors {
            top: parent.top
            topMargin: 100
            horizontalCenter: parent.horizontalCenter
        }
    }

    TouchRect { id: _confirmButton
        width   : 530
        height  : 70
        anchors {
            bottom: parent.bottom
            bottomMargin: 85
            horizontalCenter: parent.horizontalCenter
        }
        isDefault   : true
        enabled     : _rateAdjustmentButton.selected || _durationAdjustmentButton.selected
        text  {
            text: qsTr("CONFIRM")
            font.weight: Font.DemiBold
            font.pixelSize: Fonts.fontPixelUltrafiltrationAdjustmentConfirmButton
        }
        onClicked: {
            if (_rateAdjustmentButton.selected) {
                confirmRateClicked(ultrafiltrationVolume)
                return
            }
            if (_durationAdjustmentButton.selected) {
                confirmDurationClicked(ultrafiltrationVolume)
                return
            }
            confirmClicked()
        }
    }

    Row {
        spacing: 20
        anchors {
            top: parent.top
            topMargin: 205
            horizontalCenter: parent.horizontalCenter
        }
        UltrafiltrationButton { id: _rateAdjustmentButton
            titleString       : qsTr("%1 UF Rate")
            descriptionString : qsTr("The rate %3 by %1 %2,\nthe treatment duration remains the same.")
                        .arg(Math.abs(ultrafiltrationRateDiff   .toFixed(_private.decimalRate)))
                        .arg(Variables.unitTextUltrafiltrationRate)
            buttonType  : UltrafiltrationButton.ButtonType.UltrafiltrationRate
            isIncrease  : ultrafiltrationRateDiff > 0
            valueText   : qsTr( "UF Rate : %1 %2")
                        .arg(ultrafiltrationRate                .toFixed(_private.decimalRate))
                        .arg(Variables.unitTextUltrafiltrationRate)
            onClicked   : {
                _durationAdjustmentButton.selected = false
                selected = true
            }
            disabled: ultrafiltrationRate == 0 && ultrafiltrationRateDiff == 0
        }

        UltrafiltrationButton { id: _durationAdjustmentButton
            titleString       : qsTr("%1 Treatment Duration")
            descriptionString : qsTr("The rate remains, the treatment\nduration %2 by %1 minutes.")
                        .arg(Math.abs(treatmentDurationDiff))
            buttonType: UltrafiltrationButton.ButtonType.TreatmentDuration
            isIncrease: treatmentDurationDiff > 0
            valueText   : qsTr( "UF Rate : %1 %2")
                        .arg(ultrafiltrationRateOld             .toFixed(_private.decimalRate))
                        .arg(Variables.unitTextUltrafiltrationRate)
            onClicked   : {
                _rateAdjustmentButton.selected = false
                selected = true
            }
            disabled: treatmentDuration == 0 && treatmentDurationDiff == 0
        }
    }

    onConfirmClicked: {
        _durationAdjustmentButton.selected = false
        _rateAdjustmentButton.selected = false
    }
    onBackClicked: {
        _durationAdjustmentButton.selected = false
        _rateAdjustmentButton.selected = false
    }
}
