From 8a5321a7058419b73e8bc5863c4128053d9b0edf Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Thu, 19 Apr 2012 16:45:05 +0200 Subject: [PATCH] qv4l2:add support for integer menu controls. Signed-off-by: Hans Verkuil --- utils/qv4l2/ctrl-tab.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/utils/qv4l2/ctrl-tab.cpp b/utils/qv4l2/ctrl-tab.cpp index 8de4af7..114d593 100644 --- a/utils/qv4l2/ctrl-tab.cpp +++ b/utils/qv4l2/ctrl-tab.cpp @@ -46,6 +46,7 @@ static bool is_valid_type(enum v4l2_ctrl_type type) case V4L2_CTRL_TYPE_INTEGER: case V4L2_CTRL_TYPE_BOOLEAN: case V4L2_CTRL_TYPE_MENU: + case V4L2_CTRL_TYPE_INTEGER_MENU: case V4L2_CTRL_TYPE_BUTTON: case V4L2_CTRL_TYPE_INTEGER64: case V4L2_CTRL_TYPE_BITMASK: @@ -302,6 +303,7 @@ void ApplicationWindow::addCtrl(QGridLayout *grid, const v4l2_queryctrl &qctrl) break; case V4L2_CTRL_TYPE_MENU: + case V4L2_CTRL_TYPE_INTEGER_MENU: addLabel(grid, name); combo = new QComboBox(p); m_widgetMap[qctrl.id] = combo; @@ -310,7 +312,10 @@ void ApplicationWindow::addCtrl(QGridLayout *grid, const v4l2_queryctrl &qctrl) qmenu.index = i; if (!querymenu(qmenu)) continue; - combo->addItem((char *)qmenu.name); + if (qctrl.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)), @@ -472,6 +477,7 @@ int ApplicationWindow::getVal(unsigned id) v = (int)static_cast(w)->text().toUInt(0, 16); break; case V4L2_CTRL_TYPE_MENU: + case V4L2_CTRL_TYPE_INTEGER_MENU: idx = static_cast(w)->currentIndex(); for (i = qctrl.minimum; i <= qctrl.maximum; i++) { qmenu.id = qctrl.id; @@ -695,6 +701,16 @@ void ApplicationWindow::setWhat(QWidget *w, unsigned id, long long v) .arg(qctrl.minimum).arg(qctrl.maximum).arg(v).arg(qctrl.default_value) + flags); w->setStatusTip(w->whatsThis()); break; + + case V4L2_CTRL_TYPE_INTEGER_MENU: + w->setWhatsThis(QString("Type: Integer Menu\n" + "Minimum: %1\n" + "Maximum: %2\n" + "Current: %3\n" + "Default: %4") + .arg(qctrl.minimum).arg(qctrl.maximum).arg(v).arg(qctrl.default_value) + flags); + w->setStatusTip(w->whatsThis()); + break; default: break; } @@ -726,6 +742,7 @@ void ApplicationWindow::setVal(unsigned id, int v) break; case V4L2_CTRL_TYPE_MENU: + case V4L2_CTRL_TYPE_INTEGER_MENU: idx = 0; for (i = qctrl.minimum; i <= v; i++) { qmenu.id = id; -- 2.7.4