/*
 * Copyright (C) 2020 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.2
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.0

Rectangle {
    id: body_main
    width: 1000
    height: 1000
    radius: 2

    color: "black"

    ColumnLayout {
        id: body_col
        anchors.fill: parent.fill

        Label {
            id: body_title
            Layout.fillWidth: true
            Layout.fillHeight: false
            Layout.topMargin: 20
            Layout.leftMargin: 20
            Layout.rightMargin: 20

            text: bodyTemplate.title
            color: "white"
            font.pixelSize: 32
            font.bold: true
            maximumLineCount: 1
            wrapMode: Text.Wrap
            elide: Text.ElideRight
            horizontalAlignment: Label.AlignLeft
            verticalAlignment: Label.AlignVCenter
        }

        Label {
            id: body_subtitle
            Layout.fillWidth: true
            Layout.fillHeight: false
            Layout.topMargin: 0
            Layout.leftMargin: 20
            Layout.rightMargin: 20

            text: bodyTemplate.subtitle
            visible: bodyTemplate.subtitle != ""
            color: "white"
            font.pixelSize: 22
            font.bold: false
            maximumLineCount: 1
            wrapMode: Text.Wrap
            elide: Text.ElideRight
            horizontalAlignment: Label.AlignLeft
            verticalAlignment: Label.AlignVCenter
        }

        RowLayout {
            id: body_row
            Layout.fillWidth: true
            Layout.fillHeight: true
            Layout.topMargin: 20
            Layout.leftMargin: 20
            Layout.rightMargin: 20
            spacing: 20

            Text {
                id: body_textContent
                Layout.fillWidth: true
                Layout.fillHeight: true

                text: bodyTemplate.textContent
                color: "white"
                font.pixelSize: 32
                font.bold: false
                wrapMode: Text.Wrap
                verticalAlignment: Text.AlignTop
                maximumLineCount: 21

                states: [
                    State {
                        name: "BodyTemplate2"
                        when: bodyTemplate.imageContentSource != ""
                        PropertyChanges {
                            target: body_textContent
                            Layout.maximumWidth: (body_main.width - 3 * parent.spacing) / 2
                            Layout.preferredWidth: (body_main.width - 3 * parent.spacing) / 2
                        }
                    },
                    State {
                        name: "BodyTemplate1"
                        when: bodyTemplate.imageContentSource == ""
                        PropertyChanges {
                            target: body_textContent
                            Layout.maximumWidth: body_main.width - 2 * parent.spacing
                            Layout.preferredWidth: body_main.width - 2 * parent.spacing
                        }
                    }
                ]
             }

            Image {
                id: body_imageContent
                Layout.fillWidth: true
                Layout.fillHeight: false
                Layout.maximumWidth: (body_main.width - 3 * parent.spacing) / 2
                Layout.preferredWidth: (body_main.width - 3 * parent.spacing) / 2
                Layout.alignment: Qt.AlignTop

                source: bodyTemplate.imageContentSource
                visible: bodyTemplate.imageContentSource != ""
                fillMode: Image.PreserveAspectFit
                horizontalAlignment: Image.AlignHCenter
                verticalAlignment: Image.AlignTop
            }
        }
    }

    Button {
        id: body_close
        anchors.bottom: parent.bottom
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.bottomMargin: 20

        text: "Close"

        onReleased: {
            body_close.highlighted = false
            clear()
            hide()
        }
        onPressed: {
            body_close.highlighted = true
        }
        onCanceled: {
            body_close.highlighted = false
        }
    }

    // Functions

    function clear() {
        bodyTemplate.visible = false

        bodyTemplate.title = ""
        bodyTemplate.subtitle = ""
        bodyTemplate.textContent = ""
        bodyTemplate.imageContentSource = ""
    }
}