void ReportSectionDetailGroup::buildXML(QDomDocument & doc, QDomElement & section) const { QDomElement grp = doc.createElement("report:group"); grp.setAttribute("report:group-column", column()); if (pageBreak() == ReportSectionDetailGroup::BreakAfterGroupFooter) { grp.setAttribute("report:group-page-break", "after-footer"); } else if (pageBreak() == ReportSectionDetailGroup::BreakBeforeGroupHeader) { grp.setAttribute("report:group-page-break", "before-header"); } if (m_sort == Qt::AscendingOrder) { grp.setAttribute("report:group-sort", "ascending"); } else { grp.setAttribute("report:group-sort", "descending"); } //group head if (groupHeaderVisible()) { QDomElement gheader = doc.createElement("report:section"); gheader.setAttribute("report:section-type", "group-header"); groupHeader()->buildXML(doc, gheader); grp.appendChild(gheader); } // group foot if (groupFooterVisible()) { QDomElement gfooter = doc.createElement("report:section"); gfooter.setAttribute("report:section-type", "group-footer"); groupFooter()->buildXML(doc, gfooter); grp.appendChild(gfooter); } section.appendChild(grp); }
void ReportSectionDetail::buildXML(QDomDocument & doc, QDomElement & section) { if (pageBreak() != ReportSectionDetail::BreakNone) { QDomElement spagebreak = doc.createElement("pagebreak"); if (pageBreak() == ReportSectionDetail::BreakAtEnd) spagebreak.setAttribute("when", "at end"); section.appendChild(spagebreak); } foreach(ReportSectionDetailGroup* rsdg, groupList) { rsdg->buildXML(doc, section); }
void MeasureBase::cleanupLayoutBreaks(bool undo) { // remove unneeded layout breaks std::vector<Element*> toDelete; for (Element* e : el()) { if (e->isLayoutBreak()) { switch (toLayoutBreak(e)->layoutBreakType()) { case LayoutBreak::LINE: if (!lineBreak()) toDelete.push_back(e); break; case LayoutBreak::PAGE: if (!pageBreak()) toDelete.push_back(e); break; case LayoutBreak::SECTION: if (!sectionBreak()) toDelete.push_back(e); break; case LayoutBreak::NOBREAK: if (!noBreak()) toDelete.push_back(e); break; } } } for (Element* e : toDelete) { if (undo) score()->undoRemoveElement(e); else _el.remove(e); } }
bool MeasureBase::readProperties(XmlReader& e) { const QStringRef& tag(e.name()); if (tag == "LayoutBreak") { LayoutBreak* lb = new LayoutBreak(score()); lb->read(e); bool doAdd = true; switch (lb->layoutBreakType()) { case LayoutBreak::LINE: if (lineBreak()) doAdd = false; break; case LayoutBreak::PAGE: if (pageBreak()) doAdd = false; break; case LayoutBreak::SECTION: if (sectionBreak()) doAdd = false; break; case LayoutBreak::NOBREAK: if (noBreak()) doAdd = false; break; } if (doAdd) { add(lb); cleanupLayoutBreaks(false); } else delete lb; } else if (tag == "StaffTypeChange") { StaffTypeChange* stc = new StaffTypeChange(score()); stc->setTrack(e.track()); stc->setParent(this); stc->read(e); add(stc); } else if (Element::readProperties(e)) ; else return false; return true; }
void MeasureBase::undoSetBreak(bool v, LayoutBreak::Type type) { switch (type) { case LayoutBreak::LINE: if (lineBreak() == v) return; setLineBreak(v); break; case LayoutBreak::PAGE: if (pageBreak() == v) return; if (v && lineBreak()) setLineBreak(false); setPageBreak(v); break; case LayoutBreak::SECTION: if (sectionBreak() == v) return; if (v && lineBreak()) setLineBreak(false); setSectionBreak(v); break; case LayoutBreak::NOBREAK: if (noBreak() == v) return; if (v) { setLineBreak(false); setPageBreak(false); setSectionBreak(false); } setNoBreak(v); break; } if (v) { LayoutBreak* lb = new LayoutBreak(score()); lb->setLayoutBreakType(type); lb->setTrack(-1); // this are system elements lb->setParent(this); score()->undoAddElement(lb); } cleanupLayoutBreaks(true); }
void ORGraphicsSectionDetail::buildXML(QDomDocument & doc, QDomElement & section) { // name/title QDomElement name = doc.createElement("name"); name.appendChild(doc.createTextNode(getTitle())); section.appendChild(name); if(pageBreak() != ORGraphicsSectionDetail::BreakNone) { QDomElement spagebreak = doc.createElement("pagebreak"); if(pageBreak() == ORGraphicsSectionDetail::BreakAtEnd) spagebreak.setAttribute("when", "at end"); section.appendChild(spagebreak); } for(int i = 0; i < groupList.count(); i++) { ORGraphicsSectionDetailGroup * 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() != ORGraphicsSectionDetailGroup::BreakNone) { QDomElement pagebreak = doc.createElement("pagebreak"); if(rsdg->pageBreak() == ORGraphicsSectionDetailGroup::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 Importer::parse() { QFile file(inputFile); if (!file.open(QFile::ReadOnly)) return; QTextStream in(&file); in.setCodec("IBM 866"); numberDoc = 1; while (!in.atEnd()) { QString line; in.readLine(); // шапка in.readLine(); // in.readLine(); in.readLine(); // Код формы по КНД 1151078 parsePriznak(in.readLine()); // Признак parseTitle(in.readLine()); // Строка с датой и номером справки in.readLine(); // in.readLine(); // п. 1 parseINNCPP(in.readLine()); // п. 1.1 parseOrgname(in.readLine()); // п. 1.2 if (params[QString::number(numberDoc) + "_Orgname"].isEmpty()) parseOrgname(in.readLine(), 1); in.readLine(); parseOKATOTEL(in.readLine()); // п. 1.3 п. 1.4 in.readLine(); // п. 2 parseINN(in.readLine()); // п. 2.1 in.readLine(); parseFIOTBN(in.readLine()); // п. 2.2 parseStatusDrGr(in.readLine()); // п. 2.3 - п. 2.5 parseCodeDocSeriesNum(in.readLine()); // п. 2.6 - п. 2.7 in.readLine(); // п. 2.8 parseIndexRegCode(in.readLine()); fillAddress(); line = in.readLine(); while (!line.contains(WINtoUnicode("Дом"))) { if (line.contains(WINtoUnicode("Город"))) parseCity(line); else if (line.contains(WINtoUnicode("Улица"))) parseStreet(line); else if (line.contains(WINtoUnicode("Населенный пункт"))) parseLocality(line); line = in.readLine(); } parseHomeFlat(line); in.readLine(); fillPara29(); line = in.readLine(); if (line.left(3) == "2.9") { parseCoutryCode(line); parseAddress(in.readLine()); in.readLine(); line = in.readLine(); } parseTax(line); // п. 3 in.readLine(); in.readLine(); in.readLine(); in.readLine(); in.readLine(); line = in.readLine(); QChar sym(0x2514); int incomeTableRowsCount = 1; while (line[0] != sym) { parseIncomeTable(QString::number(incomeTableRowsCount++), line); line = in.readLine(); } addParametr("incomeTableRowsCount", QString::number(incomeTableRowsCount)); in.readLine(); fillPara4(); line = in.readLine(); // п. 4 while (line.left(3) != " 5.") { QString para = line.left(3); if (para == "") { } else if (para == "4. ") { } else if (para == "4.1") { in.readLine(); line = in.readLine(); parseTaxDeductions(line); } else if (para == "4.2") { parsePara42(line); } else if ((para == "4.3") || (para == "4.4")) { parsePara43_44(line); } else if (para == "4.5") { parsePara45(line); } else if (para == "4.6") { parsePara46(line); } line = in.readLine(); } //in.readLine(); // п. 5 fillPara5(); line = in.readLine(); while (line[0] != sym) { QString para = line.mid(1, 4); if (para == "5.1.") parseAmountIncome(line); // п. 5.1 else if (para == "5.2.") parseTaxableAmountIncome(line); // п. 5.2 else if (para == "5.3.") parseAmountOfTaxCalculated(line); // п. 5.3 else if (para == "5.4.") parseAmountOfTaxWithheld(line); // п. 5.4 else if (para == "5.5.") parsePara55Sum(line); // п. 5.5 else if (para == "5.6.") parsePara56Sum(line); // п. 5.6 else if (para == "5.7.") parsePara57Sum(line); // п. 5.7 else if (para == "5.8.") parsePara58Sum(line); // п. 5.8 else if (para == "5.9.") parsePara59Sum(line); // п. 5.9 else if (para == "5.10") parsePara510Sum(line); // п. 5.10 line = in.readLine(); } in.readLine(); in.readLine(); parseBottom(in.readLine()); QChar pageBreak(0x0C); line = in.readLine(); while (!in.atEnd() && line != pageBreak) line = in.readLine(); numberDoc++; } file.close(); }