/*!
 *
 * 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    NotificationDialog.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      17-Apr-2023
 * \author  (original)  Peter Lucia
 * \date    (original)  02-Jun-2020
 *
 */

// Qt
import QtQuick 2.12
import QtGraphicalEffects 1.12

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

/*!
 * \brief   Contains the Alarm Dialog Implementation
 */
ModalDialog { id : _root
    contentItem.objectName: "_NotificationDialog" // SquishQt

    property alias titleBarBackground   : _alarmDialog.titleBarBackground
    property alias titleBarForeground   : _alarmDialog.titleBarForeground
    property int currentScreen          : NotificationDialog.AlarmMain

    radius  : Variables.alarmDialogRadius

    enum AlarmPage {
        AlarmMain    ,
        AlarmList
    }

    function alarmMaximize() {
        currentScreen = NotificationDialog.AlarmMain
        open()
    }

    function alarmList() {
        currentScreen = NotificationDialog.AlarmList
        open()
    }

    AlarmDialog { id : _alarmDialog
        // this will change later to the actual message text
        // and the instruction would be in the dialog content
        visible                 : currentScreen === NotificationDialog.AlarmMain
        titleText               :   vAlarmStatus.title
        titlePixelSize          :   Fonts.fontPixelAlarmTitle
        instructionModel        :   vAlarmStatus.instructions
        alarmID                 :   vAlarmStatus.alarm_AlarmID
        isSilenced              :   vAlarmStatus.alarm_Flag_alarmsSilenced
        timeout                 :   vAlarmStatus.alarm_MuteTimeout
        okVisible               :   vAlarmStatus.alarm_Flag_UserMustAck
        resumeVisible           : ! vAlarmStatus.alarm_Flag_noResume
        rinsebackVisible        : ! vAlarmStatus.alarm_Flag_noRinseback
        endVisible              : ! vAlarmStatus.alarm_Flag_noEndTreatment
        temporaryBreakVisible   : ! vAlarmStatus.alarm_Flag_noTemporaryBreak
        minVisible              : ! vAlarmStatus.alarm_Flag_noMinimize
        countDown               :  vTreatmentStop.countDown
        countDownVisible        :  vTDOpMode.inTreatment
                                && (
                                    vTDTreatmentStates.txStop
                                    ||  vTDTreatmentStates.txRinseback
                                    ||  vTDTreatmentStates.txEnd
                                    )
                                && vTreatmentStop.total

        onMuteClicked           : vAlarmStatus.doSilence                    ()
        onResumeClicked         : vAlarmStatus.doUserActionResume           ()
        onRinsebackClicked      : vAlarmStatus.doUserActionRinseback        ()
        onEndClicked            : vAlarmStatus.doUserActionEnd              ()
        onTemporaryBreakClicked : vAlarmStatus.doUserActionTemporaryBreak   ()
        onOkClicked             : vAlarmStatus.doUserActionOk               ()
        onListClicked           : alarmList                                 ()
        onMinimizeClicked       : alarmMinimize                             ()
    }

    AlarmListDialog { id : _alarmListDialog
        visible             : currentScreen === NotificationDialog.AlarmList
        isSilenced          :   vAlarmStatus.alarm_Flag_alarmsSilenced
        timeout             :   vAlarmStatus.alarm_MuteTimeout
        minVisible          : ! vAlarmStatus.alarm_Flag_noMinimize
        onMuteClicked       : vAlarmStatus.doSilence()
        onMinimizeClicked   : alarmMinimize()
        onListClicked       : alarmMaximize()
    }
}
