Improve Platform Grabber UI (#1073)

This commit is contained in:
LordGrey 2020-11-14 16:22:21 +01:00 committed by GitHub
parent e2c8735fde
commit 758d9a70c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 136 additions and 100 deletions

View File

@ -298,7 +298,6 @@
"edt_conf_fbs_heading_title": "Flatbuffers Server",
"edt_conf_fbs_timeout_expl": "If no data are received for the given period, the component will be (soft) disabled.",
"edt_conf_fbs_timeout_title": "Timeout",
"edt_conf_fg_device_title": "Device",
"edt_conf_fg_display_expl": "Select which desktop should be captured (multi monitor setup)",
"edt_conf_fg_display_title": "Display",
"edt_conf_fg_frequency_Hz_expl": "How fast new pictures are captured",

View File

@ -123,7 +123,6 @@ $(document).ready( function() {
conf_editor_v4l2.getEditor(path + 'standard').enable();
toggleOption('device', true);
} else if (val == 'auto') {
V4L2properties.forEach(function (item) {
conf_editor_v4l2.getEditor(path + item).setValue('auto');
@ -136,7 +135,6 @@ $(document).ready( function() {
(toggleOption('device', false), toggleOption('input', false),
toggleOption('width', false), toggleOption('height', false),
toggleOption('fps', false));
} else {
var grabberV4L2 = ed.parent;
V4L2properties.forEach(function (item) {
@ -226,6 +224,28 @@ $(document).ready( function() {
}, true, true);
conf_editor_fg.on('change', function () {
//Remove Grabbers which are not supported
var grabbers = window.serverInfo.grabbers.available;
var selector = "root_framegrabber_type";
var options = $("#" + selector + " option");
for (var i = 0; i < options.length; i++) {
var type = options[i].value;
if (grabbers.indexOf(type) === -1) {
$("#" + selector + " option[value='" + type + "']").remove();
}
}
if (window.serverInfo.grabbers.active)
{
var activegrabber = window.serverInfo.grabbers.active.toLowerCase();
$("#" + selector + " option[value='" + activegrabber + "']").attr('selected', 'selected');
}
var selectedType = $("#root_framegrabber_type").val();
filerFgGrabberOptions(selectedType);
conf_editor_fg.validate().length || window.readOnlyMode ? $('#btn_submit_fg').attr('disabled', true) : $('#btn_submit_fg').attr('disabled', false);
});
@ -266,7 +286,6 @@ $(document).ready( function() {
if (window.serverConfig.grabberV4L2.framerates == 'custom' && window.serverConfig.grabberV4L2.device != 'auto')
toggleOption('fps', true);
});
$('#btn_submit_v4l2').off().on('click', function () {
@ -311,24 +330,47 @@ $(document).ready( function() {
}
}
function hideEl(el) {
function toggleFgOptions(el, state) {
for (var i = 0; i < el.length; i++) {
$('[data-schemapath*="root.framegrabber.'+el[i]+'"]').toggle(false);
$('[data-schemapath*="root.framegrabber.' + el[i] + '"]').toggle(state);
}
}
//hide specific options
conf_editor_fg.on('ready',function() {
function filerFgGrabberOptions(type) {
//hide specific options for grabbers found
var grabbers = window.serverInfo.grabbers.available;
if (grabbers.indexOf(type) > -1) {
toggleFgOptions(["width", "height", "pixelDecimation", "display"], true);
if (grabbers.indexOf('dispmanx') > -1)
hideEl(["device","pixelDecimation"]);
else if (grabbers.indexOf('x11') > -1 || grabbers.indexOf('xcb') > -1)
hideEl(["device","width","height"]);
else if (grabbers.indexOf('osx') > -1 )
hideEl(["device","pixelDecimation"]);
else if (grabbers.indexOf('amlogic') > -1)
hideEl(["pixelDecimation"]);
switch (type) {
case "dispmanx":
toggleFgOptions(["pixelDecimation", "display"], false);
break;
case "x11":
case "xcb":
toggleFgOptions(["width", "height", "display"], false);
break;
case "framebuffer":
toggleFgOptions(["display"], false);
break;
case "amlogic":
toggleFgOptions(["pixelDecimation", "display"], false);
break;
case "qt":
break;
case "dx":
break;
case "osx":
break;
default:
}
}
};
$('#root_framegrabber_type').change(function () {
var selectedType = $("#root_framegrabber_type").val();
filerFgGrabberOptions(selectedType);
});
removeOverlay();

View File

@ -165,10 +165,7 @@
"pixelDecimation" : 8,
// valid for qt
"display" 0,
// valid for framebuffer
"device" : "/dev/fb0"
"display" 0
},
/// The black border configuration, contains the following items:

View File

@ -95,7 +95,7 @@
"cropRight" : 0,
"cropTop" : 0,
"cropBottom" : 0,
"device" : "/dev/fb0"
"display" : 0
},
"blackborderdetector" :

View File

@ -37,12 +37,12 @@ public:
static GrabberWrapper* getInstance(){ return instance; }
///
/// Starts the grabber wich produces led values with the specified update rate
/// Starts the grabber which produces led values with the specified update rate
///
virtual bool start();
///
/// Starts maybe the grabber wich produces led values with the specified update rate
/// Starts maybe the grabber which produces led values with the specified update rate
///
virtual void tryStart();
@ -90,6 +90,12 @@ public:
///
virtual QStringList getFramerates(const QString& devicePath) const;
///
/// @brief Get active grabber name
/// @return Active grabber name
///
virtual QString getActive() const;
static QStringList availableGrabbers();
public:

View File

@ -467,8 +467,11 @@ void JsonAPI::handleServerInfoCommand(const QJsonObject &message, const QString
#if defined(ENABLE_DISPMANX) || defined(ENABLE_V4L2) || defined(ENABLE_FB) || defined(ENABLE_AMLOGIC) || defined(ENABLE_OSX) || defined(ENABLE_X11) || defined(ENABLE_XCB) || defined(ENABLE_QT)
if ( GrabberWrapper::getInstance() != nullptr )
{
grabbers["active"] = GrabberWrapper::getInstance()->getActive();
}
// get available grabbers
//grabbers["active"] = ????;
for (auto grabber : GrabberWrapper::availableGrabbers())
{
availableGrabbers.append(grabber);

View File

@ -65,6 +65,11 @@ bool GrabberWrapper::isActive() const
return _timer->isActive();
}
QString GrabberWrapper::getActive() const
{
return _grabberName;
}
QStringList GrabberWrapper::availableGrabbers()
{
QStringList grabbers;
@ -101,6 +106,10 @@ QStringList GrabberWrapper::availableGrabbers()
grabbers << "qt";
#endif
#ifdef ENABLE_DX
grabbers << "dx";
#endif
return grabbers;
}

View File

@ -101,7 +101,7 @@ SettingsManager::SettingsManager(quint8 instance, QObject* parent, bool readonly
for (auto & schemaError : schemaChecker.getMessages())
Warning(_log, "Config Fix: %s", QSTRING_CSTR(schemaError));
saveSettings(dbConfig);
saveSettings(dbConfig,true);
}
else
_qconfig = dbConfig;

View File

@ -7,13 +7,13 @@
{
"type" : "string",
"title" : "edt_conf_fg_type_title",
"enum" : ["auto","dispmanx","amlogic","x11", "xcb", "framebuffer","qt","dx"],
"enum" : ["auto","amlogic","dispmanx","dx","framebuffer","osx","qt","x11", "xcb"],
"options":
{
"enum_titles": ["edt_conf_enum_automatic","DispmanX","AMLogic","X11", "XCB", "Framebuffer","QT", "DirectX9"]
"enum_titles": ["edt_conf_enum_automatic","AMLogic","DispmanX","DirectX9","Framebuffer","OSX","QT","X11","XCB"]
},
"default" : "auto",
"propertyOrder" : 2
"propertyOrder" : 1
},
"width" :
{
@ -22,7 +22,7 @@
"minimum" : 10,
"default" : 80,
"append" : "edt_append_pixel",
"propertyOrder" : 3
"propertyOrder" : 2
},
"height" :
{
@ -49,7 +49,7 @@
"minimum" : 0,
"default" : 0,
"append" : "edt_append_pixel",
"propertyOrder" : 6
"propertyOrder" : 5
},
"cropRight" :
{
@ -58,7 +58,7 @@
"minimum" : 0,
"default" : 0,
"append" : "edt_append_pixel",
"propertyOrder" : 7
"propertyOrder" : 6
},
"cropTop" :
{
@ -67,7 +67,7 @@
"minimum" : 0,
"default" : 0,
"append" : "edt_append_pixel",
"propertyOrder" : 8
"propertyOrder" : 7
},
"cropBottom" :
{
@ -76,7 +76,7 @@
"minimum" : 0,
"default" : 0,
"append" : "edt_append_pixel",
"propertyOrder" : 9
"propertyOrder" : 8
},
"pixelDecimation" :
{
@ -85,35 +85,15 @@
"minimum" : 1,
"maximum" : 30,
"default" : 8,
"propertyOrder" : 10
},
"device" :
{
"type" : "string",
"title" : "edt_conf_fg_device_title",
"default" : "/dev/fb0",
"propertyOrder" : 11
"propertyOrder" : 9
},
"display" :
{
"type" : "integer",
"title" : "edt_conf_fg_display_title",
"minimum" : 0,
"propertyOrder" : 12
},
"amlogic_grabber" :
{
"type" : "string",
"title" : "edt_conf_fg_amlogic_grabber_title",
"default" : "amvideocap0",
"propertyOrder" : 13
},
"ge2d_mode" :
{
"type" : "integer",
"title" : "edt_conf_fg_ge2d_mode_title",
"default" : 0,
"propertyOrder" : 14
"propertyOrder" : 10
}
},
"additionalProperties" : false