Changeset View
Changeset View
Standalone View
Standalone View
kexi/plugins/reports/kexireportview.cpp
Show First 20 Lines • Show All 382 Lines • ▼ Show 20 Line(s) | 379 | { | |||
---|---|---|---|---|---|
383 | return true; | 383 | return true; | ||
384 | } | 384 | } | ||
385 | 385 | | |||
386 | tristate KexiReportView::afterSwitchFrom(Kexi::ViewMode mode) | 386 | tristate KexiReportView::afterSwitchFrom(Kexi::ViewMode mode) | ||
387 | { | 387 | { | ||
388 | Q_UNUSED(mode); | 388 | Q_UNUSED(mode); | ||
389 | 389 | | |||
390 | if (tempData()->reportSchemaChangedInPreviousView) { | 390 | if (tempData()->reportSchemaChangedInPreviousView) { | ||
391 | tempData()->reportSchemaChangedInPreviousView = false; | ||||
392 | | ||||
391 | kDebug() << "Schema changed"; | 393 | kDebug() << "Schema changed"; | ||
392 | delete m_preRenderer; | 394 | delete m_preRenderer; | ||
393 | 395 | | |||
394 | //kDebug() << tempData()->reportDefinition.tagName(); | 396 | //kDebug() << tempData()->reportDefinition.tagName(); | ||
395 | m_preRenderer = new KoReportPreRenderer(tempData()->reportDefinition); | 397 | m_preRenderer = new KoReportPreRenderer(tempData()->reportDefinition); | ||
396 | if (m_preRenderer->isValid()) { | 398 | if (m_preRenderer->isValid()) { | ||
397 | KoReportData *reportData = 0; | 399 | KoReportData *reportData = 0; | ||
398 | if (!tempData()->connectionDefinition.isNull()) { | 400 | if (!tempData()->connectionDefinition.isNull()) { | ||
399 | reportData = sourceData(tempData()->connectionDefinition); | 401 | reportData = sourceData(tempData()->connectionDefinition); | ||
400 | } | 402 | } | ||
401 | if (!reportData) { | 403 | if (!reportData) { | ||
402 | reportData = new KexiDBReportData(QString(), KexiMainWindowIface::global()->project()->dbConnection()); | 404 | reportData = new KexiDBReportData(QString(), KexiMainWindowIface::global()->project()->dbConnection(), this); | ||
403 | } | 405 | } | ||
404 | m_preRenderer->setSourceData(reportData); | 406 | m_preRenderer->setSourceData(reportData); | ||
405 | 407 | | |||
406 | m_preRenderer->setName(tempData()->name); | 408 | m_preRenderer->setName(tempData()->name); | ||
407 | m_currentPage = 1; | 409 | m_currentPage = 1; | ||
408 | 410 | | |||
409 | //Add a kexi object to provide kexidb and extra functionality | 411 | //Add a kexi object to provide kexidb and extra functionality | ||
410 | if(!m_kexi) { | 412 | if(!m_kexi) { | ||
411 | m_kexi = new KexiScriptAdaptor(); | 413 | m_kexi = new KexiScriptAdaptor(); | ||
412 | } | 414 | } | ||
413 | m_preRenderer->registerScriptObject(m_kexi, "Kexi"); | 415 | m_preRenderer->registerScriptObject(m_kexi, "Kexi"); | ||
414 | 416 | | |||
415 | //If using a kexidb source, add a functions scripting object | 417 | //If using a kexidb source, add a functions scripting object | ||
416 | if (tempData()->connectionDefinition.attribute("type") == "internal") { | 418 | if (tempData()->connectionDefinition.attribute("type") == "internal") { | ||
417 | delete m_functions; // prev functions | 419 | delete m_functions; // prev functions | ||
418 | m_functions = new KRScriptFunctions(reportData, KexiMainWindowIface::global()->project()->dbConnection()); | 420 | m_functions = new KRScriptFunctions(reportData, KexiMainWindowIface::global()->project()->dbConnection()); | ||
419 | m_preRenderer->registerScriptObject(m_functions, "field"); | 421 | m_preRenderer->registerScriptObject(m_functions, "field"); | ||
420 | } | 422 | } | ||
421 | 423 | | |||
422 | delete m_reportDocument; // prev document | 424 | delete m_reportDocument; // prev document | ||
423 | m_reportDocument = m_preRenderer->generate(); | 425 | m_reportDocument = m_preRenderer->generate(); | ||
424 | if (m_reportDocument) { | 426 | if (!m_reportDocument) { | ||
427 | return false; | ||||
428 | } | ||||
425 | m_pageCount = m_reportDocument->pages(); | 429 | m_pageCount = m_reportDocument->pages(); | ||
426 | #ifndef KEXI_MOBILE | 430 | #ifndef KEXI_MOBILE | ||
427 | m_pageSelector->setRecordCount(m_pageCount); | 431 | m_pageSelector->setRecordCount(m_pageCount); | ||
428 | m_pageSelector->setCurrentRecordNumber(1); | 432 | m_pageSelector->setCurrentRecordNumber(1); | ||
429 | #endif | 433 | #endif | ||
430 | } | | |||
431 | | ||||
432 | m_reportPage = new KoReportPage(this, m_reportDocument); | 434 | m_reportPage = new KoReportPage(this, m_reportDocument); | ||
433 | m_reportPage->setObjectName("KexiReportPage"); | 435 | m_reportPage->setObjectName("KexiReportPage"); | ||
434 | 436 | | |||
435 | m_reportScene->setSceneRect(0,0,m_reportPage->rect().width() + 40, m_reportPage->rect().height() + 40); | 437 | m_reportScene->setSceneRect(0,0,m_reportPage->rect().width() + 40, m_reportPage->rect().height() + 40); | ||
436 | m_reportScene->addItem(m_reportPage); | 438 | m_reportScene->addItem(m_reportPage); | ||
437 | m_reportPage->setPos(20,20); | 439 | m_reportPage->setPos(20,20); | ||
438 | m_reportView->centerOn(0,0); | 440 | m_reportView->centerOn(0,0); | ||
439 | | ||||
440 | } else { | 441 | } else { | ||
441 | KMessageBox::error(this, i18n("Report schema appears to be invalid or corrupt"), i18n("Opening failed")); | 442 | KMessageBox::error(this, i18n("Report schema appears to be invalid or corrupt"), i18n("Opening failed")); | ||
442 | } | 443 | } | ||
443 | | ||||
444 | | ||||
445 | tempData()->reportSchemaChangedInPreviousView = false; | | |||
446 | } | 444 | } | ||
447 | return true; | 445 | return true; | ||
448 | } | 446 | } | ||
449 | 447 | | |||
450 | KoReportData* KexiReportView::sourceData(QDomElement e) | 448 | KoReportData* KexiReportView::sourceData(QDomElement e) | ||
451 | { | 449 | { | ||
452 | KoReportData *kodata = 0; | 450 | KoReportData *kodata = 0; | ||
453 | 451 | | |||
454 | if (e.attribute("type") == "internal") { | 452 | if (e.attribute("type") == "internal") { | ||
455 | kodata = new KexiDBReportData(e.attribute("source"), KexiMainWindowIface::global()->project()->dbConnection()); | 453 | kodata = new KexiDBReportData(e.attribute("source"), | ||
454 | KexiMainWindowIface::global()->project()->dbConnection(), | ||||
455 | this); | ||||
456 | } | 456 | } | ||
457 | #ifndef KEXI_MOBILE | 457 | #ifndef KEXI_MOBILE | ||
458 | if (e.attribute("type") == "external") { | 458 | if (e.attribute("type") == "external") { | ||
459 | kodata = new KexiMigrateReportData(e.attribute("source")); | 459 | kodata = new KexiMigrateReportData(e.attribute("source")); | ||
460 | } | 460 | } | ||
461 | #endif | 461 | #endif | ||
462 | return kodata; | 462 | return kodata; | ||
463 | } | 463 | } | ||
▲ Show 20 Lines • Show All 69 Lines • Show Last 20 Lines |