void Board::readRating(KConfig *config) { QStrList list; QString tmp; if (config->readListEntry("StoneValues", list)) { stoneValue[0] = 0; for(int i=1;i<6;i++) stoneValue[i] = (tmp = list.at(i-1)).toInt(); } if (config->readListEntry("MoveValues", list)) { for(int i=0;i<5;i++) moveValue[i] = (tmp = list.at(i)).toInt(); } if (config->readListEntry("RingValues", list)) { for(int i=0;i<5;i++) ringValue[i] = (tmp = list.at(i)).toInt(); } if (config->readListEntry("RingDiffs", list)) { for(int i=0;i<5;i++) ringDiff[i] = (tmp = list.at(i)).toInt(); } setFieldValues(); }
void Board::setEvalScheme(EvalScheme* scheme) { if (!scheme) scheme = new EvalScheme( QString("Default") ); _evalScheme = scheme; setFieldValues(); }
Board::Board() { clear(); breakOut = bUpdateSpy = false; boardOk = true; debug = 0; realMaxDepth = 1; setFieldValues(); }
bool MReportEngine::canDrawDetail(uint level, uint currRecord, uint yPos) { QDomNode nextRecord; QString detailValue; uint nextLevel; QDomNode record = records.item(currRecord); if ((currRecord + 1) < records.count()) { nextRecord = records.item(currRecord + 1); QDomNamedNodeMap nextFields = nextRecord.attributes(); detailValue = nextFields.namedItem("level").nodeValue(); nextLevel = detailValue.toInt(); } else nextLevel = 0; int detailHeight = 0; MReportSection *detail = findDetail(level); if (detail) { QDomNamedNodeMap fields = record.attributes(); setFieldValues(&fields, level, detail, &record, true); detailHeight = detail->getHeight(p); } int addOnFooterHeight = 0; MReportSection *addOnFooter = findAddOnFooter(level); if (addOnFooter) addOnFooterHeight = addOnFooter->getHeight(); // Control de fin de página if (level == nextLevel) { if ((yPos + detailHeight + addOnFooterHeight) > currHeight) { return false; } } else if (level > nextLevel) { // El siguiente nivel es inferior: Se comprueba que es posible incluir un detalle del nivel actual // más todas los pies de detalle desde el nivel actual hasta el siguiente nivel, // más el addOnFooter del siguiente nivel int footersHeight = 0; for (int levelFooter = level; levelFooter > nextLevel; levelFooter--) { MReportSection *footerAux = findDetailFooter(levelFooter); if (footerAux) footersHeight += footerAux->getHeight(); } int addOnFooterAuxHeight = 0; MReportSection *addOnFooterAux = findAddOnFooter(nextLevel); if (addOnFooterAux) addOnFooterAuxHeight = addOnFooterAux->getHeight(); if ((yPos + detailHeight + footersHeight + addOnFooterAuxHeight) > currHeight) { return false; } } else if (level < nextLevel) { // El siguiente nivel es superior: Se comprueba que es posible incluir un detalle del nivel actual // más todas las cabeceras de detalle desde el nivel actual hasta el siguiente nivel // más un detalle del siguiente nivel más el addOnFooter del siguiente nivel int headersHeight = 0; for (int levelFooter = (level + 1); levelFooter <= nextLevel; levelFooter++) { MReportSection *headerAux = findDetailHeader(levelFooter); if (headerAux) headersHeight += headerAux->getHeight(); } MReportSection *detailAux = findDetail(nextLevel); if (detailAux) headersHeight += detailAux->getHeight(); int addOnFooterAuxHeight = 0; MReportSection *addOnFooterAux = findAddOnFooter(nextLevel); if (addOnFooterAux) addOnFooterAuxHeight = addOnFooterAux->getHeight(); if ((currY + detailHeight + headersHeight + addOnFooterAuxHeight) > currHeight) { return false; } } return true; }
//copyright : (C) 2002-2004 InfoSiAL S.L. //email : [email protected] void MReportEngine::drawDetail(MPageCollection *pages, int level, uint &currRecord, const int initRow, const int initCol) { currRecord_ = currRecord; QString detailValue; int nextLevel; int detailHeight = 0; MReportSection *detail = findDetail(level); MReportSection *footer; if (detail) detailHeight = detail->getHeight(); if (!canDrawDetailHeader(level, currRecord, currY)) { if (level > 0) drawAddOnFooter(pages, (level - 1), gDTFooters[(level - 1)], gDTSFooters[(level - 1)]); newPage(pages, level); // Sólo dibujamos el detail header si no hemos dibujado ya el addOnHeader if (!findAddOnHeader(level)) drawDetailHeader(pages, level); } else { drawDetailHeader(pages, level); } if (!detail) { drawDetailFooter(pages, level); return; } gDTFooters[level]->clear(); gDTSFooters[level]->clear(); int currLevel; int chkRow = 0; int loops = 0; if (initCol != 0) currX = leftMargin + (detail->getWidth() * (initCol - 1)); if (initRow != 0) currY = topMargin + (detail->getHeight() * (initRow - 1)); currLevel = level; do { QDomNode record = records.item(currRecord); if (record.nodeType() == QDomNode::ElementNode) { if (currLevel == level) { if ((chkRow = (currRecord / 2) % 20) == 0) emit signalRenderStatus(currRecord / 2); if (cancelRender) { MLabelObject lblCancel; lblCancel.setFont("Arial", 20, MLabelObject::Bold, false); lblCancel.setText(tr("INFORME INCOMPLETO\nCANCELADO POR EL USUARIO")); lblCancel.setGeometry(20, pageHeight / 2, 450, 70); lblCancel.setHorizontalAlignment(MLabelObject::Center); lblCancel.setVerticalAlignment(MLabelObject::Middle); lblCancel.draw(p); return; } QDomNamedNodeMap fields = record.attributes(); reserveSizeForCalcFields(&fields, level); detail->setPageNumber(currPage); detail->setReportDate(currDate); if (!canDrawDetail(level, currRecord, currY)) { if (loops) { drawAddOnFooter(pages, level, gDTFooters[level], gDTSFooters[level]); } else { if (level > 0) { drawAddOnFooter(pages, (level - 1), gDTFooters[(level - 1)], gDTSFooters[(level - 1)]); } } newPage(pages, level); } QDomNode record = records.item(currRecord); QDomNode *ptrRecord = &record; setFieldValues(&fields, level, detail, ptrRecord); if (detail->mustBeDrawed(ptrRecord)) { detail->setCalcFieldData(0, 0, ptrRecord, fillRecords_); int sectionHeight = detail->getHeight(); detail->draw(p, currX, currY, sectionHeight); detailHeight = sectionHeight; currX += detail->getWidth(); if (currX >= (pageWidth - rightMargin - leftMargin)) { currX = leftMargin; currY += sectionHeight; } MReportSection *rS = findDetail(level + 1); if (!rS) { for (uint i = 0; i <= level; i++) { rS = findDetailHeader(i); if (rS) csvData_ += rS->csvData(); rS = findDetail(i); if (rS) csvData_ += rS->csvData(); } csvData_ += "\n"; } } ++currRecord; } else { drawDetail(pages, currLevel, currRecord); } if (currRecord < records.count()) { record = records.item(currRecord); QDomNamedNodeMap fields = record.attributes(); detailValue = fields.namedItem("level").nodeValue(); currLevel = detailValue.toInt(); } if (cancelRender) { MLabelObject lblCancel; lblCancel.setFont("Arial", 20, MLabelObject::Bold, false); lblCancel.setText(tr("INFORME INCOMPLETO\nCANCELADO POR EL USUARIO")); lblCancel.setGeometry(20, pageHeight / 2, 450, 70); lblCancel.setHorizontalAlignment(MLabelObject::Center); lblCancel.setVerticalAlignment(MLabelObject::Middle); lblCancel.draw(p); return; } } loops++; } while (level <= currLevel && currRecord < records.count()); drawDetailFooter(pages, level, gDTFooters[level], gDTSFooters[level]); footer = findDetailFooter(level); if (footer && currRecord < records.count()) if (footer->newPage()) newPage(pages); }