void DetailSectionDialog::btnEdit_clicked() { int idx = lbGroups->currentRow(); if(idx < 0) return; DetailGroupSectionDialog * dgsd = new DetailGroupSectionDialog(this); if(_gsd) { ORGraphicsSectionDetailGroup * rsdg = _gsd->getSection(idx); dgsd->tbName->setText(rsdg->getTitle()); dgsd->tbColumn->setText(rsdg->column()); dgsd->breakAfterFooter->setChecked(rsdg->pageBreak()==ORGraphicsSectionDetailGroup::BreakAfterGroupFooter); dgsd->cbHead->setChecked(rsdg->isGroupHeadShowing()); dgsd->cbFoot->setChecked(rsdg->isGroupFootShowing()); bool exitLoop = false; while(!exitLoop) { if(dgsd->exec() == QDialog::Accepted) { QString name = dgsd->tbName->text(); QString column = dgsd->tbColumn->text(); bool showgh = dgsd->cbHead->isChecked(); bool showgf = dgsd->cbFoot->isChecked(); bool breakafterfoot = dgsd->breakAfterFooter->isChecked(); if(name != rsdg->getTitle() && _gsd->findSection(name) != -1) { QMessageBox::warning(this, tr("Error Encountered"), tr("Tried to add a new Group section with a non-unique name.")); } else { if(name != rsdg->getTitle()) { rsdg->setTitle(name); lbGroups->item(idx)->setText(name); } rsdg->setColumn(column); rsdg->showGroupHead(showgh); rsdg->showGroupFoot(showgf); if(breakafterfoot) rsdg->setPageBreak(ORGraphicsSectionDetailGroup::BreakAfterGroupFooter); else rsdg->setPageBreak(ORGraphicsSectionDetailGroup::BreakNone); exitLoop = true; } } else { exitLoop = true; } } } if(dgsd) delete dgsd; }
void DetailSectionDialog::brnMoveDown_clicked() { int idx = lbGroups->currentRow(); if(idx == (int)(lbGroups->count() - 1)) return; QString s = lbGroups->item(idx)->text(); lbGroups->takeItem(idx); lbGroups->insertItem(idx+1, s); if(_gsd) { ORGraphicsSectionDetailGroup * rsdg = _gsd->getSection(idx); bool showgh = rsdg->isGroupHeadShowing(); bool showgf = rsdg->isGroupFootShowing(); _gsd->removeSection(idx); _gsd->insertSection(idx+1, rsdg); rsdg->showGroupHead(showgh); rsdg->showGroupFoot(showgf); } }
void ORGraphicsSectionDetail::initFromXML(QDomNode & section) { QDomNodeList nl = section.childNodes(); QDomNode node; QString n; // some code to handle old style defs QString o_name = "unnamed"; QString o_column = QString::null; bool old_head = FALSE; QDomNode o_head; bool old_foot = FALSE; QDomNode o_foot; for(int i = 0; i < nl.count(); i++) { node = nl.item(i); n = node.nodeName(); if(n == "name") { o_name = node.firstChild().nodeValue(); setTitle(o_name); } else if(n == "pagebreak") { QDomElement eThis = node.toElement(); if(eThis.attribute("when") == "at end") setPageBreak(BreakAtEnd); } else if(n == "group") { ORGraphicsSectionDetailGroup * rsdg = new ORGraphicsSectionDetailGroup("unnamed", this, this); QDomNodeList gnl = node.childNodes(); QDomNode gnode; bool show_head = FALSE; bool show_foot = FALSE; for(int gi = 0; gi < gnl.count(); gi++) { gnode = gnl.item(gi); if(gnode.nodeName() == "name") { rsdg->setTitle(gnode.firstChild().nodeValue()); } else if(gnode.nodeName() == "column") { rsdg->setColumn(gnode.firstChild().nodeValue()); } else if(gnode.nodeName() == "pagebreak") { QDomElement elemThis = gnode.toElement(); QString n = elemThis.attribute("when"); if("after foot" == n) rsdg->setPageBreak(ORGraphicsSectionDetailGroup::BreakAfterGroupFooter); } else if(gnode.nodeName() == "head") { rsdg->getGroupHead()->initFromXML(gnode); rsdg->showGroupHead(TRUE); show_head = TRUE; } else if(gnode.nodeName() == "foot") { rsdg->getGroupFoot()->initFromXML(gnode); rsdg->showGroupFoot(TRUE); show_foot = TRUE; } else { qDebug("encountered unknown element while parsing group element: %s", gnode.nodeName().toLatin1().constData()); } } insertSection(groupSectionCount(), rsdg); rsdg->showGroupHead(show_head); rsdg->showGroupFoot(show_foot); } else if(n == "grouphead") { o_head = node; old_head = TRUE; } else if(n == "groupfoot") { o_foot = node; old_foot = TRUE; } else if(n == "detail") { // need to pull out the query key values QDomNode key = node.namedItem("key"); if(key.isNull()) { qDebug("Did not find a key element while parsing detail section"); } else { QDomNodeList knl = key.childNodes(); QDomNode knode; for(int ki = 0; ki < knl.count(); ki++) { knode = knl.item(ki); if(knode.nodeName() == "query") { setQuery(knode.firstChild().nodeValue()); } else if(knode.nodeName() == "column") { o_column = knode.firstChild().nodeValue(); } else { qDebug("encountered unknown element while parsing key element: %s", knode.nodeName().toLatin1().constData()); } } } _detail->initFromXML(node); } else { // unknown element qDebug("while parsing section encountered and unknown element: %s", n.toLatin1().constData()); } } if(old_head || old_foot) { ORGraphicsSectionDetailGroup * rsdg = new ORGraphicsSectionDetailGroup(o_name, this, this); rsdg->setColumn(o_column); if(old_head) rsdg->getGroupHead()->initFromXML(o_head); if(old_foot) rsdg->getGroupFoot()->initFromXML(o_foot); // if we encountered this situation then we shouldn't have // any other sections but to be sure we will just tack this one // onto the end insertSection(groupSectionCount(), rsdg); rsdg->showGroupHead(old_head); rsdg->showGroupFoot(old_foot); } }