AnalyzeView.qml 6.04 KB
Newer Older
Don Gagne's avatar
Don Gagne committed
1 2
/****************************************************************************
 *
Gus Grubba's avatar
Gus Grubba committed
3
 * (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
Don Gagne's avatar
Don Gagne committed
4 5 6 7 8 9
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

10
import QtQuick          2.3
11
import QtQuick.Window   2.2
12
import QtQuick.Controls 1.2
Don Gagne's avatar
Don Gagne committed
13 14 15 16

import QGroundControl               1.0
import QGroundControl.Palette       1.0
import QGroundControl.Controls      1.0
17
import QGroundControl.Controllers   1.0
Don Gagne's avatar
Don Gagne committed
18 19 20
import QGroundControl.ScreenTools   1.0

Rectangle {
21
    id:     _root
Don Gagne's avatar
Don Gagne committed
22 23 24
    color:  qgcPal.window
    z:      QGroundControl.zOrderTopMost

25 26
    signal popout()

Don Gagne's avatar
Don Gagne committed
27 28
    ExclusiveGroup { id: setupButtonGroup }

29 30 31 32 33
    readonly property real  _defaultTextHeight:     ScreenTools.defaultFontPixelHeight
    readonly property real  _defaultTextWidth:      ScreenTools.defaultFontPixelWidth
    readonly property real  _horizontalMargin:      _defaultTextWidth / 2
    readonly property real  _verticalMargin:        _defaultTextHeight / 2
    readonly property real  _buttonWidth:           _defaultTextWidth * 18
Don Gagne's avatar
Don Gagne committed
34

35 36
    property int _curIndex: 0

37 38 39 40 41 42
    GeoTagController {
        id: geoController
    }

    LogDownloadController {
        id: logController
43 44
    }

Don Gagne's avatar
Don Gagne committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
    QGCFlickable {
        id:                 buttonScroll
        width:              buttonColumn.width
        anchors.topMargin:  _defaultTextHeight / 2
        anchors.top:        parent.top
        anchors.bottom:     parent.bottom
        anchors.leftMargin: _horizontalMargin
        anchors.left:       parent.left
        contentHeight:      buttonColumn.height
        flickableDirection: Flickable.VerticalFlick
        clip:               true

        Column {
            id:         buttonColumn
            width:      _maxButtonWidth
            spacing:    _defaultTextHeight / 2

            property real _maxButtonWidth: 0

            Component.onCompleted: reflowWidths()

            // I don't know why this does not work
            Connections {
68 69
                target:         QGroundControl.settingsManager.appSettings.appFontPointSize
                onValueChanged: buttonColumn.reflowWidths()
Don Gagne's avatar
Don Gagne committed
70 71 72 73 74 75 76 77 78 79 80 81
            }

            function reflowWidths() {
                buttonColumn._maxButtonWidth = 0
                for (var i = 0; i < children.length; i++) {
                    buttonColumn._maxButtonWidth = Math.max(buttonColumn._maxButtonWidth, children[i].width)
                }
                for (var j = 0; j < children.length; j++) {
                    children[j].width = buttonColumn._maxButtonWidth
                }
            }

82 83
            Repeater {
                id:                     buttonRepeater
84
                model:                  QGroundControl.corePlugin ? QGroundControl.corePlugin.analyzePages : []
85
                Component.onCompleted:  itemAt(0).checked = true
86
                SubMenuButton {
87
                    id:                 subMenu
88
                    imageResource:      modelData.icon
89 90
                    setupIndicator:     false
                    exclusiveGroup:     setupButtonGroup
91
                    text:               modelData.title
92 93 94 95
                    property var window:    analyzeWidgetWindow
                    property var loader:    analyzeWidgetLoader
                    onClicked: {
                        _curIndex = index
96
                        panelLoader.source = modelData.url
97 98 99 100
                        checked = true
                    }
                    Window {
                        id:             analyzeWidgetWindow
101 102
                        width:          ScreenTools.defaultFontPixelWidth  * 100
                        height:         ScreenTools.defaultFontPixelHeight * 40
103
                        visible:        false
104
                        title:          modelData.title
105 106 107 108 109 110 111 112 113 114 115 116
                        Rectangle {
                            color:      qgcPal.window
                            anchors.fill:  parent
                            Loader {
                                id:             analyzeWidgetLoader
                                anchors.fill:   parent
                            }
                        }
                        onClosing: {
                            analyzeWidgetWindow.visible = false
                            analyzeWidgetLoader.source = ""
                            _curIndex = index
117
                            panelLoader.source = modelData.url
118 119 120 121
                            subMenu.visible = true
                            subMenu.checked = true
                        }
                    }
122
                }
Don Gagne's avatar
Don Gagne committed
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
            }
        }
    }

    Rectangle {
        id:                     divider
        anchors.topMargin:      _verticalMargin
        anchors.bottomMargin:   _verticalMargin
        anchors.leftMargin:     _horizontalMargin
        anchors.left:           buttonScroll.right
        anchors.top:            parent.top
        anchors.bottom:         parent.bottom
        width:                  1
        color:                  qgcPal.windowShade
    }

139 140 141 142 143 144 145 146
    Connections {
        target:                 panelLoader.item
        onPopout: {
            buttonRepeater.itemAt(_curIndex).window.visible = true
            var source = panelLoader.source
            panelLoader.source = ""
            buttonRepeater.itemAt(_curIndex).loader.source = source
            buttonRepeater.itemAt(_curIndex).visible = false
147 148
            buttonRepeater.itemAt(_curIndex).loader.item.popped = true
            _root.popout()
149 150 151
        }
    }

Don Gagne's avatar
Don Gagne committed
152 153 154 155 156 157 158 159 160 161
    Loader {
        id:                     panelLoader
        anchors.topMargin:      _verticalMargin
        anchors.bottomMargin:   _verticalMargin
        anchors.leftMargin:     _horizontalMargin
        anchors.rightMargin:    _horizontalMargin
        anchors.left:           divider.right
        anchors.right:          parent.right
        anchors.top:            parent.top
        anchors.bottom:         parent.bottom
162
        source:                 "LogDownloadPage.qml"
Don Gagne's avatar
Don Gagne committed
163 164
    }
}