/*
 * Copyright (C) 2016 The Qt Company Ltd.
 * Copyright (C) 2019 Konsulko Group
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import QtQuick 2.11
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.3
import AGL.Demo.Controls 1.0


Dialog {
    id: root
    property alias xpos: root.x
    property alias ypos: root.y
    property alias maxpwidth: root.width
    property alias maxpheight: root.height

    property string thisAgentName: undefined
    property string thisAgentId: undefined
    property string thisAgentWuW: undefined
    property string thisAgentAuthState: undefined
    property string thisAgentConnState: undefined
    property string thisAgentDialogState: undefined
    property string thisAgentLoginUrl: undefined
    property string thisAgentLoginCode: undefined
    property bool tokenValid: false
    property bool agentActive: false

    signal requestNewToken(string thisAgentId)

    visible: false
    z: 1
    focus: true
    modal: false
    footer: DialogButtonBox {
        Button { text: "CLOSE"
                 DialogButtonBox.buttonRole: DialogButtonBox.RejectRole
        }
        Button { text: "UPDATE"
                 DialogButtonBox.buttonRole: DialogButtonBox.ResetRole
        }
        background: Rectangle {
            border.color : '#00ADDC'
            color: '#848286'
        }
    }

    background: Rectangle {
        border.color : '#00ADDC'
        color: 'transparent'
    }

    onReset: refreshToken()
    function refreshToken() {
            root.requestNewToken(thisAgentId);
    }

    Item {
        id: container
        anchors.centerIn: parent
        anchors.fill: parent
        ColumnLayout {
            anchors.fill: parent
            RowLayout {
                Layout.fillHeight: true
                Layout.fillWidth: true
                Layout.alignment: Qt.AlignLeft
                spacing: 32
                visible: true
                Label {
                    id: voiceLabel
                    font.pixelSize: 28
                    color: '#080C0F'
                    text: "Voice Agent:"
                    Layout.preferredWidth: 200
                }
                Label {
                    id: idLabel
                    font.pixelSize: 28
                    color: '#66FF99'
                    text: thisAgentId
                }
            }
            RowLayout {
                Layout.fillHeight: true
                Layout.fillWidth: true
                Layout.alignment: Qt.AlignLeft
                spacing: 32
                visible: true
                Label {
                    id: namelabel
                    font.pixelSize: 28
                    color: '#080C0F'
                    text: "Assistant Name:"
                    Layout.preferredWidth: 200
                }
                Label {
                    id: aNamelabel
                    font.pixelSize: 28
                    color: '#66FF99'
                    text: thisAgentName
                }
            }
            RowLayout {
                Layout.fillHeight: true
                Layout.fillWidth: true
                Layout.alignment: Qt.AlignLeft
                spacing: 32
                visible: true
                Label {
                    id: wuwlabel
                    font.pixelSize: 28
                    color: '#080C0F'
                    text: "Wake Up Word:"
                    Layout.preferredWidth: 200
                }
                Label {
                    id: thiswuwlabel
                    font.pixelSize: 28
                    color: '#848286'
                    text: thisAgentWuW
                }
            }
            RowLayout {
                Layout.fillHeight: true
                Layout.fillWidth: true
                Layout.alignment: Qt.AlignHCenter
                spacing: 16
                visible: true
                ColumnLayout {
                    Layout.fillWidth: true
                    Label {
                        id: authLabel
                        font.pixelSize: 28
                        color: '#080C0F'
                        text: "Authorization status:"
                    }
                    Label {
                        id: connlabel
                        font.pixelSize: 28
                        color: '#080C0F'
                        text: "Connection status:"
                    }
                    Label {
                        id: dialogLabel
                        font.pixelSize: 28
                        color: '#080C0F'
                        text: "Dialog status:"
                    }
                }
                ColumnLayout {
                    Layout.fillWidth: true
                    Label {
                        id: authsLabel
                        font.pixelSize: 28
                        color: (thisAgentAuthState == "UNINITIALIZED")? '#00ADDC' : '#848286'
                        text: thisAgentAuthState
                    }
                    Label {
                        id: connslabel
                        font.pixelSize: 28
                        color: (thisAgentConnState == "DISCONNECTED")? '#00ADDC' : '#848286'
                        text: thisAgentConnState
                    }
                    Label {
                        id: dialogsLabel
                        font.pixelSize: 28
                        color: (thisAgentDialogState == "MICROPHONEOFF")? '#00ADDC' : '#848286'
                        text: thisAgentDialogState
                    }
                }
            }
            RowLayout {
                Layout.fillHeight: true
                Layout.fillWidth: true
                Layout.alignment: Qt.AlignHCenter
                spacing: 16
                visible: true
                ColumnLayout {
                    Layout.fillWidth: true
                    Label {
                        id: loginurlLabel
                        font.pixelSize: 28
                        color: '#080C0F'
                        text: "Login url:"
                    }
                    Label {
                        id: logincodeLabel
                        font.pixelSize: 28
                        color: '#080C0F'
                        text: "Login code:"
                    }
                }
                ColumnLayout {
                    Layout.fillWidth: true
                    Label {
                        id: urlLabel
                        font.pixelSize: 28
                        color: root.tokenValid? '#848286':'#0DF9FF'
                        text: thisAgentLoginUrl
                    }
                    Label {
                        id: codeLabel
                        font.pixelSize: 28
                        color: root.tokenValid? '#848286':'#0DF9FF'
                        text: thisAgentLoginCode
                    }
                }
            }
            Label {
                font.pixelSize: 18
                visible: root.tokenValid
                text: "You can use the supplied login data to enable "+thisAgentName+"."
            }
            Label {
                font.pixelSize: 18
                visible: !root.tokenValid
                text: "The current login data is not valid. Press 'UPDATE' to refresh."
            }
        }
    }
}