void ConsoleChannel::contextMenuEvent(QContextMenuEvent* e) { QString s; QString t; Capability* c = NULL; Device* device = _app->doc()->device(m_deviceID); assert(device); LogicalChannel* ch = device->deviceClass()->channels()->at(m_channel); QPopupMenu* menu = new QPopupMenu(); menu->insertItem(ch->name(), KMenuTitle); menu->setItemEnabled(KMenuTitle, false); menu->insertSeparator(); QPtrListIterator<Capability> it(*ch->capabilities()); QPopupMenu* valueMenu = NULL; while (it.current()) { c = it.current(); // Set the value range and name as menu item's name s.sprintf("%.3d - %.3d:", c->lo(), c->hi()); s += c->name(); // Create a submenu for ranges that contain more than one value if (c->hi() - c->lo() > 0) { valueMenu = new QPopupMenu(menu); connect(valueMenu, SIGNAL(activated(int)), this, SLOT(slotContextMenuActivated(int))); for (int i = c->lo(); i <= c->hi(); i++) { t.sprintf("%.3d", i); valueMenu->insertItem(t, i); } menu->insertItem(s, valueMenu); } else {
void EditSceneValue::slotPresetComboActivated(const QString &text) { if (m_updateValue == false) { return; } m_updateValue = false; Capability* c = m_channel->searchCapability(text); ASSERT(c != NULL); int value = (int) floor((c->lo() + c->hi()) / 2); m_valueSpin->setValue(value); m_value = value; m_updateValue = true; }