Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
56ac4e92
Commit
56ac4e92
authored
Dec 29, 2010
by
pixhawk
Browse files
Cleaned up line indendation, validated Google Earth on Mac
parent
14609cb8
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/ui/map3D/QGCGoogleEarthView.cc
View file @
56ac4e92
...
...
@@ -34,7 +34,7 @@ QGCGoogleEarthView::QGCGoogleEarthView(QWidget *parent) :
followCamera
(
true
),
trailEnabled
(
true
),
webViewInitialized
(
false
),
jScriptInitialized
(
false
),
jScriptInitialized
(
false
),
gEarthInitialized
(
false
),
#if (defined Q_OS_MAC)
webViewMac
(
new
QWebView
(
this
)),
...
...
@@ -51,16 +51,16 @@ QGCGoogleEarthView::QGCGoogleEarthView(QWidget *parent) :
#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
();
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
...
...
@@ -108,7 +108,7 @@ QGCGoogleEarthView::~QGCGoogleEarthView()
void
QGCGoogleEarthView
::
addUAS
(
UASInterface
*
uas
)
{
// uasid, type, color (in aarrbbgg format)
//javaScript(QString("createAircraft(%1, %2, %3);").arg(uas->getUASID()).arg(uas->getSystemType()).arg(uas->getColor().name().remove(0, 1).prepend("50")));
//javaScript(QString("createAircraft(%1, %2, %3);").arg(uas->getUASID()).arg(uas->getSystemType()).arg(uas->getColor().name().remove(0, 1).prepend("50")));
javaScript
(
QString
(
"createAircraft(%1, %2, %3);"
).
arg
(
uas
->
getUASID
()).
arg
(
uas
->
getSystemType
()).
arg
(
"0"
));
// Automatically receive further position updates
connect
(
uas
,
SIGNAL
(
globalPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
updateGlobalPosition
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)));
...
...
@@ -119,16 +119,16 @@ void QGCGoogleEarthView::setActiveUAS(UASInterface* uas)
if
(
uas
)
{
mav
=
uas
;
javaScript
(
QString
(
"setCurrAircraft(%1);"
).
arg
(
uas
->
getUASID
()));
javaScript
(
QString
(
"setCurrAircraft(%1);"
).
arg
(
uas
->
getUASID
()));
}
}
void
QGCGoogleEarthView
::
updateGlobalPosition
(
UASInterface
*
uas
,
double
lat
,
double
lon
,
double
alt
,
quint64
usec
)
{
Q_UNUSED
(
usec
);
javaScript
(
QString
(
"addTrailPosition(%1, %2, %3, %4);"
).
arg
(
uas
->
getUASID
()).
arg
(
lat
,
0
,
'f'
,
15
).
arg
(
lon
,
0
,
'f'
,
15
).
arg
(
alt
,
0
,
'f'
,
15
));
javaScript
(
QString
(
"addTrailPosition(%1, %2, %3, %4);"
).
arg
(
uas
->
getUASID
()).
arg
(
lat
,
0
,
'f'
,
15
).
arg
(
lon
,
0
,
'f'
,
15
).
arg
(
alt
,
0
,
'f'
,
15
));
//qDebug() << QString("addTrailPosition(%1, %2, %3, %4);").arg(uas->getUASID()).arg(lat, 0, 'f', 15).arg(lon, 0, 'f', 15).arg(alt, 0, 'f', 15);
//qDebug() << QString("addTrailPosition(%1, %2, %3, %4);").arg(uas->getUASID()).arg(lat, 0, 'f', 15).arg(lon, 0, 'f', 15).arg(alt, 0, 'f', 15);
}
void
QGCGoogleEarthView
::
showTrail
(
bool
state
)
...
...
@@ -158,7 +158,7 @@ void QGCGoogleEarthView::goHome()
void
QGCGoogleEarthView
::
setHome
(
double
lat
,
double
lon
,
double
alt
)
{
javaScript
(
QString
(
"setGCSHome(%1,%2,%3);"
).
arg
(
lat
,
0
,
'f'
,
15
).
arg
(
lon
,
0
,
'f'
,
15
).
arg
(
alt
,
0
,
'f'
,
15
));
javaScript
(
QString
(
"setGCSHome(%1,%2,%3);"
).
arg
(
lat
,
0
,
'f'
,
15
).
arg
(
lon
,
0
,
'f'
,
15
).
arg
(
alt
,
0
,
'f'
,
15
));
}
void
QGCGoogleEarthView
::
hideEvent
(
QHideEvent
*
event
)
...
...
@@ -172,102 +172,102 @@ void QGCGoogleEarthView::showEvent(QShowEvent* event)
// events
Q_UNUSED
(
event
)
{
// Enable widget, initialize on first run
if
(
!
webViewInitialized
)
{
// 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"
));
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"
);
//webViewWin->dynamicCall("GoHome()");
webViewWin
->
dynamicCall
(
"Navigate(const QString&)"
,
QApplication
::
applicationDirPath
()
+
"/earth.html"
);
#endif
webViewInitialized
=
true
;
// Reloading the webpage, this resets Google Earth
gEarthInitialized
=
false
;
webViewInitialized
=
true
;
// Reloading the webpage, this resets Google Earth
gEarthInitialized
=
false
;
QTimer
::
singleShot
(
2000
,
this
,
SLOT
(
initializeGoogleEarth
()));
updateTimer
->
start
(
refreshRateMs
);
}
QTimer
::
singleShot
(
2000
,
this
,
SLOT
(
initializeGoogleEarth
()));
updateTimer
->
start
(
refreshRateMs
);
}
}
}
void
QGCGoogleEarthView
::
printWinException
(
int
no
,
QString
str1
,
QString
str2
,
QString
str3
)
{
qDebug
()
<<
no
<<
str1
<<
str2
<<
str3
;
qDebug
()
<<
no
<<
str1
<<
str2
<<
str3
;
}
QVariant
QGCGoogleEarthView
::
javaScript
(
QString
javaScript
)
{
#ifdef Q_OS_MAC
return
webViewMac
->
page
()
->
currentFrame
()
->
evaluateJavaScript
(
javaScript
);
return
webViewMac
->
page
()
->
currentFrame
()
->
evaluateJavaScript
(
javaScript
);
#endif
#ifdef _MSC_VER
if
(
!
jScriptInitialized
)
{
qDebug
()
<<
"TOO EARLY JAVASCRIPT CALL, ABORTING"
;
return
QVariant
(
false
);
}
else
{
QVariantList
params
;
params
.
append
(
javaScript
);
params
.
append
(
"JScript"
);
return
jScriptWin
->
dynamicCall
(
"execScript(QString, QString)"
,
params
);
}
if
(
!
jScriptInitialized
)
{
qDebug
()
<<
"TOO EARLY JAVASCRIPT CALL, ABORTING"
;
return
QVariant
(
false
);
}
else
{
QVariantList
params
;
params
.
append
(
javaScript
);
params
.
append
(
"JScript"
);
return
jScriptWin
->
dynamicCall
(
"execScript(QString, QString)"
,
params
);
}
#endif
}
void
QGCGoogleEarthView
::
initializeGoogleEarth
()
{
if
(
!
jScriptInitialized
)
{
#ifdef Q_OS_MAC
jScriptInitialized
=
true
;
if
(
!
jScriptInitialized
)
{
#ifdef Q_OS_MAC
jScriptInitialized
=
true
;
#endif
#ifdef _MSC_VER
QAxObject
*
doc
=
webViewWin
->
querySubObject
(
"Document()"
);
IDispatch
*
Disp
;
IDispatch
*
winDoc
=
NULL
;
//332C4425-26CB-11D0-B483-00C04FD90119 IHTMLDocument2
//25336920-03F9-11CF-8FD0-00AA00686F13 HTMLDocument
doc
->
queryInterface
(
QUuid
(
"{332C4425-26CB-11D0-B483-00C04FD90119}"
),
(
void
**
)(
&
winDoc
));
if
(
winDoc
)
{
// Security:
// CoInternetSetFeatureEnabled
// (FEATURE_LOCALMACHINE_LOCKDOWN, SET_FEATURE_ON_PROCESS, TRUE);
//
IHTMLDocument2
*
document
=
NULL
;
winDoc
->
QueryInterface
(
IID_IHTMLDocument2
,
(
void
**
)
&
document
);
IHTMLWindow2
*
window
=
NULL
;
document
->
get_parentWindow
(
&
window
);
jScriptWin
=
new
QAxObject
(
window
,
webViewWin
);
connect
(
jScriptWin
,
SIGNAL
(
exception
(
int
,
QString
,
QString
,
QString
)),
this
,
SLOT
(
printWinException
(
int
,
QString
,
QString
,
QString
)));
jScriptInitialized
=
true
;
}
else
{
qDebug
()
<<
"COULD NOT GET DOCUMENT OBJECT! Aborting"
;
}
#ifdef _MSC_VER
QAxObject
*
doc
=
webViewWin
->
querySubObject
(
"Document()"
);
IDispatch
*
Disp
;
IDispatch
*
winDoc
=
NULL
;
//332C4425-26CB-11D0-B483-00C04FD90119 IHTMLDocument2
//25336920-03F9-11CF-8FD0-00AA00686F13 HTMLDocument
doc
->
queryInterface
(
QUuid
(
"{332C4425-26CB-11D0-B483-00C04FD90119}"
),
(
void
**
)(
&
winDoc
));
if
(
winDoc
)
{
// Security:
// CoInternetSetFeatureEnabled
// (FEATURE_LOCALMACHINE_LOCKDOWN, SET_FEATURE_ON_PROCESS, TRUE);
//
IHTMLDocument2
*
document
=
NULL
;
winDoc
->
QueryInterface
(
IID_IHTMLDocument2
,
(
void
**
)
&
document
);
IHTMLWindow2
*
window
=
NULL
;
document
->
get_parentWindow
(
&
window
);
jScriptWin
=
new
QAxObject
(
window
,
webViewWin
);
connect
(
jScriptWin
,
SIGNAL
(
exception
(
int
,
QString
,
QString
,
QString
)),
this
,
SLOT
(
printWinException
(
int
,
QString
,
QString
,
QString
)));
jScriptInitialized
=
true
;
}
else
{
qDebug
()
<<
"COULD NOT GET DOCUMENT OBJECT! Aborting"
;
}
#endif
QTimer
::
singleShot
(
2500
,
this
,
SLOT
(
initializeGoogleEarth
()));
return
;
}
QTimer
::
singleShot
(
2500
,
this
,
SLOT
(
initializeGoogleEarth
()));
return
;
}
if
(
!
gEarthInitialized
)
{
if
(
0
==
1
)
//(!javaScript("isInitialized();").toBool())
{
QTimer
::
singleShot
(
500
,
this
,
SLOT
(
initializeGoogleEarth
()));
qDebug
()
<<
"NOT INITIALIZED, WAITING"
;
}
if
(
0
==
1
)
//(!javaScript("isInitialized();").toBool())
{
QTimer
::
singleShot
(
500
,
this
,
SLOT
(
initializeGoogleEarth
()));
qDebug
()
<<
"NOT INITIALIZED, WAITING"
;
}
else
{
// Set home location
...
...
@@ -323,13 +323,13 @@ void QGCGoogleEarthView::updateState()
yaw
=
mav
->
getYaw
();
javaScript
(
QString
(
"setAircraftPositionAttitude(%1, %2, %3, %4, %6, %7, %8);"
)
.
arg
(
uasId
)
.
arg
(
lat
)
.
arg
(
lon
)
.
arg
(
alt
+
500
)
.
arg
(
roll
)
.
arg
(
pitch
)
.
arg
(
yaw
));
.
arg
(
uasId
)
.
arg
(
lat
)
.
arg
(
lon
)
.
arg
(
alt
+
500
)
.
arg
(
roll
)
.
arg
(
pitch
)
.
arg
(
yaw
));
}
if
(
followCamera
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment