You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
8.2 KiB
218 lines
8.2 KiB
/**************************************************************************** |
|
* |
|
* (c) 2009-2016 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 |
|
/// @brief Setup View |
|
/// @author Don Gagne <don@thegagnes.com> |
|
|
|
import QtQuick 2.3 |
|
import QtQuick.Window 2.2 |
|
import QtQuick.Controls 1.2 |
|
|
|
import QGroundControl 1.0 |
|
import QGroundControl.Palette 1.0 |
|
import QGroundControl.Controls 1.0 |
|
import QGroundControl.Controllers 1.0 |
|
import QGroundControl.ScreenTools 1.0 |
|
|
|
Rectangle { |
|
id: setupView |
|
color: qgcPal.window |
|
z: QGroundControl.zOrderTopMost |
|
|
|
ExclusiveGroup { id: setupButtonGroup } |
|
|
|
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 |
|
|
|
property int _curIndex: 0 |
|
|
|
GeoTagController { |
|
id: geoController |
|
} |
|
|
|
LogDownloadController { |
|
id: logController |
|
} |
|
|
|
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 { |
|
target: QGroundControl.settingsManager.appSettings.appFontPointSize |
|
onValueChanged: buttonColumn.reflowWidths() |
|
} |
|
|
|
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 |
|
} |
|
} |
|
|
|
QGCLabel { |
|
anchors.left: parent.left |
|
anchors.right: parent.right |
|
text: qsTr("Analyze") |
|
wrapMode: Text.WordWrap |
|
horizontalAlignment: Text.AlignHCenter |
|
visible: !ScreenTools.isShortScreen |
|
} |
|
|
|
ListModel { |
|
id: desktopModel |
|
ListElement { |
|
buttonImage: "/qmlimages/LogDownloadIcon" |
|
buttonText: qsTr("Log Download") |
|
pageSource: "LogDownloadPage.qml" |
|
} |
|
ListElement { |
|
buttonImage: "/qmlimages/GeoTagIcon" |
|
buttonText: qsTr("GeoTag Images") |
|
pageSource: "GeoTagPage.qml" |
|
} |
|
ListElement { |
|
buttonImage: "/qmlimages/MavlinkConsoleIcon" |
|
buttonText: qsTr("MAVLink Console") |
|
pageSource: "MavlinkConsolePage.qml" |
|
} |
|
ListElement { |
|
buttonImage: "/qmlimages/MAVLinkInspector" |
|
buttonText: qsTr("MAVLink Inspector") |
|
pageSource: "MAVLinkInspectorPage.qml" |
|
} |
|
} |
|
|
|
ListModel { |
|
id: mobileModel |
|
ListElement { |
|
buttonImage: "/qmlimages/LogDownloadIcon" |
|
buttonText: qsTr("Log Download") |
|
pageSource: "LogDownloadPage.qml" |
|
} |
|
ListElement { |
|
buttonImage: "/qmlimages/MavlinkConsoleIcon" |
|
buttonText: qsTr("MAVLink Console") |
|
pageSource: "MavlinkConsolePage.qml" |
|
} |
|
ListElement { |
|
buttonImage: "/qmlimages/MAVLinkInspector" |
|
buttonText: qsTr("MAVLink Inspector") |
|
pageSource: "MAVLinkInspectorPage.qml" |
|
} |
|
} |
|
|
|
Repeater { |
|
id: buttonRepeater |
|
model: ScreenTools.isMobile ? mobileModel : desktopModel |
|
Component.onCompleted: itemAt(0).checked = true |
|
SubMenuButton { |
|
id: subMenu |
|
imageResource: buttonImage |
|
setupIndicator: false |
|
exclusiveGroup: setupButtonGroup |
|
text: buttonText |
|
property var window: analyzeWidgetWindow |
|
property var loader: analyzeWidgetLoader |
|
onClicked: { |
|
_curIndex = index |
|
panelLoader.source = pageSource |
|
checked = true |
|
} |
|
Window { |
|
id: analyzeWidgetWindow |
|
width: mainWindow.width * 0.5 |
|
height: mainWindow.height * 0.5 |
|
visible: false |
|
title: buttonText |
|
Rectangle { |
|
color: qgcPal.window |
|
anchors.fill: parent |
|
Loader { |
|
id: analyzeWidgetLoader |
|
anchors.fill: parent |
|
} |
|
} |
|
onClosing: { |
|
analyzeWidgetWindow.visible = false |
|
analyzeWidgetLoader.source = "" |
|
_curIndex = index |
|
panelLoader.source = pageSource |
|
subMenu.visible = true |
|
subMenu.checked = true |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
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 |
|
} |
|
|
|
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 |
|
buttonRepeater.itemAt(_curIndex).loader.item.poped = true |
|
} |
|
} |
|
|
|
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 |
|
source: "LogDownloadPage.qml" |
|
} |
|
}
|
|
|