Пример #1
0
void InputMap::loadProfiles(const QDir& dir)
{
    if (dir.exists() == false || dir.isReadable() == false)
        return;

    /* Go thru all found file entries and attempt to load an input
       profile from each of them. */
    QStringListIterator it(dir.entryList());
    while (it.hasNext() == true)
    {
        QLCInputProfile* prof;
        QString path;

        path = dir.absoluteFilePath(it.next());
        prof = QLCInputProfile::loader(path);
        if (prof != NULL)
        {
            /* Check for duplicates */
            if (profile(prof->name()) == NULL)
                addProfile(prof);
            else
                delete prof;
        }
        else
        {
            qWarning() << Q_FUNC_INFO << "Unable to find an input profile from" << path;
        }
    }
}
Пример #2
0
void QLCInputProfile_Test::model()
{
    QLCInputProfile ip;
    QVERIFY(ip.model().isEmpty());
    ip.setModel("BCF2000");
    QVERIFY(ip.model() == "BCF2000");
}
Пример #3
0
void QLCInputProfile_Test::manufacturer()
{
	QLCInputProfile ip;
	QVERIFY(ip.manufacturer() == QString::null);
	ip.setManufacturer("Behringer");
	QVERIFY(ip.manufacturer() == "Behringer");
}
Пример #4
0
void QLCInputProfile_Test::model()
{
	QLCInputProfile ip;
	QVERIFY(ip.model() == QString::null);
	ip.setModel("BCF2000");
	QVERIFY(ip.model() == "BCF2000");
}
Пример #5
0
void QLCInputProfile_Test::manufacturer()
{
    QLCInputProfile ip;
    QVERIFY(ip.manufacturer().isEmpty());
    ip.setManufacturer("Behringer");
    QVERIFY(ip.manufacturer() == "Behringer");
}
Пример #6
0
void GrandMasterSlider::sendFeedback()
{
    quint32 universe = VirtualConsole::instance()->properties().grandMasterInputUniverse();
    quint32 channel = VirtualConsole::instance()->properties().grandMasterInputChannel();
    QString chName;

    if (universe == InputOutputMap::invalidUniverse() || channel == QLCChannel::invalid())
        return;

    InputPatch* pat = m_ioMap->inputPatch(universe);
    if (pat != NULL)
    {
        QLCInputProfile* profile = pat->profile();
        if (profile != NULL)
        {
            QLCInputChannel* ich = profile->channel(channel);
            if (ich != NULL)
                chName = ich->name();
        }
    }
    if (m_slider->invertedAppearance())
        m_ioMap->sendFeedBack(universe, channel, UCHAR_MAX - m_slider->value(), chName);
    else
        m_ioMap->sendFeedBack(universe, channel, m_slider->value(), chName);
}
Пример #7
0
void SelectInputChannel::fillTree()
{
    QLCInputChannel* channel;
    QTreeWidgetItem* uniItem;
    QTreeWidgetItem* chItem;
    QLCInputProfile* profile;
    quint32 uni;
    InputPatch* patch;

    /* Add an option to select no input at all */
    chItem = new QTreeWidgetItem(m_tree);
    chItem->setText(KColumnName, KInputNone);
    chItem->setText(KColumnUniverse, QString("%1")
                    .arg(InputMap::invalidUniverse()));
    chItem->setText(KColumnChannel, QString("%1")
                    .arg(KInputChannelInvalid));

    for (uni = 0; uni < _app->inputMap()->universes(); uni++)
    {
        /* Get the patch associated to the current universe */
        patch = _app->inputMap()->patch(uni);
        Q_ASSERT(patch != NULL);

        /* Make an item for each universe */
        uniItem = new QTreeWidgetItem(m_tree);
        updateUniverseItem(uniItem, uni, patch);

        if (patch->plugin() != NULL && patch->input() != KInputInvalid)
        {
            /* Add a manual option to each patched universe */
            chItem = new QTreeWidgetItem(uniItem);
            updateChannelItem(chItem, uni, NULL, NULL);
        }

        /* Add known channels from profile (if any) */
        profile = patch->profile();
        if (profile != NULL)
        {
            QMapIterator <quint32, QLCInputChannel*>
            it(profile->channels());
            while (it.hasNext() == true)
            {
                channel = it.next().value();
                Q_ASSERT(channel != NULL);

                chItem = new QTreeWidgetItem(uniItem);
                updateChannelItem(chItem, uni, channel,
                                  profile);
            }
        }
    }

    /* Listen to item changed signals so that we can catch user's
       manual input for <...> nodes. Connect AFTER filling the tree
       so all the initial item->setText()'s won't get caught here. */
    connect(m_tree, SIGNAL(itemChanged(QTreeWidgetItem*,int)),
            this, SLOT(slotItemChanged(QTreeWidgetItem*,int)));
}
Пример #8
0
void QLCInputProfile_Test::loadNoProfile()
{
    QDomDocument doc;
    QLCInputProfile ip;
    QVERIFY(ip.loadXML(doc) == false);

    QDomElement root = doc.createElement("Whatever");
    doc.appendChild(root);
    QVERIFY(ip.loadXML(doc) == false);
}
Пример #9
0
QLCInputProfile* InputMap::profile(const QString& name)
{
	QListIterator <QLCInputProfile*> it(m_profiles);
	while (it.hasNext() == true)
	{
		QLCInputProfile* profile = it.next();
		if (profile->name() == name)
			return profile;
	}

	return NULL;
}
Пример #10
0
void QLCInputProfile_Test::loadNoProfile()
{
    QXmlStreamReader doc;
    QLCInputProfile ip;
    QVERIFY(ip.loadXML(doc) == false);

    QBuffer buffer;
    buffer.open(QIODevice::ReadWrite);
    QXmlStreamWriter xmlWriter(&buffer);
    xmlWriter.writeStartElement("Whatever");

    doc.setDevice(&buffer);
    QVERIFY(ip.loadXML(doc) == false);
}
Пример #11
0
void InputMap::removeProfile(const QString& name)
{
	QLCInputProfile* profile;
	QMutableListIterator <QLCInputProfile*> it(m_profiles);
	while (it.hasNext() == true)
	{
		profile = it.next();
		if (profile->name() == name)
		{
			it.remove();
			delete profile;
			break;
		}
	}
}
Пример #12
0
void QLCInputProfile_Test::loader()
{
    QLCInputProfile* prof = QLCInputProfile::loader("foobar");
    QVERIFY(prof == NULL);

    prof = QLCInputProfile::loader("broken.xml");
    QVERIFY(prof == NULL);

    QString path(PROFILEDIR "Generic-MIDI.qxi");
    prof = QLCInputProfile::loader(path);
    QVERIFY(prof != NULL);
    QCOMPARE(prof->path(), path);
    QCOMPARE(prof->name(), QString("Generic MIDI"));
    QCOMPARE(prof->channels().size(), 256);
}
Пример #13
0
bool VCPropertiesEditor::inputSourceNames(quint32 universe, quint32 channel,
                                          QString& uniName, QString& chName) const
{
    if (universe == InputMap::invalidUniverse() || channel == InputMap::invalidChannel())
    {
        /* Nothing selected for input universe and/or channel */
        return false;
    }

    InputPatch* patch = m_inputMap->patch(universe);
    if (patch == NULL || patch->plugin() == NULL)
    {
        /* There is no patch for the given universe */
        return false;
    }

    QLCInputProfile* profile = patch->profile();
    if (profile == NULL)
    {
        /* There is no profile. Display plugin name and channel number.
           Boring. */
        uniName = patch->plugin()->name();
        chName = tr("%1: Unknown").arg(channel + 1);
    }
    else
    {
        QLCInputChannel* ich;
        QString name;

        /* Display profile name for universe */
        uniName = QString("%1: %2").arg(universe + 1).arg(profile->name());

        /* User can input the channel number by hand, so put something
           rational to the channel name in those cases as well. */
        ich = profile->channel(channel);
        if (ich != NULL)
            name = ich->name();
        else
            name = tr("Unknown");

        /* Display channel name */
        chName = QString("%1: %2").arg(channel + 1).arg(name);
    }

    return true;
}
Пример #14
0
void QLCInputProfile_Test::load()
{
    QBuffer buffer;
    buffer.open(QIODevice::WriteOnly | QIODevice::Text);
    QXmlStreamWriter xmlWriter(&buffer);

    xmlWriter.writeStartDocument();
    xmlWriter.writeDTD("<!DOCTYPE InputProfile>");
    xmlWriter.writeStartElement("InputProfile");
    xmlWriter.writeTextElement("Manufacturer", "Behringer");
    xmlWriter.writeTextElement("Model", "BCF2000");
    xmlWriter.writeStartElement("Channel");
    xmlWriter.writeAttribute("Number", "492");
    xmlWriter.writeTextElement("Name", "Foobar");
    xmlWriter.writeTextElement("Type", "Slider");
    xmlWriter.writeEndDocument();
    xmlWriter.setDevice(NULL);
    buffer.close();

    buffer.open(QIODevice::ReadOnly | QIODevice::Text);
    QXmlStreamReader xmlReader(&buffer);

    QLCInputProfile ip;
    QVERIFY(ip.loadXML(xmlReader) == true);
    QVERIFY(ip.manufacturer() == "Behringer");
    QVERIFY(ip.model() == "BCF2000");
    QVERIFY(ip.channels().size() == 1);
    QVERIFY(ip.channel(492) != NULL);
    QVERIFY(ip.channel(492)->name() == "Foobar");
    QVERIFY(ip.channel(492)->type() == QLCInputChannel::Slider);
}
Пример #15
0
bool InputMap::inputSourceNames(const QLCInputSource& src,
                                QString& uniName, QString& chName) const
{
    if (src.isValid() == false)
        return false;

    InputPatch* pat = this->patch(src.universe());
    if (pat == NULL)
    {
        /* There is no patch for the given universe */
        return false;
    }

    QLCInputProfile* profile = pat->profile();
    if (profile == NULL)
    {
        /* There is no profile. Display plugin name and channel number. */
        if (pat->plugin() != NULL)
            uniName = QString("%1: %2").arg(src.universe() + 1).arg(pat->plugin()->name());
        else
            uniName = QString("%1: ??").arg(src.universe() + 1);
        chName = QString("%1: ?").arg(src.channel() + 1);
    }
    else
    {
        QLCInputChannel* ich;
        QString name;

        /* Display profile name for universe */
        uniName = QString("%1: %2").arg(src.universe() + 1).arg(profile->name());

        /* User can input the channel number by hand, so put something
           rational to the channel name in those cases as well. */
        ich = profile->channel(src.channel());
        if (ich != NULL)
            name = ich->name();
        else
            name = QString("?");

        /* Display channel name */
        chName = QString("%1: %2").arg(src.channel() + 1).arg(name);
    }

    return true;
}
Пример #16
0
void QLCInputProfile_Test::addChannel()
{
	QLCInputProfile ip;

	QLCInputChannel* ich1 = new QLCInputChannel();
	ip.insertChannel(0, ich1);
	QVERIFY(ip.channel(0) == ich1);
	QVERIFY(ip.channels().size() == 1);

	/* Shouldn't overwrite the existing mapping */
	QLCInputChannel* ich2 = new QLCInputChannel();
	ip.insertChannel(0, ich2);
	QVERIFY(ip.channel(0) == ich1);

	ip.insertChannel(5, ich2);
	QVERIFY(ip.channel(0) == ich1);
	QVERIFY(ip.channel(1) == NULL);
	QVERIFY(ip.channel(2) == NULL);
	QVERIFY(ip.channel(3) == NULL);
	QVERIFY(ip.channel(4) == NULL);
	QVERIFY(ip.channel(5) == ich2);
}
Пример #17
0
bool VCSlider::isButton(quint32 universe, quint32 channel)
{
    InputPatch* patch = NULL;
    QLCInputProfile* profile = NULL;
    QLCInputChannel* ch = NULL;

    patch = m_doc->inputMap()->patch(universe);
    if (patch != NULL)
    {
        profile = patch->profile();
        if (profile != NULL)
        {
            ch = profile->channels()[channel];
            if (ch != NULL)
            {
                return (ch->type() == QLCInputChannel::Button);
            }
        }
    }

    return false;
}
Пример #18
0
void QLCInputProfile_Test::name()
{
	QLCInputProfile ip;
	QVERIFY(ip.name() == " ");
	ip.setManufacturer("Behringer");
	QVERIFY(ip.name() == "Behringer ");
	ip.setModel("BCF2000");
	QVERIFY(ip.name() == "Behringer BCF2000");
}
Пример #19
0
void InputMap::loadProfiles(const QString& profilePath)
{
	/* Find *.qxi from profilePath, sort by name, get regular files */
	QDir dir(profilePath, QString("*%1").arg(KExtInputProfile),
		 QDir::Name, QDir::Files);
	if (dir.exists() == false || dir.isReadable() == false)
	{
		qWarning() << "Unable to load input profiles from"
			   << profilePath;
		return;
	}

	/* Go thru all found file entries and attempt to load an input
	   profile from each of them. */
	QStringListIterator it(dir.entryList());
	while (it.hasNext() == true)
	{
		QLCInputProfile* prof;
		QString path;

		path = dir.absoluteFilePath(it.next());
		prof = QLCInputProfile::loader(path);
		if (prof != NULL)
		{
			/* Check for duplicates */
			if (profile(prof->name()) == NULL)
				addProfile(prof);
			else
				delete prof;
		}
		else
		{
			qWarning() << "Unable to find an input profile from"
				   << path;
		}
	}
}
Пример #20
0
void QLCInputProfile_Test::channels()
{
	QLCInputProfile ip;
	QVERIFY(ip.channels().size() == 0);

	QLCInputChannel* ich1 = new QLCInputChannel();
	ip.insertChannel(0, ich1);

	QLCInputChannel* ich2 = new QLCInputChannel();
	ip.insertChannel(5, ich2);

	QVERIFY(ip.channels().size() == 2);
	QVERIFY(ip.channels().contains(0) == true);
	QVERIFY(ip.channels().contains(1) == false);
	QVERIFY(ip.channels().contains(2) == false);
	QVERIFY(ip.channels().contains(3) == false);
	QVERIFY(ip.channels().contains(4) == false);
	QVERIFY(ip.channels().contains(5) == true);
	QVERIFY(ip.channels()[0] == ich1);
	QVERIFY(ip.channels()[5] == ich2);
}
Пример #21
0
void QLCInputProfile_Test::copy()
{
	QLCInputProfile ip;
	ip.setManufacturer("Behringer");
	ip.setModel("BCF2000");

	QLCInputChannel* ich1 = new QLCInputChannel();
	ich1->setName("Channel 1");
	ip.insertChannel(0, ich1);

	QLCInputChannel* ich2 = new QLCInputChannel();
	ich2->setName("Channel 2");
	ip.insertChannel(5, ich2);

	QLCInputChannel* ich3 = new QLCInputChannel();
	ich3->setName("Channel 3");
	ip.insertChannel(2, ich3);

	QLCInputChannel* ich4 = new QLCInputChannel();
	ich4->setName("Channel 4");
	ip.insertChannel(9000, ich4);

	QLCInputProfile copy(ip);
	QVERIFY(copy.manufacturer() == "Behringer");
	QVERIFY(copy.model() == "BCF2000");

	QVERIFY(copy.channels().size() == 4);

	QVERIFY(copy.channel(0) != ich1);
	QVERIFY(copy.channel(0) != NULL);
	QVERIFY(copy.channel(0)->name() == "Channel 1");

	QVERIFY(copy.channel(5) != ich2);
	QVERIFY(copy.channel(5) != NULL);
	QVERIFY(copy.channel(5)->name() == "Channel 2");

	QVERIFY(copy.channel(2) != ich3);
	QVERIFY(copy.channel(2) != NULL);
	QVERIFY(copy.channel(2)->name() == "Channel 3");

	QVERIFY(copy.channel(9000) != ich4);
	QVERIFY(copy.channel(9000) != NULL);
	QVERIFY(copy.channel(9000)->name() == "Channel 4");
}
Пример #22
0
void QLCInputProfile_Test::channelNumber()
{
    QLCInputProfile ip;
    QVERIFY(ip.channels().size() == 0);

    QLCInputChannel* ich1 = new QLCInputChannel();
    ip.insertChannel(0, ich1);

    QLCInputChannel* ich2 = new QLCInputChannel();
    ip.insertChannel(6510, ich2);

    QLCInputChannel* ich3 = new QLCInputChannel();
    ip.insertChannel(5, ich3);

    QCOMPARE(ip.channelNumber(NULL), InputMap::invalidChannel());
    QCOMPARE(ip.channelNumber(ich1), quint32(0));
    QCOMPARE(ip.channelNumber(ich2), quint32(6510));
    QCOMPARE(ip.channelNumber(ich3), quint32(5));
}
Пример #23
0
void QLCInputProfile_Test::channel()
{
	QLCInputProfile ip;

	QLCInputChannel* ich1 = new QLCInputChannel();
	ip.insertChannel(0, ich1);

	QLCInputChannel* ich2 = new QLCInputChannel();
	ip.insertChannel(5, ich2);

	QVERIFY(ip.channel(0) == ich1);
	QVERIFY(ip.channel(1) == NULL);
	QVERIFY(ip.channel(2) == NULL);
	QVERIFY(ip.channel(3) == NULL);
	QVERIFY(ip.channel(4) == NULL);
	QVERIFY(ip.channel(5) == ich2);
}
Пример #24
0
void QLCInputProfile_Test::load()
{
	QDomDocument doc;

	QDomElement profile = doc.createElement("InputProfile");
	QDomElement manuf = doc.createElement("Manufacturer");
	QDomText manufText = doc.createTextNode("Behringer");
	manuf.appendChild(manufText);
	profile.appendChild(manuf);
	QDomElement model = doc.createElement("Model");
	QDomText modelText = doc.createTextNode("BCF2000");
	model.appendChild(modelText);
	profile.appendChild(model);
	doc.appendChild(profile);

	QDomElement ch = doc.createElement("Channel");
	ch.setAttribute("Number", 492);
	profile.appendChild(ch);

	QDomElement name = doc.createElement("Name");
	QDomText nameText = doc.createTextNode("Foobar");
	name.appendChild(nameText);
	ch.appendChild(name);

	QDomElement type = doc.createElement("Type");
	QDomText typeText = doc.createTextNode("Slider");
	type.appendChild(typeText);
	ch.appendChild(type);

	QLCInputProfile ip;
	QVERIFY(ip.loadXML(&doc) == true);
	QVERIFY(ip.manufacturer() == "Behringer");
	QVERIFY(ip.model() == "BCF2000");
	QVERIFY(ip.channels().size() == 1);
	QVERIFY(ip.channel(492) != NULL);
	QVERIFY(ip.channel(492)->name() == "Foobar");
	QVERIFY(ip.channel(492)->type() == QLCInputChannel::Slider);
}
Пример #25
0
void InputMap_Test::profiles()
{
    InputMap im(m_doc, 4);
    QVERIFY(im.m_profiles.size() == 0);

    QLCInputProfile* prof = new QLCInputProfile();
    prof->setManufacturer("Foo");
    prof->setModel("Bar");

    QVERIFY(im.addProfile(prof) == true);
    QVERIFY(im.m_profiles.size() == 1);
    QVERIFY(im.addProfile(prof) == false);
    QVERIFY(im.m_profiles.size() == 1);

    QVERIFY(im.profileNames().size() == 1);
    QVERIFY(im.profileNames().at(0) == prof->name());
    QVERIFY(im.profile(prof->name()) == prof);
    QVERIFY(im.profile("Foobar") == NULL);

    QVERIFY(im.removeProfile("Foobar") == false);
    QVERIFY(im.m_profiles.size() == 1);
    QVERIFY(im.removeProfile(prof->name()) == true);
    QVERIFY(im.m_profiles.size() == 0);
}
Пример #26
0
void QLCInputProfile_Test::save()
{
    QLCInputProfile ip;
    ip.setManufacturer("TestManufacturer");
    ip.setModel("TestModel");

    QLCInputChannel* ich1 = new QLCInputChannel();
    ich1->setName("Channel 1");
    ip.insertChannel(0, ich1);

    QLCInputChannel* ich2 = new QLCInputChannel();
    ich2->setName("Channel 2");
    ip.insertChannel(5, ich2);

    QLCInputChannel* ich3 = new QLCInputChannel();
    ich3->setName("Channel 3");
    ip.insertChannel(2, ich3);

    QString path("test.qxi");
    QVERIFY(ip.saveXML(path) == true);

#if !defined(WIN32) && !defined(Q_OS_WIN)
    QFile::Permissions perm = QFile::permissions(path);
    QFile::setPermissions(path, 0);
    QVERIFY(ip.saveXML(path) == false);
    QFile::setPermissions(path, perm);
#endif

    QLCInputProfile* prof = QLCInputProfile::loader(path);
    QVERIFY(prof != NULL);
    QCOMPARE(prof->manufacturer(), ip.manufacturer());
    QCOMPARE(prof->model(), ip.model());
    QCOMPARE(prof->name(), ip.name());
    QCOMPARE(prof->channels().size(), ip.channels().size());
    QCOMPARE(prof->channels()[0]->name(), ich1->name());
    QCOMPARE(prof->channels()[2]->name(), ich3->name());
    QCOMPARE(prof->channels()[5]->name(), ich2->name());

    QVERIFY(QFile::remove(path) == true);
    delete prof;
}
Пример #27
0
void QLCInputProfile_Test::remapChannel()
{
	QLCInputProfile ip;

	QLCInputChannel* ich1 = new QLCInputChannel();
	ich1->setName("Foobar");
	ip.insertChannel(0, ich1);
	QVERIFY(ip.channel(0) == ich1);

	QLCInputChannel* ich2 = new QLCInputChannel();
	ip.insertChannel(5, ich2);
	QVERIFY(ip.channel(0) == ich1);
	QVERIFY(ip.channel(5) == ich2);

	QVERIFY(ip.remapChannel(ich1, 9000) == true);
	QVERIFY(ip.channel(0) == NULL);
	QVERIFY(ip.channel(5) == ich2);
	QVERIFY(ip.channel(9000) == ich1);
	QVERIFY(ip.channel(9000)->name() == "Foobar");

	QVERIFY(ip.remapChannel(NULL, 9000) == false);
	QVERIFY(ip.channels().size() == 2);
	QVERIFY(ip.channel(0) == NULL);
	QVERIFY(ip.channel(5) == ich2);
	QVERIFY(ip.channel(9000) == ich1);
	QVERIFY(ip.channel(9000)->name() == "Foobar");

	QLCInputChannel* ich3 = new QLCInputChannel();
	QVERIFY(ip.remapChannel(ich3, 5) == false);
	QVERIFY(ip.channels().size() == 2);
	QVERIFY(ip.channel(0) == NULL);
	QVERIFY(ip.channel(5) == ich2);
	QVERIFY(ip.channel(9000) == ich1);
	QVERIFY(ip.channel(9000)->name() == "Foobar");
	
	delete ich3;
}
Пример #28
0
void InputMap_Test::setPatch()
{
    InputMap im(m_doc, 4);

    OutputPluginStub* stub = static_cast<OutputPluginStub*>
                                (m_doc->ioPluginCache()->plugins().at(0));
    QVERIFY(stub != NULL);

    QLCInputProfile* prof = new QLCInputProfile();
    prof->setManufacturer("Foo");
    prof->setModel("Bar");
    im.addProfile(prof);

    QVERIFY(im.patch(0)->plugin() == NULL);
    QVERIFY(im.patch(0)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(0)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 0) == InputMap::invalidUniverse());

    QVERIFY(im.patch(1)->plugin() == NULL);
    QVERIFY(im.patch(1)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(1)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 1) == InputMap::invalidUniverse());

    QVERIFY(im.patch(2)->plugin() == NULL);
    QVERIFY(im.patch(2)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(2)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 2) == InputMap::invalidUniverse());

    QVERIFY(im.patch(3)->plugin() == NULL);
    QVERIFY(im.patch(3)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(3)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 3) == InputMap::invalidUniverse());

    QVERIFY(im.setPatch(0, "Foobar", 0, prof->name()) == true);
    QVERIFY(im.patch(0)->plugin() == NULL);
    QVERIFY(im.patch(0)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(0)->profile() == prof);
    QVERIFY(im.mapping(stub->name(), 0) == InputMap::invalidUniverse());

    QVERIFY(im.patch(1)->plugin() == NULL);
    QVERIFY(im.patch(1)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(1)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 1) == InputMap::invalidUniverse());

    QVERIFY(im.patch(2)->plugin() == NULL);
    QVERIFY(im.patch(2)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(2)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 2) == InputMap::invalidUniverse());

    QVERIFY(im.patch(3)->plugin() == NULL);
    QVERIFY(im.patch(3)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(3)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 3) == InputMap::invalidUniverse());

    QVERIFY(im.setPatch(0, stub->name(), 0) == true);
    QVERIFY(im.patch(0)->plugin() == stub);
    QVERIFY(im.patch(0)->input() == 0);
    QVERIFY(im.patch(0)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 0) == 0);

    QVERIFY(im.patch(1)->plugin() == NULL);
    QVERIFY(im.patch(1)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(1)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 1) == InputMap::invalidUniverse());

    QVERIFY(im.patch(2)->plugin() == NULL);
    QVERIFY(im.patch(2)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(2)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 2) == InputMap::invalidUniverse());

    QVERIFY(im.patch(3)->plugin() == NULL);
    QVERIFY(im.patch(3)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(3)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 3) == InputMap::invalidUniverse());

    QVERIFY(im.setPatch(2, stub->name(), 3, prof->name()) == true);
    QVERIFY(im.patch(0)->plugin() == stub);
    QVERIFY(im.patch(0)->input() == 0);
    QVERIFY(im.patch(0)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 0) == 0);

    QVERIFY(im.patch(1)->plugin() == NULL);
    QVERIFY(im.patch(1)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(1)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 1) == InputMap::invalidUniverse());

    QVERIFY(im.patch(2)->plugin() == stub);
    QVERIFY(im.patch(2)->input() == 3);
    QVERIFY(im.patch(2)->profile() == prof);
    QVERIFY(im.mapping(stub->name(), 2) == InputMap::invalidUniverse());

    QVERIFY(im.patch(3)->plugin() == NULL);
    QVERIFY(im.patch(3)->input() == QLCIOPlugin::invalidLine());
    QVERIFY(im.patch(3)->profile() == NULL);
    QVERIFY(im.mapping(stub->name(), 3) == 2);

    // Universe out of bounds
    QVERIFY(im.setPatch(im.universes(), stub->name(), 0) == false);
}
Пример #29
0
void VCSliderProperties::updateInputSource()
{
    QLCInputProfile* profile;
    InputPatch* patch;
    QString uniName;
    QString chName;

    if (m_inputUniverse == InputMap::invalidUniverse() ||
            m_inputChannel == InputMap::invalidChannel())
    {
        /* Nothing selected for input universe and/or channel */
        uniName = KInputNone;
        chName = KInputNone;
    }
    else
    {
        patch = m_inputMap->patch(m_inputUniverse);
        if (patch == NULL || patch->plugin() == NULL)
        {
            /* There is no patch for the given universe */
            uniName = KInputNone;
            chName = KInputNone;
        }
        else
        {
            profile = patch->profile();
            if (profile == NULL)
            {
                /* There is no profile. Display plugin
                   name and channel number. Boring. */
                uniName = patch->plugin()->name();
                chName = tr("%1: Unknown")
                         .arg(m_inputChannel + 1);
            }
            else
            {
                QLCInputChannel* ich;
                QString name;

                /* Display profile name for universe */
                uniName = QString("%1: %2")
                          .arg(m_inputUniverse + 1)
                          .arg(profile->name());

                /* User can input the channel number by hand,
                   so put something rational to the channel
                   name in those cases as well. */
                ich = profile->channel(m_inputChannel);
                if (ich != NULL)
                    name = ich->name();
                else
                    name = tr("Unknown");

                /* Display channel name */
                chName = QString("%1: %2")
                         .arg(m_inputChannel + 1).arg(name);
            }
        }
    }

    /* Display the gathered information */
    m_inputUniverseEdit->setText(uniName);
    m_inputChannelEdit->setText(chName);
}
Пример #30
0
void QLCInputProfile_Test::assign()
{
    QLCInputProfile ip;
    ip.setManufacturer("Behringer");
    ip.setModel("BCF2000");

    QLCInputChannel* ich1 = new QLCInputChannel;
    ich1->setName("Channel 1");
    ip.insertChannel(0, ich1);

    QLCInputChannel* ich2 = new QLCInputChannel;
    ich2->setName("Channel 2");
    ip.insertChannel(5, ich2);

    QLCInputChannel* ich3 = new QLCInputChannel;
    ich3->setName("Channel 3");
    ip.insertChannel(2, ich3);

    QLCInputChannel* ich4 = new QLCInputChannel;
    ich4->setName("Channel 4");
    ip.insertChannel(9000, ich4);

    QLCInputProfile ip2;
    QLCInputChannel* ich5 = new QLCInputChannel;
    ich5->setName("First channel");
    ip2.insertChannel(0, ich5);
    QCOMPARE(ip2.channels().size(), 1);

    /* Test the assignment operator */
    ip2 = ip;
    QCOMPARE(ip2.channels().size(), 4);
    QVERIFY(ip2.channel(0) != NULL);
    QVERIFY(ip2.channel(0) != ich1);
    QVERIFY(ip2.channel(0) != ip.channel(0));
    QCOMPARE(ip2.channel(0)->name(), QString("Channel 1"));

    QVERIFY(ip2.channel(5) != NULL);
    QVERIFY(ip2.channel(5) != ich2);
    QVERIFY(ip2.channel(5) != ip.channel(5));
    QCOMPARE(ip2.channel(5)->name(), QString("Channel 2"));

    QVERIFY(ip2.channel(2) != NULL);
    QVERIFY(ip2.channel(2) != ich3);
    QVERIFY(ip2.channel(2) != ip.channel(2));
    QCOMPARE(ip2.channel(2)->name(), QString("Channel 3"));

    QVERIFY(ip2.channel(9000) != NULL);
    QVERIFY(ip2.channel(9000) != ich4);
    QVERIFY(ip2.channel(9000) != ip.channel(9000));
    QCOMPARE(ip2.channel(9000)->name(), QString("Channel 4"));
}