bool Fixture::saveXML(QDomDocument* doc, QDomElement* wksp_root) const { QDomElement root; QDomElement tag; QDomText text; QString str; Q_ASSERT(doc != NULL); /* Fixture Instance entry */ root = doc->createElement(KXMLFixture); wksp_root->appendChild(root); /* Manufacturer */ tag = doc->createElement(KXMLQLCFixtureDefManufacturer); root.appendChild(tag); if (m_fixtureDef != NULL) text = doc->createTextNode(m_fixtureDef->manufacturer()); else text = doc->createTextNode(KXMLFixtureGeneric); tag.appendChild(text); /* Model */ tag = doc->createElement(KXMLQLCFixtureDefModel); root.appendChild(tag); if (m_fixtureDef != NULL) text = doc->createTextNode(m_fixtureDef->model()); else text = doc->createTextNode(KXMLFixtureGeneric); tag.appendChild(text); /* Fixture mode */ tag = doc->createElement(KXMLQLCFixtureMode); root.appendChild(tag); if (m_fixtureMode != NULL) text = doc->createTextNode(m_fixtureMode->name()); else text = doc->createTextNode(KXMLFixtureGeneric); tag.appendChild(text); /* RGB Panel physical dimensions */ if (m_fixtureDef != NULL && m_fixtureDef->model() == KXMLFixtureRGBPanel && m_fixtureMode != NULL) { tag = doc->createElement(KXMLQLCPhysicalDimensionsWeight); root.appendChild(tag); text = doc->createTextNode(QString::number(m_fixtureMode->physical().width())); tag.appendChild(text); tag = doc->createElement(KXMLQLCPhysicalDimensionsHeight); root.appendChild(tag); text = doc->createTextNode(QString::number(m_fixtureMode->physical().height())); tag.appendChild(text); } /* ID */ tag = doc->createElement(KXMLFixtureID); root.appendChild(tag); str.setNum(id()); text = doc->createTextNode(str); tag.appendChild(text); /* Name */ tag = doc->createElement(KXMLFixtureName); root.appendChild(tag); text = doc->createTextNode(m_name); tag.appendChild(text); /* Universe */ tag = doc->createElement(KXMLFixtureUniverse); root.appendChild(tag); str.setNum(universe()); text = doc->createTextNode(str); tag.appendChild(text); /* Address */ tag = doc->createElement(KXMLFixtureAddress); root.appendChild(tag); str.setNum(address()); text = doc->createTextNode(str); tag.appendChild(text); /* Channel count */ tag = doc->createElement(KXMLFixtureChannels); root.appendChild(tag); str.setNum(channels()); text = doc->createTextNode(str); tag.appendChild(text); if (m_excludeFadeIndices.count() > 0) { tag = doc->createElement(KXMLFixtureExcludeFade); root.appendChild(tag); QString list; for (int i = 0; i < m_excludeFadeIndices.count(); i++) { if (list.isEmpty() == false) list.append(QString(",")); list.append(QString("%1").arg(m_excludeFadeIndices.at(i))); } text = doc->createTextNode(list); tag.appendChild(text); } if (m_forcedHTPIndices.count() > 0) { tag = doc->createElement(KXMLFixtureForcedHTP); root.appendChild(tag); QString list; for (int i = 0; i < m_forcedHTPIndices.count(); i++) { if (list.isEmpty() == false) list.append(QString(",")); list.append(QString("%1").arg(m_forcedHTPIndices.at(i))); } text = doc->createTextNode(list); tag.appendChild(text); } if (m_forcedLTPIndices.count() > 0) { tag = doc->createElement(KXMLFixtureForcedLTP); root.appendChild(tag); QString list; for (int i = 0; i < m_forcedLTPIndices.count(); i++) { if (list.isEmpty() == false) list.append(QString(",")); list.append(QString("%1").arg(m_forcedLTPIndices.at(i))); } text = doc->createTextNode(list); tag.appendChild(text); } if (m_channelModifiers.isEmpty() == false) { QHashIterator<quint32, ChannelModifier *> it(m_channelModifiers); while (it.hasNext()) { it.next(); quint32 ch = it.key(); ChannelModifier *mod = it.value(); if (mod != NULL) { tag = doc->createElement(KXMLFixtureChannelModifier); tag.setAttribute(KXMLFixtureChannelIndex, ch); tag.setAttribute(KXMLFixtureModifierName, mod->name()); root.appendChild(tag); } } } return true; }
bool Fixture::saveXML(QXmlStreamWriter *doc) const { Q_ASSERT(doc != NULL); /* Fixture Instance entry */ doc->writeStartElement(KXMLFixture); /* Manufacturer */ if (m_fixtureDef != NULL) doc->writeTextElement(KXMLQLCFixtureDefManufacturer, m_fixtureDef->manufacturer()); else doc->writeTextElement(KXMLQLCFixtureDefManufacturer, KXMLFixtureGeneric); /* Model */ if (m_fixtureDef != NULL) doc->writeTextElement(KXMLQLCFixtureDefModel, m_fixtureDef->model()); else doc->writeTextElement(KXMLQLCFixtureDefModel, KXMLFixtureGeneric); /* Fixture mode */ if (m_fixtureMode != NULL) doc->writeTextElement(KXMLQLCFixtureMode, m_fixtureMode->name()); else doc->writeTextElement(KXMLQLCFixtureMode, KXMLFixtureGeneric); /* RGB Panel physical dimensions */ if (m_fixtureDef != NULL && m_fixtureDef->model() == KXMLFixtureRGBPanel && m_fixtureMode != NULL) { doc->writeTextElement(KXMLQLCPhysicalDimensionsWeight, QString::number(m_fixtureMode->physical().width())); doc->writeTextElement(KXMLQLCPhysicalDimensionsHeight, QString::number(m_fixtureMode->physical().height())); } /* ID */ doc->writeTextElement(KXMLFixtureID, QString::number(id())); /* Name */ doc->writeTextElement(KXMLFixtureName, m_name); /* Universe */ doc->writeTextElement(KXMLFixtureUniverse, QString::number(universe())); /* Address */ doc->writeTextElement(KXMLFixtureAddress, QString::number(address())); /* Channel count */ doc->writeTextElement(KXMLFixtureChannels, QString::number(channels())); if (m_excludeFadeIndices.count() > 0) { QString list; for (int i = 0; i < m_excludeFadeIndices.count(); i++) { if (list.isEmpty() == false) list.append(QString(",")); list.append(QString("%1").arg(m_excludeFadeIndices.at(i))); } doc->writeTextElement(KXMLFixtureExcludeFade, list); } if (m_forcedHTPIndices.count() > 0) { QString list; for (int i = 0; i < m_forcedHTPIndices.count(); i++) { if (list.isEmpty() == false) list.append(QString(",")); list.append(QString("%1").arg(m_forcedHTPIndices.at(i))); } doc->writeTextElement(KXMLFixtureForcedHTP, list); } if (m_forcedLTPIndices.count() > 0) { QString list; for (int i = 0; i < m_forcedLTPIndices.count(); i++) { if (list.isEmpty() == false) list.append(QString(",")); list.append(QString("%1").arg(m_forcedLTPIndices.at(i))); } doc->writeTextElement(KXMLFixtureForcedLTP, list); } if (m_channelModifiers.isEmpty() == false) { QHashIterator<quint32, ChannelModifier *> it(m_channelModifiers); while (it.hasNext()) { it.next(); quint32 ch = it.key(); ChannelModifier *mod = it.value(); if (mod != NULL) { doc->writeStartElement(KXMLFixtureChannelModifier); doc->writeAttribute(KXMLFixtureChannelIndex, QString::number(ch)); doc->writeAttribute(KXMLFixtureModifierName, mod->name()); doc->writeEndElement(); } } } /* End the <Fixture> tag */ doc->writeEndElement(); return true; }