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
50984522
Commit
50984522
authored
Mar 23, 2017
by
Don Gagne
Committed by
GitHub
Mar 23, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4830 from DonLakeFlyer/MapType
Map provider and type move to SettingsManager
parents
98b317d3
31ab9fff
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
262 additions
and
350 deletions
+262
-350
qgroundcontrol.pro
qgroundcontrol.pro
+2
-2
qgroundcontrol.qrc
qgroundcontrol.qrc
+1
-0
FlightDisplayViewMap.qml
src/FlightDisplay/FlightDisplayViewMap.qml
+1
-33
FlightMap.qml
src/FlightMap/FlightMap.qml
+9
-3
FlightMapSettings.cc
src/FlightMap/FlightMapSettings.cc
+0
-140
FlightMapSettings.h
src/FlightMap/FlightMapSettings.h
+0
-93
MissionEditor.qml
src/MissionEditor/MissionEditor.qml
+5
-38
QGCToolbox.cc
src/QGCToolbox.cc
+0
-5
QGCToolbox.h
src/QGCToolbox.h
+0
-3
QGroundControlQmlGlobal.cc
src/QmlControls/QGroundControlQmlGlobal.cc
+0
-2
QGroundControlQmlGlobal.h
src/QmlControls/QGroundControlQmlGlobal.h
+0
-4
OfflineMap.qml
src/QtLocationPlugin/QMLControl/OfflineMap.qml
+3
-2
FlightMap.SettingsGroup.json
src/Settings/FlightMap.SettingsGroup.json
+18
-0
FlightMapSettings.cc
src/Settings/FlightMapSettings.cc
+116
-0
FlightMapSettings.h
src/Settings/FlightMapSettings.h
+64
-0
SettingsManager.cc
src/Settings/SettingsManager.cc
+2
-0
SettingsManager.h
src/Settings/SettingsManager.h
+4
-0
GeneralSettings.qml
src/ui/preferences/GeneralSettings.qml
+37
-25
No files found.
qgroundcontrol.pro
View file @
50984522
...
...
@@ -443,7 +443,6 @@ HEADERS += \
src/CmdLineOptParser.h \
src/FirmwarePlugin/PX4/px4_custom_mode.h \
src/FlightDisplay/VideoManager.h \
src/FlightMap/FlightMapSettings.h \
src/FlightMap/Widgets/ValuesWidgetController.h \
src/FollowMe/FollowMe.h \
src/GAudioOutput.h \
...
...
@@ -502,6 +501,7 @@ HEADERS += \
src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h \
src/Settings/AppSettings.h \
src/Settings/AutoConnectSettings.h \
src/Settings/FlightMapSettings.h \
src/Settings/SettingsGroup.h \
src/Settings/SettingsManager.h \
src/Settings/UnitsSettings.h \
...
...
@@ -622,7 +622,6 @@ SOURCES += \
src/AnalyzeView/ExifParser.cc \
src/CmdLineOptParser.cc \
src/FlightDisplay/VideoManager.cc \
src/FlightMap/FlightMapSettings.cc \
src/FlightMap/Widgets/ValuesWidgetController.cc \
src/FollowMe/FollowMe.cc \
src/GAudioOutput.cc \
...
...
@@ -678,6 +677,7 @@ SOURCES += \
src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc \
src/Settings/AppSettings.cc \
src/Settings/AutoConnectSettings.cc \
src/Settings/FlightMapSettings.cc \
src/Settings/SettingsGroup.cc \
src/Settings/SettingsManager.cc \
src/Settings/UnitsSettings.cc \
...
...
qgroundcontrol.qrc
View file @
50984522
...
...
@@ -188,6 +188,7 @@
<file alias="MavCmdInfoVTOL.json">src/MissionManager/MavCmdInfoVTOL.json</file>
<file alias="App.SettingsGroup.json">src/Settings/App.SettingsGroup.json</file>
<file alias="AutoConnect.SettingsGroup.json">src/Settings/AutoConnect.SettingsGroup.json</file>
<file alias="FlightMap.SettingsGroup.json">src/Settings/FlightMap.SettingsGroup.json</file>
<file alias="Survey.SettingsGroup.json">src/MissionManager/Survey.SettingsGroup.json</file>
<file alias="Units.SettingsGroup.json">src/Settings/Units.SettingsGroup.json</file>
<file alias="Video.SettingsGroup.json">src/Settings/Video.SettingsGroup.json</file>
...
...
src/FlightDisplay/FlightDisplayViewMap.qml
View file @
50984522
...
...
@@ -164,7 +164,7 @@ FlightMap {
color
:
qgcPal
.
window
title
:
qsTr
(
"
Fly
"
)
z
:
QGroundControl
.
zOrderWidgets
buttonVisible
:
[
true
,
true
,
_showZoom
,
_showZoom
]
buttonVisible
:
[
true
,
_showZoom
,
_showZoom
]
maxHeight
:
(
_flightVideo
.
visible
?
_flightVideo
.
y
:
parent
.
height
)
-
toolStrip
.
y
// Massive reach across hack
property
bool
_showZoom
:
!
ScreenTools
.
isMobile
...
...
@@ -175,11 +175,6 @@ FlightMap {
iconSource
:
"
/qmlimages/MapCenter.svg
"
,
dropPanelComponent
:
centerMapDropPanel
},
{
name
:
"
Map
"
,
iconSource
:
"
/qmlimages/MapType.svg
"
,
dropPanelComponent
:
mapTypeDropPanel
},
{
name
:
"
In
"
,
iconSource
:
"
/qmlimages/ZoomPlus.svg
"
...
...
@@ -229,33 +224,6 @@ FlightMap {
}
}
Component
{
id
:
mapTypeDropPanel
Column
{
spacing
:
ScreenTools
.
defaultFontPixelHeight
/
2
QGCLabel
{
text
:
qsTr
(
"
Map type:
"
)
}
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
Repeater
{
model
:
QGroundControl
.
flightMapSettings
.
mapTypes
QGCButton
{
checkable
:
true
checked
:
QGroundControl
.
flightMapSettings
.
mapType
===
text
text
:
modelData
exclusiveGroup
:
_mapTypeButtonsExclusiveGroup
onClicked
:
{
QGroundControl
.
flightMapSettings
.
mapType
=
text
dropPanel
.
hide
()
}
}
}
}
}
}
// Add trajectory points to the map
MapItemView
{
model
:
_mainIsMap
?
_activeVehicle
?
_activeVehicle
.
trajectoryPoints
:
0
:
0
...
...
src/FlightMap/FlightMap.qml
View file @
50984522
...
...
@@ -85,7 +85,8 @@ Map {
}
function
updateActiveMapType
()
{
var
fullMapName
=
QGroundControl
.
flightMapSettings
.
mapProvider
+
"
"
+
QGroundControl
.
flightMapSettings
.
mapType
var
settings
=
QGroundControl
.
settingsManager
.
flightMapSettings
var
fullMapName
=
settings
.
mapProvider
.
enumStringValue
+
"
"
+
settings
.
mapType
.
enumStringValue
for
(
var
i
=
0
;
i
<
_map
.
supportedMapTypes
.
length
;
i
++
)
{
if
(
fullMapName
===
_map
.
supportedMapTypes
[
i
].
name
)
{
_map
.
activeMapType
=
_map
.
supportedMapTypes
[
i
]
...
...
@@ -97,8 +98,13 @@ Map {
Component
.
onCompleted
:
updateActiveMapType
()
Connections
{
target
:
QGroundControl
.
flightMapSettings
onMapTypeChanged
:
updateActiveMapType
()
target
:
QGroundControl
.
settingsManager
.
flightMapSettings
.
mapType
onRawValueChanged
:
updateActiveMapType
()
}
Connections
{
target
:
QGroundControl
.
settingsManager
.
flightMapSettings
.
mapProvider
onRawValueChanged
:
updateActiveMapType
()
}
/// Ground Station location
...
...
src/FlightMap/FlightMapSettings.cc
deleted
100644 → 0
View file @
98b317d3
/****************************************************************************
*
* (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 "FlightMapSettings.h"
#include <QSettings>
#include <QtQml>
const
char
*
FlightMapSettings
::
_defaultMapProvider
=
"Bing"
;
// Bing is default since it support full street/satellite/hybrid set
const
char
*
FlightMapSettings
::
_settingsGroup
=
"FlightMapSettings"
;
const
char
*
FlightMapSettings
::
_mapProviderKey
=
"MapProvider"
;
const
char
*
FlightMapSettings
::
_mapTypeKey
=
"MapType"
;
FlightMapSettings
::
FlightMapSettings
(
QGCApplication
*
app
)
:
QGCTool
(
app
)
,
_mapProvider
(
_defaultMapProvider
)
{
}
void
FlightMapSettings
::
setToolbox
(
QGCToolbox
*
toolbox
)
{
QGCTool
::
setToolbox
(
toolbox
);
qmlRegisterUncreatableType
<
FlightMapSettings
>
(
"QGroundControl"
,
1
,
0
,
"FlightMapSetting"
,
"Reference only"
);
_supportedMapProviders
<<
"Bing"
;
#ifndef QGC_NO_GOOGLE_MAPS
_supportedMapProviders
<<
"Google"
;
#endif
_supportedMapProviders
<<
"Statkart"
;
_loadSettings
();
}
void
FlightMapSettings
::
_storeSettings
(
void
)
{
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
settings
.
setValue
(
_mapProviderKey
,
_supportedMapProviders
.
contains
(
_mapProvider
)
?
_mapProvider
:
_defaultMapProvider
);
}
void
FlightMapSettings
::
_loadSettings
(
void
)
{
#ifdef QGC_NO_GOOGLE_MAPS
_mapProvider
=
_defaultMapProvider
;
#else
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
_mapProvider
=
settings
.
value
(
_mapProviderKey
,
_defaultMapProvider
).
toString
();
if
(
!
_supportedMapProviders
.
contains
(
_mapProvider
))
{
_mapProvider
=
_defaultMapProvider
;
}
#endif
_setMapTypesForCurrentProvider
();
}
QString
FlightMapSettings
::
mapProvider
(
void
)
{
return
_mapProvider
;
}
void
FlightMapSettings
::
setMapProvider
(
const
QString
&
mapProvider
)
{
if
(
_supportedMapProviders
.
contains
(
mapProvider
))
{
_mapProvider
=
mapProvider
;
_storeSettings
();
_setMapTypesForCurrentProvider
();
emit
mapProviderChanged
(
mapProvider
);
}
}
void
FlightMapSettings
::
_setMapTypesForCurrentProvider
(
void
)
{
_mapTypes
.
clear
();
#ifdef QGC_NO_GOOGLE_MAPS
_mapTypes
<<
"Street Map"
<<
"Satellite Map"
<<
"Hybrid Map"
;
#else
if
(
_mapProvider
==
"Bing"
)
{
_mapTypes
<<
"Street Map"
<<
"Satellite Map"
<<
"Hybrid Map"
;
}
else
if
(
_mapProvider
==
"Google"
)
{
_mapTypes
<<
"Street Map"
<<
"Satellite Map"
<<
"Terrain Map"
;
}
else
if
(
_mapProvider
==
"Statkart"
)
{
_mapTypes
<<
"Topo2"
;
}
#endif
emit
mapTypesChanged
(
_mapTypes
);
}
QString
FlightMapSettings
::
mapType
(
void
)
{
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
settings
.
beginGroup
(
_mapProvider
);
return
settings
.
value
(
_mapTypeKey
,
"Satellite Map"
).
toString
();
}
void
FlightMapSettings
::
setMapType
(
const
QString
&
mapType
)
{
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
settings
.
beginGroup
(
_mapProvider
);
settings
.
setValue
(
_mapTypeKey
,
mapType
);
emit
mapTypeChanged
(
mapType
);
}
void
FlightMapSettings
::
saveMapSetting
(
const
QString
&
mapName
,
const
QString
&
key
,
const
QString
&
value
)
{
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
settings
.
beginGroup
(
mapName
);
settings
.
setValue
(
key
,
value
);
}
QString
FlightMapSettings
::
loadMapSetting
(
const
QString
&
mapName
,
const
QString
&
key
,
const
QString
&
defaultValue
)
{
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
settings
.
beginGroup
(
mapName
);
return
settings
.
value
(
key
,
defaultValue
).
toString
();
}
void
FlightMapSettings
::
saveBoolMapSetting
(
const
QString
&
mapName
,
const
QString
&
key
,
bool
value
)
{
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
settings
.
beginGroup
(
mapName
);
settings
.
setValue
(
key
,
value
);
}
bool
FlightMapSettings
::
loadBoolMapSetting
(
const
QString
&
mapName
,
const
QString
&
key
,
bool
defaultValue
)
{
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
settings
.
beginGroup
(
mapName
);
return
settings
.
value
(
key
,
defaultValue
).
toBool
();
}
src/FlightMap/FlightMapSettings.h
deleted
100644 → 0
View file @
98b317d3
/****************************************************************************
*
* (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 FlightMapSettings_H
#define FlightMapSettings_H
#include "QGCToolbox.h"
#include <QObject>
#include <QStringList>
/*
TODO: Map settings should come from QGCMapEngineManager. What is currently in
FlightMapSettings should be moved there so all map related funtions are in
one place.
*/
class
FlightMapSettings
:
public
QGCTool
{
Q_OBJECT
public:
FlightMapSettings
(
QGCApplication
*
app
);
/// mapProvider is either Bing, Google or Open to specify to set of maps available
Q_PROPERTY
(
QString
mapProvider
READ
mapProvider
WRITE
setMapProvider
NOTIFY
mapProviderChanged
)
/// Map providers
Q_PROPERTY
(
QStringList
mapProviders
READ
mapProviders
CONSTANT
)
/// Map types associated with current map provider
Q_PROPERTY
(
QStringList
mapTypes
MEMBER
_mapTypes
NOTIFY
mapTypesChanged
)
/// Map type to be used for all maps
Q_PROPERTY
(
QString
mapType
READ
mapType
WRITE
setMapType
NOTIFY
mapTypeChanged
)
/// Is Google Maps Enabled
Q_PROPERTY
(
bool
googleMapEnabled
READ
googleMapEnabled
CONSTANT
)
Q_INVOKABLE
void
saveMapSetting
(
const
QString
&
mapName
,
const
QString
&
key
,
const
QString
&
value
);
Q_INVOKABLE
QString
loadMapSetting
(
const
QString
&
mapName
,
const
QString
&
key
,
const
QString
&
defaultValue
);
Q_INVOKABLE
void
saveBoolMapSetting
(
const
QString
&
mapName
,
const
QString
&
key
,
bool
value
);
Q_INVOKABLE
bool
loadBoolMapSetting
(
const
QString
&
mapName
,
const
QString
&
key
,
bool
defaultValue
);
// Property accessors
QString
mapProvider
(
void
);
void
setMapProvider
(
const
QString
&
mapProvider
);
QString
mapType
(
void
);
void
setMapType
(
const
QString
&
mapType
);
// Override from QGCTool
virtual
void
setToolbox
(
QGCToolbox
*
toolbox
);
QStringList
mapProviders
()
{
return
_supportedMapProviders
;
}
#ifdef QGC_NO_GOOGLE_MAPS
bool
googleMapEnabled
()
{
return
false
;
}
#else
bool
googleMapEnabled
()
{
return
true
;
}
#endif
signals:
void
mapProviderChanged
(
const
QString
&
mapProvider
);
void
mapTypesChanged
(
const
QStringList
&
mapTypes
);
void
mapTypeChanged
(
const
QString
&
mapType
);
private:
void
_storeSettings
(
void
);
void
_loadSettings
(
void
);
void
_setMapTypesForCurrentProvider
(
void
);
QString
_mapProvider
;
///< Current map provider
QStringList
_supportedMapProviders
;
QStringList
_mapTypes
;
///< Map types associated with current map provider
static
const
char
*
_defaultMapProvider
;
static
const
char
*
_settingsGroup
;
static
const
char
*
_mapProviderKey
;
static
const
char
*
_mapTypeKey
;
};
#endif
src/MissionEditor/MissionEditor.qml
View file @
50984522
...
...
@@ -678,11 +678,11 @@ QGCView {
color
:
qgcPal
.
window
title
:
qsTr
(
"
Plan
"
)
z
:
QGroundControl
.
zOrderWidgets
showAlternateIcon
:
[
false
,
false
,
_syncDropDownController
.
dirty
,
false
,
false
,
false
,
false
]
rotateImage
:
[
false
,
false
,
_syncDropDownController
.
syncInProgress
,
false
,
false
,
false
,
false
]
animateImage
:
[
false
,
false
,
_syncDropDownController
.
dirty
,
false
,
false
,
false
,
false
]
buttonEnabled
:
[
true
,
true
,
!
_syncDropDownController
.
syncInProgress
,
true
,
true
,
true
,
true
]
buttonVisible
:
[
true
,
true
,
true
,
true
,
true
,
_showZoom
,
_showZoom
]
showAlternateIcon
:
[
false
,
false
,
_syncDropDownController
.
dirty
,
false
,
false
,
false
]
rotateImage
:
[
false
,
false
,
_syncDropDownController
.
syncInProgress
,
false
,
false
,
false
]
animateImage
:
[
false
,
false
,
_syncDropDownController
.
dirty
,
false
,
false
,
false
]
buttonEnabled
:
[
true
,
true
,
!
_syncDropDownController
.
syncInProgress
,
true
,
true
,
true
]
buttonVisible
:
[
true
,
true
,
true
,
true
,
_showZoom
,
_showZoom
]
maxHeight
:
mapScale
.
y
-
toolStrip
.
y
property
bool
_showZoom
:
!
ScreenTools
.
isMobile
...
...
@@ -709,11 +709,6 @@ QGCView {
iconSource
:
"
/qmlimages/MapCenter.svg
"
,
dropPanelComponent
:
centerMapDropPanel
},
{
name
:
"
Map
"
,
iconSource
:
"
/qmlimages/MapType.svg
"
,
dropPanelComponent
:
mapTypeDropPanel
},
{
name
:
"
In
"
,
iconSource
:
"
/qmlimages/ZoomPlus.svg
"
...
...
@@ -903,34 +898,6 @@ QGCView {
}
}
Component
{
id
:
mapTypeDropPanel
Column
{
spacing
:
_margin
QGCLabel
{
text
:
qsTr
(
"
Map type:
"
)
}
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
Repeater
{
model
:
QGroundControl
.
flightMapSettings
.
mapTypes
QGCButton
{
checkable
:
true
checked
:
QGroundControl
.
flightMapSettings
.
mapType
===
text
text
:
modelData
exclusiveGroup
:
_mapTypeButtonsExclusiveGroup
onClicked
:
{
QGroundControl
.
flightMapSettings
.
mapType
=
text
dropPanel
.
hide
()
}
}
}
}
}
}
Component
{
id
:
patternDropPanel
...
...
src/QGCToolbox.cc
View file @
50984522
...
...
@@ -10,7 +10,6 @@
#include "FactSystem.h"
#include "FirmwarePluginManager.h"
#include "FlightMapSettings.h"
#include "GAudioOutput.h"
#ifndef __mobile__
#include "GPSManager.h"
...
...
@@ -39,7 +38,6 @@ QGCToolbox::QGCToolbox(QGCApplication* app)
:
_audioOutput
(
NULL
)
,
_factSystem
(
NULL
)
,
_firmwarePluginManager
(
NULL
)
,
_flightMapSettings
(
NULL
)
#ifndef __mobile__
,
_gpsManager
(
NULL
)
#endif
...
...
@@ -66,7 +64,6 @@ QGCToolbox::QGCToolbox(QGCApplication* app)
_audioOutput
=
new
GAudioOutput
(
app
);
_factSystem
=
new
FactSystem
(
app
);
_firmwarePluginManager
=
new
FirmwarePluginManager
(
app
);
_flightMapSettings
=
new
FlightMapSettings
(
app
);
#ifndef __mobile__
_gpsManager
=
new
GPSManager
(
app
);
#endif
...
...
@@ -93,7 +90,6 @@ void QGCToolbox::setChildToolboxes(void)
_audioOutput
->
setToolbox
(
this
);
_factSystem
->
setToolbox
(
this
);
_firmwarePluginManager
->
setToolbox
(
this
);
_flightMapSettings
->
setToolbox
(
this
);
#ifndef __mobile__
_gpsManager
->
setToolbox
(
this
);
#endif
...
...
@@ -118,7 +114,6 @@ QGCToolbox::~QGCToolbox()
delete
_audioOutput
;
delete
_factSystem
;
delete
_firmwarePluginManager
;
delete
_flightMapSettings
;
delete
_joystickManager
;
delete
_linkManager
;
delete
_mavlinkProtocol
;
...
...
src/QGCToolbox.h
View file @
50984522
...
...
@@ -15,7 +15,6 @@
class
FactSystem
;
class
FirmwarePluginManager
;
class
FlightMapSettings
;
class
GAudioOutput
;
class
GPSManager
;
class
JoystickManager
;
...
...
@@ -42,7 +41,6 @@ public:
~
QGCToolbox
();
FirmwarePluginManager
*
firmwarePluginManager
(
void
)
{
return
_firmwarePluginManager
;
}
FlightMapSettings
*
flightMapSettings
(
void
)
{
return
_flightMapSettings
;
}
GAudioOutput
*
audioOutput
(
void
)
{
return
_audioOutput
;
}
JoystickManager
*
joystickManager
(
void
)
{
return
_joystickManager
;
}
LinkManager
*
linkManager
(
void
)
{
return
_linkManager
;
}
...
...
@@ -71,7 +69,6 @@ private:
GAudioOutput
*
_audioOutput
;
FactSystem
*
_factSystem
;
FirmwarePluginManager
*
_firmwarePluginManager
;
FlightMapSettings
*
_flightMapSettings
;
#ifndef __mobile__
GPSManager
*
_gpsManager
;
#endif
...
...
src/QmlControls/QGroundControlQmlGlobal.cc
View file @
50984522
...
...
@@ -21,7 +21,6 @@ static const char* kQmlGlobalKeyName = "QGCQml";
QGroundControlQmlGlobal
::
QGroundControlQmlGlobal
(
QGCApplication
*
app
)
:
QGCTool
(
app
)
,
_flightMapSettings
(
NULL
)
,
_linkManager
(
NULL
)
,
_multiVehicleManager
(
NULL
)
,
_mapEngineManager
(
NULL
)
...
...
@@ -47,7 +46,6 @@ void QGroundControlQmlGlobal::setToolbox(QGCToolbox* toolbox)
{
QGCTool
::
setToolbox
(
toolbox
);
_flightMapSettings
=
toolbox
->
flightMapSettings
();
_linkManager
=
toolbox
->
linkManager
();
_multiVehicleManager
=
toolbox
->
multiVehicleManager
();
_mapEngineManager
=
toolbox
->
mapEngineManager
();
...
...
src/QmlControls/QGroundControlQmlGlobal.h
View file @
50984522
...
...
@@ -17,7 +17,6 @@
#include "QGCToolbox.h"
#include "QGCApplication.h"
#include "LinkManager.h"
#include "FlightMapSettings.h"
#include "SettingsFact.h"
#include "FactMetaData.h"
#include "SimulatedPosition.h"
...
...
@@ -39,7 +38,6 @@ public:
Q_PROPERTY
(
QString
appName
READ
appName
CONSTANT
)
Q_PROPERTY
(
FlightMapSettings
*
flightMapSettings
READ
flightMapSettings
CONSTANT
)
Q_PROPERTY
(
LinkManager
*
linkManager
READ
linkManager
CONSTANT
)
Q_PROPERTY
(
MultiVehicleManager
*
multiVehicleManager
READ
multiVehicleManager
CONSTANT
)
Q_PROPERTY
(
QGCMapEngineManager
*
mapEngineManager
READ
mapEngineManager
CONSTANT
)
...
...
@@ -126,7 +124,6 @@ public:
// Property accesors
QString
appName
()
{
return
qgcApp
()
->
applicationName
();
}
FlightMapSettings
*
flightMapSettings
()
{
return
_flightMapSettings
;
}
LinkManager
*
linkManager
()
{
return
_linkManager
;
}
MultiVehicleManager
*
multiVehicleManager
()
{
return
_multiVehicleManager
;
}
QGCMapEngineManager
*
mapEngineManager
()
{
return
_mapEngineManager
;
}
...
...
@@ -172,7 +169,6 @@ signals:
void
skipSetupPageChanged
();
private:
FlightMapSettings
*
_flightMapSettings
;
LinkManager
*
_linkManager
;
MultiVehicleManager
*
_multiVehicleManager
;
QGCMapEngineManager
*
_mapEngineManager
;
...
...
src/QtLocationPlugin/QMLControl/OfflineMap.qml
View file @
50984522
...
...
@@ -31,7 +31,7 @@ QGCView {
property
string
mapKey
:
"
lastMapType
"
property
string
mapType
:
QGroundControl
.
flightMapSettings
.
mapProvider
+
"
"
+
QGroundControl
.
flightMapSettings
.
mapTyp
e
property
string
mapType
:
_settings
.
mapProvider
.
enumStringValue
+
"
"
+
_settings
.
mapType
.
enumStringValu
e
property
bool
isMapInteractive
:
false
property
var
savedCenter
:
undefined
property
real
savedZoom
:
3
...
...
@@ -47,6 +47,7 @@ QGCView {
property
var
_mapAdjustedColor
:
_map
.
isSatelliteMap
?
"
white
"
:
"
black
"
property
bool
_tooManyTiles
:
QGroundControl
.
mapEngineManager
.
tileCount
>
_maxTilesForDownload
property
var
_settings
:
QGroundControl
.
settingsManager
.
flightMapSettings
readonly
property
real
minZoomLevel
:
3
readonly
property
real
maxZoomLevel
:
20
...
...
@@ -97,7 +98,7 @@ QGCView {
function
addNewSet
()
{
isMapInteractive
=
true
mapType
=
QGroundControl
.
flightMapSettings
.
mapProvider
+
"
"
+
QGroundControl
.
flightMapSettings
.
mapTyp
e
mapType
=
_settings
.
mapProvider
.
enumStringValue
+
"
"
+
_settings
.
mapType
.
enumStringValu
e
resetMapToDefaults
()
handleChanges
()
_map
.
visible
=
true
...
...
src/Settings/FlightMap.SettingsGroup.json
0 → 100644
View file @
50984522
[
{
"name"
:
"MapProvider"
,
"shortDescription"
:
"Currently selected map provider for flight maps"
,
"type"
:
"uint32"
,
"enumStrings"
:
"Bing,Google,Statkart"
,
"enumValues"
:
"0,1,2"
,
"defaultValue"
:
0
},
{
"name"
:
"MapType"
,
"shortDescription"
:
"Currently selected map type for flight maps"
,
"type"
:
"uint32"
,
"enumStrings"
:
"Street Map,Satellite Map,Hybrid Map,Terrain Map"
,
"enumValues"
:
"0,1,2,3"
,
"defaultValue"
:
2
}
]
src/Settings/FlightMapSettings.cc
0 → 100644
View file @
50984522
/****************************************************************************
*
* (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 "FlightMapSettings.h"
#include <QQmlEngine>
#include <QtQml>
const
char
*
FlightMapSettings
::
flightMapSettingsGroupName
=
"FlightMap"
;
const
char
*
FlightMapSettings
::
mapProviderSettingsName
=
"MapProvider"
;
const
char
*
FlightMapSettings
::
mapTypeSettingsName
=
"MapType"
;
const
char
*
FlightMapSettings
::
_settingsGroupName
=
"FlightMap"
;
FlightMapSettings
::
FlightMapSettings
(
QObject
*
parent
)
:
SettingsGroup
(
flightMapSettingsGroupName
,
QString
(
_settingsGroupName
)
/* root settings group */
,
parent
)
,
_mapProviderFact
(
NULL
)
,
_mapTypeFact
(
NULL
)
{
QQmlEngine
::
setObjectOwnership
(
this
,
QQmlEngine
::
CppOwnership
);
qmlRegisterUncreatableType
<
FlightMapSettings
>
(
"QGroundControl.SettingsManager"
,
1
,
0
,
"FlightMapSettings"
,
"Reference only"
);
// Save the original version since we modify based on map provider
_savedMapTypeStrings
=
_nameToMetaDataMap
[
mapTypeSettingsName
]
->
enumStrings
();
_savedMapTypeValues
=
_nameToMetaDataMap
[
mapTypeSettingsName
]
->
enumValues
();
#ifdef QGC_NO_GOOGLE_MAPS
// Find google in the list and remove it
FactMetaData
*
metaData
=
_nameToMetaDataMap
[
mapProviderSettingsName
];
QVariantList
enumValues
=
metaData
->
enumValues
();
QStringList
enumStrings
=
metaData
->
enumStrings
();
_removeEnumValue
(
mapProviderGoogle
,
enumStrings
,
enumValues
);
metaData
->
setEnumInfo
(
enumStrings
,
enumValues
);
#endif
_newMapProvider
(
mapProvider
()
->
rawValue
());
}
Fact
*
FlightMapSettings
::
mapProvider
(
void
)
{
if
(
!
_mapProviderFact
)
{
_mapProviderFact
=
_createSettingsFact
(
mapProviderSettingsName
);
connect
(
_mapProviderFact
,
&
Fact
::
rawValueChanged
,
this
,
&
FlightMapSettings
::
_newMapProvider
);
}
return
_mapProviderFact
;
}
Fact
*
FlightMapSettings
::
mapType
(
void
)
{
if
(
!
_mapTypeFact
)
{
_mapTypeFact
=
_createSettingsFact
(
mapTypeSettingsName
);
}
return
_mapTypeFact
;
}
void
FlightMapSettings
::
_removeEnumValue
(
int
value
,
QStringList
&
enumStrings
,
QVariantList
&
enumValues
)
{
bool
found
=
false
;
int
removeIndex
;
for
(
removeIndex
=
0
;
removeIndex
<
enumValues
.
count
();
removeIndex
++
)
{
if
(
enumValues
[
removeIndex
].
toInt
()
==
value
)
{
found
=
true
;
break
;
}
}
if
(
found
)
{
enumValues
.
removeAt
(
removeIndex
);
enumStrings
.
removeAt
(
removeIndex
);
}
}
void
FlightMapSettings
::
_newMapProvider
(
QVariant
value
)
{
FactMetaData
*
metaData
=
_nameToMetaDataMap
[
mapTypeSettingsName
];
QStringList
enumStrings
=
_savedMapTypeStrings
;
QVariantList
enumValues
=
_savedMapTypeValues
;
switch
(
value
.
toInt
())
{
case
mapProviderBing
:
_removeEnumValue
(
mapTypeTerrain
,
enumStrings
,
enumValues
);
break
;
case
mapProviderGoogle
:
_removeEnumValue
(
mapTypeHybrid
,
enumStrings
,
enumValues
);
break
;
case
mapProviderStarkart
:
_removeEnumValue
(
mapTypeStreet
,
enumStrings
,
enumValues
);
_removeEnumValue
(
mapTypeSatellite
,
enumStrings
,
enumValues
);
_removeEnumValue
(
mapTypeHybrid
,
enumStrings
,
enumValues
);
break
;
}
metaData
->
setEnumInfo
(
enumStrings
,
enumValues
);
emit
mapTypeChanged
();
// Check that map type is still valid for this new map provider
bool
found
=
false
;
int
currentMapType
=
mapType
()
->
rawValue
().
toInt
();
for
(
int
i
=
0
;
i
<
enumValues
.
count
();
i
++
)
{
if
(
currentMapType
==
enumValues
[
i
].
toInt
())
{
found
=
true
;
break
;
}
}
if
(
!
found
)
{
mapType
()
->
setRawValue
(
0
);
}
}
src/Settings/FlightMapSettings.h
0 → 100644
View file @
50984522
/****************************************************************************
*
* (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 FlightMapSettings_H
#define FlightMapSettings_H
#include "SettingsGroup.h"
class
FlightMapSettings
:
public
SettingsGroup
{
Q_OBJECT
public:
FlightMapSettings
(
QObject
*
parent
=
NULL
);
// This enum must match the json meta data
typedef
enum
{
mapProviderBing
,
mapProviderGoogle
,
mapProviderStarkart
}
MapProvider_t
;
// This enum must match the json meta data
typedef
enum
{
mapTypeStreet
,
mapTypeSatellite
,
mapTypeHybrid
,
mapTypeTerrain
}
MapType_t
;
Q_PROPERTY
(
Fact
*
mapProvider
READ
mapProvider
CONSTANT
)
///< Currently selected map provider
Q_PROPERTY
(
Fact
*
mapType
READ
mapType
NOTIFY
mapTypeChanged
)
///< Current selected map type
Fact
*
mapProvider
(
void
);
Fact
*
mapType
(
void
);
static
const
char
*
flightMapSettingsGroupName
;
static
const
char
*
mapProviderSettingsName
;
static
const
char
*
mapTypeSettingsName
;
signals:
void
mapTypeChanged
(
void
);
private
slots
:
void
_newMapProvider
(
QVariant
value
);
private:
void
_removeEnumValue
(
int
value
,
QStringList
&
enumStrings
,
QVariantList
&
enumValues
);
SettingsFact
*
_mapProviderFact
;
SettingsFact
*
_mapTypeFact
;
QStringList
_savedMapTypeStrings
;
QVariantList
_savedMapTypeValues
;
static
const
char
*
_settingsGroupName
;
};
#endif
src/Settings/SettingsManager.cc
View file @
50984522
...
...
@@ -18,6 +18,7 @@ SettingsManager::SettingsManager(QGCApplication* app)
,
_unitsSettings
(
NULL
)
,
_autoConnectSettings
(
NULL
)
,
_videoSettings
(
NULL
)
,
_flightMapSettings
(
NULL
)
{
}
...
...
@@ -32,4 +33,5 @@ void SettingsManager::setToolbox(QGCToolbox *toolbox)
_appSettings
=
new
AppSettings
(
this
);
_autoConnectSettings
=
new
AutoConnectSettings
(
this
);
_videoSettings
=
new
VideoSettings
(
this
);
_flightMapSettings
=
new
FlightMapSettings
(
this
);
}
src/Settings/SettingsManager.h
View file @
50984522
...
...
@@ -18,6 +18,7 @@
#include "UnitsSettings.h"
#include "AutoConnectSettings.h"
#include "VideoSettings.h"
#include "FlightMapSettings.h"
#include <QVariantList>
...
...
@@ -33,6 +34,7 @@ public:
Q_PROPERTY
(
QObject
*
unitsSettings
READ
unitsSettings
CONSTANT
)
Q_PROPERTY
(
QObject
*
autoConnectSettings
READ
autoConnectSettings
CONSTANT
)
Q_PROPERTY
(
QObject
*
videoSettings
READ
videoSettings
CONSTANT
)
Q_PROPERTY
(
QObject
*
flightMapSettings
READ
flightMapSettings
CONSTANT
)
// Override from QGCTool
virtual
void
setToolbox
(
QGCToolbox
*
toolbox
);
...
...
@@ -41,12 +43,14 @@ public:
UnitsSettings
*
unitsSettings
(
void
)
{
return
_unitsSettings
;
}
AutoConnectSettings
*
autoConnectSettings
(
void
)
{
return
_autoConnectSettings
;
}
VideoSettings
*
videoSettings
(
void
)
{
return
_videoSettings
;
}
FlightMapSettings
*
flightMapSettings
(
void
)
{
return
_flightMapSettings
;
}
private:
AppSettings
*
_appSettings
;
UnitsSettings
*
_unitsSettings
;
AutoConnectSettings
*
_autoConnectSettings
;
VideoSettings
*
_videoSettings
;
FlightMapSettings
*
_flightMapSettings
;
};
#endif
src/ui/preferences/GeneralSettings.qml
View file @
50984522
...
...
@@ -39,6 +39,8 @@ QGCView {
property
real
_editFieldWidth
:
ScreenTools
.
defaultFontPixelWidth
*
30
property
Fact
_telemPath
:
QGroundControl
.
settingsManager
.
appSettings
.
telemetrySavePath
property
Fact
_videoPath
:
QGroundControl
.
settingsManager
.
videoSettings
.
videoSavePath
property
Fact
_mapProvider
:
QGroundControl
.
settingsManager
.
flightMapSettings
.
mapProvider
property
Fact
_mapType
:
QGroundControl
.
settingsManager
.
flightMapSettings
.
mapType
readonly
property
string
_requiresRestart
:
qsTr
(
"
(Requires Restart)
"
)
...
...
@@ -375,39 +377,49 @@ QGCView {
}
}
}
//-----------------------------------------------------------------
//-- Map Provider
s
//-- Map Provider
Row
{
/*
TODO: Map settings should come from QGroundControl.mapEngineManager. What is currently in
QGroundControl.flightMapSettings should be moved there so all map related funtions are in
one place.
*/
spacing
:
ScreenTools
.
defaultFontPixelWidth
visible
:
QGroundControl
.
flightMapSettings
.
googleMapEnabled
visible
:
_mapProvider
.
visible
QGCLabel
{
id
:
mapProvidersLabel
anchors.baseline
:
mapProviders
.
baseline
text
:
qsTr
(
"
Map Provider:
"
)
width
:
_labelWidth
}
QGCComboBox
{
id
:
mapProviders
width
:
_editFieldWidth
model
:
QGroundControl
.
flightMapSettings
.
mapProviders
Component.onCompleted
:
{
var
index
=
mapProviders
.
find
(
QGroundControl
.
flightMapSettings
.
mapProvider
)
if
(
index
<
0
)
{
console
.
warn
(
qsTr
(
"
Active map provider not in combobox
"
),
QGroundControl
.
flightMapSettings
.
mapProvider
)
}
else
{
mapProviders
.
currentIndex
=
index
}
}
onActivated
:
{
if
(
index
!=
-
1
)
{
currentIndex
=
index
console
.
log
(
qsTr
(
"
New map provider:
"
)
+
model
[
index
])
QGroundControl
.
flightMapSettings
.
mapProvider
=
model
[
index
]
FactComboBox
{
id
:
mapProviders
width
:
_editFieldWidth
fact
:
_mapProvider
indexModel
:
false
}
}
//-----------------------------------------------------------------
//-- Map Type
Row
{
spacing
:
ScreenTools
.
defaultFontPixelWidth
visible
:
_mapType
.
visible
QGCLabel
{
anchors.baseline
:
mapTypes
.
baseline
text
:
qsTr
(
"
Map Type:
"
)
width
:
_labelWidth
}
FactComboBox
{
id
:
mapTypes
width
:
_editFieldWidth
fact
:
_mapType
indexModel
:
false
Connections
{
target
:
QGroundControl
.
settingsManager
.
flightMapSettings
onMapTypeChanged
:
{
mapTypes
.
model
=
_mapType
.
enumStrings
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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