/** Sets a special field's layout attributes */ void MReportEngine::setSpecialAttributes(MSpecialObject *field, QDomNamedNodeMap *attr) { field->setType(attr->namedItem("Type").nodeValue().toInt()); field->setDateFormat(attr->namedItem("DateFormat").nodeValue().toInt()); setLabelAttributes((MLabelObject *) field, attr); }
/** Sets a field's layout attributes */ void MReportEngine::setFieldAttributes( MFieldObject * field, QDomNamedNodeMap * attr ) { field->setFieldName( attr->namedItem( "Field" ).nodeValue() ); field->setDataType( attr->namedItem( "DataType" ).nodeValue().toInt() ); field->setDateFormat( attr->namedItem( "DateFormat" ).nodeValue().toInt() ); field->setPrecision( attr->namedItem( "Precision" ).nodeValue().toInt() ); field->setCurrency( attr->namedItem( "Currency" ).nodeValue().toInt() ); field->setCommaSeparator( attr->namedItem( "CommaSeparator" ).nodeValue(). toInt() ); field->setCodBarType( attr->namedItem( "CodBarType" ).nodeValue() ); int res = attr->namedItem( "CodBarRes" ).nodeValue().toInt(); field->setCodBarRes( res > 0 ? res : 72 ); field->setBlankZero( attr->namedItem( "BlankZero" ).nodeValue().toInt() ); QString tmp = attr->namedItem( "NegValueColor" ).nodeValue(); field->setNegValueColor( tmp.left( tmp.find( "," ) ).toInt(), tmp.mid( tmp.find( "," ) + 1, ( tmp.findRev( "," ) - tmp.find( "," ) ) - 1 ).toInt(), tmp.right( tmp.length() - tmp.findRev( "," ) - 1 ).toInt() ); setLabelAttributes(( MLabelObject * ) field, attr ); }
/** Sets the layout attributes for the given report section */ void MReportEngine::setSectionAttributes(MReportSection *section, QDomNode *report) { // Get the attributes for the section QDomNamedNodeMap attributes = report->attributes(); // Get the section attributes section->setHeight(attributes.namedItem("Height").nodeValue().toInt()); section->setPrintFrequency(attributes.namedItem("PrintFrequency").nodeValue().toInt()); if (attributes.contains("SectionId")) section->setIdSec(attributes.namedItem("SectionId").nodeValue().toUInt()); // Process the sections labels QDomNodeList children = report->childNodes(); int childCount = children.length(); // For each label, extract the attr list and add the new label // to the sections's label collection for (int j = 0; j < childCount; j++) { QDomNode child = children.item(j); if (child.nodeType() == QDomNode::ElementNode) { if (child.nodeName() == "Line") { QDomNamedNodeMap attributes = child.attributes(); MLineObject *line = new MLineObject(); setLineAttributes(line, &attributes); section->addLine(line); } else if (child.nodeName() == "Label") { QDomNamedNodeMap attributes = child.attributes(); MLabelObject *label = new MLabelObject(); setLabelAttributes(label, &attributes); section->addLabel(label); } else if (child.nodeName() == "Special") { QDomNamedNodeMap attributes = child.attributes(); MSpecialObject *field = new MSpecialObject(); setSpecialAttributes(field, &attributes); section->addSpecialField(field); } else if (child.nodeName() == "CalculatedField") { QDomNamedNodeMap attributes = child.attributes(); MCalcObject *field = new MCalcObject(); setCalculatedFieldAttributes(field, &attributes); section->addCalculatedField(field); } } } }
/** Sets the layout attributes for the detail section */ void MReportEngine::setDetailAttributes(MReportSection *section, QDomNode *report) { // Get the attributes for the detail section QDomNamedNodeMap attributes = report->attributes(); section->setHeight(attributes.namedItem("Height").nodeValue().toInt()); if (attributes.contains("SectionId")) section->setIdSec(attributes.namedItem("SectionId").nodeValue().toUInt()); QDomNode levelNode = attributes.namedItem("Level"); if (!levelNode.isNull()) section->setLevel(attributes.namedItem("Level").nodeValue().toInt()); else section->setLevel(-1); section->setDrawIf(attributes.namedItem("DrawIf").nodeValue()); QString cols = attributes.namedItem("Cols").nodeValue(); if (!cols) cols = "1"; int width = ceil((pageWidth - rightMargin - leftMargin) / cols.toFloat()); section->setWidth(width); // Process the report detail labels QDomNodeList children = report->childNodes(); int childCount = children.length(); for (int j = 0; j < childCount; j++) { QDomNode child = children.item(j); if (child.nodeType() == QDomNode::ElementNode) { if (child.nodeName() == "Line") { QDomNamedNodeMap attributes = child.attributes(); MLineObject *line = new MLineObject(); setLineAttributes(line, &attributes); section->addLine(line); } else if (child.nodeName() == "Label") { QDomNamedNodeMap attributes = child.attributes(); MLabelObject *label = new MLabelObject(); setLabelAttributes(label, &attributes); section->addLabel(label); } else if (child.nodeName() == "Special") { QDomNamedNodeMap attributes = child.attributes(); MSpecialObject *field = new MSpecialObject(); setSpecialAttributes(field, &attributes); section->addSpecialField(field); } else if (child.nodeName() == "CalculatedField") { QDomNamedNodeMap attributes = child.attributes(); MCalcObject *field = new MCalcObject(); setCalculatedFieldAttributes(field, &attributes); section->addCalculatedField(field); } else if (child.nodeName() == "Field") { QDomNamedNodeMap attributes = child.attributes(); MFieldObject *field = new MFieldObject(); setFieldAttributes(field, &attributes); section->addField(field); } } } }