/*!
 *
 * 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    AlarmListDialog.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      04-Aug-2021
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  10-Dec-2020
 *
 */

// Qt
import QtQuick 2.12

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

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

    property alias titleText            : _title.text;
    property alias titleBarForeground   : _title.color
    property alias titleBarBackground   : _titleBar.color
    property alias isSilenced           : _headerButtonGroup.isSilenced
    property alias timeout              : _headerButtonGroup.timeout
    property int   alarmID              : -1
    property bool  minVisible           : true

    property color contentbackgroundColor   : Colors.offWhite
    property int   headerOverlap            : 30

    backgroundColor : contentbackgroundColor
    radius  : Variables.alarmDialogRadius

    signal muteClicked()
    signal minimizeClicked()
    signal listClicked()
    signal itemClicked(int vIndex)

    Rectangle { id: _titleBar
        color   : Colors.backgroundButtonSelect
        height  : Variables.alarmDialogHeaderHeight + _root.headerOverlap
        width   : _root.width
        radius  : _root.radius
        clip    : true

        Image {
            id: _icon
            source: "qrc:/images/iList"
            anchors {
                verticalCenter  : _title.verticalCenter
                right           : _title.left
                rightMargin      : Variables.defaultMargin
            }
            height  : Variables.alarmListIconDiameter
            width   : Variables.alarmListIconDiameter
        }

        Text { id: _title
            color: Colors.textMain
            font.pixelSize: Fonts.fontPixelTitle
            text: qsTr("Alarm list")

            anchors {
                verticalCenter      :  _titleBar.verticalCenter
                verticalCenterOffset: (_root.headerOverlap / 2) * -1
                left           : _titleBar.left
                leftMargin     : Variables.defaultMargin * 5
            }
        }

        MouseArea { id: _minimizeArea
            enabled     : _root.minVisible
            anchors.fill: parent
            onClicked   : _root.minimizeClicked()
        }

        AlarmButtonRow { id: _headerButtonGroup
            anchors {
                verticalCenter  : _titleBar.verticalCenter
                verticalCenterOffset: (_root.headerOverlap / 2) * -1
                right           : _titleBar.right
                rightMargin     : Variables.defaultMargin * 2
            }

            isMinButton         : true
            backgroundColor     : _titleBar.color
            minMaxVisible       : _root.minVisible

            onMuteClicked       : _root.muteClicked()
            onMinMaxClicked     : _root.minimizeClicked()
            onListClicked       : _root.listClicked()
        }
    }

    Rectangle { id: _content
        color   : _root.contentbackgroundColor
        clip    : true
        anchors {
            fill            : parent
            topMargin       : _titleBar.height + 2 - _root.headerOverlap
            bottomMargin    : _root.headerOverlap
        }

        Text { id: _desc
            visible : ! vAlarmActiveList.adjustment_Accepted
            text    :  vAlarmActiveList.status
            objectName: "_NotificationDialog_Description"
            color: Colors.alarmDialogText
            font.pixelSize: Fonts.fontPixelButton
            anchors {
                horizontalCenter: parent.horizontalCenter;
                verticalCenter: parent.verticalCenter;
            }
        }

        TouchGrid { id: _alarmGrid
            anchors {
                top             : _content.top
                topMargin       : Variables.minVGap
                bottom          : _root.bottom
                bottomMargin    : Variables.mainMenuHeight + Variables.minVGap
                horizontalCenter: parent.horizontalCenter
            }
            visible         : vAlarmActiveList.adjustment_Accepted

            alignCenter     : false
            width           : _content.width   - Variables.minVGap  * 2                          // * 2 : for each side
            height          : _content.height  - Variables.minVGap  * 2 - _titleBar.height      // * 2 : for each side
            colCount        : 1
            rowCount        : vAlarmActiveList.alarmIDs.length
            itemHeight      : 75
            itemWidth       : _content.width  - Variables.minVGap * (2 + 1)           // * 2 : for each side & the +1 to not cover the scrollbar
            rowSpacing      : 0
            colSpacing      : 0
            lineColor       : Colors.alarmDialogText
            textColor       : Colors.alarmDialogText
            itemsText       : vAlarmActiveList.alarmIDs
            itemsValue      : vAlarmActiveList.alarmTexts
            itemsTouchable  : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  ]
            itemsValueLeftMargin    : 80 // if decreased maybe covered by title
            itemsUnitLeftMargin     : 470 // if increased will be covered by chevron if touchable
            onItemClicked           : _root.itemClicked(vIndex)
        }
    }
}
