Changeset View
Changeset View
Standalone View
Standalone View
libs/koreport/renderer/KoReportPreRenderer.cpp
Show First 20 Lines • Show All 464 Lines • ▼ Show 20 Line(s) | 459 | { | |||
---|---|---|---|---|---|
465 | LabelSizeInfo label; | 465 | LabelSizeInfo label; | ||
466 | if (d->m_reportData->page.getPageSize() == "Labels") { | 466 | if (d->m_reportData->page.getPageSize() == "Labels") { | ||
467 | label = LabelSizeInfo::find(d->m_reportData->page.getLabelType()); | 467 | label = LabelSizeInfo::find(d->m_reportData->page.getLabelType()); | ||
468 | if (label.isNull()) | 468 | if (label.isNull()) | ||
469 | return 0; | 469 | return 0; | ||
470 | } | 470 | } | ||
471 | 471 | | |||
472 | //kDebug() << "Creating Document"; | 472 | //kDebug() << "Creating Document"; | ||
473 | d->m_document = new ORODocument(d->m_reportData->m_title); | 473 | QScopedPointer<ORODocument> document(new ORODocument(d->m_reportData->m_title)); | ||
474 | 474 | | |||
475 | d->m_pageCounter = 0; | 475 | d->m_pageCounter = 0; | ||
476 | d->m_yOffset = 0.0; | 476 | d->m_yOffset = 0.0; | ||
477 | 477 | | |||
478 | //kDebug() << "Calculating Margins"; | 478 | //kDebug() << "Calculating Margins"; | ||
479 | if (!label.isNull()) { | 479 | if (!label.isNull()) { | ||
480 | if (d->m_reportData->page.isPortrait()) { | 480 | if (d->m_reportData->page.isPortrait()) { | ||
481 | d->m_topMargin = (label.startY() / 100.0); | 481 | d->m_topMargin = (label.startY() / 100.0); | ||
Show All 39 Lines | |||||
521 | if (!d->m_reportData->page.isPortrait()) { | 521 | if (!d->m_reportData->page.isPortrait()) { | ||
522 | qreal tmp = d->m_maxWidth; | 522 | qreal tmp = d->m_maxWidth; | ||
523 | d->m_maxWidth = d->m_maxHeight; | 523 | d->m_maxWidth = d->m_maxHeight; | ||
524 | d->m_maxHeight = tmp; | 524 | d->m_maxHeight = tmp; | ||
525 | } | 525 | } | ||
526 | 526 | | |||
527 | //kDebug() << "Page Size:" << d->m_maxWidth << d->m_maxHeight; | 527 | //kDebug() << "Page Size:" << d->m_maxWidth << d->m_maxHeight; | ||
528 | 528 | | |||
529 | d->m_document->setPageOptions(rpo); | 529 | document->setPageOptions(rpo); | ||
530 | d->m_kodata->setSorting(d->m_reportData->m_detailSection->m_sortedFields); | 530 | d->m_kodata->setSorting(d->m_reportData->m_detailSection->m_sortedFields); | ||
531 | d->m_kodata->open(); | 531 | if (!d->m_kodata->open()) { | ||
532 | return 0; | ||||
533 | } | ||||
532 | d->initEngine(); | 534 | d->initEngine(); | ||
533 | 535 | | |||
534 | //Loop through all abjects that have been registered, and register them with the script handler | 536 | //Loop through all abjects that have been registered, and register them with the script handler | ||
535 | if (d->m_scriptHandler) { | 537 | if (d->m_scriptHandler) { | ||
536 | QMapIterator<QString, QObject*> i(m_scriptObjects); | 538 | QMapIterator<QString, QObject*> i(m_scriptObjects); | ||
537 | while (i.hasNext()) { | 539 | while (i.hasNext()) { | ||
538 | i.next(); | 540 | i.next(); | ||
539 | d->m_scriptHandler->registerScriptObject(i.value(), i.key()); | 541 | d->m_scriptHandler->registerScriptObject(i.value(), i.key()); | ||
Show All 34 Lines | 570 | if (!d->m_reportData->page.isPortrait()) { | |||
574 | numRows = label.columns(); | 576 | numRows = label.columns(); | ||
575 | } | 577 | } | ||
576 | 578 | | |||
577 | KRDetailSectionData * detailData = d->m_reportData->m_detailSection; | 579 | KRDetailSectionData * detailData = d->m_reportData->m_detailSection; | ||
578 | if (detailData->m_detailSection) { | 580 | if (detailData->m_detailSection) { | ||
579 | KoReportData *mydata = d->m_kodata; | 581 | KoReportData *mydata = d->m_kodata; | ||
580 | 582 | | |||
581 | if (mydata && mydata->recordCount() > 0) { /* && !((query = orqThis->getQuery())->eof()))*/ | 583 | if (mydata && mydata->recordCount() > 0) { /* && !((query = orqThis->getQuery())->eof()))*/ | ||
582 | mydata->moveFirst(); | 584 | if (!mydata->moveFirst()) { | ||
585 | return 0; | ||||
586 | } | ||||
583 | int row = 0; | 587 | int row = 0; | ||
584 | int col = 0; | 588 | int col = 0; | ||
585 | do { | 589 | do { | ||
586 | tmp = d->m_yOffset; // store the value as renderSection changes it | 590 | tmp = d->m_yOffset; // store the value as renderSection changes it | ||
587 | d->renderSection(*(detailData->m_detailSection)); | 591 | d->renderSection(*(detailData->m_detailSection)); | ||
588 | d->m_yOffset = tmp; // restore the value that renderSection modified | 592 | d->m_yOffset = tmp; // restore the value that renderSection modified | ||
589 | 593 | | |||
590 | col++; | 594 | col++; | ||
Show All 29 Lines | 621 | if (d->m_reportData->m_reportFooter) { | |||
620 | } | 624 | } | ||
621 | d->renderSection(*(d->m_reportData->m_reportFooter)); | 625 | d->renderSection(*(d->m_reportData->m_reportFooter)); | ||
622 | } | 626 | } | ||
623 | } | 627 | } | ||
624 | d->finishCurPage(true); | 628 | d->finishCurPage(true); | ||
625 | 629 | | |||
626 | // _postProcText contains those text boxes that need to be updated | 630 | // _postProcText contains those text boxes that need to be updated | ||
627 | // with information that wasn't available at the time it was added to the document | 631 | // with information that wasn't available at the time it was added to the document | ||
628 | d->m_scriptHandler->setPageTotal(d->m_document->pages()); | 632 | d->m_scriptHandler->setPageTotal(document->pages()); | ||
629 | 633 | | |||
630 | for (int i = 0; i < d->m_postProcText.size(); i++) { | 634 | for (int i = 0; i < d->m_postProcText.size(); i++) { | ||
631 | OROTextBox * tb = d->m_postProcText.at(i); | 635 | OROTextBox * tb = d->m_postProcText.at(i); | ||
632 | 636 | | |||
633 | d->m_scriptHandler->setPageNumber(tb->page()->page() + 1); | 637 | d->m_scriptHandler->setPageNumber(tb->page()->page() + 1); | ||
634 | 638 | | |||
635 | tb->setText(d->m_scriptHandler->evaluate(tb->text()).toString()); | 639 | tb->setText(d->m_scriptHandler->evaluate(tb->text()).toString()); | ||
636 | } | 640 | } | ||
637 | 641 | | |||
638 | d->asyncManager->startRendering(); | 642 | d->asyncManager->startRendering(); | ||
639 | 643 | | |||
640 | d->m_scriptHandler->displayErrors(); | 644 | d->m_scriptHandler->displayErrors(); | ||
641 | 645 | | |||
642 | d->m_kodata->close(); | 646 | if (!d->m_kodata->close()) { | ||
647 | return 0; | ||||
648 | } | ||||
643 | delete d->m_scriptHandler; | 649 | delete d->m_scriptHandler; | ||
644 | delete d->m_kodata; | 650 | delete d->m_kodata; | ||
645 | d->m_postProcText.clear(); | 651 | d->m_postProcText.clear(); | ||
646 | 652 | | |||
653 | d->m_document = document.take(); | ||||
647 | return d->m_document; | 654 | return d->m_document; | ||
648 | } | 655 | } | ||
649 | 656 | | |||
650 | void KoReportPreRenderer::setSourceData(KoReportData *data) | 657 | void KoReportPreRenderer::setSourceData(KoReportData *data) | ||
651 | { | 658 | { | ||
652 | if (d && data) { | 659 | if (d && data) { | ||
653 | d->m_kodata = data; | 660 | d->m_kodata = data; | ||
654 | } | 661 | } | ||
Show All 38 Lines |