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
c6a366bf
Commit
c6a366bf
authored
Dec 23, 2018
by
Gus Grubba
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Completed settings.
parent
21d9ae69
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
206 additions
and
75 deletions
+206
-75
Fact.cc
src/FactSystem/Fact.cc
+12
-7
Fact.h
src/FactSystem/Fact.h
+1
-0
TaisyncManager.cc
src/Taisync/TaisyncManager.cc
+99
-51
TaisyncManager.h
src/Taisync/TaisyncManager.h
+14
-10
TaisyncSettings.cc
src/Taisync/TaisyncSettings.cc
+13
-3
TaisyncSettings.h
src/Taisync/TaisyncSettings.h
+1
-0
TaisyncSettings.qml
src/Taisync/TaisyncSettings.qml
+66
-4
No files found.
src/FactSystem/Fact.cc
View file @
c6a366bf
...
...
@@ -147,15 +147,20 @@ void Fact::setCookedValue(const QVariant& value)
}
}
void
Fact
::
setEnumStringValue
(
const
QString
&
value
)
int
Fact
::
valueIndex
(
const
QString
&
value
)
{
if
(
_metaData
)
{
int
index
=
_metaData
->
enumStrings
().
indexOf
(
value
);
if
(
index
!=
-
1
)
{
setCookedValue
(
_metaData
->
enumValues
()[
index
]);
}
}
else
{
qWarning
()
<<
kMissingMetadata
<<
name
();
return
_metaData
->
enumStrings
().
indexOf
(
value
);
}
qWarning
()
<<
kMissingMetadata
<<
name
();
return
-
1
;
}
void
Fact
::
setEnumStringValue
(
const
QString
&
value
)
{
int
index
=
valueIndex
(
value
);
if
(
index
!=
-
1
)
{
setCookedValue
(
_metaData
->
enumValues
()[
index
]);
}
}
...
...
src/FactSystem/Fact.h
View file @
c6a366bf
...
...
@@ -138,6 +138,7 @@ public:
void
setCookedValue
(
const
QVariant
&
value
);
void
setEnumIndex
(
int
index
);
void
setEnumStringValue
(
const
QString
&
value
);
int
valueIndex
(
const
QString
&
value
);
// The following methods allow you to defer sending of the valueChanged signals in order to implement
// rate limited signalling for ui performance. Used by FactGroup for example.
...
...
src/Taisync/TaisyncManager.cc
View file @
c6a366bf
...
...
@@ -13,13 +13,12 @@
#include "QGCApplication.h"
#include "VideoManager.h"
static
const
char
*
kTAISYNC_GROUP
=
"Taisync"
;
static
const
char
*
kRADIO_MODE
=
"RadioMode"
;
static
const
char
*
kRadioModeValues
[]
=
{
"auto"
,
"manual"
};
static
const
char
*
kRADIO_CHANNEL
=
"RadioChannel"
;
static
const
char
*
kVIDEO_OUTPUT
=
"VideoOutput"
;
static
const
char
*
kVIDEO_MODE
=
"VideoMode"
;
static
const
char
*
kVIDEO_RATE
=
"VideoRate"
;
//-----------------------------------------------------------------------------
TaisyncManager
::
TaisyncManager
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
)
...
...
@@ -27,20 +26,6 @@ TaisyncManager::TaisyncManager(QGCApplication* app, QGCToolbox* toolbox)
{
connect
(
&
_workTimer
,
&
QTimer
::
timeout
,
this
,
&
TaisyncManager
::
_checkTaisync
);
_workTimer
.
setSingleShot
(
true
);
_decodeList
.
append
(
tr
(
"Stream"
));
_decodeList
.
append
(
tr
(
"HDMI Port"
));
_rateList
.
append
(
tr
(
"Low"
));
_rateList
.
append
(
tr
(
"Medium"
));
_rateList
.
append
(
tr
(
"High"
));
}
//-----------------------------------------------------------------------------
void
TaisyncManager
::
_radioSettingsChanged
(
QVariant
)
{
if
(
_taiSettings
)
{
_taiSettings
->
setRadioSettings
(
kRadioModeValues
[
_radioMode
->
rawValue
().
toInt
()],
_radioChannel
->
enumStringValue
());
}
}
//-----------------------------------------------------------------------------
...
...
@@ -97,6 +82,25 @@ TaisyncManager::_reset()
}
}
//-----------------------------------------------------------------------------
FactMetaData
*
TaisyncManager
::
_createMetadata
(
const
char
*
name
,
QStringList
enums
)
{
FactMetaData
*
metaData
=
new
FactMetaData
(
FactMetaData
::
valueTypeUint32
,
name
,
this
);
QQmlEngine
::
setObjectOwnership
(
metaData
,
QQmlEngine
::
CppOwnership
);
metaData
->
setShortDescription
(
name
);
metaData
->
setLongDescription
(
name
);
metaData
->
setRawDefaultValue
(
QVariant
(
0
));
metaData
->
setHasControl
(
true
);
metaData
->
setReadOnly
(
false
);
for
(
int
i
=
0
;
i
<
enums
.
size
();
i
++
)
{
metaData
->
addEnumInfo
(
enums
[
i
],
QVariant
(
i
));
}
metaData
->
setRawMin
(
0
);
metaData
->
setRawMin
(
enums
.
size
()
-
1
);
return
metaData
;
}
//-----------------------------------------------------------------------------
void
TaisyncManager
::
setToolbox
(
QGCToolbox
*
toolbox
)
...
...
@@ -104,50 +108,87 @@ TaisyncManager::setToolbox(QGCToolbox* toolbox)
QGCTool
::
setToolbox
(
toolbox
);
{
//-- Radio Mode
FactMetaData
*
metaData
=
new
FactMetaData
(
FactMetaData
::
valueTypeUint32
,
kRADIO_MODE
,
this
);
QQmlEngine
::
setObjectOwnership
(
metaData
,
QQmlEngine
::
CppOwnership
);
metaData
->
setShortDescription
(
kRADIO_MODE
);
metaData
->
setLongDescription
(
kRADIO_MODE
);
metaData
->
setRawDefaultValue
(
QVariant
(
0
));
metaData
->
setHasControl
(
true
);
metaData
->
setReadOnly
(
false
);
metaData
->
addEnumInfo
(
tr
(
"Auto"
),
QVariant
(
0
));
metaData
->
addEnumInfo
(
tr
(
"Manual"
),
QVariant
(
1
));
_radioMode
=
new
Fact
(
"Taisync"
,
metaData
,
this
);
QStringList
enums
;
enums
.
append
(
tr
(
"Auto"
));
enums
.
append
(
tr
(
"Manual"
));
FactMetaData
*
metaData
=
_createMetadata
(
kRADIO_MODE
,
enums
);
_radioMode
=
new
Fact
(
kTAISYNC_GROUP
,
metaData
,
this
);
QQmlEngine
::
setObjectOwnership
(
_radioMode
,
QQmlEngine
::
CppOwnership
);
connect
(
_radioMode
,
&
Fact
::
rawValueChanged
,
this
,
&
TaisyncManager
::
_radioSettingsChanged
);
_radioModeList
.
append
(
"auto"
);
_radioModeList
.
append
(
"manual"
);
connect
(
_radioMode
,
&
Fact
::
_containerRawValueChanged
,
this
,
&
TaisyncManager
::
_radioSettingsChanged
);
}
{
//-- Radio Channel
FactMetaData
*
metaData
=
new
FactMetaData
(
FactMetaData
::
valueTypeUint32
,
kRADIO_CHANNEL
,
this
);
QQmlEngine
::
setObjectOwnership
(
metaData
,
QQmlEngine
::
CppOwnership
);
metaData
->
setShortDescription
(
kRADIO_CHANNEL
);
metaData
->
setLongDescription
(
kRADIO_CHANNEL
);
metaData
->
setRawDefaultValue
(
QVariant
(
0
));
metaData
->
setHasControl
(
true
);
metaData
->
setReadOnly
(
false
);
QStringList
enums
;
for
(
int
i
=
0
;
i
<
13
;
i
++
)
{
metaData
->
addEnumInfo
(
QString
(
"ch%1"
).
arg
(
i
),
QVariant
(
i
));
enums
.
append
(
QString
(
"ch%1"
).
arg
(
i
));
}
_radioChannel
=
new
Fact
(
"Taisync"
,
metaData
,
this
);
FactMetaData
*
metaData
=
_createMetadata
(
kRADIO_CHANNEL
,
enums
);
_radioChannel
=
new
Fact
(
kTAISYNC_GROUP
,
metaData
,
this
);
QQmlEngine
::
setObjectOwnership
(
_radioChannel
,
QQmlEngine
::
CppOwnership
);
connect
(
_radioChannel
,
&
Fact
::
rawValueChanged
,
this
,
&
TaisyncManager
::
_radioSettingsChanged
);
connect
(
_radioChannel
,
&
Fact
::
_containerRawValueChanged
,
this
,
&
TaisyncManager
::
_radioSettingsChanged
);
}
{
//-- Video Output
QStringList
enums
;
enums
.
append
(
tr
(
"Stream"
));
enums
.
append
(
tr
(
"HDMI Port"
));
FactMetaData
*
metaData
=
_createMetadata
(
kVIDEO_OUTPUT
,
enums
);
_videoOutput
=
new
Fact
(
kTAISYNC_GROUP
,
metaData
,
this
);
QQmlEngine
::
setObjectOwnership
(
_videoOutput
,
QQmlEngine
::
CppOwnership
);
_videoOutputList
.
append
(
"phone"
);
_videoOutputList
.
append
(
"hdmi"
);
connect
(
_videoOutput
,
&
Fact
::
_containerRawValueChanged
,
this
,
&
TaisyncManager
::
_videoSettingsChanged
);
}
{
//-- Video Mode
QStringList
enums
;
enums
.
append
(
"H264"
);
enums
.
append
(
"H265"
);
FactMetaData
*
metaData
=
_createMetadata
(
kVIDEO_MODE
,
enums
);
_videoMode
=
new
Fact
(
kTAISYNC_GROUP
,
metaData
,
this
);
QQmlEngine
::
setObjectOwnership
(
_videoMode
,
QQmlEngine
::
CppOwnership
);
connect
(
_videoMode
,
&
Fact
::
_containerRawValueChanged
,
this
,
&
TaisyncManager
::
_videoSettingsChanged
);
}
{
//-- Video Rate
QStringList
enums
;
enums
.
append
(
tr
(
"Low"
));
enums
.
append
(
tr
(
"Medium"
));
enums
.
append
(
tr
(
"High"
));
FactMetaData
*
metaData
=
_createMetadata
(
kVIDEO_RATE
,
enums
);
_videoRate
=
new
Fact
(
kTAISYNC_GROUP
,
metaData
,
this
);
QQmlEngine
::
setObjectOwnership
(
_videoRate
,
QQmlEngine
::
CppOwnership
);
_videoRateList
.
append
(
"low"
);
_videoRateList
.
append
(
"middle"
);
_videoRateList
.
append
(
"high"
);
connect
(
_videoRate
,
&
Fact
::
_containerRawValueChanged
,
this
,
&
TaisyncManager
::
_videoSettingsChanged
);
}
_reset
();
}
//-----------------------------------------------------------------------------
void
TaisyncManager
::
setDecodeIndex
(
int
idx
)
TaisyncManager
::
_radioSettingsChanged
(
QVariant
)
{
(
void
)
idx
;
if
(
_taiSettings
)
{
_taiSettings
->
setRadioSettings
(
_radioModeList
[
_radioMode
->
rawValue
().
toInt
()],
_radioChannel
->
enumStringValue
());
}
}
//-----------------------------------------------------------------------------
void
TaisyncManager
::
setRateIndex
(
int
idx
)
TaisyncManager
::
_videoSettingsChanged
(
QVariant
)
{
(
void
)
idx
;
if
(
_taiSettings
)
{
_taiSettings
->
setVideoSettings
(
_videoOutputList
[
_videoOutput
->
rawValue
().
toInt
()],
_videoMode
->
enumStringValue
(),
_videoRateList
[
_videoRate
->
rawValue
().
toInt
()]);
}
}
//-----------------------------------------------------------------------------
...
...
@@ -314,6 +355,7 @@ TaisyncManager::_checkTaisync()
void
TaisyncManager
::
_updateSettings
(
QByteArray
jSonData
)
{
qCDebug
(
TaisyncVerbose
)
<<
jSonData
;
QJsonParseError
jsonParseError
;
QJsonDocument
doc
=
QJsonDocument
::
fromJson
(
jSonData
,
&
jsonParseError
);
if
(
jsonParseError
.
error
!=
QJsonParseError
::
NoError
)
{
...
...
@@ -348,14 +390,20 @@ TaisyncManager::_updateSettings(QByteArray jSonData)
}
//-- Radio Settings?
}
else
if
(
jSonData
.
contains
(
"
\"
freq
\"
:"
))
{
QString
mode
=
jObj
[
"mode"
].
toString
(
_radioMode
->
enumStringValue
());
QString
channel
=
jObj
[
"freq"
].
toString
(
_radioChannel
->
enumStringValue
());
_radioMode
->
_containerSetRawValue
(
mode
);
_radioChannel
->
_containerSetRawValue
(
channel
);
int
idx
=
_radioModeList
.
indexOf
(
jObj
[
"mode"
].
toString
(
_radioMode
->
enumStringValue
()));
if
(
idx
>=
0
)
_radioMode
->
_containerSetRawValue
(
idx
);
idx
=
_radioChannel
->
valueIndex
(
jObj
[
"freq"
].
toString
(
_radioChannel
->
enumStringValue
()));
if
(
idx
<
0
)
idx
=
0
;
_radioChannel
->
_containerSetRawValue
(
idx
);
//-- Video Settings?
}
else
if
(
jSonData
.
contains
(
"
\"
maxbitrate
\"
:"
))
{
//{\"decode\":\"phone\",\"mode\":\"h264\",\"maxbitrate\":\"high\"}
int
idx
;
idx
=
_videoMode
->
valueIndex
(
jObj
[
"mode"
].
toString
(
_videoMode
->
enumStringValue
()));
if
(
idx
<
0
)
idx
=
0
;
_videoMode
->
_containerSetRawValue
(
idx
);
idx
=
_videoRateList
.
indexOf
(
jObj
[
"maxbitrate"
].
toString
(
_videoMode
->
enumStringValue
()));
if
(
idx
>=
0
)
_videoRate
->
_containerSetRawValue
(
idx
);
idx
=
_videoOutputList
.
indexOf
(
jObj
[
"decode"
].
toString
(
_videoOutput
->
enumStringValue
()));
if
(
idx
>=
0
)
_videoOutput
->
_containerSetRawValue
(
idx
);
}
}
src/Taisync/TaisyncManager.h
View file @
c6a366bf
...
...
@@ -36,12 +36,11 @@ public:
Q_PROPERTY
(
int
downlinkRSSI
READ
downlinkRSSI
NOTIFY
linkChanged
)
Q_PROPERTY
(
QString
serialNumber
READ
serialNumber
NOTIFY
infoChanged
)
Q_PROPERTY
(
QString
fwVersion
READ
fwVersion
NOTIFY
infoChanged
)
Q_PROPERTY
(
QStringList
decodeList
READ
decodeList
NOTIFY
decodeIndexChanged
)
Q_PROPERTY
(
int
decodeIndex
READ
decodeIndex
WRITE
setDecodeIndex
NOTIFY
decodeIndexChanged
)
Q_PROPERTY
(
QStringList
rateList
READ
rateList
NOTIFY
rateIndexChanged
)
Q_PROPERTY
(
int
rateIndex
READ
rateIndex
WRITE
setRateIndex
NOTIFY
rateIndexChanged
)
Q_PROPERTY
(
Fact
*
radioMode
READ
radioMode
CONSTANT
)
Q_PROPERTY
(
Fact
*
radioChannel
READ
radioChannel
CONSTANT
)
Q_PROPERTY
(
Fact
*
videoOutput
READ
videoOutput
CONSTANT
)
Q_PROPERTY
(
Fact
*
videoMode
READ
videoMode
CONSTANT
)
Q_PROPERTY
(
Fact
*
videoRate
READ
videoRate
CONSTANT
)
explicit
TaisyncManager
(
QGCApplication
*
app
,
QGCToolbox
*
toolbox
);
~
TaisyncManager
()
override
;
...
...
@@ -55,14 +54,11 @@ public:
int
downlinkRSSI
()
{
return
_uplinkRSSI
;
}
QString
serialNumber
()
{
return
_serialNumber
;
}
QString
fwVersion
()
{
return
_fwVersion
;
}
QStringList
decodeList
()
{
return
_decodeList
;
}
int
decodeIndex
()
{
return
_decodeIndex
;
}
void
setDecodeIndex
(
int
idx
);
QStringList
rateList
()
{
return
_rateList
;
}
int
rateIndex
()
{
return
_rateIndex
;
}
void
setRateIndex
(
int
idx
);
Fact
*
radioMode
()
{
return
_radioMode
;
}
Fact
*
radioChannel
()
{
return
_radioChannel
;
}
Fact
*
videoOutput
()
{
return
_videoOutput
;
}
Fact
*
videoMode
()
{
return
_videoMode
;
}
Fact
*
videoRate
()
{
return
_videoRate
;
}
signals:
void
linkChanged
();
...
...
@@ -80,6 +76,7 @@ private slots:
void
_setEnabled
();
void
_setVideoEnabled
();
void
_radioSettingsChanged
(
QVariant
);
void
_videoSettingsChanged
(
QVariant
);
#if defined(__ios__) || defined(__android__)
void
_readUDPBytes
();
void
_readTelemBytes
(
QByteArray
bytesIn
);
...
...
@@ -88,6 +85,7 @@ private slots:
private:
void
_close
();
void
_reset
();
FactMetaData
*
_createMetadata
(
const
char
*
name
,
QStringList
enums
);
private:
...
...
@@ -130,4 +128,10 @@ private:
QString
_fwVersion
;
Fact
*
_radioMode
=
nullptr
;
Fact
*
_radioChannel
=
nullptr
;
Fact
*
_videoOutput
=
nullptr
;
Fact
*
_videoMode
=
nullptr
;
Fact
*
_videoRate
=
nullptr
;
QStringList
_radioModeList
;
QStringList
_videoOutputList
;
QStringList
_videoRateList
;
};
src/Taisync/TaisyncSettings.cc
View file @
c6a366bf
...
...
@@ -21,6 +21,7 @@ static const char* kPostReq =
static
const
char
*
kGetReq
=
"GET %1 HTTP/1.1
\r\n\r\n
"
;
static
const
char
*
kRadioURI
=
"/v1/radio.json"
;
static
const
char
*
kVideoURI
=
"/v1/video.json"
;
//-----------------------------------------------------------------------------
TaisyncSettings
::
TaisyncSettings
(
QObject
*
parent
)
...
...
@@ -64,7 +65,7 @@ TaisyncSettings::requestFreqScan()
bool
TaisyncSettings
::
requestVideoSettings
()
{
return
_request
(
"/v1/video.json"
);
return
_request
(
kVideoURI
);
}
//-----------------------------------------------------------------------------
...
...
@@ -93,7 +94,7 @@ TaisyncSettings::_post(const QString& post, const QString &postPayload)
{
if
(
_tcpSocket
)
{
QString
req
=
QString
(
kPostReq
).
arg
(
post
).
arg
(
postPayload
.
size
()).
arg
(
postPayload
);
qCDebug
(
TaisyncVerbose
)
<<
"
Reque
st"
<<
req
;
qCDebug
(
TaisyncVerbose
)
<<
"
Po
st"
<<
req
;
_tcpSocket
->
write
(
req
.
toUtf8
());
return
true
;
}
...
...
@@ -105,10 +106,19 @@ bool
TaisyncSettings
::
setRadioSettings
(
const
QString
&
mode
,
const
QString
&
channel
)
{
static
const
char
*
kRadioPost
=
"{
\"
mode
\"
:
\"
%1
\"
,
\"
freq
\"
:
\"
%2
\"
}"
;
QString
post
=
QString
(
kRadioPost
).
arg
(
mode
.
size
()
).
arg
(
channel
);
QString
post
=
QString
(
kRadioPost
).
arg
(
mode
).
arg
(
channel
);
return
_post
(
kRadioURI
,
post
);
}
//-----------------------------------------------------------------------------
bool
TaisyncSettings
::
setVideoSettings
(
const
QString
&
output
,
const
QString
&
mode
,
const
QString
&
rate
)
{
static
const
char
*
kVideoPost
=
"{
\"
decode
\"
:
\"
%1
\"
,
\"
mode
\"
:
\"
%2
\"
,
\"
maxbitrate
\"
:
\"
%3
\"
}"
;
QString
post
=
QString
(
kVideoPost
).
arg
(
output
).
arg
(
mode
).
arg
(
rate
);
return
_post
(
kVideoURI
,
post
);
}
//-----------------------------------------------------------------------------
void
TaisyncSettings
::
_readBytes
()
...
...
src/Taisync/TaisyncSettings.h
View file @
c6a366bf
...
...
@@ -23,6 +23,7 @@ public:
bool
requestVideoSettings
();
bool
requestRadioSettings
();
bool
setRadioSettings
(
const
QString
&
mode
,
const
QString
&
channel
);
bool
setVideoSettings
(
const
QString
&
output
,
const
QString
&
mode
,
const
QString
&
rate
);
signals:
void
updateSettings
(
QByteArray
jSonData
);
...
...
src/Taisync/TaisyncSettings.qml
View file @
c6a366bf
...
...
@@ -166,7 +166,7 @@ QGCView {
height
:
devInfoLabel
.
height
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.horizontalCenter
:
parent
.
horizontalCenter
visible
:
_taisyncEnabled
visible
:
_taisyncEnabled
&&
QGroundControl
.
taisyncManager
.
connected
QGCLabel
{
id
:
devInfoLabel
text
:
qsTr
(
"
Device Info
"
)
...
...
@@ -177,7 +177,7 @@ QGCView {
height
:
devInfoCol
.
height
+
(
ScreenTools
.
defaultFontPixelHeight
*
2
)
width
:
_panelWidth
color
:
qgcPal
.
windowShade
visible
:
_taisyncEnabled
visible
:
_taisyncEnabled
&&
QGroundControl
.
taisyncManager
.
connected
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.horizontalCenter
:
parent
.
horizontalCenter
Column
{
...
...
@@ -214,7 +214,7 @@ QGCView {
height
:
radioSettingsLabel
.
height
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.horizontalCenter
:
parent
.
horizontalCenter
visible
:
_taisyncEnabled
visible
:
_taisyncEnabled
&&
QGroundControl
.
taisyncManager
.
linkConnected
QGCLabel
{
id
:
radioSettingsLabel
text
:
qsTr
(
"
Radio Settings
"
)
...
...
@@ -225,7 +225,7 @@ QGCView {
height
:
radioSettingsCol
.
height
+
(
ScreenTools
.
defaultFontPixelHeight
*
2
)
width
:
_panelWidth
color
:
qgcPal
.
windowShade
visible
:
_taisyncEnabled
visible
:
_taisyncEnabled
&&
QGroundControl
.
taisyncManager
.
linkConnected
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.horizontalCenter
:
parent
.
horizontalCenter
Column
{
...
...
@@ -260,6 +260,68 @@ QGCView {
}
}
}
//-----------------------------------------------------------------
//-- Video Settings
Item
{
width
:
_panelWidth
height
:
videoSettingsLabel
.
height
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.horizontalCenter
:
parent
.
horizontalCenter
visible
:
_taisyncEnabled
&&
QGroundControl
.
taisyncManager
.
linkConnected
QGCLabel
{
id
:
videoSettingsLabel
text
:
qsTr
(
"
Video Settings
"
)
font.family
:
ScreenTools
.
demiboldFontFamily
}
}
Rectangle
{
height
:
videoSettingsCol
.
height
+
(
ScreenTools
.
defaultFontPixelHeight
*
2
)
width
:
_panelWidth
color
:
qgcPal
.
windowShade
visible
:
_taisyncEnabled
&&
QGroundControl
.
taisyncManager
.
linkConnected
anchors.margins
:
ScreenTools
.
defaultFontPixelWidth
anchors.horizontalCenter
:
parent
.
horizontalCenter
Column
{
id
:
videoSettingsCol
spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
width
:
parent
.
width
anchors.centerIn
:
parent
GridLayout
{
anchors.margins
:
ScreenTools
.
defaultFontPixelHeight
columnSpacing
:
ScreenTools
.
defaultFontPixelWidth
*
2
anchors.horizontalCenter
:
parent
.
horizontalCenter
columns
:
2
QGCLabel
{
text
:
qsTr
(
"
Video Output:
"
)
Layout.minimumWidth
:
_labelWidth
}
FactComboBox
{
fact
:
QGroundControl
.
taisyncManager
.
videoOutput
indexModel
:
true
enabled
:
QGroundControl
.
taisyncManager
.
linkConnected
Layout.minimumWidth
:
_valueWidth
}
QGCLabel
{
text
:
qsTr
(
"
Encoder:
"
)
}
FactComboBox
{
fact
:
QGroundControl
.
taisyncManager
.
videoMode
indexModel
:
true
enabled
:
QGroundControl
.
taisyncManager
.
linkConnected
Layout.minimumWidth
:
_valueWidth
}
QGCLabel
{
text
:
qsTr
(
"
Bit Rate:
"
)
}
FactComboBox
{
fact
:
QGroundControl
.
taisyncManager
.
videoRate
indexModel
:
true
enabled
:
QGroundControl
.
taisyncManager
.
linkConnected
Layout.minimumWidth
:
_valueWidth
}
}
}
}
}
}
}
...
...
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