bool RGBMatrix::copyFrom(const Function* function) { const RGBMatrix* mtx = qobject_cast<const RGBMatrix*> (function); if (mtx == NULL) return false; setDimmerControl(mtx->dimmerControl()); setFixtureGroup(mtx->fixtureGroup()); if (mtx->algorithm() != NULL) setAlgorithm(mtx->algorithm()->clone()); else setAlgorithm(NULL); setStartColor(mtx->startColor()); setEndColor(mtx->endColor()); return Function::copyFrom(function); }
bool RGBMatrix::loadXML(const QDomElement& root) { if (root.tagName() != KXMLQLCFunction) { qWarning() << Q_FUNC_INFO << "Function node not found"; return false; } if (root.attribute(KXMLQLCFunctionType) != typeToString(Function::RGBMatrix)) { qWarning() << Q_FUNC_INFO << "Function is not an RGB matrix"; return false; } /* Load matrix contents */ QDomNode node = root.firstChild(); while (node.isNull() == false) { QDomElement tag = node.toElement(); if (tag.tagName() == KXMLQLCFunctionSpeed) { loadXMLSpeed(tag); } else if (tag.tagName() == KXMLQLCRGBAlgorithm) { setAlgorithm(RGBAlgorithm::loader(doc(), tag)); } else if (tag.tagName() == KXMLQLCRGBMatrixFixtureGroup) { setFixtureGroup(tag.text().toUInt()); } else if (tag.tagName() == KXMLQLCFunctionDirection) { loadXMLDirection(tag); } else if (tag.tagName() == KXMLQLCFunctionRunOrder) { loadXMLRunOrder(tag); } else if (tag.tagName() == KXMLQLCRGBMatrixStartColor) { setStartColor(QColor::fromRgb(QRgb(tag.text().toUInt()))); } else if (tag.tagName() == KXMLQLCRGBMatrixEndColor) { setEndColor(QColor::fromRgb(QRgb(tag.text().toUInt()))); } else if (tag.tagName() == KXMLQLCRGBMatrixProperty) { QString name = tag.attribute(KXMLQLCRGBMatrixPropertyName); QString value = tag.attribute(KXMLQLCRGBMatrixPropertyValue); setProperty(name, value); } else if (tag.tagName() == KXMLQLCRGBMatrixDimmerControl) { setDimmerControl(tag.text().toInt()); } else { qWarning() << Q_FUNC_INFO << "Unknown RGB matrix tag:" << tag.tagName(); } node = node.nextSibling(); } return true; }
bool RGBMatrix::loadXML(QXmlStreamReader &root) { if (root.name() != KXMLQLCFunction) { qWarning() << Q_FUNC_INFO << "Function node not found"; return false; } if (root.attributes().value(KXMLQLCFunctionType).toString() != typeToString(Function::RGBMatrixType)) { qWarning() << Q_FUNC_INFO << "Function is not an RGB matrix"; return false; } /* Load matrix contents */ while (root.readNextStartElement()) { if (root.name() == KXMLQLCFunctionSpeed) { loadXMLSpeed(root); } else if (root.name() == KXMLQLCRGBAlgorithm) { setAlgorithm(RGBAlgorithm::loader(doc(), root)); } else if (root.name() == KXMLQLCRGBMatrixFixtureGroup) { setFixtureGroup(root.readElementText().toUInt()); } else if (root.name() == KXMLQLCFunctionDirection) { loadXMLDirection(root); } else if (root.name() == KXMLQLCFunctionRunOrder) { loadXMLRunOrder(root); } else if (root.name() == KXMLQLCRGBMatrixStartColor) { setStartColor(QColor::fromRgb(QRgb(root.readElementText().toUInt()))); } else if (root.name() == KXMLQLCRGBMatrixEndColor) { setEndColor(QColor::fromRgb(QRgb(root.readElementText().toUInt()))); } else if (root.name() == KXMLQLCRGBMatrixProperty) { QString name = root.attributes().value(KXMLQLCRGBMatrixPropertyName).toString(); QString value = root.attributes().value(KXMLQLCRGBMatrixPropertyValue).toString(); setProperty(name, value); root.skipCurrentElement(); } else if (root.name() == KXMLQLCRGBMatrixDimmerControl) { setDimmerControl(root.readElementText().toInt()); } else { qWarning() << Q_FUNC_INFO << "Unknown RGB matrix tag:" << root.name(); root.skipCurrentElement(); } } return true; }