Commit a0680746 authored by Don Gagne's avatar Don Gagne

Merge pull request #2024 from DonLakeFlyer/UIChanges

More UI changes for tablet
parents cb05a3f5 9f211eca
......@@ -96,30 +96,18 @@ QGCView {
readonly property real spacerHeight: ScreenTools.defaultFontPixelHeight
QGCLabel {
id: header
width: parent.width
font.pixelSize: ScreenTools.largeFontPixelSize
text: "AIRFRAME CONFIG"
}
Item {
id: headingSpacer
anchors.top: header.bottom
height: parent.spacerHeight
width: 20
}
Item {
id: helpApplyRow
anchors.top: headingSpacer.bottom
width: parent.width
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: Math.max(helpText.contentHeight, applyButton.height)
QGCLabel {
id: helpText
width: parent.width - applyButton.width - 5
text: "Please select your airframe type. Click 'Apply and Restart' to reboot the autopilot. Please re-connect then manually."
font.pixelSize: ScreenTools.mediumFontPixelSize
wrapMode: Text.WordWrap
}
......
......@@ -42,7 +42,7 @@ QGCView {
// User visible strings
readonly property string title: "FLIGHT MODES CONFIG"
readonly property string title: "FLIGHT MODES"
property string topHelpText: "Assign Flight Modes to radio control channels and adjust the thresholds for triggering them. " +
......@@ -216,23 +216,8 @@ QGCView {
id: scrollItem
width: scroll.viewport.width
QGCLabel {
id: header
width: parent.width
font.pixelSize: ScreenTools.largeFontPixelSize
text: title
}
Item {
id: headingSpacer
anchors.top: header.bottom
height: ScreenTools.defaultFontPixelHeight
width: 20
}
Item {
id: helpApplyRow
anchors.top: headingSpacer.bottom
width: parent.width
height: Math.max(helpText.contentHeight, applyButton.height)
......@@ -242,6 +227,7 @@ QGCView {
anchors.left: parent.left
anchors.right: applyButton.left
text: topHelpText
font.pixelSize: ScreenTools.mediumFontPixelSize
wrapMode: Text.WordWrap
}
......
......@@ -115,11 +115,6 @@ QGCView {
anchors.right: parent.right
spacing: ScreenTools.defaultFontPixelHeight
QGCLabel {
text: "POWER CONFIG"
font.pixelSize: ScreenTools.largeFontPixelSize
}
QGCLabel {
text: "Battery"
font.pixelSize: ScreenTools.mediumFontPixelSize
......
......@@ -42,7 +42,7 @@ QGCView {
QGCPalette { id: qgcPal; colorGroupEnabled: panel.enabled }
readonly property string dialogTitle: "Radio Config"
readonly property string dialogTitle: "Radio"
readonly property real labelToMonitorMargin: defaultTextWidth * 3
property bool controllerCompleted: false
property bool controllerAndViewReady: false
......@@ -269,23 +269,10 @@ QGCView {
// Main view Qml starts here
QGCLabel {
id: header
font.pixelSize: ScreenTools.largeFontPixelSize
text: "RADIO CONFIG"
}
Item {
id: spacer
anchors.top: header.bottom
width: parent.width
height: 10
}
// Left side column
Column {
id: leftColumn
anchors.top: spacer.bottom
anchors.top: parent.top
anchors.left: parent.left
anchors.right: columnSpacer.left
spacing: 10
......@@ -504,7 +491,7 @@ QGCView {
// Right side column
Column {
id: rightColumn
anchors.top: spacer.bottom
anchors.top: parent.top
anchors.right: parent.right
width: defaultTextWidth * 35
spacing: 10
......
......@@ -56,13 +56,6 @@ QGCView {
Column {
anchors.fill: parent
QGCLabel {
text: "SAFETY CONFIG"
font.pixelSize: ScreenTools.largeFontPixelSize
}
Item { height: 20; width: 10 } // spacer
//-----------------------------------------------------------------
//-- Return Home Triggers
......
......@@ -278,13 +278,6 @@ QGCView {
Column {
anchors.fill: parent
QGCLabel {
text: "SENSORS CONFIG"
font.pixelSize: ScreenTools.largeFontPixelSize
}
Item { height: ScreenTools.defaultFontPixelHeight; width: 10 } // spacer
Row {
readonly property int buttonWidth: ScreenTools.defaultFontPixelWidth * 15
......
......@@ -296,8 +296,9 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting)
QSettings::setDefaultFormat(QSettings::IniFormat);
QSettings settings;
qDebug() << "Settings location" << settings.fileName() << settings.isWritable();
#ifdef UNITTEST_BUILD
qDebug() << "Settings location" << settings.fileName();
Q_ASSERT(settings.isWritable());
#endif
// The setting will delete all settings on this boot
......@@ -316,7 +317,6 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting)
// Initialize Video Streaming
initializeVideoStreaming(argc, argv);
}
QGCApplication::~QGCApplication()
......@@ -421,6 +421,8 @@ void QGCApplication::_initCommon(void)
}
qDebug() << "Saved files location" << savedFilesLocation;
settings.setValue(_savedFilesLocationKey, savedFilesLocation);
settings.sync();
}
bool QGCApplication::_initForNormalAppBoot(void)
......
......@@ -107,10 +107,11 @@ private:
}
}
qDebug() << "QGCMessageBox (unit testing)" << title << text;
#ifdef QT_DEBUG
#ifndef __mobile__
if (qgcApp()->runningUnitTests()) {
qDebug() << "QGCMessageBox (unit testing)" << title << text;
return UnitTest::_messageBox(icon, title, text, buttons, defaultButton);
} else
#endif
......
......@@ -212,6 +212,8 @@ QGCView {
width: defaultTextWidth * 25
height: parent.height
Component.onCompleted: flickableItem.flickableDirection = Flickable.VerticalFlick
Column {
Repeater {
model: controller.componentIds
......@@ -317,8 +319,8 @@ QGCView {
QGCLabel {
id: titleText
font.pixelSize: ScreenTools.largeFontPixelSize
text: "PARAMETER EDITOR"
font.pixelSize: ScreenTools.mediumFontPixelSize
text: "PARAMETERS"
}
QGCButton {
......
......@@ -38,7 +38,7 @@ QGCView {
viewPanel: panel
// User visible strings
readonly property string title: "FIRMWARE UPDATE"
readonly property string title: "FIRMWARE"
readonly property string highlightPrefix: "<font color=\"yellow\">"
readonly property string highlightSuffix: "</font>"
readonly property string welcomeText: "QGroundControl can upgrade the firmware on Pixhawk devices, 3DR Radios and PX4 Flow Smart Cameras."
......@@ -392,7 +392,7 @@ QGCView {
QGCLabel {
id: titleLabel
text: title
font.pixelSize: ScreenTools.largeFontPixelSize
font.pixelSize: ScreenTools.mediumFontPixelSize
}
ProgressBar {
......
......@@ -149,8 +149,8 @@ QGCView {
QGCLabel {
id: header
font.pixelSize: ScreenTools.largeFontPixelSize
text: "JOYSTICK CONFIG"
font.pixelSize: ScreenTools.mediumFontPixelSize
text: "JOYSTICK"
}
Item {
......
......@@ -34,29 +34,25 @@ import QGroundControl.Controls 1.0
import QGroundControl.ScreenTools 1.0
import QGroundControl.MultiVehicleManager 1.0
Rectangle {
id: topLevel
color: palette.window
z: zOrder // zOrder comes from the Loader in MainWindow.qml
Item {
z: zOrder // zOrder comes from the Loader in MainWindow.qml
QGCPalette { id: palette; colorGroupEnabled: true }
QGCPalette { id: qgcPal; colorGroupEnabled: true }
ExclusiveGroup { id: setupButtonGroup }
QGCLabel { id: _textMeasure; text: "X"; visible: false }
readonly property real _defaultTextHeight: ScreenTools.defaultFontPixelHeight
readonly property real _defaultTextWidth: ScreenTools.defaultFontPixelWidth
readonly property real _margin: _defaultTextHeight / 2
readonly property real _buttonWidth: _defaultTextWidth * 15
readonly property string _armedVehicleText: "This operation cannot be performed while vehicle is armed."
readonly property real defaultTextHeight: _textMeasure.contentHeight
readonly property real defaultTextWidth: _textMeasure.contentWidth
readonly property real buttonWidth: defaultTextWidth * 15
property string messagePanelText: "missing message panel text"
readonly property string armedVehicleText: "This operation cannot be performed while vehicle is armed."
property bool fullParameterVehicleAvailable: multiVehicleManager.parameterReadyVehicleAvailable && !multiVehicleManager.activeVehicle.missingParameters
property string _messagePanelText: "missing message panel text"
property bool _fullParameterVehicleAvailable: multiVehicleManager.parameterReadyVehicleAvailable && !multiVehicleManager.activeVehicle.missingParameters
function showSummaryPanel()
{
if (fullParameterVehicleAvailable) {
if (_fullParameterVehicleAvailable) {
panelLoader.source = "VehicleSummary.qml";
} else if (multiVehicleManager.parameterReadyVehicleAvailable) {
panelLoader.sourceComponent = missingParametersVehicleSummaryComponent
......@@ -69,7 +65,7 @@ Rectangle {
{
if (!ScreenTools.isMobile) {
if (multiVehicleManager.activeVehicleAvailable && multiVehicleManager.activeVehicle.armed) {
messagePanelText = armedVehicleText
_messagePanelText = _armedVehicleText
panelLoader.sourceComponent = messagePanelComponent
} else {
panelLoader.source = "FirmwareUpgrade.qml";
......@@ -80,7 +76,7 @@ Rectangle {
function showJoystickPanel()
{
if (multiVehicleManager.activeVehicleAvailable && multiVehicleManager.activeVehicle.armed) {
messagePanelText = armedVehicleText
_messagePanelText = _armedVehicleText
panelLoader.sourceComponent = messagePanelComponent
} else {
panelLoader.source = "JoystickConfig.qml";
......@@ -95,11 +91,11 @@ Rectangle {
function showVehicleComponentPanel(vehicleComponent)
{
if (multiVehicleManager.activeVehicle.armed) {
messagePanelText = armedVehicleText
_messagePanelText = _armedVehicleText
panelLoader.sourceComponent = messagePanelComponent
} else {
if (vehicleComponent.prerequisiteSetup != "") {
messagePanelText = vehicleComponent.prerequisiteSetup + " setup must be completed prior to " + vehicleComponent.name + " setup."
_messagePanelText = vehicleComponent.prerequisiteSetup + " setup must be completed prior to " + vehicleComponent.name + " setup."
panelLoader.sourceComponent = messagePanelComponent
} else {
panelLoader.source = vehicleComponent.setupSource
......@@ -122,20 +118,20 @@ Rectangle {
id: disconnectedVehicleSummaryComponent
Rectangle {
color: palette.windowShade
color: qgcPal.windowShade
QGCLabel {
anchors.margins: defaultTextWidth * 2
anchors.margins: _defaultTextWidth * 2
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
font.pixelSize: ScreenTools.mediumFontPixelSize
text: "Welcome to QGroundControl. " +
"QGroundControl supports any <font color=\"orange\"><a href=\"http://www.qgroundcontrol.org/mavlink/start\">mavlink</a></font> enabled vehicle. " +
"If you are using the <font color=\"orange\"><a href=\"https://pixhawk.org/choice\">PX4 Flight Stack</a></font>, you also get full support for setting up and calibrating your vehicle. "+
"Otherwise you will only get support for flying a vehicle which has been setup and calibrated using other means. " +
"Use the Connect button above to connect to your vehicle."
"QGroundControl supports any <font color=\"orange\"><a href=\"http://www.qgroundcontrol.org/mavlink/start\">mavlink</a></font> enabled vehicle. " +
"If you are using the <font color=\"orange\"><a href=\"https://pixhawk.org/choice\">PX4 Flight Stack</a></font>, you also get full support for setting up and calibrating your vehicle. "+
"Otherwise you will only get support for flying a vehicle which has been setup and calibrated using other means. " +
"Use the Connect button above to connect to your vehicle."
onLinkActivated: Qt.openUrlExternally(link)
}
......@@ -146,17 +142,17 @@ Rectangle {
id: missingParametersVehicleSummaryComponent
Rectangle {
color: palette.windowShade
color: qgcPal.windowShade
QGCLabel {
anchors.margins: defaultTextWidth * 2
anchors.margins: _defaultTextWidth * 2
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
font.pixelSize: ScreenTools.mediumFontPixelSize
text: "You are currently connected to a vehicle, but that vehicle did not return back the full parameter list. " +
"Because of this the full set of vehicle setup options are not available."
"Because of this the full set of vehicle setup options are not available."
onLinkActivated: Qt.openUrlExternally(link)
}
......@@ -168,98 +164,126 @@ Rectangle {
Item {
QGCLabel {
anchors.margins: defaultTextWidth * 2
anchors.margins: _defaultTextWidth * 2
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
font.pixelSize: ScreenTools.mediumFontPixelSize
text: messagePanelText
text: _messagePanelText
}
}
}
Flickable {
id: buttonFlickable
width: buttonWidth
height: parent.height
contentWidth: buttonWidth
contentHeight: buttonColumn.height
flickableDirection: Flickable.VerticalFlick
Column {
id: buttonColumn
width: buttonWidth
SubMenuButton {
id: summaryButton
width: buttonWidth
imageResource: "/qmlimages/VehicleSummaryIcon.png"
setupIndicator: false
exclusiveGroup: setupButtonGroup
text: "SUMMARY"
onClicked: showSummaryPanel()
}
SubMenuButton {
id: firmwareButton
width: buttonWidth
imageResource: "/qmlimages/FirmwareUpgradeIcon.png"
setupIndicator: false
exclusiveGroup: setupButtonGroup
visible: !ScreenTools.isMobile
text: "FIRMWARE"
onClicked: showFirmwarePanel()
}
SubMenuButton {
id: joystickButton
width: buttonWidth
setupIndicator: true
setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false
exclusiveGroup: setupButtonGroup
visible: fullParameterVehicleAvailable && joystickManager.joysticks.length != 0
text: "JOYSTICK"
onClicked: showJoystickPanel()
}
Repeater {
model: fullParameterVehicleAvailable ? multiVehicleManager.activeVehicle.autopilot.vehicleComponents : 0
SubMenuButton {
width: buttonWidth
imageResource: modelData.iconResource
setupIndicator: modelData.requiresSetup
setupComplete: modelData.setupComplete
exclusiveGroup: setupButtonGroup
text: modelData.name.toUpperCase()
onClicked: showVehicleComponentPanel(modelData)
}
}
SubMenuButton {
width: buttonWidth
setupIndicator: false
exclusiveGroup: setupButtonGroup
visible: multiVehicleManager.parameterReadyVehicleAvailable
text: "PARAMETERS"
Rectangle {
//anchors.margins: _defaultTextHeight * 2
anchors.fill: parent
color: qgcPal.window
opacity: 0.8
QGCLabel {
id: title
anchors.topMargin: _margin
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
horizontalAlignment: Text.AlignHCenter
font.pixelSize: ScreenTools.largeFontPixelSize
text: "Vehicle Setup"
}
onClicked: showParametersPanel()
Rectangle {
anchors.topMargin: _margin
anchors.top: title.bottom
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
color: qgcPal.windowShade
Flickable {
id: buttonFlickable
width: _buttonWidth
height: parent.height
contentWidth: _buttonWidth
contentHeight: buttonColumn.height
flickableDirection: Flickable.VerticalFlick
Column {
id: buttonColumn
width: _buttonWidth
spacing: _defaultTextHeight / 2
SubMenuButton {
id: summaryButton
width: _buttonWidth
imageResource: "/qmlimages/VehicleSummaryIcon.png"
setupIndicator: false
exclusiveGroup: setupButtonGroup
text: "SUMMARY"
onClicked: showSummaryPanel()
}
SubMenuButton {
id: firmwareButton
width: _buttonWidth
imageResource: "/qmlimages/FirmwareUpgradeIcon.png"
setupIndicator: false
exclusiveGroup: setupButtonGroup
visible: !ScreenTools.isMobile
text: "FIRMWARE"
onClicked: showFirmwarePanel()
}
SubMenuButton {
id: joystickButton
width: _buttonWidth
setupIndicator: true
setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false
exclusiveGroup: setupButtonGroup
visible: _fullParameterVehicleAvailable && joystickManager.joysticks.length != 0
text: "JOYSTICK"
onClicked: showJoystickPanel()
}
Repeater {
model: _fullParameterVehicleAvailable ? multiVehicleManager.activeVehicle.autopilot.vehicleComponents : 0
SubMenuButton {
width: _buttonWidth
imageResource: modelData.iconResource
setupIndicator: modelData.requiresSetup
setupComplete: modelData.setupComplete
exclusiveGroup: setupButtonGroup
text: modelData.name.toUpperCase()
onClicked: showVehicleComponentPanel(modelData)
}
}
SubMenuButton {
width: _buttonWidth
setupIndicator: false
exclusiveGroup: setupButtonGroup
visible: multiVehicleManager.parameterReadyVehicleAvailable
text: "PARAMETERS"
onClicked: showParametersPanel()
}
} // Column
} // Flickable
Loader {
id: panelLoader
anchors.leftMargin: _defaultTextWidth
anchors.rightMargin: _defaultTextWidth
anchors.left: buttonFlickable.right
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
}
} // Column
} // Flickable
Loader {
id: panelLoader
anchors.leftMargin: defaultTextWidth
anchors.rightMargin: defaultTextWidth
anchors.left: buttonFlickable.right
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
}
}
}
......@@ -43,16 +43,11 @@ Rectangle {
anchors.fill: parent
spacing: ScreenTools.defaultFontPixelHeight
QGCLabel {
text: "VEHICLE SUMMARY"
font.pixelSize: ScreenTools.largeFontPixelSize
}
QGCLabel {
width: parent.width
wrapMode: Text.WordWrap
color: setupComplete ? qgcPal.text : qgcPal.warningText
font.pixelSize: setupComplete ? ScreenTools.defaultFontPixelSize : ScreenTools.mediumFontPixelSize
font.pixelSize: ScreenTools.mediumFontPixelSize
text: setupComplete ?
"Below you will find a summary of the settings for your vehicle. To the left are the setup menus for each component." :
"WARNING: Your vehicle requires setup prior to flight. Please resolve the items marked in red using the menu on the left."
......
......@@ -193,6 +193,15 @@ Item {
_controller.onPlanView();
}
}
MenuSeparator { }
MenuItem {
text: "QGroundControl Settings"
onTriggered: controller.showSettings()
}
} // Menu
Component {
......
......@@ -339,3 +339,8 @@ void MainToolBarController::onToolBarMessageClosed(void)
_toolbarMessageVisible = false;
_delayedShowToolBarMessage();
}
void MainToolBarController::showSettings(void)
{
MainWindow::instance()->showSettings();
}
......@@ -57,6 +57,7 @@ public:
Q_INVOKABLE void onDisconnect(QString conf);
Q_INVOKABLE void onEnterMessageArea(int x, int y);
Q_INVOKABLE void onToolBarMessageClosed(void);
Q_INVOKABLE void showSettings(void);
Q_PROPERTY(double height MEMBER _toolbarHeight NOTIFY heightChanged)
Q_PROPERTY(QStringList configList MEMBER _linkConfigurations NOTIFY configListChanged)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment