void InputPatch_Test::patch() { InputMap im(m_doc, 4); QCOMPARE(m_doc->ioPluginCache()->plugins().size(), 1); OutputPluginStub* stub = static_cast<OutputPluginStub*> (m_doc->ioPluginCache()->plugins().at(0)); QVERIFY(stub != NULL); QLCInputProfile prof1; prof1.setManufacturer("Foo"); prof1.setManufacturer("Bar"); InputPatch* ip = new InputPatch(0, this); ip->set(stub, 0, &prof1); QVERIFY(ip->m_plugin == stub); QVERIFY(ip->m_input == 0); QVERIFY(ip->m_profile == &prof1); QVERIFY(ip->pluginName() == stub->name()); QVERIFY(ip->inputName() == stub->inputs()[0]); QVERIFY(ip->profileName() == prof1.name()); QVERIFY(stub->m_openInputs.size() == 1); QVERIFY(stub->m_openInputs.at(0) == 0); QLCInputProfile prof2; prof2.setManufacturer("Xyzzy"); prof2.setManufacturer("Foobar"); ip->set(stub, 3, &prof2); QVERIFY(ip->m_plugin == stub); QVERIFY(ip->m_input == 3); QVERIFY(ip->m_profile == &prof2); QVERIFY(ip->pluginName() == stub->name()); QVERIFY(ip->inputName() == stub->inputs()[3]); QVERIFY(ip->profileName() == prof2.name()); QVERIFY(stub->m_openInputs.size() == 1); QVERIFY(stub->m_openInputs.at(0) == 3); ip->reconnect(); QVERIFY(ip->m_plugin == stub); QVERIFY(ip->m_input == 3); QVERIFY(ip->m_profile == &prof2); QVERIFY(ip->pluginName() == stub->name()); QVERIFY(ip->inputName() == stub->inputs()[3]); QVERIFY(ip->profileName() == prof2.name()); QVERIFY(stub->m_openInputs.size() == 1); QVERIFY(stub->m_openInputs.at(0) == 3); delete ip; QVERIFY(stub->m_openInputs.size() == 0); }
void InputPatch_Test::patch() { InputMap im(this); QDir dir(TESTPLUGINDIR); dir.setFilter(QDir::Files); dir.setNameFilters(QStringList() << QString("*%1").arg(KExtPlugin)); im.loadPlugins(dir); QVERIFY(im.m_plugins.size() > 0); InputPluginStub* stub = static_cast<InputPluginStub*> (im.m_plugins.at(0)); QVERIFY(stub != NULL); QLCInputProfile prof1; prof1.setManufacturer("Foo"); prof1.setManufacturer("Bar"); InputPatch* ip = new InputPatch(this); ip->set(stub, 0, false, &prof1); QVERIFY(ip->m_plugin == stub); QVERIFY(ip->m_input == 0); QVERIFY(ip->m_profile == &prof1); QVERIFY(ip->pluginName() == stub->name()); QVERIFY(ip->inputName() == stub->inputs()[0]); QVERIFY(ip->profileName() == prof1.name()); QVERIFY(stub->m_openLines.size() == 1); QVERIFY(stub->m_openLines.at(0) == 0); QVERIFY(ip->m_feedbackEnabled == false); QVERIFY(ip->feedbackEnabled() == false); QLCInputProfile prof2; prof2.setManufacturer("Xyzzy"); prof2.setManufacturer("Foobar"); ip->set(stub, 3, true, &prof2); QVERIFY(ip->m_plugin == stub); QVERIFY(ip->m_input == 3); QVERIFY(ip->m_profile == &prof2); QVERIFY(ip->pluginName() == stub->name()); QVERIFY(ip->inputName() == stub->inputs()[3]); QVERIFY(ip->profileName() == prof2.name()); QVERIFY(stub->m_openLines.size() == 1); QVERIFY(stub->m_openLines.at(0) == 3); QVERIFY(ip->m_feedbackEnabled == true); QVERIFY(ip->feedbackEnabled() == true); delete ip; QVERIFY(stub->m_openLines.size() == 0); }
void InputMap::saveDefaults() { QSettings settings; QString key; QString str; for (quint32 i = 0; i < m_universes; i++) { InputPatch* pat = patch(i); Q_ASSERT(pat != NULL); /* Editor universe */ key = QString("/inputmap/editoruniverse/"); settings.setValue(key, m_editorUniverse); /* Plugin name */ key = QString("/inputmap/universe%2/plugin/").arg(i); if (pat->plugin() != NULL) settings.setValue(key, pat->plugin()->name()); else settings.setValue(key, "None"); /* Plugin input */ key = QString("/inputmap/universe%2/input/").arg(i); settings.setValue(key, str.setNum(pat->input())); /* Input profile */ key = QString("/inputmap/universe%2/profile/").arg(i); settings.setValue(key, pat->profileName()); } }
void InputMap::saveDefaults() { QSettings settings; QString key; QString str; for (t_input_universe i = 0; i < m_universes; i++) { InputPatch* pat = patch(i); Q_ASSERT(pat != NULL); /* Editor universe */ key = QString("/inputmap/editoruniverse/"); settings.setValue(key, m_editorUniverse); if (pat->plugin() != NULL) { /* Plugin name */ key = QString("/inputmap/universe%2/plugin/").arg(i); settings.setValue(key, pat->plugin()->name()); /* Plugin input */ key = QString("/inputmap/universe%2/input/").arg(i); settings.setValue(key, str.setNum(pat->input())); /* Input profile */ key = QString("/inputmap/universe%2/profile/").arg(i); settings.setValue(key, pat->profileName()); /* Feedback enable */ key = QString("/inputmap/universe%2/feedbackEnabled/").arg(i); settings.setValue(key, pat->feedbackEnabled()); } else { /* Plugin name */ key = QString("/inputmap/universe%2/plugin/").arg(i); settings.setValue(key, ""); /* Plugin input */ key = QString("/inputmap/universe%2/input/").arg(i); settings.setValue(key, ""); /* Input profile */ key = QString("/inputmap/universe%2/profile/").arg(i); settings.setValue(key, ""); /* Feedback enable */ key = QString("/inputmap/universe%2/feedbackEnabled/").arg(i); settings.setValue(key, true); } } }
void InputPatch_Test::patch() { InputPluginStub stub; QLCInputProfile prof1; prof1.setManufacturer("Foo"); prof1.setManufacturer("Bar"); InputPatch* ip = new InputPatch(this); ip->set(&stub, 0, false, &prof1); QVERIFY(ip->m_plugin == &stub); QVERIFY(ip->m_input == 0); QVERIFY(ip->m_profile == &prof1); QVERIFY(ip->pluginName() == stub.name()); QVERIFY(ip->inputName() == stub.inputs()[0]); QVERIFY(ip->profileName() == prof1.name()); QVERIFY(stub.m_openLines.size() == 1); QVERIFY(stub.m_openLines.at(0) == 0); QVERIFY(ip->m_feedbackEnabled == false); QVERIFY(ip->feedbackEnabled() == false); QLCInputProfile prof2; prof2.setManufacturer("Xyzzy"); prof2.setManufacturer("Foobar"); ip->set(&stub, 3, true, &prof2); QVERIFY(ip->m_plugin == &stub); QVERIFY(ip->m_input == 3); QVERIFY(ip->m_profile == &prof2); QVERIFY(ip->pluginName() == stub.name()); QVERIFY(ip->inputName() == stub.inputs()[3]); QVERIFY(ip->profileName() == prof2.name()); QVERIFY(stub.m_openLines.size() == 1); QVERIFY(stub.m_openLines.at(0) == 3); QVERIFY(ip->m_feedbackEnabled == true); QVERIFY(ip->feedbackEnabled() == true); delete ip; QVERIFY(stub.m_openLines.size() == 0); }
InputOutputPatchEditor::InputOutputPatchEditor(QWidget* parent, quint32 universe, InputMap* inputMap, OutputMap* outputMap) : QWidget(parent) , m_inputMap(inputMap) , m_outputMap(outputMap) , m_universe(universe) { Q_ASSERT(universe < m_inputMap->universes()); Q_ASSERT(inputMap != NULL); Q_ASSERT(outputMap != NULL); setupUi(this); m_infoBrowser->setOpenExternalLinks(true); m_infoBrowser->setFixedHeight(250); InputPatch* inputPatch = m_inputMap->patch(universe); OutputPatch* outputPatch = m_outputMap->patch(universe); OutputPatch* feedbackPatch = m_outputMap->feedbackPatch(universe); Q_ASSERT(inputPatch != NULL); Q_ASSERT(outputPatch != NULL); /* Copy these so they can be applied if the user cancels */ m_currentInputPluginName = inputPatch->pluginName(); m_currentInput = inputPatch->input(); m_currentProfileName = inputPatch->profileName(); //m_currentFeedbackEnabled = inputPatch->feedbackEnabled(); m_currentOutputPluginName = outputPatch->pluginName(); m_currentOutput = outputPatch->output(); m_currentFeedbackPluginName = feedbackPatch->pluginName(); m_currentFeedback = feedbackPatch->output(); m_mapTree->header()->setResizeMode(QHeaderView::ResizeToContents); m_mapTree->setSortingEnabled(true); m_mapTree->sortByColumn(KMapColumnPluginName, Qt::AscendingOrder); /* Setup UI controls */ setupMappingPage(); setupProfilePage(); /* Select the top-most "None" item */ m_mapTree->setCurrentItem(m_mapTree->topLevelItem(0)); /* Listen to plugin configuration changes */ connect(m_inputMap, SIGNAL(pluginConfigurationChanged(const QString&)), this, SLOT(slotPluginConfigurationChanged(const QString&))); /* Listen to plugin configuration changes */ connect(m_outputMap, SIGNAL(pluginConfigurationChanged(const QString&)), this, SLOT(slotPluginConfigurationChanged(const QString&))); }
void InputOutputManager::updateItem(QTreeWidgetItem* item, quint32 universe) { Q_ASSERT(item != NULL); InputPatch* ip = m_inputMap->patch(universe); OutputPatch* op = m_outputMap->patch(universe); OutputPatch* fp = m_outputMap->feedbackPatch(universe); Q_ASSERT(ip != NULL); item->setText(KColumnUniverse, QString::number(universe + 1)); item->setText(KColumnInput, QString("[%1] %2").arg(ip->pluginName()).arg(ip->inputName())); item->setText(KColumnOutput, QString("[%1] %2").arg(op->pluginName()).arg(op->outputName())); item->setText(KColumnFeedback, QString("[%1] %2").arg(fp->pluginName()).arg(fp->outputName())); item->setText(KColumnProfile, ip->profileName()); item->setText(KColumnInputNum, QString::number(ip->input() + 1)); item->setText(KColumnOutputNum, QString::number(op->output() + 1)); m_tree->resizeColumnToContents(KColumnUniverse); m_tree->resizeColumnToContents(KColumnInput); m_tree->resizeColumnToContents(KColumnOutput); m_tree->resizeColumnToContents(KColumnProfile); }
InputOutputPatchEditor::InputOutputPatchEditor(QWidget* parent, quint32 universe, InputOutputMap *ioMap, Doc *doc) : QWidget(parent) , m_ioMap(ioMap) , m_doc(doc) , m_universe(universe) , m_currentInputPluginName(KInputNone) , m_currentInput(QLCIOPlugin::invalidLine()) , m_currentOutputPluginName(KOutputNone) , m_currentOutput(QLCIOPlugin::invalidLine()) , m_currentProfileName(KInputNone) , m_currentFeedbackPluginName(KOutputNone) , m_currentFeedback(QLCIOPlugin::invalidLine()) { Q_ASSERT(universe < m_ioMap->universes()); Q_ASSERT(ioMap != NULL); setupUi(this); m_infoBrowser->setOpenExternalLinks(true); m_infoBrowser->setFixedHeight(250); InputPatch* inputPatch = m_ioMap->inputPatch(universe); OutputPatch* outputPatch = m_ioMap->outputPatch(universe); OutputPatch* feedbackPatch = m_ioMap->feedbackPatch(universe); /* Copy these so they can be applied if the user cancels */ if (inputPatch != NULL) { m_currentInputPluginName = inputPatch->pluginName(); m_currentInput = inputPatch->input(); m_currentProfileName = inputPatch->profileName(); } if (outputPatch != NULL) { m_currentOutputPluginName = outputPatch->pluginName(); m_currentOutput = outputPatch->output(); } if (feedbackPatch != NULL) { m_currentFeedbackPluginName = feedbackPatch->pluginName(); m_currentFeedback = feedbackPatch->output(); } m_mapTree->setSortingEnabled(true); m_mapTree->sortByColumn(KMapColumnPluginName, Qt::AscendingOrder); /* Setup UI controls */ setupMappingPage(); setupProfilePage(); fillAudioTree(); /* Listen to itemChanged() signals to catch check state changes */ connect(m_audioMapTree, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(slotAudioDeviceItemChanged(QTreeWidgetItem*, int))); /* Select the top-most "None" item */ m_mapTree->setCurrentItem(m_mapTree->topLevelItem(0)); /* Listen to plugin configuration changes */ connect(m_ioMap, SIGNAL(pluginConfigurationChanged(const QString&)), this, SLOT(slotPluginConfigurationChanged(const QString&))); /* Listen to plugin configuration changes */ connect(m_ioMap, SIGNAL(pluginConfigurationChanged(const QString&)), this, SLOT(slotPluginConfigurationChanged(const QString&))); }