Beispiel #1
0
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);
}
Beispiel #3
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());
    }
}
Beispiel #4
0
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);
		}
	}
}
Beispiel #5
0
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&)));
}