void ReportSectionDetail::buildXML(QDomDocument & doc, QDomElement & section) { // name/title QDomElement name = doc.createElement("name"); name.appendChild(doc.createTextNode(getTitle())); section.appendChild(name); if(pageBreak() != ReportSectionDetail::BreakNone) { QDomElement spagebreak = doc.createElement("pagebreak"); if(pageBreak() == ReportSectionDetail::BreakAtEnd) spagebreak.setAttribute("when", "at end"); section.appendChild(spagebreak); } for(int i = 0; i < groupList.count(); i++) { ReportSectionDetailGroup * rsdg = groupList.at(i); QDomNode grp = doc.createElement("group"); QDomNode gname = doc.createElement("name"); gname.appendChild(doc.createTextNode(rsdg->getTitle())); grp.appendChild(gname); QDomNode gcol = doc.createElement("column"); gcol.appendChild(doc.createTextNode(rsdg->column())); grp.appendChild(gcol); if(rsdg->pageBreak() != ReportSectionDetailGroup::BreakNone) { QDomElement pagebreak = doc.createElement("pagebreak"); if(rsdg->pageBreak() == ReportSectionDetailGroup::BreakAfterGroupFooter) pagebreak.setAttribute("when", "after foot"); grp.appendChild(pagebreak); } //group head if(rsdg->isGroupHeadShowing()) { QDomElement ghead = doc.createElement("head"); rsdg->getGroupHead()->buildXML(doc,ghead); grp.appendChild(ghead); } // group foot if(rsdg->isGroupFootShowing()) { QDomElement gfoot = doc.createElement("foot"); rsdg->getGroupFoot()->buildXML(doc,gfoot); grp.appendChild(gfoot); } section.appendChild(grp); } // detail section QDomElement gdetail = doc.createElement("detail"); QDomElement key = doc.createElement("key"); QDomElement kquery = doc.createElement("query"); kquery.appendChild(doc.createTextNode(query())); key.appendChild(kquery); gdetail.appendChild(key); _detail->buildXML(doc,gdetail); section.appendChild(gdetail); }
void SectionEditor::btnEdit_clicked() { if (m_reportSectionDetail) { int idx = lbGroups->currentRow(); if (idx < 0) return; ReportSectionDetailGroup * rsdg = m_reportSectionDetail->groupSection(idx); DetailGroupSectionDialog * dgsd = new DetailGroupSectionDialog(this); dgsd->cbColumn->clear(); QStringList keys = m_reportDesigner->fieldKeys(); QStringList names = m_reportDesigner->fieldNames(); for (int i = 0; i < keys.count(); ++i) { dgsd->cbColumn->insertItem( i, names.value(i), keys.at(i)); } dgsd->cbColumn->setCurrentIndex(keys.indexOf(rsdg->column())); dgsd->cbSort->clear(); dgsd->cbSort->addItem(i18n("Ascending"), "ascending"); dgsd->cbSort->addItem(i18n("Descending"), "descending"); if (rsdg->sort() == Qt::AscendingOrder) { dgsd->cbSort->setCurrentIndex(dgsd->cbSort->findData("ascending")); } else { dgsd->cbSort->setCurrentIndex(dgsd->cbSort->findData("descending")); } dgsd->breakAfterFooter->setChecked(rsdg->pageBreak() == ReportSectionDetailGroup::BreakAfterGroupFooter); dgsd->cbHead->setChecked(rsdg->groupHeaderVisible()); dgsd->cbFoot->setChecked(rsdg->groupFooterVisible()); bool exitLoop = false; while (!exitLoop) { if (dgsd->exec() == QDialog::Accepted) { QString column = dgsd->cbColumn->itemData(dgsd->cbColumn->currentIndex()).toString(); bool showgh = dgsd->cbHead->isChecked(); bool showgf = dgsd->cbFoot->isChecked(); bool breakafterfoot = dgsd->breakAfterFooter->isChecked(); if (column != rsdg->column() && m_reportSectionDetail->indexOfSection(column) != -1) { QMessageBox::warning(this, i18n("Error Encountered"), i18n("Unable to add a new group because its name would not be unique")); } else { lbGroups->item(idx)->setText(dgsd->cbColumn->currentText()); rsdg->setColumn(column); rsdg->setGroupHeaderVisible(showgh); rsdg->setGroupFooterVisible(showgf); if (breakafterfoot) rsdg->setPageBreak(ReportSectionDetailGroup::BreakAfterGroupFooter); else rsdg->setPageBreak(ReportSectionDetailGroup::BreakNone); if (dgsd->cbSort->itemData(dgsd->cbSort->currentIndex()).toString() == "ascending") { rsdg->setSort(Qt::AscendingOrder); } else { rsdg->setSort(Qt::DescendingOrder); } exitLoop = true; } } else { exitLoop = true; } } if (dgsd) delete dgsd; } }