7 changed files with 508 additions and 349 deletions
@ -1,217 +1,356 @@
@@ -1,217 +1,356 @@
|
||||
#include <QApplication> |
||||
#include <QDir> |
||||
#include <QShowEvent> |
||||
|
||||
#include <QDebug> |
||||
#include "UASManager.h" |
||||
|
||||
#ifdef Q_OS_MAC |
||||
#include <QWebFrame> |
||||
#include <QWebPage> |
||||
#include "QGCWebPage.h" |
||||
#endif |
||||
|
||||
#include "ui_QGCGoogleEarthView.h" |
||||
#include "QGCGoogleEarthView.h" |
||||
|
||||
QGCGoogleEarthView::QGCGoogleEarthView(QWidget *parent) : |
||||
QWidget(parent), |
||||
updateTimer(new QTimer(this)), |
||||
refreshRateMs(200), |
||||
mav(NULL), |
||||
followCamera(true), |
||||
trailEnabled(true), |
||||
webViewInitialized(false), |
||||
#if (defined Q_OS_MAC) |
||||
webViewMac(new QWebView(this)), |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
webViewWin(new QGCWebAxWidget(this)), |
||||
#endif |
||||
#if (defined _MSC_VER) |
||||
ui(new Ui::QGCGoogleEarthView) |
||||
#else |
||||
ui(new Ui::QGCGoogleEarthView) |
||||
#endif |
||||
{ |
||||
#ifdef _MSC_VER |
||||
// Create layout and attach webViewWin
|
||||
#else |
||||
#endif |
||||
|
||||
ui->setupUi(this); |
||||
#if (defined Q_OS_MAC) |
||||
ui->webViewLayout->addWidget(webViewMac); |
||||
#endif |
||||
|
||||
#ifdef _MSC_VER |
||||
ui->webViewLayout->addWidget(webViewWin); |
||||
#endif |
||||
|
||||
#if ((defined Q_OS_MAC) | (defined _MSC_VER)) |
||||
connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setActiveUAS(UASInterface*))); |
||||
connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateState())); |
||||
updateTimer->start(refreshRateMs); |
||||
#endif |
||||
|
||||
// Follow checkbox
|
||||
ui->followAirplaneCheckbox->setChecked(followCamera); |
||||
connect(ui->followAirplaneCheckbox, SIGNAL(toggled(bool)), this, SLOT(follow(bool))); |
||||
|
||||
// Trail checkbox
|
||||
ui->trailCheckbox->setChecked(trailEnabled); |
||||
connect(ui->trailCheckbox, SIGNAL(toggled(bool)), this, SLOT(showTrail(bool))); |
||||
|
||||
// Get list of available 3D models
|
||||
|
||||
// Load HTML file
|
||||
#ifdef _MSC_VER |
||||
webViewWin->dynamicCall("GoHome()"); |
||||
webViewWin->dynamicCall("Navigate(const QString&)", QApplication::applicationDirPath() + "/earth.html"); |
||||
#endif |
||||
|
||||
// Parse for model links
|
||||
|
||||
// Populate model list
|
||||
} |
||||
|
||||
QGCGoogleEarthView::~QGCGoogleEarthView() |
||||
{ |
||||
delete ui; |
||||
} |
||||
|
||||
void QGCGoogleEarthView::setActiveUAS(UASInterface* uas) |
||||
{ |
||||
mav = uas; |
||||
} |
||||
|
||||
void QGCGoogleEarthView::showTrail(bool state) |
||||
{ |
||||
|
||||
} |
||||
|
||||
void QGCGoogleEarthView::showWaypoints(bool state) |
||||
{ |
||||
|
||||
} |
||||
|
||||
void QGCGoogleEarthView::follow(bool follow) |
||||
{ |
||||
followCamera = follow; |
||||
} |
||||
|
||||
void QGCGoogleEarthView::showEvent(QShowEvent* event) |
||||
{ |
||||
// React only to internal (pre-display)
|
||||
// events
|
||||
if (!event->spontaneous()) |
||||
{ |
||||
if (event->type() == QEvent::Hide) |
||||
{ |
||||
// Disable widget
|
||||
updateTimer->stop(); |
||||
} |
||||
else if (event->type() == QEvent::Show) |
||||
{ |
||||
// Enable widget, initialize on first run
|
||||
if (!webViewInitialized) |
||||
{ |
||||
#if (defined Q_OS_MAC) |
||||
webViewMac->setPage(new QGCWebPage(webViewMac)); |
||||
webViewMac->settings()->setAttribute(QWebSettings::PluginsEnabled, true); |
||||
webViewMac->load(QUrl("earth.html")); |
||||
#endif |
||||
|
||||
#ifdef _MSC_VER |
||||
webViewWin->dynamicCall("GoHome()"); |
||||
webViewWin->dynamicCall("Navigate(const QString&)", "http://pixhawk.ethz.ch"); |
||||
#endif |
||||
webViewInitialized = true; |
||||
} |
||||
} |
||||
updateTimer->start(); |
||||
} |
||||
} |
||||
|
||||
void QGCGoogleEarthView::updateState() |
||||
{ |
||||
if (isVisible()) |
||||
{ |
||||
#ifdef Q_OS_MAC |
||||
if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool()) |
||||
{ |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
// if (webViewMacWin->dynamicCall("Navigate(const QString&)","isInitialized();").toBool())
|
||||
{ |
||||
#endif |
||||
static bool initialized = false; |
||||
if (!initialized) |
||||
{ |
||||
#ifdef Q_OS_MAC |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript("setGCSHome(22.679833,8.549444, 470);"); |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
//webViewMac->page()->currentFrame()->evaluateJavaScript("setGCSHome(22.679833,8.549444, 470);");
|
||||
#endif |
||||
initialized = true; |
||||
} |
||||
int uasId = 0; |
||||
double lat = 22.679833; |
||||
double lon = 8.549444; |
||||
double alt = 470.0; |
||||
|
||||
float roll = 0.0f; |
||||
float pitch = 0.0f; |
||||
float yaw = 0.0f; |
||||
|
||||
if (mav) |
||||
{ |
||||
uasId = mav->getUASID(); |
||||
lat = mav->getLatitude(); |
||||
lon = mav->getLongitude(); |
||||
alt = mav->getAltitude(); |
||||
roll = mav->getRoll(); |
||||
pitch = mav->getPitch(); |
||||
yaw = mav->getYaw(); |
||||
} |
||||
#ifdef Q_OS_MAC |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript(QString("setAircraftPositionAttitude(%1, %2, %3, %4, %6, %7, %8);") |
||||
.arg(uasId) |
||||
.arg(lat) |
||||
.arg(lon) |
||||
.arg(alt+500) |
||||
.arg(roll) |
||||
.arg(pitch) |
||||
.arg(yaw)); |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
|
||||
#endif |
||||
|
||||
if (followCamera) |
||||
{ |
||||
#ifdef Q_OS_MAC |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript(QString("updateFollowAircraft()")); |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
#endif |
||||
} |
||||
#if (defined Q_OS_MAC) || (defined _MSC_VER) |
||||
} |
||||
#endif |
||||
} |
||||
} |
||||
|
||||
|
||||
void QGCGoogleEarthView::changeEvent(QEvent *e) |
||||
{ |
||||
QWidget::changeEvent(e); |
||||
switch (e->type()) { |
||||
case QEvent::LanguageChange: |
||||
ui->retranslateUi(this); |
||||
break; |
||||
default: |
||||
break; |
||||
} |
||||
} |
||||
#include <QApplication> |
||||
#include <QDir> |
||||
#include <QShowEvent> |
||||
#include <QSettings> |
||||
#include <QAxObject> |
||||
#include <QUuid> |
||||
|
||||
#include <QDebug> |
||||
#include <QFile> |
||||
#include <QTextStream> |
||||
#include "UASManager.h" |
||||
|
||||
#ifdef Q_OS_MAC |
||||
#include <QWebFrame> |
||||
#include <QWebPage> |
||||
#include "QGCWebPage.h" |
||||
#endif |
||||
|
||||
#include "ui_QGCGoogleEarthView.h" |
||||
#include "QGCGoogleEarthView.h" |
||||
|
||||
#define QGCGOOGLEEARTHVIEWSETTINGS QString("GoogleEarthViewSettings_") |
||||
|
||||
QGCGoogleEarthView::QGCGoogleEarthView(QWidget *parent) : |
||||
QWidget(parent), |
||||
updateTimer(new QTimer(this)), |
||||
refreshRateMs(80), |
||||
mav(NULL), |
||||
followCamera(true), |
||||
trailEnabled(true), |
||||
webViewInitialized(false), |
||||
gEarthInitialized(false), |
||||
#if (defined Q_OS_MAC) |
||||
webViewMac(new QWebView(this)), |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
webViewWin(new QGCWebAxWidget(this)), |
||||
#endif |
||||
#if (defined _MSC_VER) |
||||
ui(new Ui::QGCGoogleEarthView) |
||||
#else |
||||
ui(new Ui::QGCGoogleEarthView) |
||||
#endif |
||||
{ |
||||
#ifdef _MSC_VER |
||||
// Create layout and attach webViewWin
|
||||
|
||||
/*
|
||||
QFile file("doc.html"); |
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) |
||||
qDebug() << __FILE__ << __LINE__ << "Could not open log file"; |
||||
|
||||
QTextStream out(&file); |
||||
out << webViewWin->generateDocumentation(); |
||||
out.flush(); |
||||
file.flush(); |
||||
file.close();*/ |
||||
|
||||
|
||||
#else |
||||
#endif |
||||
|
||||
// Load settings
|
||||
QSettings settings; |
||||
followCamera = settings.value(QGCGOOGLEEARTHVIEWSETTINGS + "follow", followCamera).toBool(); |
||||
trailEnabled = settings.value(QGCGOOGLEEARTHVIEWSETTINGS + "trail", trailEnabled).toBool(); |
||||
|
||||
ui->setupUi(this); |
||||
#if (defined Q_OS_MAC) |
||||
ui->webViewLayout->addWidget(webViewMac); |
||||
connect(webViewMac, SIGNAL(loadFinished(bool)), this, SLOT(initializeGoogleEarth(bool))); |
||||
#endif |
||||
|
||||
#ifdef _MSC_VER |
||||
ui->webViewLayout->addWidget(webViewWin); |
||||
#endif |
||||
|
||||
connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setActiveUAS(UASInterface*))); |
||||
connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateState())); |
||||
|
||||
// Follow checkbox
|
||||
ui->followAirplaneCheckbox->setChecked(followCamera); |
||||
connect(ui->followAirplaneCheckbox, SIGNAL(toggled(bool)), this, SLOT(follow(bool))); |
||||
|
||||
// Trail checkbox
|
||||
ui->trailCheckbox->setChecked(trailEnabled); |
||||
connect(ui->trailCheckbox, SIGNAL(toggled(bool)), this, SLOT(showTrail(bool))); |
||||
|
||||
// Go home
|
||||
connect(ui->goHomeButton, SIGNAL(clicked()), this, SLOT(goHome())); |
||||
} |
||||
|
||||
QGCGoogleEarthView::~QGCGoogleEarthView() |
||||
{ |
||||
QSettings settings; |
||||
settings.setValue(QGCGOOGLEEARTHVIEWSETTINGS + "follow", followCamera); |
||||
settings.setValue(QGCGOOGLEEARTHVIEWSETTINGS + "trail", trailEnabled); |
||||
settings.sync(); |
||||
delete ui; |
||||
} |
||||
|
||||
void QGCGoogleEarthView::addUAS(UASInterface* uas) |
||||
{ |
||||
#ifdef Q_OS_MAC |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript(QString("createAircraft(%1, %2, %3);").arg(uas->getUASID()).arg(uas->getSystemType()).arg(uas->getColor().name())); |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
//if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
|
||||
#endif |
||||
|
||||
// Automatically receive further position updates
|
||||
connect(uas, SIGNAL(globalPositionChanged(UASInterface*,double,double,double,quint64)), this, SLOT(updateGlobalPosition(UASInterface*,double,double,double,quint64))); |
||||
} |
||||
|
||||
void QGCGoogleEarthView::setActiveUAS(UASInterface* uas) |
||||
{ |
||||
if (uas) |
||||
{ |
||||
mav = uas; |
||||
#ifdef Q_OS_MAC |
||||
if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool()) |
||||
{ |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript(QString("setCurrAircraft(%1);").arg(uas->getUASID())); |
||||
} |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
//if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
|
||||
#endif |
||||
} |
||||
} |
||||
|
||||
void QGCGoogleEarthView::updateGlobalPosition(UASInterface* uas, double lat, double lon, double alt, quint64 usec) |
||||
{ |
||||
Q_UNUSED(usec); |
||||
#ifdef Q_OS_MAC |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript(QString("addTrailPosition(%1, %2, %3, %4);").arg(uas->getUASID()).arg(lat, 0, 'f', 15).arg(lon, 0, 'f', 15).arg(alt, 0, 'f', 15)); |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
//if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
|
||||
#endif |
||||
} |
||||
|
||||
void QGCGoogleEarthView::showTrail(bool state) |
||||
{ |
||||
ui->trailCheckbox->setChecked(state); |
||||
} |
||||
|
||||
void QGCGoogleEarthView::showWaypoints(bool state) |
||||
{ |
||||
|
||||
} |
||||
|
||||
void QGCGoogleEarthView::follow(bool follow) |
||||
{ |
||||
ui->followAirplaneCheckbox->setChecked(follow); |
||||
followCamera = follow; |
||||
} |
||||
|
||||
void QGCGoogleEarthView::goHome() |
||||
{ |
||||
// Disable follow and update
|
||||
follow(false); |
||||
updateState(); |
||||
// Go to home location
|
||||
#ifdef Q_OS_MAC |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript("goHome();"); |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
webViewWin->dynamicCall("InvokeScript(\"goHome\");"); |
||||
#endif |
||||
} |
||||
|
||||
void QGCGoogleEarthView::setHome(double lat, double lon, double alt) |
||||
{ |
||||
#ifdef Q_OS_MAC |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript(QString("setGCSHome(%1,%2,%3);").arg(lat, 0, 'f', 15).arg(lon, 0, 'f', 15).arg(alt, 0, 'f', 15)); |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
webViewWin->dynamicCall((QString("InvokeScript(\"setGCSHome\", %1, %2, %3)").arg(lat, 0, 'f', 15).arg(lon, 0, 'f', 15).arg(alt, 0, 'f', 15)).toStdString().c_str()); |
||||
#endif |
||||
} |
||||
|
||||
void QGCGoogleEarthView::showEvent(QShowEvent* event) |
||||
{ |
||||
// React only to internal (pre-display)
|
||||
// events
|
||||
if (!event->spontaneous()) |
||||
{ |
||||
if (event->type() == QEvent::Hide) |
||||
{ |
||||
// Disable widget
|
||||
updateTimer->stop(); |
||||
qDebug() << "STOPPED GOOGLE EARTH UPDATES"; |
||||
} |
||||
else if (event->type() == QEvent::Show) |
||||
{ |
||||
// Enable widget, initialize on first run
|
||||
if (!webViewInitialized) |
||||
{ |
||||
#if (defined Q_OS_MAC) |
||||
webViewMac->setPage(new QGCWebPage(webViewMac)); |
||||
webViewMac->settings()->setAttribute(QWebSettings::PluginsEnabled, true); |
||||
webViewMac->load(QUrl("earth.html")); |
||||
#endif |
||||
|
||||
#ifdef _MSC_VER |
||||
//webViewWin->dynamicCall("GoHome()");
|
||||
webViewWin->dynamicCall("Navigate(const QString&)", QApplication::applicationDirPath() + "/earth.html"); |
||||
/*
|
||||
|
||||
Sleep(4000); |
||||
|
||||
|
||||
QAxObject* doc = webViewWin->querySubObject("Document()"); |
||||
IUnknown* winDoc = NULL; |
||||
doc->queryInterface(QUuid("{25336920-03F9-11CF-8FD0-00AA00686F13}"), (void**)(&winDoc)); |
||||
//if (winDoc)
|
||||
{ |
||||
doc = new QAxObject(winDoc, webViewWin); |
||||
} |
||||
|
||||
QFile file("ie-doc.html"); |
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) |
||||
qDebug() << __FILE__ << __LINE__ << "Could not open log file"; |
||||
|
||||
QTextStream out(&file); |
||||
out << doc->generateDocumentation(); |
||||
out.flush(); |
||||
file.flush(); |
||||
file.close(); |
||||
while(1); |
||||
*/ |
||||
|
||||
#endif |
||||
|
||||
webViewInitialized = true; |
||||
// Reloading the webpage, this resets Google Earth
|
||||
gEarthInitialized = false; |
||||
|
||||
QTimer::singleShot(1000, this, SLOT(initializeGoogleEarth())); |
||||
updateTimer->start(refreshRateMs); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
void QGCGoogleEarthView::initializeGoogleEarth() |
||||
{ |
||||
if (!gEarthInitialized) |
||||
{ |
||||
#ifdef Q_OS_MAC |
||||
if (!webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool()) |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
if (!webViewWin->dynamicCall("InvokeScript(const QString&)", QString("isInitialized")).toBool()) |
||||
#endif |
||||
{ |
||||
QTimer::singleShot(200, this, SLOT(initializeGoogleEarth())); |
||||
} |
||||
else |
||||
{ |
||||
// Set home location
|
||||
setHome(47.3769, 8.549444, 500); |
||||
|
||||
// Move to home location
|
||||
goHome(); |
||||
|
||||
// Set current UAS
|
||||
setActiveUAS(mav); |
||||
|
||||
// Add all MAVs
|
||||
QList<UASInterface*> mavs = UASManager::instance()->getUASList(); |
||||
foreach (UASInterface* mav, mavs) |
||||
{ |
||||
addUAS(mav); |
||||
} |
||||
|
||||
// Add any further MAV automatically
|
||||
connect(UASManager::instance(), SIGNAL(UASCreated(UASInterface*)), this, SLOT(addUAS(UASInterface*))); |
||||
|
||||
gEarthInitialized = true; |
||||
} |
||||
} |
||||
} |
||||
|
||||
void QGCGoogleEarthView::updateState() |
||||
{ |
||||
if (gEarthInitialized) |
||||
{ |
||||
int uasId = 0; |
||||
double lat = 47.3769; |
||||
double lon = 8.549444; |
||||
double alt = 470.0; |
||||
|
||||
float roll = 0.0f; |
||||
float pitch = 0.0f; |
||||
float yaw = 0.0f; |
||||
|
||||
// Update all MAVs
|
||||
QList<UASInterface*> mavs = UASManager::instance()->getUASList(); |
||||
foreach (UASInterface* mav, mavs) |
||||
{ |
||||
uasId = mav->getUASID(); |
||||
lat = mav->getLatitude(); |
||||
lon = mav->getLongitude(); |
||||
alt = mav->getAltitude(); |
||||
roll = mav->getRoll(); |
||||
pitch = mav->getPitch(); |
||||
yaw = mav->getYaw(); |
||||
|
||||
#ifdef Q_OS_MAC |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript(QString("setAircraftPositionAttitude(%1, %2, %3, %4, %6, %7, %8);") |
||||
.arg(uasId) |
||||
.arg(lat) |
||||
.arg(lon) |
||||
.arg(alt+500) |
||||
.arg(roll) |
||||
.arg(pitch) |
||||
.arg(yaw)); |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
webViewWin->dynamicCall((QString("InvokeScript(\"setAircraftPositionAttitude\", %1, %2, %3, %4, %6, %7, %8);") |
||||
.arg(uasId) |
||||
.arg(lat) |
||||
.arg(lon) |
||||
.arg(alt+500) |
||||
.arg(roll) |
||||
.arg(pitch) |
||||
.arg(yaw)).toStdString().c_str()); |
||||
#endif |
||||
} |
||||
|
||||
if (followCamera) |
||||
{ |
||||
#ifdef Q_OS_MAC |
||||
webViewMac->page()->currentFrame()->evaluateJavaScript(QString("updateFollowAircraft()")); |
||||
#endif |
||||
#ifdef _MSC_VER |
||||
webViewWin->dynamicCall("InvokeScript(\"updateFollowAircraft\");"); |
||||
#endif |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
void QGCGoogleEarthView::changeEvent(QEvent *e) |
||||
{ |
||||
QWidget::changeEvent(e); |
||||
switch (e->type()) { |
||||
case QEvent::LanguageChange: |
||||
ui->retranslateUi(this); |
||||
break; |
||||
default: |
||||
break; |
||||
} |
||||
} |
||||
|
@ -1,86 +1,86 @@
@@ -1,86 +1,86 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>QGCUnconnectedInfoWidget</class> |
||||
<widget class="QWidget" name="QGCUnconnectedInfoWidget"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>400</width> |
||||
<height>300</height> |
||||
</rect> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>Form</string> |
||||
</property> |
||||
<layout class="QGridLayout" name="gridLayout"> |
||||
<item row="0" column="0" colspan="3"> |
||||
<widget class="QTextEdit" name="textEdit"> |
||||
<property name="verticalScrollBarPolicy"> |
||||
<enum>Qt::ScrollBarAlwaysOff</enum> |
||||
</property> |
||||
<property name="horizontalScrollBarPolicy"> |
||||
<enum>Qt::ScrollBarAlwaysOff</enum> |
||||
</property> |
||||
<property name="autoFormatting"> |
||||
<set>QTextEdit::AutoAll</set> |
||||
</property> |
||||
<property name="undoRedoEnabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
<property name="html"> |
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> |
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css"> |
||||
p, li { white-space: pre-wrap; } |
||||
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> |
||||
<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> |
||||
<tr> |
||||
<td style="border: none;"> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:12pt; font-weight:600;">Unmanned System List</span></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:6pt; font-weight:600;"></p> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; font-weight:600;">No Systems are connected yet.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> Please either connect a link or use the simulation function to see QGroundControl in action.</span></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:9pt;"></p> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; font-style:italic;">Click on the simulation button below to simulate a micro air vehicle or on the connect link button to connect a serial port link. A UDP link is already open for connections on port </span><span style=" font-family:'Ubuntu'; font-size:9pt; font-weight:600; font-style:italic;">14550</span><span style=" font-family:'Ubuntu'; font-size:9pt; font-style:italic;">.</span></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:9pt; font-style:italic;"></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:9pt; font-style:italic;"></p> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt; font-weight:600;">Communication Link Help:</span></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:9pt; font-style:italic;"></p> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt;">If you encounter communication problems on your link (e.g. no MAV is shown in the list after connecting the link), please check if you receive data on the link using the communication console. Select </span><span style=" font-family:'Ubuntu'; font-size:9pt; font-weight:600;">Tools -&gt; Communication Console</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> to enable it. The console should show incoming traffic and some used bandwidth (e.g. 1.43 kB/s on the indicator).</span></p></td></tr></table></body></html></string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="0"> |
||||
<spacer name="horizontalSpacer"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Horizontal</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>40</width> |
||||
<height>20</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
<item row="1" column="1"> |
||||
<widget class="QPushButton" name="simulationButton"> |
||||
<property name="text"> |
||||
<string>Simulate MAV</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="2"> |
||||
<widget class="QPushButton" name="connectButton"> |
||||
<property name="text"> |
||||
<string>Connect Link</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
<resources/> |
||||
<connections/> |
||||
</ui> |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>QGCUnconnectedInfoWidget</class> |
||||
<widget class="QWidget" name="QGCUnconnectedInfoWidget"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>400</width> |
||||
<height>300</height> |
||||
</rect> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>Form</string> |
||||
</property> |
||||
<layout class="QGridLayout" name="gridLayout"> |
||||
<item row="0" column="0" colspan="3"> |
||||
<widget class="QTextEdit" name="textEdit"> |
||||
<property name="verticalScrollBarPolicy"> |
||||
<enum>Qt::ScrollBarAlwaysOff</enum> |
||||
</property> |
||||
<property name="horizontalScrollBarPolicy"> |
||||
<enum>Qt::ScrollBarAlwaysOff</enum> |
||||
</property> |
||||
<property name="autoFormatting"> |
||||
<set>QTextEdit::AutoAll</set> |
||||
</property> |
||||
<property name="undoRedoEnabled"> |
||||
<bool>false</bool> |
||||
</property> |
||||
<property name="readOnly"> |
||||
<bool>true</bool> |
||||
</property> |
||||
<property name="html"> |
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> |
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css"> |
||||
p, li { white-space: pre-wrap; } |
||||
</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> |
||||
<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> |
||||
<tr> |
||||
<td style="border: none;"> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14pt; font-weight:600;">Unmanned System List</span></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:6pt; font-weight:600;"></p> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt; font-weight:600;">No Systems are connected yet.</span><span style=" font-family:'Ubuntu'; font-size:11pt;"> Please either connect a link or use the simulation function to see QGroundControl in action.</span></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;"></p> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt; font-style:italic;">Click on the simulation button below to simulate a micro air vehicle or on the connect link button to connect a serial port link. A UDP link is already open for connections on port </span><span style=" font-family:'Ubuntu'; font-size:11pt; font-weight:600; font-style:italic;">14550</span><span style=" font-family:'Ubuntu'; font-size:11pt; font-style:italic;">.</span></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; font-style:italic;"></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; font-style:italic;"></p> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt; font-weight:600;">Communication Link Help:</span></p> |
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; font-style:italic;"></p> |
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">If you encounter communication problems on your link (e.g. no MAV is shown in the list after connecting the link), please check if you receive data on the link using the communication console. Select </span><span style=" font-family:'Ubuntu'; font-size:11pt; font-weight:600;">Tools -&gt; Communication Console</span><span style=" font-family:'Ubuntu'; font-size:11pt;"> to enable it. The console should show incoming traffic and some used bandwidth (e.g. 1.43 kB/s on the indicator).</span></p></td></tr></table></body></html></string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="0"> |
||||
<spacer name="horizontalSpacer"> |
||||
<property name="orientation"> |
||||
<enum>Qt::Horizontal</enum> |
||||
</property> |
||||
<property name="sizeHint" stdset="0"> |
||||
<size> |
||||
<width>40</width> |
||||
<height>20</height> |
||||
</size> |
||||
</property> |
||||
</spacer> |
||||
</item> |
||||
<item row="1" column="1"> |
||||
<widget class="QPushButton" name="simulationButton"> |
||||
<property name="text"> |
||||
<string>Simulate MAV</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
<item row="1" column="2"> |
||||
<widget class="QPushButton" name="connectButton"> |
||||
<property name="text"> |
||||
<string>Connect Link</string> |
||||
</property> |
||||
</widget> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
<resources/> |
||||
<connections/> |
||||
</ui> |
||||
|
Loading…
Reference in new issue