Skip to content

Commit

Permalink
Merge pull request mavlink#1778 from DonLakeFlyer/VehicleErrors
Browse files Browse the repository at this point in the history
Show vehicle errors after parameters load
  • Loading branch information
DonLakeFlyer committed Aug 17, 2015
2 parents a617e2d + f1196e1 commit 93cbdea
Show file tree
Hide file tree
Showing 8 changed files with 145 additions and 66 deletions.
15 changes: 10 additions & 5 deletions src/FactSystem/ParameterLoader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -758,20 +758,25 @@ void ParameterLoader::_checkInitialLoadComplete(void)
UASMessageHandler* msgHandler = UASMessageHandler::instance();
if (msgHandler->getErrorCountTotal()) {
QString errors;
bool firstError = true;

msgHandler->lockAccess();
foreach (UASMessage* msg, msgHandler->messages()) {
if (msg->severityIsError()) {
if (!firstError) {
errors += "\n";
}
errors += " - ";
errors += msg->getText();
errors += "\n";
firstError = false;
}
}
msgHandler->unlockAccess();

QGCMessageBox::critical("Vehicle startup errors",
QString("Errors were detected during vehicle startup:\n"
"%1"
"You should resolve these prior to flight.").arg(errors));
if (!firstError) {
QString errorMsg = QString("Errors were detected during vehicle startup. You should resolve these prior to flight.\n%1").arg(errors);
qgcApp()->showToolBarMessage(errorMsg);
}
}

// Warn of parameter load failure
Expand Down
10 changes: 10 additions & 0 deletions src/QGCApplication.cc
Original file line number Diff line number Diff line change
Expand Up @@ -772,3 +772,13 @@ MavManager* QGCApplication::getMavManager()
{
return _pMavManager;
}

void QGCApplication::showToolBarMessage(const QString& message)
{
MainWindow* mainWindow = MainWindow::instance();
if (mainWindow) {
mainWindow->getMainToolBar()->showToolBarMessage(message);
} else {
QGCMessageBox::information("", message);
}
}
3 changes: 3 additions & 0 deletions src/QGCApplication.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ class QGCApplication : public QApplication
/// MavManager accessor
MavManager* getMavManager();

/// Show a non-modal message to the user
void showToolBarMessage(const QString& message);

public slots:
/// You can connect to this slot to show an information message box from a different thread.
void informationMessageBoxOnMainThread(const QString& title, const QString& msg);
Expand Down
7 changes: 6 additions & 1 deletion src/QGCQmlWidgetHolder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ QGCQmlWidgetHolder::QGCQmlWidgetHolder(QWidget *parent) :
QWidget(parent)
{
_ui.setupUi(this);
_ui.qmlWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
setResizeMode(QQuickWidget::SizeRootObjectToView);
}

QGCQmlWidgetHolder::~QGCQmlWidgetHolder()
Expand Down Expand Up @@ -62,3 +62,8 @@ QQuickItem* QGCQmlWidgetHolder::getRootObject(void)
{
return _ui.qmlWidget->rootObject();
}

void QGCQmlWidgetHolder::setResizeMode(QQuickWidget::ResizeMode resizeMode)
{
_ui.qmlWidget->setResizeMode(resizeMode);
}
3 changes: 3 additions & 0 deletions src/QGCQmlWidgetHolder.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ class QGCQmlWidgetHolder : public QWidget
bool setSource(const QUrl& qmlUrl);

void setContextPropertyObject(const QString& name, QObject* object);

/// Sets the resize mode for the QQuickWidget container
void setResizeMode(QQuickWidget::ResizeMode resizeMode);

private:
Ui::QGCQmlWidgetHolder _ui;
Expand Down
8 changes: 8 additions & 0 deletions src/ui/toolbar/MainToolBar.cc
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ MainToolBar::MainToolBar(QWidget* parent)
SLOT(_telemetryChanged(LinkInterface*, unsigned, unsigned, unsigned, unsigned, unsigned, unsigned, unsigned)));
connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(_setActiveUAS(UASInterface*)));
connect(UASManager::instance(), SIGNAL(UASDeleted(UASInterface*)), this, SLOT(_forgetUAS(UASInterface*)));

