Newer
Older
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009, 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/**
* @file
* @brief QGC Main Tool Bar
* @author Gus Grubba <mavlink@grubba.com>
*/
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QGroundControl.Controls 1.0
import QGroundControl.FactControls 1.0
import QGroundControl.Palette 1.0
import QGroundControl.MultiVehicleManager 1.0
import QGroundControl.ScreenTools 1.0
import QGroundControl.Controllers 1.0
color: opaqueBackground ? "#404040" : (isBackgroundDark ? Qt.rgba(0,0,0,0.75) : Qt.rgba(0,0,0,0.5))
property var activeVehicle: multiVehicleManager.activeVehicle
property bool isMessageImportant: activeVehicle ? !activeVehicle.messageTypeNormal && !activeVehicle.messageTypeNone : false
property bool isBackgroundDark: true
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
Dev System (Mac OS)
qml: Main Window Width: 1008
qml: Toolbar height: 51.2
qml: Default font: 12.8
qml: Font (.75): 9.600000000000001
qml: Font (.85): 10.88
qml: Font 1.5): 19.200000000000003
qml: Default Font Width: 8.328125
qml: Default Font Height: 12.8
qml: --
qml: Real Font Height: 16
qml: fontHRatio: 1
qml: --
qml: cellHeight: 38
qml: tbFontSmall: 10
qml: tbFontNormal: 12
qml: tbFontLarge: 18
qml: tbSpacing: 9.54
Nexus 9
qml: Main Window Width: 2048
qml: Toolbar height: 90.9312
qml: Default font: 38
qml: Font (.75): 28.5
qml: Font (.85): 32.3
qml: Font 1.5): 57
qml: Default Font Width: 20.0625
qml: Default Font Height: 38
qml: --
qml: Real Font Height: 38
qml: fontHRatio: 2.375
qml: --
qml: cellHeight: 68
qml: tbFontSmall: 23.75
qml: tbFontNormal: 28.5
qml: tbFontLarge: 42.75
qml: tbSpacing: 16.87552
Nexus 7
qml: Main Window Width: 1920
qml: Toolbar height: 85.248
qml: Default font: 38
qml: Font (.75): 28.5
qml: Font (.85): 32.3
qml: Font 1.5): 57
qml: Default Font Width: 20.140625
qml: Default Font Height: 38
qml: --
qml: Real Font Height: 38
qml: fontHRatio: 2.375
qml: --
qml: cellHeight: 63
qml: tbFontSmall: 23.75
qml: tbFontNormal: 28.5
qml: tbFontLarge: 42.75
qml: tbSpacing: 15.820800000000002
Nexus 4
qml: Main Window Width: 1196
qml: Toolbar height: 79.65360000000001
qml: Default font: 38
qml: Font (.75): 28.5
qml: Font (.85): 32.3
qml: Font 1.5): 57
qml: Default Font Width: 20.140625
qml: Default Font Height: 38
qml: --
qml: Real Font Height: 38
qml: fontHRatio: 2.375
qml: --
qml: cellHeight: 59
qml: tbFontSmall: 23.75
qml: tbFontNormal: 28.5
qml: tbFontLarge: 42.75
qml: tbSpacing: 9.85504
*/
readonly property real tbFontSmall: 10 * ScreenTools.fontHRatio
readonly property real tbFontNormal: 12 * ScreenTools.fontHRatio
readonly property real tbFontLarge: 18 * ScreenTools.fontHRatio
readonly property var colorGreen: "#05f068"
readonly property var colorOrange: "#f0ab06"
readonly property var colorRed: "#fc4638"
readonly property var colorGrey: "#7f7f7f"
readonly property var colorBlue: "#636efe"
readonly property var colorWhite: "#ffffff"
MainToolBarController { id: _controller }
function showToolbarMessage(message) {
toolBarMessage.text = message
toolBarMessageArea.visible = true
return (multiVehicleManager.activeVehicleAvailable && activeVehicle.heartbeatTimeout === 0 && _controller.connectionCount > 0);
Component.onCompleted: {
//-- TODO: Get this from the actual state
flyButton.checked = true
}
Connections {
target: controller
onShowFlyView: { flyButton.checked = true }
onShowPlanView: { planButton.checked = true }
onShowSetupView:{ setupButton.checked = true }
}
height: mainWindow.tbCellHeight
spacing: mainWindow.tbSpacing
anchors.verticalCenter: parent.verticalCenter
ExclusiveGroup { id: mainActionGroup }
QGCToolBarButton {
id: preferencesButton
width: mainWindow.tbButtonWidth
height: mainWindow.tbCellHeight
source: "/qmlimages/Hamburger.svg"
onClicked: {
mainWindow.showLeftMenu();
preferencesButton.checked = false;
}
}
Rectangle {
height: mainWindow.tbCellHeight
width: 1
color: Qt.rgba(1,1,1,0.45)
}
width: mainWindow.tbButtonWidth
height: mainWindow.tbCellHeight
width: mainWindow.tbButtonWidth
height: mainWindow.tbCellHeight
width: mainWindow.tbButtonWidth
height: mainWindow.tbCellHeight
Item {
visible: showMavStatus() && !connectionStatus.visible
width: (toolBar.width - viewRow.width - connectRow.width)
anchors.left: viewRow.right
anchors.verticalCenter: parent.verticalCenter
Loader {
source: multiVehicleManager.activeVehicleAvailable ? "MainToolBarIndicators.qml" : ""
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
QGCLabel {
id: connectionStatus
visible: (_controller.connectionCount > 0 && multiVehicleManager.activeVehicleAvailable && activeVehicle.heartbeatTimeout != 0)
text: "CONNECTION LOST"
font.pixelSize: tbFontLarge
font.weight: Font.DemiBold
color: colorRed
anchors.left: viewRow.right
height: mainWindow.tbCellHeight
spacing: mainWindow.tbSpacing
anchors.rightMargin: mainWindow.tbSpacing
_controller.configListChanged.connect(connectMenu.updateConnectionList);
function addMenuEntry(name) {
var label = "Add Connection"
if(name !== "")
label = name;
var mItem = connectMenu.addItem(label);
var menuSlot = function() {_controller.onConnect(name)};
mItem.triggered.connect(menuSlot);
}
function updateConnectionList() {
connectMenu.clear();
for(var i = 0; i < _controller.configList.length; i++) {
connectMenu.addMenuEntry(_controller.configList[i]);
if(_controller.configList.length > 0) {
connectMenu.addSeparator();
}
// Add "Add Connection" to the list
connectMenu.addMenuEntry("");
width: mainWindow.tbButtonWidth
height: mainWindow.tbCellHeight
visible: _controller.connectionCount === 0
source: "/qmlimages/Connect.svg"
checked: false
onClicked: {
checked = false
connectMenu.popup()
/*
console.log("Main Window Width: " + mainWindow.width)
console.log("Toolbar height: " + toolBar.height)
console.log("Default font: " + ScreenTools.defaultFontPixelSize)
console.log("Font (.75): " + ScreenTools.defaultFontPixelSize * 0.75)
console.log("Font (.85): " + ScreenTools.defaultFontPixelSize * 0.85)
console.log("Font 1.5): " + ScreenTools.defaultFontPixelSize * 1.5)
console.log("Default Font Width: " + ScreenTools.defaultFontPixelWidth)
console.log("Default Font Height: " + ScreenTools.defaultFontPixelHeight)
console.log("--")
console.log("Real Font Height: " + ScreenTools.realFontHeight)
console.log("fontHRatio: " + ScreenTools.fontHRatio)
console.log("--")
console.log("cellHeight: " + cellHeight)
console.log("tbFontSmall: " + tbFontSmall);
console.log("tbFontNormal: " + tbFontNormal);
console.log("tbFontLarge: " + tbFontLarge);
console.log("mainWindow.tbSpacing: " + tbSpacing);
*/
}
}
QGCToolBarButton {
id: disconnectButton
width: mainWindow.tbButtonWidth
height: mainWindow.tbCellHeight
visible: _controller.connectionCount === 1
source: "/qmlimages/Disconnect.svg"
checked: false
}
}
Menu {
id: disconnectMenu
Component.onCompleted: {
_controller.connectedListChanged.connect(disconnectMenu.onConnectedListChanged)
function addMenuEntry(name) {
var mItem = disconnectMenu.addItem(name);
var menuSlot = function() {_controller.onDisconnect(name)};
function onConnectedListChanged(conList) {
disconnectMenu.clear();
for(var i = 0; i < conList.length; i++) {
width: mainWindow.tbButtonWidth
height: mainWindow.tbCellHeight
visible: _controller.connectionCount > 1
source: "/qmlimages/Disconnect.svg"
checked: false
onClicked: {
checked = false
disconnectMenu.popup()
}
anchors.bottom: parent.bottom
height: toolBar.height * 0.05
width: parent.width * _controller.progressBarValue
id: toolBarMessageArea
x: toolBar.parent.width * 0.225
y: toolBar.parent.height - (ScreenTools.defaultFontPixelHeight * ScreenTools.fontHRatio * 6)
width: toolBar.parent.width * 0.55
height: ScreenTools.defaultFontPixelHeight * ScreenTools.fontHRatio * 6
color: Qt.rgba(0,0,0,0.65)
visible: false
width: toolBarMessageArea.width - toolBarMessageCloseButton.width
anchors.top: parent.top
anchors.bottom: parent.bottom
frameVisible: false
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff
QGCLabel {
id: toolBarMessage
width: toolBarMessageArea.width - toolBarMessageCloseButton.width
wrapMode: Text.WordWrap
anchors.right: parent.right
anchors.bottom: parent.bottom
_controller.onToolBarMessageClosed()