void ApplicationWindow::addTabs(int size[])
{
- v4l2_queryctrl qctrl;
+ v4l2_query_ext_ctrl qec = { 0 };
unsigned ctrl_class;
unsigned i;
int id;
- memset(&qctrl, 0, sizeof(qctrl));
- qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
- while (!queryctrl(qctrl)) {
- if (is_valid_type(qctrl.type) &&
- (qctrl.flags & V4L2_CTRL_FLAG_DISABLED) == 0) {
- m_ctrlMap[qctrl.id] = qctrl;
- if (qctrl.type != V4L2_CTRL_TYPE_CTRL_CLASS)
- m_classMap[V4L2_CTRL_ID2CLASS(qctrl.id)].push_back(qctrl.id);
- }
- qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
- }
- if (qctrl.id == V4L2_CTRL_FLAG_NEXT_CTRL) {
- strcpy((char *)qctrl.name, "User Controls");
- qctrl.id = V4L2_CTRL_CLASS_USER | 1;
- qctrl.type = V4L2_CTRL_TYPE_CTRL_CLASS;
- m_ctrlMap[qctrl.id] = qctrl;
- for (id = V4L2_CID_USER_BASE; id < V4L2_CID_LASTP1; id++) {
- qctrl.id = id;
- if (!queryctrl(qctrl))
- continue;
- if (!is_valid_type(qctrl.type))
- continue;
- if (qctrl.flags & V4L2_CTRL_FLAG_DISABLED)
- continue;
- m_ctrlMap[qctrl.id] = qctrl;
- m_classMap[V4L2_CTRL_CLASS_USER].push_back(qctrl.id);
- }
- for (qctrl.id = V4L2_CID_PRIVATE_BASE;
- !queryctrl(qctrl); qctrl.id++) {
- if (!is_valid_type(qctrl.type))
- continue;
- if (qctrl.flags & V4L2_CTRL_FLAG_DISABLED)
- continue;
- m_ctrlMap[qctrl.id] = qctrl;
- m_classMap[V4L2_CTRL_CLASS_USER].push_back(qctrl.id);
+ while (query_ext_ctrl(qec, true) == 0) {
+ if (is_valid_type(qec.type) &&
+ (qec.flags & V4L2_CTRL_FLAG_DISABLED) == 0) {
+ m_ctrlMap[qec.id] = qec;
+ if (qec.type != V4L2_CTRL_TYPE_CTRL_CLASS)
+ m_classMap[V4L2_CTRL_ID2CLASS(qec.id)].push_back(qec.id);
}
}
-
- m_haveExtendedUserCtrls = false;
- for (unsigned i = 0; i < m_classMap[V4L2_CTRL_CLASS_USER].size(); i++) {
- unsigned id = m_classMap[V4L2_CTRL_CLASS_USER][i];
-
- if (m_ctrlMap[id].type == V4L2_CTRL_TYPE_INTEGER64 ||
- m_ctrlMap[id].type == V4L2_CTRL_TYPE_STRING ||
- V4L2_CTRL_DRIVER_PRIV(id)) {
- m_haveExtendedUserCtrls = true;
- break;
- }
+ if (m_classMap.find(V4L2_CTRL_CLASS_USER) != m_classMap.end() &&
+ m_ctrlMap.find(V4L2_CID_USER_CLASS) == m_ctrlMap.end()) {
+ memset(&qec, 0, sizeof(qec));
+ qec.id = V4L2_CID_USER_CLASS;
+ strcpy(qec.name, "User Controls");
+ qec.type = V4L2_CTRL_TYPE_CTRL_CLASS;
+ m_ctrlMap[qec.id] = qec;
+ }
+ if (m_classMap.find(V4L2_CTRL_CLASS_CAMERA) != m_classMap.end() &&
+ m_ctrlMap.find(V4L2_CID_CAMERA_CLASS) == m_ctrlMap.end()) {
+ // UVC still doesn't provide this :-(
+ memset(&qec, 0, sizeof(qec));
+ qec.id = V4L2_CID_CAMERA_CLASS;
+ strcpy(qec.name, "Camera Controls");
+ qec.type = V4L2_CTRL_TYPE_CTRL_CLASS;
+ m_ctrlMap[qec.id] = qec;
}
for (ClassMap::iterator iter = m_classMap.begin(); iter != m_classMap.end(); ++iter) {
m_maxw[j] = 0;
}
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
QWidget *t = new QWidget(m_tabs);
QVBoxLayout *vbox = new QVBoxLayout(t);
QWidget *w = new QWidget(t);
vbox->addWidget(w);
QGridLayout *grid = new QGridLayout(w);
- QString tabName((char *)qctrl.name);
+ QString tabName(qec.name);
if (tabName != "User Controls" && tabName.endsWith(" Controls"))
tabName.chop(9);
refresh(ctrl_class);
}
-void ApplicationWindow::addCtrl(QGridLayout *grid, const v4l2_queryctrl &qctrl)
+void ApplicationWindow::addCtrl(QGridLayout *grid, const v4l2_query_ext_ctrl &qec)
{
QWidget *p = grid->parentWidget();
QIntValidator *val;
QLineEdit *edit;
- QString name((char *)qctrl.name);
+ QString name(qec.name);
QComboBox *combo;
QSpinBox *spin;
QSlider *slider;
QWidget *wContainer = new QWidget();
QHBoxLayout *m_boxLayout = new QHBoxLayout(wContainer);
m_boxLayout->setMargin(0);
- unsigned dif;
+ __u64 dif;
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_INTEGER:
addLabel(grid, name);
- dif = qctrl.maximum - qctrl.minimum;
- if (dif <= 0xffffU || (qctrl.flags & V4L2_CTRL_FLAG_SLIDER)) {
- m_sliderMap[qctrl.id] = slider = new QSlider(Qt::Horizontal, p);
+ dif = qec.maximum - qec.minimum;
+ if (dif <= 0xffffU || (qec.flags & V4L2_CTRL_FLAG_SLIDER)) {
+ m_sliderMap[qec.id] = slider = new QSlider(Qt::Horizontal, p);
slider->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
- slider->setMinimum(qctrl.minimum);
- slider->setMaximum(qctrl.maximum);
- slider->setSingleStep(qctrl.step);
- slider->setSliderPosition(qctrl.default_value);
+ slider->setMinimum(qec.minimum);
+ slider->setMaximum(qec.maximum);
+ slider->setSingleStep(qec.step);
+ slider->setSliderPosition(qec.default_value);
- m_widgetMap[qctrl.id] = spin = new QSpinBox(p);
- spin->setRange(qctrl.minimum, qctrl.maximum);
- spin->setSingleStep(qctrl.step);
+ m_widgetMap[qec.id] = spin = new QSpinBox(p);
+ spin->setRange(qec.minimum, qec.maximum);
+ spin->setSingleStep(qec.step);
m_boxLayout->addWidget(slider);
m_boxLayout->addWidget(spin);
connect(spin, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
connect(slider, SIGNAL(valueChanged(int)), spin, SLOT(setValue(int)));
- connect(m_widgetMap[qctrl.id], SIGNAL(valueChanged(int)),
+ connect(m_widgetMap[qec.id], SIGNAL(valueChanged(int)),
m_sigMapper, SLOT(map()));
break;
}
- val = new QIntValidator(qctrl.minimum, qctrl.maximum, p);
+ val = new QIntValidator(qec.minimum, qec.maximum, p);
edit = new QLineEdit(p);
edit->setValidator(val);
addWidget(grid, edit);
- m_widgetMap[qctrl.id] = edit;
- connect(m_widgetMap[qctrl.id], SIGNAL(lostFocus()),
+ m_widgetMap[qec.id] = edit;
+ connect(m_widgetMap[qec.id], SIGNAL(lostFocus()),
m_sigMapper, SLOT(map()));
- connect(m_widgetMap[qctrl.id], SIGNAL(returnPressed()),
+ connect(m_widgetMap[qec.id], SIGNAL(returnPressed()),
m_sigMapper, SLOT(map()));
break;
case V4L2_CTRL_TYPE_INTEGER64:
addLabel(grid, name);
edit = new QLineEdit(p);
- m_widgetMap[qctrl.id] = edit;
+ m_widgetMap[qec.id] = edit;
addWidget(grid, edit);
- connect(m_widgetMap[qctrl.id], SIGNAL(lostFocus()),
+ connect(m_widgetMap[qec.id], SIGNAL(lostFocus()),
m_sigMapper, SLOT(map()));
- connect(m_widgetMap[qctrl.id], SIGNAL(returnPressed()),
+ connect(m_widgetMap[qec.id], SIGNAL(returnPressed()),
m_sigMapper, SLOT(map()));
break;
edit = new QLineEdit(p);
edit->setInputMask("HHHHHHHH");
addWidget(grid, edit);
- m_widgetMap[qctrl.id] = edit;
- connect(m_widgetMap[qctrl.id], SIGNAL(lostFocus()),
+ m_widgetMap[qec.id] = edit;
+ connect(m_widgetMap[qec.id], SIGNAL(lostFocus()),
m_sigMapper, SLOT(map()));
- connect(m_widgetMap[qctrl.id], SIGNAL(returnPressed()),
+ connect(m_widgetMap[qec.id], SIGNAL(returnPressed()),
m_sigMapper, SLOT(map()));
break;
case V4L2_CTRL_TYPE_STRING:
addLabel(grid, name);
edit = new QLineEdit(p);
- m_widgetMap[qctrl.id] = edit;
- edit->setMaxLength(qctrl.maximum);
+ m_widgetMap[qec.id] = edit;
+ edit->setMaxLength(qec.maximum);
addWidget(grid, edit);
- connect(m_widgetMap[qctrl.id], SIGNAL(lostFocus()),
+ connect(m_widgetMap[qec.id], SIGNAL(lostFocus()),
m_sigMapper, SLOT(map()));
- connect(m_widgetMap[qctrl.id], SIGNAL(returnPressed()),
+ connect(m_widgetMap[qec.id], SIGNAL(returnPressed()),
m_sigMapper, SLOT(map()));
break;
case V4L2_CTRL_TYPE_BOOLEAN:
addLabel(grid, name);
- m_widgetMap[qctrl.id] = new QCheckBox(p);
- addWidget(grid, m_widgetMap[qctrl.id]);
- connect(m_widgetMap[qctrl.id], SIGNAL(clicked()),
+ m_widgetMap[qec.id] = new QCheckBox(p);
+ addWidget(grid, m_widgetMap[qec.id]);
+ connect(m_widgetMap[qec.id], SIGNAL(clicked()),
m_sigMapper, SLOT(map()));
break;
case V4L2_CTRL_TYPE_BUTTON:
- addLabel(grid, (char *)qctrl.name);
+ addLabel(grid, (char *)qec.name);
QToolButton *button;
- m_widgetMap[qctrl.id] = button = new QToolButton(p);
+ m_widgetMap[qec.id] = button = new QToolButton(p);
button->setIcon(QIcon(":/enterbutt.png"));
- addWidget(grid, m_widgetMap[qctrl.id]);
- connect(m_widgetMap[qctrl.id], SIGNAL(clicked()),
+ addWidget(grid, m_widgetMap[qec.id]);
+ connect(m_widgetMap[qec.id], SIGNAL(clicked()),
m_sigMapper, SLOT(map()));
break;
case V4L2_CTRL_TYPE_INTEGER_MENU:
addLabel(grid, name);
combo = new QComboBox(p);
- m_widgetMap[qctrl.id] = combo;
- for (int i = qctrl.minimum; i <= qctrl.maximum; i++) {
- qmenu.id = qctrl.id;
+ m_widgetMap[qec.id] = combo;
+ for (int i = (int)qec.minimum; i <= (int)qec.maximum; i++) {
+ qmenu.id = qec.id;
qmenu.index = i;
if (querymenu(qmenu))
continue;
- if (qctrl.type == V4L2_CTRL_TYPE_MENU)
+ if (qec.type == V4L2_CTRL_TYPE_MENU)
combo->addItem((char *)qmenu.name);
else
combo->addItem(QString("%1").arg(qmenu.value));
}
- addWidget(grid, m_widgetMap[qctrl.id]);
- connect(m_widgetMap[qctrl.id], SIGNAL(activated(int)),
+ addWidget(grid, m_widgetMap[qec.id]);
+ connect(m_widgetMap[qec.id], SIGNAL(activated(int)),
m_sigMapper, SLOT(map()));
break;
return;
}
- m_sigMapper->setMapping(m_widgetMap[qctrl.id], qctrl.id);
- if (qctrl.flags & CTRL_FLAG_DISABLED) {
- m_widgetMap[qctrl.id]->setDisabled(true);
- if (m_sliderMap.find(qctrl.id) != m_sliderMap.end())
- m_sliderMap[qctrl.id]->setDisabled(true);
+ m_sigMapper->setMapping(m_widgetMap[qec.id], qec.id);
+ if (qec.flags & CTRL_FLAG_DISABLED) {
+ m_widgetMap[qec.id]->setDisabled(true);
+ if (m_sliderMap.find(qec.id) != m_sliderMap.end())
+ m_sliderMap[qec.id]->setDisabled(true);
}
}
}
if (!update && !all && m_ctrlMap[id].type != V4L2_CTRL_TYPE_BUTTON)
return;
- if (!m_haveExtendedUserCtrls && ctrl_class == V4L2_CTRL_CLASS_USER) {
- if (!all) {
- updateCtrl(id);
- return;
- }
- for (unsigned i = 0; i < m_classMap[ctrl_class].size(); i++) {
- updateCtrl(m_classMap[ctrl_class][i]);
- }
- return;
- }
if (!all) {
updateCtrl(id);
return;
ctrls.count = idx;
ctrls.ctrl_class = ctrl_class;
ctrls.controls = c;
- if (cv4l_ioctl(VIDIOC_S_EXT_CTRLS, &ctrls)) {
+ if (s_ext_ctrls(ctrls)) {
if (ctrls.error_idx >= ctrls.count) {
error(errno);
}
QString ApplicationWindow::getString(unsigned id)
{
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
- QWidget *w = m_widgetMap[qctrl.id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
+ QWidget *w = m_widgetMap[qec.id];
QString v;
int mod;
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_STRING:
v = static_cast<QLineEdit *>(w)->text();
- mod = v.length() % qctrl.step;
+ mod = v.length() % qec.step;
if (mod)
- v += QString(qctrl.step - mod, ' ');
+ v += QString(qec.step - mod, ' ');
break;
default:
break;
long long ApplicationWindow::getVal64(unsigned id)
{
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
- QWidget *w = m_widgetMap[qctrl.id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
+ QWidget *w = m_widgetMap[qec.id];
long long v = 0;
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_INTEGER64:
v = static_cast<QLineEdit *>(w)->text().toLongLong();
break;
int ApplicationWindow::getVal(unsigned id)
{
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
- QWidget *w = m_widgetMap[qctrl.id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
+ QWidget *w = m_widgetMap[qec.id];
v4l2_querymenu qmenu;
int i, idx;
int v = 0;
unsigned dif;
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_INTEGER:
- dif = qctrl.maximum - qctrl.minimum;
- if (dif <= 0xffffU || (qctrl.flags & V4L2_CTRL_FLAG_SLIDER)) {
+ dif = qec.maximum - qec.minimum;
+ if (dif <= 0xffffU || (qec.flags & V4L2_CTRL_FLAG_SLIDER)) {
v = static_cast<QSpinBox *>(w)->value();
break;
}
case V4L2_CTRL_TYPE_MENU:
case V4L2_CTRL_TYPE_INTEGER_MENU:
idx = static_cast<QComboBox *>(w)->currentIndex();
- for (i = qctrl.minimum; i <= qctrl.maximum; i++) {
- qmenu.id = qctrl.id;
+ for (i = qec.minimum; i <= qec.maximum; i++) {
+ qmenu.id = qec.id;
qmenu.index = i;
if (querymenu(qmenu))
continue;
if (m_ctrlMap[id].flags & CTRL_FLAG_DISABLED)
return;
- if (!m_haveExtendedUserCtrls && ctrl_class == V4L2_CTRL_CLASS_USER) {
- struct v4l2_control c;
-
- c.id = id;
- c.value = getVal(id);
- if (cv4l_ioctl(VIDIOC_S_CTRL, &c)) {
- errorCtrl(id, errno, c.value);
- }
- else if (m_ctrlMap[id].flags & V4L2_CTRL_FLAG_UPDATE)
- refresh(ctrl_class);
- return;
- }
struct v4l2_ext_control c;
struct v4l2_ext_controls ctrls;
ctrls.count = 1;
ctrls.ctrl_class = ctrl_class;
ctrls.controls = &c;
- if (cv4l_ioctl(VIDIOC_S_EXT_CTRLS, &ctrls)) {
+ if (s_ext_ctrls(ctrls)) {
errorCtrl(id, errno, c.value);
}
else if (m_ctrlMap[id].flags & V4L2_CTRL_FLAG_UPDATE)
void ApplicationWindow::updateCtrlRange(unsigned id, __s32 new_val)
{
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
QLineEdit *edit;
QIntValidator *val;
unsigned dif;
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_INTEGER:
- dif = qctrl.maximum - qctrl.minimum;
- if (dif <= 0xffffU || (qctrl.flags & V4L2_CTRL_FLAG_SLIDER)) {
+ dif = qec.maximum - qec.minimum;
+ if (dif <= 0xffffU || (qec.flags & V4L2_CTRL_FLAG_SLIDER)) {
QSlider *slider = static_cast<QSlider *>(m_sliderMap[id]);
- slider->setMinimum(qctrl.minimum);
- slider->setMaximum(qctrl.maximum);
- slider->setSingleStep(qctrl.step);
+ slider->setMinimum(qec.minimum);
+ slider->setMaximum(qec.maximum);
+ slider->setSingleStep(qec.step);
slider->setSliderPosition(new_val);
QSpinBox *spin = static_cast<QSpinBox *>(m_widgetMap[id]);
- spin->setRange(qctrl.minimum, qctrl.maximum);
- spin->setSingleStep(qctrl.step);
+ spin->setRange(qec.minimum, qec.maximum);
+ spin->setSingleStep(qec.step);
spin->setValue(new_val);
break;
}
edit = static_cast<QLineEdit *>(m_widgetMap[id]);
- val = new QIntValidator(qctrl.minimum, qctrl.maximum, edit->parent());
+ val = new QIntValidator(qec.minimum, qec.maximum, edit->parent());
// FIXME: will this delete the old validator?
edit->setValidator(val);
break;
case V4L2_CTRL_TYPE_STRING:
QLineEdit *edit = static_cast<QLineEdit *>(m_widgetMap[id]);
- edit->setMaxLength(qctrl.maximum);
+ edit->setMaxLength(qec.maximum);
break;
}
}
void ApplicationWindow::refresh(unsigned ctrl_class)
{
- if (!m_haveExtendedUserCtrls && ctrl_class == V4L2_CTRL_CLASS_USER) {
- for (unsigned i = 0; i < m_classMap[ctrl_class].size(); i++) {
- unsigned id = m_classMap[ctrl_class][i];
- v4l2_control c;
-
- queryctrl(m_ctrlMap[id]);
- if (m_ctrlMap[id].type == V4L2_CTRL_TYPE_BUTTON)
- continue;
- if (m_ctrlMap[id].flags & V4L2_CTRL_FLAG_WRITE_ONLY)
- continue;
- c.id = id;
- if (cv4l_ioctl(VIDIOC_G_CTRL, &c)) {
- errorCtrl(id, errno);
- }
- setVal(id, c.value);
- m_widgetMap[id]->setDisabled(m_ctrlMap[id].flags & CTRL_FLAG_DISABLED);
- if (m_sliderMap.find(id) != m_sliderMap.end())
- m_sliderMap[id]->setDisabled(m_ctrlMap[id].flags & CTRL_FLAG_DISABLED);
- }
- return;
- }
unsigned count = m_classMap[ctrl_class].size();
unsigned cnt = 0;
struct v4l2_ext_control *c = new v4l2_ext_control[count];
ctrls.count = cnt;
ctrls.ctrl_class = ctrl_class;
ctrls.controls = c;
- if (cv4l_ioctl(VIDIOC_G_EXT_CTRLS, &ctrls)) {
+ if (g_ext_ctrls(ctrls)) {
if (ctrls.error_idx >= ctrls.count) {
error(errno);
}
for (unsigned i = 0; i < ctrls.count; i++) {
unsigned id = c[i].id;
- queryctrl(m_ctrlMap[id]);
+ query_ext_ctrl(m_ctrlMap[id]);
if (m_ctrlMap[id].type == V4L2_CTRL_TYPE_INTEGER64)
setVal64(id, c[i].value64);
else if (m_ctrlMap[id].type == V4L2_CTRL_TYPE_STRING) {
void ApplicationWindow::setWhat(QWidget *w, unsigned id, const QString &v)
{
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
QString what;
- QString flags = getCtrlFlags(qctrl.flags);
+ QString flags = getCtrlFlags(qec.flags);
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_STRING:
w->setWhatsThis(QString("Type: String\n"
"Minimum: %1\n"
"Maximum: %2\n"
"Step: %3\n"
"Current: %4")
- .arg(qctrl.minimum).arg(qctrl.maximum).arg(qctrl.step).arg(v) + flags);
+ .arg(qec.minimum).arg(qec.maximum).arg(qec.step).arg(v) + flags);
w->setStatusTip(w->whatsThis());
break;
default:
void ApplicationWindow::setWhat(QWidget *w, unsigned id, long long v)
{
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
QString what;
- QString flags = getCtrlFlags(qctrl.flags);
+ QString flags = getCtrlFlags(qec.flags);
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_INTEGER:
w->setWhatsThis(QString("Type: Integer\n"
"Minimum: %1\n"
"Step: %3\n"
"Current: %4\n"
"Default: %5")
- .arg(qctrl.minimum).arg(qctrl.maximum).arg(qctrl.step).arg(v).arg(qctrl.default_value) + flags);
+ .arg(qec.minimum).arg(qec.maximum).arg(qec.step).arg(v).arg(qec.default_value) + flags);
w->setStatusTip(w->whatsThis());
break;
case V4L2_CTRL_TYPE_INTEGER64:
w->setWhatsThis(QString("Type: Integer64\n"
- "Current: %1").arg(v) + flags);
+ "Minimum: %1\n"
+ "Maximum: %2\n"
+ "Step: %3\n"
+ "Current: %4\n"
+ "Default: %5")
+ .arg(qec.minimum).arg(qec.maximum).arg(qec.step).arg(v).arg(qec.default_value) + flags);
w->setStatusTip(w->whatsThis());
break;
"Maximum: %1\n"
"Current: %2\n"
"Default: %3")
- .arg((unsigned)qctrl.maximum, 0, 16).arg((unsigned)v, 0, 16)
- .arg((unsigned)qctrl.default_value, 0, 16) + flags);
+ .arg((unsigned)qec.maximum, 0, 16).arg((unsigned)v, 0, 16)
+ .arg((unsigned)qec.default_value, 0, 16) + flags);
w->setStatusTip(w->whatsThis());
break;
w->setWhatsThis(QString("Type: Boolean\n"
"Current: %1\n"
"Default: %2")
- .arg(v).arg(qctrl.default_value) + flags);
+ .arg(v).arg(qec.default_value) + flags);
w->setStatusTip(w->whatsThis());
break;
"Maximum: %2\n"
"Current: %3\n"
"Default: %4")
- .arg(qctrl.minimum).arg(qctrl.maximum).arg(v).arg(qctrl.default_value) + flags);
+ .arg(qec.minimum).arg(qec.maximum).arg(v).arg(qec.default_value) + flags);
w->setStatusTip(w->whatsThis());
break;
"Maximum: %2\n"
"Current: %3\n"
"Default: %4")
- .arg(qctrl.minimum).arg(qctrl.maximum).arg(v).arg(qctrl.default_value) + flags);
+ .arg(qec.minimum).arg(qec.maximum).arg(v).arg(qec.default_value) + flags);
w->setStatusTip(w->whatsThis());
break;
default:
void ApplicationWindow::setVal(unsigned id, int v)
{
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
v4l2_querymenu qmenu;
- QWidget *w = m_widgetMap[qctrl.id];
+ QWidget *w = m_widgetMap[qec.id];
int i, idx;
unsigned dif;
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_INTEGER:
- dif = qctrl.maximum - qctrl.minimum;
- if (dif <= 0xffffU || (qctrl.flags & V4L2_CTRL_FLAG_SLIDER))
+ dif = qec.maximum - qec.minimum;
+ if (dif <= 0xffffU || (qec.flags & V4L2_CTRL_FLAG_SLIDER))
static_cast<QSpinBox *>(w)->setValue(v);
else
static_cast<QLineEdit *>(w)->setText(QString::number(v));
case V4L2_CTRL_TYPE_MENU:
case V4L2_CTRL_TYPE_INTEGER_MENU:
idx = 0;
- for (i = qctrl.minimum; i <= v; i++) {
+ for (i = qec.minimum; i <= v; i++) {
qmenu.id = id;
qmenu.index = i;
if (querymenu(qmenu))
void ApplicationWindow::setVal64(unsigned id, long long v)
{
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
- QWidget *w = m_widgetMap[qctrl.id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
+ QWidget *w = m_widgetMap[qec.id];
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_INTEGER64:
static_cast<QLineEdit *>(w)->setText(QString::number(v));
break;
void ApplicationWindow::setString(unsigned id, const QString &v)
{
- const v4l2_queryctrl &qctrl = m_ctrlMap[id];
- QWidget *w = m_widgetMap[qctrl.id];
+ const v4l2_query_ext_ctrl &qec = m_ctrlMap[id];
+ QWidget *w = m_widgetMap[qec.id];
- switch (qctrl.type) {
+ switch (qec.type) {
case V4L2_CTRL_TYPE_STRING:
static_cast<QLineEdit *>(w)->setText(v);
break;