connect(this, &MainToolBar::heightChanged, this, &MainToolBar::_heightChanged);
}

MainToolBar::~MainToolBar()
Expand Down Expand Up @@ -396,3 +398,9 @@ void MainToolBar::_setProgressBarValue(float value)
_progressBarValue = value;
emit progressBarValueChanged(value);
}

void MainToolBar::_heightChanged(double height)
{
setMinimumHeight(height);
setMaximumHeight(height);
}
37 changes: 23 additions & 14 deletions src/ui/toolbar/MainToolBar.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,27 +69,30 @@ class MainToolBar : public QGCQmlWidgetHolder
Q_INVOKABLE void onDisconnect(QString conf);
Q_INVOKABLE void onEnterMessageArea(int x, int y);

Q_PROPERTY(ViewType_t currentView MEMBER _currentView NOTIFY currentViewChanged)
Q_PROPERTY(QStringList configList MEMBER _linkConfigurations NOTIFY configListChanged)
Q_PROPERTY(int connectionCount READ connectionCount NOTIFY connectionCountChanged)
Q_PROPERTY(QStringList connectedList MEMBER _connectedList NOTIFY connectedListChanged)
Q_PROPERTY(bool showGPS MEMBER _showGPS NOTIFY showGPSChanged)
Q_PROPERTY(bool showMav MEMBER _showMav NOTIFY showMavChanged)
Q_PROPERTY(bool showMessages MEMBER _showMessages NOTIFY showMessagesChanged)
Q_PROPERTY(bool showBattery MEMBER _showBattery NOTIFY showBatteryChanged)
Q_PROPERTY(bool showRSSI MEMBER _showRSSI NOTIFY showRSSIChanged)
Q_PROPERTY(float progressBarValue MEMBER _progressBarValue NOTIFY progressBarValueChanged)
Q_PROPERTY(int remoteRSSI READ remoteRSSI NOTIFY remoteRSSIChanged)
Q_PROPERTY(int telemetryRRSSI READ telemetryRRSSI NOTIFY telemetryRRSSIChanged)
Q_PROPERTY(int telemetryLRSSI READ telemetryLRSSI NOTIFY telemetryLRSSIChanged)
Q_PROPERTY(double height MEMBER _toolbarHeight NOTIFY heightChanged)
Q_PROPERTY(ViewType_t currentView MEMBER _currentView NOTIFY currentViewChanged)
Q_PROPERTY(QStringList configList MEMBER _linkConfigurations NOTIFY configListChanged)
Q_PROPERTY(int connectionCount READ connectionCount NOTIFY connectionCountChanged)
Q_PROPERTY(QStringList connectedList MEMBER _connectedList NOTIFY connectedListChanged)
Q_PROPERTY(bool showGPS MEMBER _showGPS NOTIFY showGPSChanged)
Q_PROPERTY(bool showMav MEMBER _showMav NOTIFY showMavChanged)
Q_PROPERTY(bool showMessages MEMBER _showMessages NOTIFY showMessagesChanged)
Q_PROPERTY(bool showBattery MEMBER _showBattery NOTIFY showBatteryChanged)
Q_PROPERTY(bool showRSSI MEMBER _showRSSI NOTIFY showRSSIChanged)
Q_PROPERTY(float progressBarValue MEMBER _progressBarValue NOTIFY progressBarValueChanged)
Q_PROPERTY(int remoteRSSI READ remoteRSSI NOTIFY remoteRSSIChanged)
Q_PROPERTY(int telemetryRRSSI READ telemetryRRSSI NOTIFY telemetryRRSSIChanged)
Q_PROPERTY(int telemetryLRSSI READ telemetryLRSSI NOTIFY telemetryLRSSIChanged)

void setCurrentView (int currentView);
void viewStateChanged (const QString& key, bool value);
int remoteRSSI () { return _remoteRSSI; }
int telemetryRRSSI () { return _telemetryRRSSI; }
int telemetryLRSSI () { return _telemetryLRSSI; }
int connectionCount () { return _connectionCount; }


void showToolBarMessage(const QString& message) { emit showMessage(message); }

