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
c7262637
Commit
c7262637
authored
Apr 11, 2020
by
DoinLakeFlyer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
parent
5ad2b7f8
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
226 additions
and
256 deletions
+226
-256
FactGroup.cc
src/FactSystem/FactGroup.cc
+17
-9
FactGroup.h
src/FactSystem/FactGroup.h
+12
-11
ValuePageWidget.qml
src/FlightMap/Widgets/ValuePageWidget.qml
+134
-211
ValuesWidgetController.cc
src/FlightMap/Widgets/ValuesWidgetController.cc
+49
-19
ValuesWidgetController.h
src/FlightMap/Widgets/ValuesWidgetController.h
+11
-3
QGCCorePlugin.cc
src/api/QGCCorePlugin.cc
+3
-3
No files found.
src/FactSystem/FactGroup.cc
View file @
c7262637
...
...
@@ -53,8 +53,6 @@ void FactGroup::_setupTimer()
Fact
*
FactGroup
::
getFact
(
const
QString
&
name
)
{
Fact
*
fact
=
nullptr
;
if
(
name
.
contains
(
"."
))
{
QStringList
parts
=
name
.
split
(
"."
);
if
(
parts
.
count
()
!=
2
)
{
...
...
@@ -71,11 +69,14 @@ Fact* FactGroup::getFact(const QString& name)
return
factGroup
->
getFact
(
parts
[
1
]);
}
if
(
_nameToFactMap
.
contains
(
name
))
{
fact
=
_nameToFactMap
[
name
];
Fact
*
fact
=
nullptr
;
QString
camelCaseName
=
_camelCase
(
name
);
if
(
_nameToFactMap
.
contains
(
camelCaseName
))
{
fact
=
_nameToFactMap
[
camelCaseName
];
QQmlEngine
::
setObjectOwnership
(
fact
,
QQmlEngine
::
CppOwnership
);
}
else
{
qWarning
()
<<
"Unknown Fact"
<<
n
ame
;
qWarning
()
<<
"Unknown Fact"
<<
camelCaseN
ame
;
}
return
fact
;
...
...
@@ -83,13 +84,14 @@ Fact* FactGroup::getFact(const QString& name)
FactGroup
*
FactGroup
::
getFactGroup
(
const
QString
&
name
)
{
FactGroup
*
factGroup
=
nullptr
;
FactGroup
*
factGroup
=
nullptr
;
QString
camelCaseName
=
_camelCase
(
name
);
if
(
_nameToFactGroupMap
.
contains
(
n
ame
))
{
factGroup
=
_nameToFactGroupMap
[
n
ame
];
if
(
_nameToFactGroupMap
.
contains
(
camelCaseN
ame
))
{
factGroup
=
_nameToFactGroupMap
[
camelCaseN
ame
];
QQmlEngine
::
setObjectOwnership
(
factGroup
,
QQmlEngine
::
CppOwnership
);
}
else
{
qWarning
()
<<
"Unknown FactGroup"
<<
n
ame
;
qWarning
()
<<
"Unknown FactGroup"
<<
camelCaseN
ame
;
}
return
factGroup
;
...
...
@@ -142,3 +144,9 @@ void FactGroup::setLiveUpdates(bool liveUpdates)
fact
->
setSendValueChangedSignals
(
liveUpdates
);
}
}
QString
FactGroup
::
_camelCase
(
const
QString
&
text
)
{
return
text
[
0
].
toLower
()
+
text
.
right
(
text
.
length
()
-
1
);
}
src/FactSystem/FactGroup.h
View file @
c7262637
...
...
@@ -44,25 +44,26 @@ public:
QStringList
factNames
(
void
)
const
{
return
_factNames
;
}
QStringList
factGroupNames
(
void
)
const
{
return
_nameToFactGroupMap
.
keys
();
}
protected:
void
_addFact
(
Fact
*
fact
,
const
QString
&
name
);
void
_addFactGroup
(
FactGroup
*
factGroup
,
const
QString
&
name
);
void
_loadFromJsonArray
(
const
QJsonArray
jsonArray
);
int
_updateRateMSecs
;
///< Update rate for Fact::valueChanged signals, 0: immediate update
protected
slots
:
virtual
void
_updateAllValues
(
void
);
private:
void
_setupTimer
();
QTimer
_updateTimer
;
protected:
void
_addFact
(
Fact
*
fact
,
const
QString
&
name
);
void
_addFactGroup
(
FactGroup
*
factGroup
,
const
QString
&
name
);
void
_loadFromJsonArray
(
const
QJsonArray
jsonArray
);
int
_updateRateMSecs
;
///< Update rate for Fact::valueChanged signals, 0: immediate update
QMap
<
QString
,
Fact
*>
_nameToFactMap
;
QMap
<
QString
,
FactGroup
*>
_nameToFactGroupMap
;
QMap
<
QString
,
FactMetaData
*>
_nameToFactMetaDataMap
;
QStringList
_factNames
;
private:
void
_setupTimer
(
void
);
QString
_camelCase
(
const
QString
&
text
);
QTimer
_updateTimer
;
};
#endif
src/FlightMap/Widgets/ValuePageWidget.qml
View file @
c7262637
This diff is collapsed.
Click to expand it.
src/FlightMap/Widgets/ValuesWidgetController.cc
View file @
c7262637
...
...
@@ -29,6 +29,7 @@ const char* InstrumentValue::_fontSizeKey = "fontSize";
const
char
*
InstrumentValue
::
_showUnitsKey
=
"showUnits"
;
const
char
*
InstrumentValue
::
_iconKey
=
"icon"
;
const
char
*
InstrumentValue
::
_iconPositionKey
=
"iconPosition"
;
const
char
*
InstrumentValue
::
_vehicleFactGroupName
=
"Vehicle"
;
QStringList
InstrumentValue
::
_iconNames
;
...
...
@@ -234,28 +235,32 @@ void ValuesWidgetController::_loadSettings(void)
QStringList
largeValues
=
settings
.
value
(
_deprecatedLargeValuesKey
).
toStringList
();
QStringList
smallValues
=
settings
.
value
(
_deprecatedSmallValuesKey
).
toStringList
();
QStringList
altitudeProperties
=
{
"
altitudeRelative"
,
"a
ltitudeAMSL"
};
QStringList
altitudeProperties
=
{
"
AltitudeRelative"
,
"A
ltitudeAMSL"
};
int
rowIndex
=
-
1
;
int
valueCount
=
0
;
QmlObjectListModel
*
rowModel
=
nullptr
;
for
(
const
QString
&
largeValue
:
largeValues
)
{
QStringList
parts
=
largeValue
.
split
(
"."
);
QStringList
parts
=
largeValue
.
split
(
"."
);
QString
factGroupName
=
_pascalCase
(
parts
[
0
]);
QString
factName
=
_pascalCase
(
parts
[
1
]);
rowModel
=
appendRow
(
false
/* addBlankColumn */
);
rowIndex
++
;
InstrumentValue
*
colValue
=
appendColumn
(
rowIndex
);
colValue
->
setFact
(
parts
[
0
],
parts
[
1
],
QString
()
);
colValue
->
setFact
(
factGroupName
,
factName
);
colValue
->
setLabel
(
colValue
->
fact
()
->
shortDescription
());
colValue
->
setShowUnits
(
true
);
colValue
->
setFontSize
(
altitudeProperties
.
contains
(
parts
[
1
]
)
?
InstrumentValue
::
LargeFontSize
:
InstrumentValue
::
DefaultFontSize
);
colValue
->
setFontSize
(
altitudeProperties
.
contains
(
factName
)
?
InstrumentValue
::
LargeFontSize
:
InstrumentValue
::
DefaultFontSize
);
}
valueCount
=
0
;
rowModel
=
nullptr
;
for
(
const
QString
&
smallValue
:
smallValues
)
{
QStringList
parts
=
smallValue
.
split
(
"."
);
QStringList
parts
=
smallValue
.
split
(
"."
);
QString
factGroupName
=
_pascalCase
(
parts
[
0
]);
QString
factName
=
_pascalCase
(
parts
[
1
]);
if
(
!
(
valueCount
++
&
1
))
{
rowModel
=
appendRow
(
false
/* addBlankColumn */
);
...
...
@@ -263,7 +268,7 @@ void ValuesWidgetController::_loadSettings(void)
}
InstrumentValue
*
colValue
=
appendColumn
(
rowIndex
);
colValue
->
setFact
(
parts
[
0
],
parts
[
1
],
QString
()
);
colValue
->
setFact
(
factGroupName
,
factName
);
colValue
->
setLabel
(
colValue
->
fact
()
->
shortDescription
());
colValue
->
setShowUnits
(
true
);
colValue
->
setFontSize
(
InstrumentValue
::
SmallFontSize
);
...
...
@@ -332,6 +337,11 @@ void ValuesWidgetController::setValuesModelParentController(ValuesWidgetControll
}
}
QString
ValuesWidgetController
::
_pascalCase
(
const
QString
&
text
)
{
return
text
[
0
].
toUpper
()
+
text
.
right
(
text
.
length
()
-
1
);
}
InstrumentValue
::
InstrumentValue
(
Vehicle
*
activeVehicle
,
FontSize
fontSize
,
QmlObjectListModel
*
rowModel
)
:
QObject
(
rowModel
)
,
_activeVehicle
(
activeVehicle
)
...
...
@@ -342,17 +352,27 @@ InstrumentValue::InstrumentValue(Vehicle* activeVehicle, FontSize fontSize, QmlO
QDir
iconDir
(
":/InstrumentValueIcons/"
);
_iconNames
=
iconDir
.
entryList
();
}
activeVehicleChanged
(
_activeVehicle
);
}
void
InstrumentValue
::
activeVehicleChanged
(
Vehicle
*
activeVehicle
)
{
_activeVehicle
=
activeVehicle
;
_factGroupNames
.
clear
();
_factGroupNames
=
_activeVehicle
->
factGroupNames
();
for
(
QString
&
name
:
_factGroupNames
)
{
name
[
0
]
=
name
[
0
].
toUpper
();
}
_factGroupNames
.
prepend
(
_vehicleFactGroupName
);
emit
factGroupNamesChanged
(
_factGroupNames
);
if
(
_fact
)
{
_fact
=
nullptr
;
FactGroup
*
factGroup
=
nullptr
;
if
(
_factGroupName
==
QStringLiteral
(
"Vehicle"
)
)
{
if
(
_factGroupName
==
_vehicleFactGroupName
)
{
factGroup
=
_activeVehicle
;
}
else
{
factGroup
=
_activeVehicle
->
getFactGroup
(
_factGroupName
);
...
...
@@ -365,37 +385,47 @@ void InstrumentValue::activeVehicleChanged(Vehicle* activeVehicle)
}
}
void
InstrumentValue
::
setFact
(
QString
factGroupName
,
QString
factName
,
QString
label
)
void
InstrumentValue
::
setFact
(
const
QString
&
factGroupName
,
const
QString
&
factName
)
{
if
(
_fact
)
{
_fact
=
nullptr
;
}
FactGroup
*
factGroup
=
nullptr
;
if
(
factGroupName
==
QStringLiteral
(
"Vehicle"
)
)
{
if
(
factGroupName
==
_vehicleFactGroupName
)
{
factGroup
=
_activeVehicle
;
}
else
{
factGroup
=
_activeVehicle
->
getFactGroup
(
factGroupName
);
}
_factValueNames
.
clear
();
_factValueNames
=
factGroup
->
factNames
();
for
(
QString
&
name
:
_factValueNames
)
{
name
[
0
]
=
name
[
0
].
toUpper
();
}
QString
nonEmptyFactName
;
if
(
factGroup
)
{
_fact
=
factGroup
->
getFact
(
factName
);
if
(
factName
.
isEmpty
())
{
nonEmptyFactName
=
_factValueNames
[
0
];
}
else
{
nonEmptyFactName
=
factName
;
}
_fact
=
factGroup
->
getFact
(
nonEmptyFactName
);
}
if
(
_fact
)
{
_factName
=
factName
;
_factGroupName
=
factGroupName
;
_
label
=
label
;
_
factName
=
nonEmptyFactName
;
}
else
{
_factName
.
clear
();
_factGroupName
.
clear
();
_label
.
clear
();
}
emit
labelChanged
(
_label
);
emit
fact
Changed
(
_fact
);
emit
fact
NameChanged
(
_fact
Name
);
emit
fact
GroupNameChanged
(
_factGroupName
);
emit
factChanged
(
_fact
);
emit
fact
NameChanged
(
_factName
);
emit
fact
GroupNameChanged
(
_factGroup
Name
);
emit
fact
ValueNamesChanged
(
_factValueNames
);
}
void
InstrumentValue
::
_setFontSize
(
FontSize
fontSize
)
...
...
@@ -423,7 +453,7 @@ void InstrumentValue::saveToSettings(QSettings& settings) const
{
if
(
_fact
)
{
settings
.
setValue
(
_factGroupNameKey
,
_factGroupName
);
settings
.
setValue
(
_factNameKey
,
_fact
->
name
()
);
settings
.
setValue
(
_factNameKey
,
_fact
Name
);
}
else
{
settings
.
setValue
(
_factGroupNameKey
,
""
);
settings
.
setValue
(
_factNameKey
,
""
);
...
...
@@ -446,7 +476,7 @@ void InstrumentValue::readFromSettings(const QSettings& settings)
QString
factName
=
settings
.
value
(
_factNameKey
).
toString
();
if
(
!
factName
.
isEmpty
())
{
setFact
(
_factGroupName
,
factName
,
_label
);
setFact
(
_factGroupName
,
factName
);
}
emit
factChanged
(
_fact
);
...
...
src/FlightMap/Widgets/ValuesWidgetController.h
View file @
c7262637
...
...
@@ -38,7 +38,10 @@ public:
InstrumentValue
(
Vehicle
*
activeVehicle
,
FontSize
fontSize
,
QmlObjectListModel
*
rowModel
);
Q_PROPERTY
(
QStringList
factGroupNames
MEMBER
_factGroupNames
NOTIFY
factGroupNamesChanged
)
Q_PROPERTY
(
QStringList
factValueNames
MEMBER
_factValueNames
NOTIFY
factValueNamesChanged
)
Q_PROPERTY
(
QString
factGroupName
MEMBER
_factGroupName
NOTIFY
factGroupNameChanged
)
Q_PROPERTY
(
QString
factName
MEMBER
_factName
NOTIFY
factNameChanged
)
Q_PROPERTY
(
Fact
*
fact
READ
fact
NOTIFY
factChanged
)
Q_PROPERTY
(
QString
label
READ
label
WRITE
setLabel
NOTIFY
labelChanged
)
Q_PROPERTY
(
QString
icon
READ
icon
WRITE
setIcon
NOTIFY
iconChanged
)
///< If !isEmpty icon will be show instead of label
...
...
@@ -49,8 +52,8 @@ public:
Q_PROPERTY
(
QStringList
fontSizeNames
MEMBER
_fontSizeNames
CONSTANT
)
Q_PROPERTY
(
bool
showUnits
READ
showUnits
WRITE
setShowUnits
NOTIFY
showUnitsChanged
)
Q_INVOKABLE
void
setFact
(
QString
factGroupName
,
QString
factName
,
QString
label
);
Q_INVOKABLE
void
clearFact
(
void
);
Q_INVOKABLE
void
setFact
(
const
QString
&
factGroupName
,
const
QString
&
factName
);
Q_INVOKABLE
void
clearFact
(
void
);
Fact
*
fact
(
void
)
{
return
_fact
;
}
FontSize
fontSize
(
void
)
const
{
return
_fontSize
;
}
...
...
@@ -76,6 +79,8 @@ signals:
void
showUnitsChanged
(
bool
showUnits
);
void
iconChanged
(
const
QString
&
icon
);
void
iconPositionChanged
(
IconPosition
iconPosition
);
void
factGroupNamesChanged
(
const
QStringList
&
factGroupNames
);
void
factValueNamesChanged
(
const
QStringList
&
factValueNames
);
private:
void
_setFontSize
(
FontSize
fontSize
);
...
...
@@ -90,6 +95,8 @@ private:
FontSize
_fontSize
=
DefaultFontSize
;
QString
_icon
;
IconPosition
_iconPosition
=
IconLeft
;
QStringList
_factGroupNames
;
QStringList
_factValueNames
;
static
const
QStringList
_iconPositionNames
;
static
QStringList
_iconNames
;
...
...
@@ -102,6 +109,7 @@ private:
static
const
char
*
_showUnitsKey
;
static
const
char
*
_iconKey
;
static
const
char
*
_iconPositionKey
;
static
const
char
*
_vehicleFactGroupName
;
};
Q_DECLARE_METATYPE
(
InstrumentValue
::
FontSize
)
...
...
@@ -146,7 +154,7 @@ private:
InstrumentValue
*
_createNewInstrumentValueWorker
(
Vehicle
*
activeVehicle
,
InstrumentValue
::
FontSize
fontSize
,
QmlObjectListModel
*
rowModel
);
void
_loadSettings
(
void
);
void
_connectSignalsToController
(
InstrumentValue
*
value
,
ValuesWidgetController
*
controller
);
QString
_pascalCase
(
const
QString
&
text
);
MultiVehicleManager
*
_multiVehicleMgr
=
nullptr
;
QmlObjectListModel
*
_valuesModel
=
nullptr
;
...
...
src/api/QGCCorePlugin.cc
View file @
c7262637
...
...
@@ -417,21 +417,21 @@ QmlObjectListModel* QGCCorePlugin::valuesWidgetDefaultSettings(ValuesWidgetContr
QmlObjectListModel
*
columnModel
=
controller
.
appendRow
();
InstrumentValue
*
colValue
=
columnModel
->
value
<
InstrumentValue
*>
(
0
);
colValue
->
setFact
(
"Vehicle"
,
"
altitudeRelative"
,
QString
()
);
colValue
->
setFact
(
"Vehicle"
,
"
AltitudeRelative"
);
colValue
->
setLabel
(
colValue
->
fact
()
->
shortDescription
());
colValue
->
setShowUnits
(
true
);
colValue
->
setFontSize
(
InstrumentValue
::
LargeFontSize
);
columnModel
=
controller
.
appendRow
();
colValue
=
columnModel
->
value
<
InstrumentValue
*>
(
0
);
colValue
->
setFact
(
"Vehicle"
,
"
groundSpeed"
,
QString
()
);
colValue
->
setFact
(
"Vehicle"
,
"
GroundSpeed"
);
colValue
->
setLabel
(
colValue
->
fact
()
->
shortDescription
());
colValue
->
setShowUnits
(
true
);
colValue
->
setFontSize
(
InstrumentValue
::
DefaultFontSize
);
columnModel
=
controller
.
appendRow
();
colValue
=
columnModel
->
value
<
InstrumentValue
*>
(
0
);
colValue
->
setFact
(
"Vehicle"
,
"
flightTime"
,
QString
()
);
colValue
->
setFact
(
"Vehicle"
,
"
FlightTime"
);
colValue
->
setLabel
(
colValue
->
fact
()
->
shortDescription
());
colValue
->
setShowUnits
(
false
);
colValue
->
setFontSize
(
InstrumentValue
::
DefaultFontSize
);
...
...
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