qv4l2:add support for integer menu controls.
authorHans Verkuil <hans.verkuil@cisco.com>
Thu, 19 Apr 2012 14:45:05 +0000 (16:45 +0200)
committerHans Verkuil <hans.verkuil@cisco.com>
Thu, 19 Apr 2012 14:45:05 +0000 (16:45 +0200)
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
utils/qv4l2/ctrl-tab.cpp

index 8de4af7..114d593 100644 (file)
@@ -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<QLineEdit *>(w)->text().toUInt(0, 16);
                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;
@@ -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;