signals:
void connectionCountChanged (int count);
void currentViewChanged ();
Expand All @@ -104,6 +107,10 @@ class MainToolBar : public QGCQmlWidgetHolder
void remoteRSSIChanged (int value);
void telemetryRRSSIChanged (int value);
void telemetryLRSSIChanged (int value);
void heightChanged (double height);

/// Shows a non-modal message below the toolbar
void showMessage(const QString& message);

private slots:
void _forgetUAS (UASInterface* uas);
Expand All @@ -115,6 +122,7 @@ private slots:
void _setProgressBarValue (float value);
void _remoteControlRSSIChanged (uint8_t rssi);
void _telemetryChanged (LinkInterface* link, unsigned rxerrors, unsigned fixed, unsigned rssi, unsigned remrssi, unsigned txbuf, unsigned noise, unsigned remnoise);
void _heightChanged (double height);

private:
void _updateConnection (LinkInterface *disconnectedLink = NULL);
Expand All @@ -137,6 +145,7 @@ private slots:
double _remoteRSSIstore;
int _telemetryRRSSI;
int _telemetryLRSSI;
double _toolbarHeight;

UASMessageViewRollDown* _rollDownMessages;
};
Expand Down
128 changes: 82 additions & 46 deletions src/ui/toolbar/MainToolBar.qml
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,18 @@ Rectangle {

property var qgcPal: QGCPalette { id: palette; colorGroupEnabled: true }

property int cellSpacerSize: ScreenTools.isMobile ? getProportionalDimmension(6) : getProportionalDimmension(4)
property int cellHeight: getProportionalDimmension(30)
readonly property real toolBarHeight: ScreenTools.defaultFontPixelHeight * 3
property int cellSpacerSize: ScreenTools.isMobile ? getProportionalDimmension(6) : getProportionalDimmension(4)
readonly property int cellHeight: toolBarHeight * 0.75

property var colorBlue: "#1a6eaa"
property var colorGreen: "#329147"
property var colorRed: "#942324"
property var colorOrange: "#a76f26"
property var colorWhite: "#f0f0f0"
readonly property real horizontalMargins: ScreenTools.defaultFontPixelWidth / 2
readonly property real verticalMargins: ScreenTools.defaultFontPixelHeight / 4

readonly property var colorBlue: "#1a6eaa"
readonly property var colorGreen: "#329147"
readonly property var colorRed: "#942324"
readonly property var colorOrange: "#a76f26"
readonly property var colorWhite: "#f0f0f0"

property var colorOrangeText: (qgcPal.globalTheme === QGCPalette.Light) ? "#b75711" : "#ea8225"
property var colorRedText: (qgcPal.globalTheme === QGCPalette.Light) ? "#ee1112" : "#ef2526"
Expand All @@ -59,8 +63,18 @@ Rectangle {

color: qgcPal.windowShade

Connections {
target: mainToolBar

onShowMessage: {
toolBarMessage.text = message
mainToolBar.height = toolBarHeight + toolBarMessage.contentHeight + verticalMargins
toolBarMessageArea.visible = true
}
}

function getProportionalDimmension(val) {
return toolBarHolder.height * val / 40
return toolBarHeight * val / 40
}

function getMessageColor() {
Expand Down Expand Up @@ -177,24 +191,24 @@ Rectangle {
mainToolBar.onFlyViewMenu();
}
}
}
} // Menu

