/****************************************************************************
 *
 * (c) 2009-2019 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 * @file
 *   @author Gus Grubba <gus@auterion.com>
 */


import QtQuick                  2.11
import QtQuick.Controls         2.4
import QtQuick.Layouts          1.11
import QtQuick.Dialogs          1.3

import QGroundControl                       1.0
import QGroundControl.Controls              1.0
import QGroundControl.MultiVehicleManager   1.0
import QGroundControl.ScreenTools           1.0
import QGroundControl.Palette               1.0

//-------------------------------------------------------------------------
//-- Mode Indicator
Item {
    anchors.top:                    parent.top
    anchors.bottom:                 parent.bottom
    width:                          selectorRow.width

    Row {
        id:                         selectorRow
        spacing:                    ScreenTools.defaultFontPixelWidth
        anchors.verticalCenter:     parent.verticalCenter
        QGCLabel {
            id:                     flightModeSelector
            text:                   activeVehicle ? activeVehicle.flightMode : qsTr("N/A")
            color:                  qgcPal.text
            font.pointSize:         ScreenTools.defaultFontPointSize
            anchors.verticalCenter:     parent.verticalCenter
        }
        QGCColoredImage {
            anchors.verticalCenter: parent.verticalCenter
            height:                 ScreenTools.defaultFontPixelHeight * 0.5
            width:                  height
            sourceSize.height:      parent.height
            fillMode:               Image.PreserveAspectFit
            source:                 "/res/DropArrow.svg"
            color:                  qgcPal.text
        }
    }
    MouseArea {
        visible:        activeVehicle && activeVehicle.flightModeSetAvailable
        anchors.fill:   parent
        onClicked:      flightModesMenu.open()
    }
    //-------------------------------------------------------------------------
    //-- Flight Modes
    Popup {
        id:                     flightModesMenu
        width:                  Math.min(mainWindow.width * 0.666, ScreenTools.defaultFontPixelWidth * 40)
        height:                 mainWindow.height * 0.5
        modal:                  true
        focus:                  true
        parent:                 Overlay.overlay
        x:                      Math.round((mainWindow.width  - width)  * 0.5)
        y:                      Math.round((mainWindow.height - height) * 0.5)
        closePolicy:            Popup.CloseOnEscape | Popup.CloseOnPressOutside
        property int selectedIndex: 0
        background: Rectangle {
            anchors.fill:       parent
            color:              qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75)
            border.color:       qgcPal.text
            radius:             ScreenTools.defaultFontPixelWidth
        }
        ColumnLayout {
            id:                 comboListCol
            spacing:            ScreenTools.defaultFontPixelHeight
            anchors.centerIn:   parent
            QGCLabel {
                text:           qsTr("Flight Modes")
                Layout.alignment:  Qt.AlignHCenter
            }
            Repeater {
                model:          activeVehicle ? activeVehicle.flightModes : [ ]
                QGCButton {
                    text:       modelData
                    Layout.minimumHeight:   ScreenTools.defaultFontPixelHeight * 3
                    Layout.minimumWidth:    ScreenTools.defaultFontPixelWidth  * 30
                    Layout.fillHeight:      true
                    Layout.fillWidth:       true
                    Layout.alignment:       Qt.AlignHCenter
                    onClicked: {
                        activeVehicle.flightMode = modelData
                        flightModesMenu.close()
                    }
                }
            }
        }
    }
}