/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Copyright (C) 2018, 2019 Konsulko Group
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
**   * Redistributions of source code must retain the above copyright
**     notice, this list of conditions and the following disclaimer.
**   * Redistributions in binary form must reproduce the above copyright
**     notice, this list of conditions and the following disclaimer in
**     the documentation and/or other materials provided with the
**     distribution.
**   * Neither the name of The Qt Company Ltd nor the names of its
**     contributors may be used to endorse or promote products derived
**     from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/

/*
 * NOTE: Originally written from scratch, but enough code was eventually
 *       pasted in from the Qt dashboard.qml example that its license text
 *       has been adopted.
 */

import QtQuick 2.2
import QtQuick.Window 2.1
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Extras 1.4

ApplicationWindow {
    id: root
    width: 1920
    height: 1080
    visible: true
    flags: Qt.FramelessWindowHint
    style: ApplicationWindowStyle {
        background: Rectangle {
            color: "black"
        }
    }

    ValueSource {
        id: valueSource
    }

    Rectangle {
        id: statusFrame
        x: (parent.width - width) / 2
        y: 40
        width: 1280
        height: 96
        radius: height / 5

        color: "black"
        border.width: 2
        border.color: "grey"

        Row {
            width: parent.width
            height: parent.height * 0.75
            spacing: (parent.width - (14 * parent.height * 0.75)) / 15

            anchors.fill: parent
            anchors.topMargin: (parent.height - height) /2
            anchors.bottomMargin: (parent.height - height) /2
            anchors.leftMargin: (parent.width - (14 * parent.height * 0.75)) / 15
            anchors.rightMargin: (parent.width - (14 * parent.height * 0.75)) / 15

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                TurnIndicator {
                    id: leftIndicator
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75

                    direction: Qt.LeftArrow
                    on: valueSource.turnSignal == Qt.LeftArrow
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.startUp ? './images/AGL_Icons_Engine_yellow.svg' : './images/AGL_Icons_Engine.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.startUp ? './images/AGL_Icons_Oil_red.svg' : './images/AGL_Icons_Oil.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.startUp ? './images/AGL_Icons_Battery_red.svg' : './images/AGL_Icons_Battery.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.startUp ? './images/AGL_Icons_ABS_red.svg' : './images/AGL_Icons_ABS.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.startUp ? './images/AGL_Icons_ParkingBrake_red.svg' : './images/AGL_Icons_ParkingBrake.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Text {
                    id: prindle
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    horizontalAlignment: Text.AlignCenter

                    text: valueSource.prindle
                    color: "white"
                    font.pixelSize: parent.height * 0.85
                }
            }

            Rectangle {
                id: gearIndicatior
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Text {
                    id: gear
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    horizontalAlignment: Text.AlignCenter

                    text: valueSource.gear
                    color: "white"
                    font.pixelSize: parent.height * 0.85
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.startUp ? './images/AGL_Icons_Seatbelt_red.svg' : './images/AGL_Icons_Seatbelt.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.startUp ? './images/AGL_Icons_OpenDoor_red.svg' : './images/AGL_Icons_OpenDoor.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.startUp ? './images/AGL_Icons_Lights_red.svg' : './images/AGL_Icons_Lights.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.cruiseEnabled ? (valueSource.cruiseSet  ? './images/AGL_Icons_CruiseControl_green.svg' : './images/AGL_Icons_CruiseControl_yellow.svg') : './images/AGL_Icons_CruiseControl.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                Image {
                    source: valueSource.laneDepartureWarnEnabled ? './images/AGL_Icons_LaneDeparture_green.svg' : './images/AGL_Icons_LaneDeparture.svg'
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75
                    fillMode: Image.PreserveAspectFit
                }
            }

            Rectangle {
                width: height
                height: parent.height
                radius: height / 5

                color: "black"
                border.width: 2
                border.color: "grey"

                TurnIndicator {
                    id: rightIndicator
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    width: height
                    height: parent.height * 0.75

                    direction: Qt.RightArrow
                    on: valueSource.turnSignal == Qt.RightArrow
                }
            }
        }
    }

    Item {
        x: 18
        y: 260
        width: 600
        height: width

        CircularGauge {
            id: accelerometer
            x: (parent.width - width) / 2
            //y: (parent.height - height) / 2
            width: parent.width * 0.9
            height: width

            maximumValue: valueSource.mphDisplay ? 140 : 220
            value: valueSource.kph * valueSource.speedScaling

            style: DashboardGaugeStyle {}
        }
    }

    Item {
        x: 1302
        y: 260
        width: 600
        height: width

        CircularGauge {
            id: tachometer
            x: (parent.width - width) / 2
            width: parent.width * 0.9
            height: width

            maximumValue: 8
            value: valueSource.rpm

            style: TachometerStyle {}
        }

        CircularGauge {
            id: fuelGauge
            value: valueSource.fuel
            maximumValue: 1
            y: parent.width * 0.85
            width: parent.width * 0.45
            height: parent.height * 0.25

            style: IconGaugeStyle {
                id: fuelGaugeStyle

                icon: "./images/fuel-icon.png"
                minWarningColor: Qt.rgba(0.5, 0, 0, 1)

                tickmarkLabel: Text {
                    color: "white"
                    visible: styleData.value === 0 || styleData.value === 1
                    font.pixelSize: fuelGaugeStyle.toPixels(0.225)
                    text: styleData.value === 0 ? "E" : (styleData.value === 1 ? "F" : "")
                }
            }
        }

	CircularGauge {
            id: tempGauge
            value: valueSource.temperature
            maximumValue: 1
            x: parent.width * 0.55
            y: parent.width * 0.85
            width: parent.width * 0.45
            height: parent.height * 0.25

            style: IconGaugeStyle {
                id: tempGaugeStyle

                icon: "./images/temperature-icon.png"
                maxWarningColor: Qt.rgba(0.5, 0, 0, 1)

                tickmarkLabel: Text {
                    color: "white"
                    visible: styleData.value === 0 || styleData.value === 1
                    font.pixelSize: tempGaugeStyle.toPixels(0.225)
                    text: styleData.value === 0 ? "C" : (styleData.value === 1 ? "H" : "")
                }
            }
        }
    }

    Rectangle {
        id: frame
        x: 640
        y: 180
        width: 640
        height: 720

        color: "black"
        border.width: 4
        border.color: "grey"

        Image {
            source: './images/Utility_Logo_Grey-01.svg'
            x: (parent.width - width) / 2
            y: (parent.height - height) / 2
            width: parent.width / 2
            height: width
        }
    }

    Image {
        source: './images/agl_title_793x211.png'
        x: (parent.width - width) / 2
        y: 940
        width: 376
        height: 100
    }
}