Row {
id: row1
height: cellHeight
anchors.left: parent.left
spacing: getProportionalDimmension(4)
anchors.verticalCenter: parent.verticalCenter
anchors.leftMargin: getProportionalDimmension(10)
id: toolRow
x: horizontalMargins
y: (toolBarHeight - cellHeight) / 2
height: cellHeight
spacing: getProportionalDimmension(4)

//---------------------------------------------------------------------
//-- Main menu for Non Mobile Devices (Chevron Buttons)
Row {
id: row11
height: cellHeight
spacing: -getProportionalDimmension(12)
anchors.verticalCenter: parent.verticalCenter
visible: !ScreenTools.isMobile
id: row11
height: cellHeight
spacing: -getProportionalDimmension(12)
anchors.top: parent.top
visible: !ScreenTools.isMobile

Connections {
target: ScreenTools
onRepaintRequested: {
Expand All @@ -213,7 +227,6 @@ Rectangle {
height: cellHeight
exclusiveGroup: mainActionGroup
text: qsTr("Setup")
anchors.verticalCenter: parent.verticalCenter
checked: (mainToolBar.currentView === MainToolBar.ViewSetup)
onClicked: {
mainToolBar.onSetupView();
Expand All @@ -227,7 +240,6 @@ Rectangle {
height: cellHeight
exclusiveGroup: mainActionGroup
text: qsTr("Plan")
anchors.verticalCenter: parent.verticalCenter
checked: (mainToolBar.currentView === MainToolBar.ViewPlan)
onClicked: {
mainToolBar.onPlanView();
Expand All @@ -241,7 +253,6 @@ Rectangle {
height: cellHeight
exclusiveGroup: mainActionGroup
text: qsTr("Fly")
anchors.verticalCenter: parent.verticalCenter
checked: (mainToolBar.currentView === MainToolBar.ViewFly)
onClicked: {
mainToolBar.onFlyView();
Expand All @@ -255,15 +266,13 @@ Rectangle {
height: cellHeight
exclusiveGroup: mainActionGroup
text: qsTr("Analyze")
anchors.verticalCenter: parent.verticalCenter
checked: (mainToolBar.currentView === MainToolBar.ViewAnalyze)
onClicked: {
mainToolBar.onAnalyzeView();
}
z: 700
}

}
} // Row

//---------------------------------------------------------------------
//-- Indicators
Expand Down Expand Up @@ -667,17 +676,17 @@ Rectangle {
color: colorRedText
}
}
}
}
} // Row
} // Row

Row {
id: row2
height: cellHeight
spacing: cellSpacerSize
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.leftMargin: getProportionalDimmension(10)
anchors.rightMargin: getProportionalDimmension(10)
id: connectRow
anchors.rightMargin: verticalMargins
anchors.right: parent.right
anchors.top: toolRow.top
anchors.verticalCenter: toolRow.verticalCenter
height: toolRow.height
spacing: cellSpacerSize

Menu {
id: connectMenu
Expand Down Expand Up @@ -712,15 +721,13 @@ Rectangle {
visible: mainToolBar.connectionCount === 0
text: qsTr("Connect")
menu: connectMenu
anchors.verticalCenter: parent.verticalCenter
}

QGCButton {
id: disconnectButton
width: getProportionalDimmension(100)
visible: mainToolBar.connectionCount === 1
text: qsTr("Disconnect")
anchors.verticalCenter: parent.verticalCenter
onClicked: {
mainToolBar.onDisconnect("");
}
Expand Down Expand Up @@ -750,18 +757,47 @@ Rectangle {
text: "Disconnect"
visible: mainToolBar.connectionCount > 1
menu: disconnectMenu
anchors.verticalCenter: parent.verticalCenter
}

}
} // Row

// Progress bar
Rectangle {
readonly property int progressBarHeight: getProportionalDimmension(3)
y: parent.height - progressBarHeight
height: progressBarHeight
width: parent.width * mainToolBar.progressBarValue
color: qgcPal.text
id: progressBar
anchors.top: toolRow.bottom
height: getProportionalDimmension(3)
width: parent.width * mainToolBar.progressBarValue
color: qgcPal.text
}
}

// Toolbar message area
Rectangle {
id: toolBarMessageArea
anchors.margins: horizontalMargins
anchors.top: progressBar.bottom
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
color: qgcPal.windowShadeDark
visible: false

QGCLabel {
id: toolBarMessage
anchors.fill: parent
wrapMode: Text.WordWrap
}

QGCButton {
id: toolBarMessageCloseButton
anchors.rightMargin: horizontalMargins
anchors.topMargin: verticalMargins
anchors.top: parent.top
anchors.right: parent.right
text: "Close Message"

onClicked: {
parent.visible = false
mainToolBar.height = toolBarHeight
}
}
}
} // Rectangle

0 comments on commit 93cbdea

Please sign in to comment.