Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
7505181e
Commit
7505181e
authored
Oct 03, 2016
by
Don Gagne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
GeoTag framework
parent
abc118d0
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
625 additions
and
254 deletions
+625
-254
qgcresources.qrc
qgcresources.qrc
+2
-0
qgroundcontrol.pro
qgroundcontrol.pro
+3
-2
qgroundcontrol.qrc
qgroundcontrol.qrc
+3
-0
AnalyzePage.qml
src/AnalyzeView/AnalyzePage.qml
+70
-0
AnalyzeView.qml
src/AnalyzeView/AnalyzeView.qml
+126
-0
GeoTagController.cc
src/AnalyzeView/GeoTagController.cc
+87
-0
GeoTagController.h
src/AnalyzeView/GeoTagController.h
+97
-0
GeoTagIcon.png
src/AnalyzeView/GeoTagIcon.png
+0
-0
GeoTagPage.qml
src/AnalyzeView/GeoTagPage.qml
+103
-0
QGCApplication.cc
src/QGCApplication.cc
+2
-33
QGCApplication.h
src/QGCApplication.h
+0
-7
QGroundControl.Controls.qmldir
src/QmlControls/QGroundControl.Controls.qmldir
+1
-0
SetupViewTest.cc
src/VehicleSetup/SetupViewTest.cc
+0
-52
SetupViewTest.h
src/VehicleSetup/SetupViewTest.h
+0
-29
UnitTestList.cc
src/qgcunittest/UnitTestList.cc
+0
-4
MainWindowHybrid.qml
src/ui/MainWindowHybrid.qml
+0
-26
MainWindowInner.qml
src/ui/MainWindowInner.qml
+75
-69
MainWindowNative.qml
src/ui/MainWindowNative.qml
+0
-26
Analyze.svg
src/ui/toolbar/Images/Analyze.svg
+34
-0
MainToolBar.qml
src/ui/toolbar/MainToolBar.qml
+22
-6
No files found.
qgcresources.qrc
View file @
7505181e
...
@@ -54,6 +54,7 @@
...
@@ -54,6 +54,7 @@
<file alias="DatalinkLossLight.svg">src/AutoPilotPlugins/PX4/Images/DatalinkLossLight.svg</file>
<file alias="DatalinkLossLight.svg">src/AutoPilotPlugins/PX4/Images/DatalinkLossLight.svg</file>
<file alias="GeoFence.svg">src/AutoPilotPlugins/PX4/Images/GeoFence.svg</file>
<file alias="GeoFence.svg">src/AutoPilotPlugins/PX4/Images/GeoFence.svg</file>
<file alias="GeoFenceLight.svg">src/AutoPilotPlugins/PX4/Images/GeoFenceLight.svg</file>
<file alias="GeoFenceLight.svg">src/AutoPilotPlugins/PX4/Images/GeoFenceLight.svg</file>
<file alias="GeoTagIcon.png">src/AnalyzeView/GeoTagIcon.png</file>
<file alias="LandMode.svg">src/AutoPilotPlugins/PX4/Images/LandMode.svg</file>
<file alias="LandMode.svg">src/AutoPilotPlugins/PX4/Images/LandMode.svg</file>
<file alias="LandModeCopter.svg">src/AutoPilotPlugins/PX4/Images/LandModeCopter.svg</file>
<file alias="LandModeCopter.svg">src/AutoPilotPlugins/PX4/Images/LandModeCopter.svg</file>
<file alias="LowBattery.svg">src/AutoPilotPlugins/PX4/Images/LowBattery.svg</file>
<file alias="LowBattery.svg">src/AutoPilotPlugins/PX4/Images/LowBattery.svg</file>
...
@@ -128,6 +129,7 @@
...
@@ -128,6 +129,7 @@
<file alias="Disarmed.svg">src/ui/toolbar/Images/Disarmed.svg</file>
<file alias="Disarmed.svg">src/ui/toolbar/Images/Disarmed.svg</file>
<file alias="Disconnect.svg">src/ui/toolbar/Images/Disconnect.svg</file>
<file alias="Disconnect.svg">src/ui/toolbar/Images/Disconnect.svg</file>
<file alias="Gears.svg">src/ui/toolbar/Images/Gears.svg</file>
<file alias="Gears.svg">src/ui/toolbar/Images/Gears.svg</file>
<file alias="Analyze.svg">src/ui/toolbar/Images/Analyze.svg</file>
<file alias="Gps.svg">src/ui/toolbar/Images/Gps.svg</file>
<file alias="Gps.svg">src/ui/toolbar/Images/Gps.svg</file>
<file alias="Hamburger.svg">src/ui/toolbar/Images/Hamburger.svg</file>
<file alias="Hamburger.svg">src/ui/toolbar/Images/Hamburger.svg</file>
<file alias="Megaphone.svg">src/ui/toolbar/Images/Megaphone.svg</file>
<file alias="Megaphone.svg">src/ui/toolbar/Images/Megaphone.svg</file>
...
...
qgroundcontrol.pro
View file @
7505181e
...
@@ -212,6 +212,7 @@ INCLUDEPATH += .
...
@@ -212,6 +212,7 @@ INCLUDEPATH += .
INCLUDEPATH += \
INCLUDEPATH += \
include/ui \
include/ui \
src \
src \
src/AnalyzeView \
src/audio \
src/audio \
src/AutoPilotPlugins \
src/AutoPilotPlugins \
src/comm \
src/comm \
...
@@ -371,6 +372,7 @@ HEADERS += \
...
@@ -371,6 +372,7 @@ HEADERS += \
!MobileBuild {
!MobileBuild {
HEADERS += \
HEADERS += \
src/AnalyzeView/GeoTagController.h \
src/comm/LogReplayLink.h \
src/comm/LogReplayLink.h \
src/comm/QGCFlightGearLink.h \
src/comm/QGCFlightGearLink.h \
src/comm/QGCHilLink.h \
src/comm/QGCHilLink.h \
...
@@ -525,6 +527,7 @@ contains(DEFINES, QGC_ENABLE_BLUETOOTH) {
...
@@ -525,6 +527,7 @@ contains(DEFINES, QGC_ENABLE_BLUETOOTH) {
!MobileBuild {
!MobileBuild {
SOURCES += \
SOURCES += \
src/AnalyzeView/GeoTagController.cc \
src/ui/uas/UASMessageView.cc \
src/ui/uas/UASMessageView.cc \
src/uas/FileManager.cc \
src/uas/FileManager.cc \
src/ui/uas/QGCUnconnectedInfoWidget.cc \
src/ui/uas/QGCUnconnectedInfoWidget.cc \
...
@@ -613,7 +616,6 @@ HEADERS += \
...
@@ -613,7 +616,6 @@ HEADERS += \
src/qgcunittest/TCPLoopBackServer.h \
src/qgcunittest/TCPLoopBackServer.h \
src/qgcunittest/UnitTest.h \
src/qgcunittest/UnitTest.h \
src/ViewWidgets/LogDownloadTest.h \
src/ViewWidgets/LogDownloadTest.h \
src/VehicleSetup/SetupViewTest.h \
SOURCES += \
SOURCES += \
src/FactSystem/FactSystemTestBase.cc \
src/FactSystem/FactSystemTestBase.cc \
...
@@ -642,7 +644,6 @@ SOURCES += \
...
@@ -642,7 +644,6 @@ SOURCES += \
src/qgcunittest/UnitTest.cc \
src/qgcunittest/UnitTest.cc \
src/qgcunittest/UnitTestList.cc \
src/qgcunittest/UnitTestList.cc \
src/ViewWidgets/LogDownloadTest.cc \
src/ViewWidgets/LogDownloadTest.cc \
src/VehicleSetup/SetupViewTest.cc \
} # !MobileBuild
} # !MobileBuild
} # DebugBuild
} # DebugBuild
...
...
qgroundcontrol.qrc
View file @
7505181e
...
@@ -47,6 +47,7 @@
...
@@ -47,6 +47,7 @@
<file alias="PowerComponentSummary.qml">src/AutoPilotPlugins/PX4/PowerComponentSummary.qml</file>
<file alias="PowerComponentSummary.qml">src/AutoPilotPlugins/PX4/PowerComponentSummary.qml</file>
<file alias="PX4FlowSensor.qml">src/VehicleSetup/PX4FlowSensor.qml</file>
<file alias="PX4FlowSensor.qml">src/VehicleSetup/PX4FlowSensor.qml</file>
<file alias="QGroundControl/Controls/qmldir">src/QmlControls/QGroundControl.Controls.qmldir</file>
<file alias="QGroundControl/Controls/qmldir">src/QmlControls/QGroundControl.Controls.qmldir</file>
<file alias="QGroundControl/Controls/AnalyzePage.qml">src/AnalyzeView/AnalyzePage.qml</file>
<file alias="QGroundControl/Controls/ClickableColor.qml">src/QmlControls/ClickableColor.qml</file>
<file alias="QGroundControl/Controls/ClickableColor.qml">src/QmlControls/ClickableColor.qml</file>
<file alias="QGroundControl/Controls/DropButton.qml">src/QmlControls/DropButton.qml</file>
<file alias="QGroundControl/Controls/DropButton.qml">src/QmlControls/DropButton.qml</file>
<file alias="QGroundControl/Controls/ExclusiveGroupItem.qml">src/QmlControls/ExclusiveGroupItem.qml</file>
<file alias="QGroundControl/Controls/ExclusiveGroupItem.qml">src/QmlControls/ExclusiveGroupItem.qml</file>
...
@@ -168,6 +169,8 @@
...
@@ -168,6 +169,8 @@
<file alias="VehicleSummary.qml">src/VehicleSetup/VehicleSummary.qml</file>
<file alias="VehicleSummary.qml">src/VehicleSetup/VehicleSummary.qml</file>
<file alias="QGroundControl/Controls/OfflineMapButton.qml">src/QmlControls/OfflineMapButton.qml</file>
<file alias="QGroundControl/Controls/OfflineMapButton.qml">src/QmlControls/OfflineMapButton.qml</file>
<file alias="PX4TuningComponentVTOL.qml">src/AutoPilotPlugins/PX4/PX4TuningComponentVTOL.qml</file>
<file alias="PX4TuningComponentVTOL.qml">src/AutoPilotPlugins/PX4/PX4TuningComponentVTOL.qml</file>
<file alias="GeoTagPage.qml">src/AnalyzeView/GeoTagPage.qml</file>
<file alias="AnalyzeView.qml">src/AnalyzeView/AnalyzeView.qml</file>
</qresource>
</qresource>
<qresource prefix="/json">
<qresource prefix="/json">
<file alias="MavCmdInfoCommon.json">src/MissionManager/MavCmdInfoCommon.json</file>
<file alias="MavCmdInfoCommon.json">src/MissionManager/MavCmdInfoCommon.json</file>
...
...
src/AnalyzeView/AnalyzePage.qml
0 → 100644
View file @
7505181e
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QGroundControl
1.0
import
QGroundControl
.
Palette
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
ScreenTools
1.0
/// Base view control for all Analyze pages
QGCView
{
id
:
analyePage
viewPanel
:
analyzePanel
property
alias
pageComponent
:
pageLoader
.
sourceComponent
property
alias
pageName
:
pageNameLabel
.
text
property
alias
pageDescription
:
pageDescriptionLabel
.
text
property
real
availableWidth
:
width
-
pageLoader
.
x
property
real
availableHeight
:
height
-
pageLoader
.
y
property
real
_margins
:
ScreenTools
.
defaultFontPixelHeight
/
2
QGCPalette
{
id
:
qgcPal
;
colorGroupEnabled
:
analyzePanel
.
enabled
}
QGCViewPanel
{
id
:
analyzePanel
anchors.fill
:
parent
QGCFlickable
{
anchors.fill
:
parent
contentWidth
:
pageLoader
.
x
+
pageLoader
.
item
.
width
contentHeight
:
pageLoader
.
y
+
pageLoader
.
item
.
height
clip
:
true
Column
{
id
:
headingColumn
width
:
analyzePanel
.
width
spacing
:
_margins
QGCLabel
{
id
:
pageNameLabel
font.pointSize
:
ScreenTools
.
largeFontPointSize
visible
:
!
ScreenTools
.
isShortScreen
}
QGCLabel
{
id
:
pageDescriptionLabel
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
wrapMode
:
Text
.
WordWrap
visible
:
!
ScreenTools
.
isShortScreen
}
}
Loader
{
id
:
pageLoader
anchors.topMargin
:
_margins
anchors.top
:
headingColumn
.
bottom
}
}
}
}
src/AnalyzeView/AnalyzeView.qml
0 → 100644
View file @
7505181e
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
/// @file
/// @brief Setup View
/// @author Don Gagne <don@thegagnes.com>
import
QtQuick
2.3
import
QtQuick
.
Controls
1.2
import
QGroundControl
1.0
import
QGroundControl
.
Palette
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
ScreenTools
1.0
Rectangle
{
id
:
setupView
color
:
qgcPal
.
window
z
:
QGroundControl
.
zOrderTopMost
QGCPalette
{
id
:
qgcPal
;
colorGroupEnabled
:
true
}
ExclusiveGroup
{
id
:
setupButtonGroup
}
readonly
property
real
_defaultTextHeight
:
ScreenTools
.
defaultFontPixelHeight
readonly
property
real
_defaultTextWidth
:
ScreenTools
.
defaultFontPixelWidth
readonly
property
real
_horizontalMargin
:
_defaultTextWidth
/
2
readonly
property
real
_verticalMargin
:
_defaultTextHeight
/
2
readonly
property
real
_buttonWidth
:
_defaultTextWidth
*
18
function
showGeoTagPanel
()
{
panelLoader
.
source
=
"
GeoTagPage.qml
"
}
Component.onCompleted
:
showGeoTagPanel
()
QGCFlickable
{
id
:
buttonScroll
width
:
buttonColumn
.
width
anchors.topMargin
:
_defaultTextHeight
/
2
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
anchors.leftMargin
:
_horizontalMargin
anchors.left
:
parent
.
left
contentHeight
:
buttonColumn
.
height
flickableDirection
:
Flickable
.
VerticalFlick
clip
:
true
Column
{
id
:
buttonColumn
width
:
_maxButtonWidth
spacing
:
_defaultTextHeight
/
2
property
real
_maxButtonWidth
:
0
Component.onCompleted
:
reflowWidths
()
// I don't know why this does not work
Connections
{
target
:
QGroundControl
onBaseFontPointSizeChanged
:
buttonColumn
.
reflowWidths
()
}
function
reflowWidths
()
{
buttonColumn
.
_maxButtonWidth
=
0
for
(
var
i
=
0
;
i
<
children
.
length
;
i
++
)
{
buttonColumn
.
_maxButtonWidth
=
Math
.
max
(
buttonColumn
.
_maxButtonWidth
,
children
[
i
].
width
)
}
for
(
var
j
=
0
;
j
<
children
.
length
;
j
++
)
{
children
[
j
].
width
=
buttonColumn
.
_maxButtonWidth
}
}
QGCLabel
{
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
text
:
qsTr
(
"
Analyze
"
)
wrapMode
:
Text
.
WordWrap
horizontalAlignment
:
Text
.
AlignHCenter
visible
:
!
ScreenTools
.
isShortScreen
}
SubMenuButton
{
id
:
summaryButton
imageResource
:
"
/qmlimages/GeoTagIcon.png
"
setupIndicator
:
false
checked
:
true
exclusiveGroup
:
setupButtonGroup
text
:
"
GeoTag Images
"
onClicked
:
showGeoTagPanel
()
}
}
}
Rectangle
{
id
:
divider
anchors.topMargin
:
_verticalMargin
anchors.bottomMargin
:
_verticalMargin
anchors.leftMargin
:
_horizontalMargin
anchors.left
:
buttonScroll
.
right
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
width
:
1
color
:
qgcPal
.
windowShade
}
Loader
{
id
:
panelLoader
anchors.topMargin
:
_verticalMargin
anchors.bottomMargin
:
_verticalMargin
anchors.leftMargin
:
_horizontalMargin
anchors.rightMargin
:
_horizontalMargin
anchors.left
:
divider
.
right
anchors.right
:
parent
.
right
anchors.top
:
parent
.
top
anchors.bottom
:
parent
.
bottom
}
}
src/AnalyzeView/GeoTagController.cc
0 → 100644
View file @
7505181e
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#include "GeoTagController.h"
#include "QGCFileDialog.h"
GeoTagController
::
GeoTagController
(
void
)
:
_progress
(
0
)
,
_inProgress
(
false
)
{
connect
(
&
_worker
,
&
GeoTagWorker
::
progressChanged
,
this
,
&
GeoTagController
::
_workerProgressChanged
);
connect
(
&
_worker
,
&
GeoTagWorker
::
error
,
this
,
&
GeoTagController
::
_workerError
);
connect
(
&
_worker
,
&
GeoTagWorker
::
started
,
this
,
&
GeoTagController
::
inProgressChanged
);
connect
(
&
_worker
,
&
GeoTagWorker
::
finished
,
this
,
&
GeoTagController
::
inProgressChanged
);
}
GeoTagController
::~
GeoTagController
()
{
}
void
GeoTagController
::
pickLogFile
(
void
)
{
QString
filename
=
QGCFileDialog
::
getOpenFileName
(
NULL
,
"Select log file load"
,
QString
(),
"PX4 log file (*.px4log);;All Files (*.*)"
);
if
(
!
filename
.
isEmpty
())
{
_worker
.
setLogFile
(
filename
);
emit
logFileChanged
(
filename
);
}
}
void
GeoTagController
::
pickImageDirectory
(
void
)
{
QString
dir
=
QGCFileDialog
::
getExistingDirectory
(
NULL
,
"Select image directory"
);
if
(
!
dir
.
isEmpty
())
{
_worker
.
setImageDirectory
(
dir
);
emit
imageDirectoryChanged
(
dir
);
}
}
void
GeoTagController
::
startTagging
(
void
)
{
_errorMessage
.
clear
();
emit
errorMessageChanged
(
_errorMessage
);
_worker
.
start
();
}
void
GeoTagController
::
_workerProgressChanged
(
double
progress
)
{
_progress
=
progress
;
emit
progressChanged
(
progress
);
}
void
GeoTagController
::
_workerError
(
QString
errorMessage
)
{
_errorMessage
=
errorMessage
;
emit
errorMessageChanged
(
errorMessage
);
}
GeoTagWorker
::
GeoTagWorker
(
void
)
:
_cancel
(
false
)
{
}
void
GeoTagWorker
::
run
(
void
)
{
_cancel
=
false
;
emit
progressChanged
(
0
);
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
if
(
_cancel
)
{
emit
error
(
tr
(
"Tagging cancelled"
));
return
;
}
emit
progressChanged
(
i
*
10
);
sleep
(
1
);
}
emit
progressChanged
(
100
);
emit
taggingComplete
();
}
src/AnalyzeView/GeoTagController.h
0 → 100644
View file @
7505181e
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#ifndef GeoTagController_H
#define GeoTagController_H
#include <QObject>
#include <QString>
#include <QThread>
class
GeoTagWorker
:
public
QThread
{
Q_OBJECT
public:
GeoTagWorker
(
void
);
QString
logFile
(
void
)
const
{
return
_logFile
;
}
QString
imageDirectory
(
void
)
const
{
return
_imageDirectory
;
}
void
setLogFile
(
const
QString
&
logFile
)
{
_logFile
=
logFile
;
}
void
setImageDirectory
(
const
QString
&
imageDirectory
)
{
_imageDirectory
=
imageDirectory
;
}
void
cancellTagging
(
void
)
{
_cancel
=
true
;
}
protected:
void
run
(
void
)
final
;
signals:
void
error
(
QString
errorMsg
);
void
taggingComplete
(
void
);
void
progressChanged
(
double
progress
);
private:
bool
_cancel
;
QString
_logFile
;
QString
_imageDirectory
;
};
/// Controller for GeoTagPage.qml. Supports geotagging images based on logfile camera tags.
class
GeoTagController
:
public
QObject
{
Q_OBJECT
public:
GeoTagController
(
void
);
~
GeoTagController
();
Q_PROPERTY
(
QString
logFile
READ
logFile
NOTIFY
logFileChanged
)
Q_PROPERTY
(
QString
imageDirectory
READ
imageDirectory
NOTIFY
imageDirectoryChanged
)
/// Set to an error message is geotagging fails
Q_PROPERTY
(
QString
errorMessage
READ
errorMessage
NOTIFY
errorMessageChanged
)
/// Progress indicator: 0-100
Q_PROPERTY
(
double
progress
READ
progress
NOTIFY
progressChanged
)
/// true: Currently in the process of tagging
Q_PROPERTY
(
bool
inProgress
READ
inProgress
NOTIFY
inProgressChanged
)
Q_INVOKABLE
void
pickLogFile
(
void
);
Q_INVOKABLE
void
pickImageDirectory
(
void
);
Q_INVOKABLE
void
startTagging
(
void
);
Q_INVOKABLE
void
cancelTagging
(
void
)
{
_worker
.
cancellTagging
();
}
QString
logFile
(
void
)
const
{
return
_worker
.
logFile
();
}
QString
imageDirectory
(
void
)
const
{
return
_worker
.
imageDirectory
();
}
double
progress
(
void
)
const
{
return
_progress
;
}
bool
inProgress
(
void
)
const
{
return
_worker
.
isRunning
();
}
QString
errorMessage
(
void
)
const
{
return
_errorMessage
;
}
signals:
void
logFileChanged
(
QString
logFile
);
void
imageDirectoryChanged
(
QString
imageDirectory
);
void
progressChanged
(
double
progress
);
void
inProgressChanged
(
void
);
void
errorMessageChanged
(
QString
errorMessage
);
private
slots
:
void
_workerProgressChanged
(
double
progress
);
void
_workerError
(
QString
errorMsg
);
private:
QString
_errorMessage
;
double
_progress
;
bool
_inProgress
;
GeoTagWorker
_worker
;
};
#endif
src/AnalyzeView/GeoTagIcon.png
0 → 100644
View file @
7505181e
502 Bytes
src/AnalyzeView/GeoTagPage.qml
0 → 100644
View file @
7505181e
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.4
import
QtQuick
.
Dialogs
1.2
import
QGroundControl
.
Palette
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
ScreenTools
1.0
import
QGroundControl
.
Controllers
1.0
AnalyzePage
{
id
:
geoTagPage
pageComponent
:
pageComponent
pageName
:
qsTr
(
"
GeoTag Images (WIP)
"
)
pageDescription
:
qsTr
(
"
GetTag Images is used to tag a set of images from a survey mission with gps coordinates. You must provide the binary log from the flight as well as the directory which contains the images to tag.
"
)
property
real
_margin
:
ScreenTools
.
defaultFontPixelWidth
GeoTagController
{
id
:
controller
}
Component
{
id
:
pageComponent
Column
{
id
:
mainColumn
width
:
availableWidth
spacing
:
_margin
Row
{
spacing
:
_margin
QGCLabel
{
text
:
"
Log file:
"
}
QGCLabel
{
text
:
controller
.
logFile
}
QGCButton
{
text
:
qsTr
(
"
Select log file
"
)
onClicked
:
controller
.
pickLogFile
()
}
}
Row
{
spacing
:
_margin
QGCLabel
{
text
:
"
Image directory:
"
}
QGCLabel
{
text
:
controller
.
imageDirectory
}
QGCButton
{
text
:
qsTr
(
"
Select image directory
"
)
onClicked
:
controller
.
pickImageDirectory
()
}
}
QGCLabel
{
text
:
"
NYI - Simulated only
"
}
QGCButton
{
text
:
controller
.
inProgress
?
qsTr
(
"
Cancel Tagging
"
)
:
qsTr
(
"
Start Tagging
"
)
onClicked
:
{
if
(
controller
.
inProgress
)
{
controller
.
cancelTagging
()
}
else
{
if
(
controller
.
logFile
==
""
||
controller
.
imageDirectory
==
""
)
{
geoTagPage
.
showMessage
(
qsTr
(
"
Error
"
),
qsTr
(
"
You must select a log file and image directory before you can start tagging.
"
),
StandardButton
.
Ok
)
return
}
controller
.
startTagging
()
}
}
}
QGCLabel
{
text
:
controller
.
errorMessage
}
ProgressBar
{
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
maximumValue
:
100
value
:
controller
.
progress
}
}
// Column
}
// Component
}
// AnalyzePage
src/QGCApplication.cc
View file @
7505181e
...
@@ -107,6 +107,7 @@
...
@@ -107,6 +107,7 @@
#include "QGCMessageBox.h"
#include "QGCMessageBox.h"
#include "FirmwareUpgradeController.h"
#include "FirmwareUpgradeController.h"
#include "MainWindow.h"
#include "MainWindow.h"
#include "GeoTagController.h"
#endif
#endif
#ifdef QGC_RTLAB_ENABLED
#ifdef QGC_RTLAB_ENABLED
...
@@ -413,6 +414,7 @@ void QGCApplication::_initCommon(void)
...
@@ -413,6 +414,7 @@ void QGCApplication::_initCommon(void)
qmlRegisterType
<
CustomCommandWidgetController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"CustomCommandWidgetController"
);
qmlRegisterType
<
CustomCommandWidgetController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"CustomCommandWidgetController"
);
qmlRegisterType
<
FirmwareUpgradeController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"FirmwareUpgradeController"
);
qmlRegisterType
<
FirmwareUpgradeController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"FirmwareUpgradeController"
);
qmlRegisterType
<
LogDownloadController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"LogDownloadController"
);
qmlRegisterType
<
LogDownloadController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"LogDownloadController"
);
qmlRegisterType
<
GeoTagController
>
(
"QGroundControl.Controllers"
,
1
,
0
,
"GeoTagController"
);
#endif
#endif
// Register Qml Singletons
// Register Qml Singletons
...
@@ -688,16 +690,6 @@ void QGCApplication::showMessage(const QString& message)
...
@@ -688,16 +690,6 @@ void QGCApplication::showMessage(const QString& message)
}
}
}
}
void
QGCApplication
::
showFlyView
(
void
)
{
QMetaObject
::
invokeMethod
(
_rootQmlObject
(),
"showFlyView"
);
}
void
QGCApplication
::
showPlanView
(
void
)
{
QMetaObject
::
invokeMethod
(
_rootQmlObject
(),
"showPlanView"
);
}
void
QGCApplication
::
showSetupView
(
void
)
void
QGCApplication
::
showSetupView
(
void
)
{
{
QMetaObject
::
invokeMethod
(
_rootQmlObject
(),
"showSetupView"
);
QMetaObject
::
invokeMethod
(
_rootQmlObject
(),
"showSetupView"
);
...
@@ -709,29 +701,6 @@ void QGCApplication::qmlAttemptWindowClose(void)
...
@@ -709,29 +701,6 @@ void QGCApplication::qmlAttemptWindowClose(void)
}
}
void
QGCApplication
::
_showSetupFirmware
(
void
)
{
QMetaObject
::
invokeMethod
(
_rootQmlObject
(),
"showSetupFirmware"
);
}
void
QGCApplication
::
_showSetupParameters
(
void
)
{
QMetaObject
::
invokeMethod
(
_rootQmlObject
(),
"showSetupParameters"
);
}
void
QGCApplication
::
_showSetupSummary
(
void
)
{
QMetaObject
::
invokeMethod
(
_rootQmlObject
(),
"showSetupSummary"
);
}
void
QGCApplication
::
_showSetupVehicleComponent
(
VehicleComponent
*
vehicleComponent
)
{
QVariant
varReturn
;
QVariant
varComponent
=
QVariant
::
fromValue
(
vehicleComponent
);
QMetaObject
::
invokeMethod
(
_rootQmlObject
(),
"showSetupVehicleComponent"
,
Q_RETURN_ARG
(
QVariant
,
varReturn
),
Q_ARG
(
QVariant
,
varComponent
));
}
void
QGCApplication
::
setLastKnownHomePosition
(
QGeoCoordinate
&
lastKnownHomePosition
)
void
QGCApplication
::
setLastKnownHomePosition
(
QGeoCoordinate
&
lastKnownHomePosition
)
{
{
QSettings
settings
;
QSettings
settings
;
...
...
src/QGCApplication.h
View file @
7505181e
...
@@ -128,8 +128,6 @@ public slots:
...
@@ -128,8 +128,6 @@ public slots:
/// You can connect to this slot to show a critical message box from a different thread.
/// You can connect to this slot to show a critical message box from a different thread.
void
criticalMessageBoxOnMainThread
(
const
QString
&
title
,
const
QString
&
msg
);
void
criticalMessageBoxOnMainThread
(
const
QString
&
title
,
const
QString
&
msg
);
void
showFlyView
(
void
);
void
showPlanView
(
void
);
void
showSetupView
(
void
);
void
showSetupView
(
void
);
void
qmlAttemptWindowClose
(
void
);
void
qmlAttemptWindowClose
(
void
);
...
@@ -163,11 +161,6 @@ public:
...
@@ -163,11 +161,6 @@ public:
/// unit tests. Although public should only be called by main.
/// unit tests. Although public should only be called by main.
bool
_initForUnitTests
(
void
);
bool
_initForUnitTests
(
void
);
void
_showSetupFirmware
(
void
);
void
_showSetupParameters
(
void
);
void
_showSetupSummary
(
void
);
void
_showSetupVehicleComponent
(
VehicleComponent
*
vehicleComponent
);
static
QGCApplication
*
_app
;
///< Our own singleton. Should be reference directly by qgcApp
static
QGCApplication
*
_app
;
///< Our own singleton. Should be reference directly by qgcApp
private
slots
:
private
slots
:
...
...
src/QmlControls/QGroundControl.Controls.qmldir
View file @
7505181e
Module QGroundControl.Controls
Module QGroundControl.Controls
AnalyzePage 1.0 AnalyzePage.qml
AppMessages 1.0 AppMessages.qml
AppMessages 1.0 AppMessages.qml
ClickableColor 1.0 ClickableColor.qml
ClickableColor 1.0 ClickableColor.qml
DropButton 1.0 DropButton.qml
DropButton 1.0 DropButton.qml
...
...
src/VehicleSetup/SetupViewTest.cc
deleted
100644 → 0
View file @
abc118d0
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
/// @file
/// @author Don Gagne <don@thegagnes.com>
#include "SetupViewTest.h"
#include "MockLink.h"
#include "MultiVehicleManager.h"
#include "QGCApplication.h"