bool KexiSimplePrintingCommand::showPrintPreview(const KexiSimplePrintingSettings& settings, const QString& aTitleText, bool reload) { m_settings = settings; if (!m_previewEngine) m_previewEngine = new KexiSimplePrintingEngine(m_settings, this); if (reload) m_printPreviewNeedsReloading = true; bool backToPage0 = true; QString titleText(aTitleText.stripWhiteSpace()); KexiDB::Connection *conn = m_mainWin->project()->dbConnection(); KexiDB::TableOrQuerySchema tableOrQuery(conn, m_objectId); if (!tableOrQuery.table() && !tableOrQuery.query()) { //! @todo item not found return false; } if (titleText.isEmpty()) titleText = tableOrQuery.captionOrName(); if (!m_previewWindow || m_printPreviewNeedsReloading) { QString errorMessage; if (!m_previewEngine->init( *conn, tableOrQuery, titleText, errorMessage)) { if (!errorMessage.isEmpty()) KMessageBox::sorry(m_mainWin, errorMessage, i18n("Print Preview")); return false; } } if (!m_previewWindow) { backToPage0 = false; m_previewWindow = new KexiSimplePrintPreviewWindow( *m_previewEngine, tableOrQuery.captionOrName(), 0, Qt::WStyle_Customize|Qt::WStyle_NormalBorder|Qt::WStyle_Title| Qt::WStyle_SysMenu|Qt::WStyle_MinMax|Qt::WStyle_ContextHelp); connect(m_previewWindow, SIGNAL(printRequested()), this, SLOT(print())); connect(m_previewWindow, SIGNAL(pageSetupRequested()), this, SLOT(slotShowPageSetupRequested())); m_previewWindow->show(); KDialog::centerOnScreen(m_previewWindow); m_printPreviewNeedsReloading = false; } if (m_printPreviewNeedsReloading) {//dirty m_previewEngine->clear(); //! @todo progress bar... m_previewEngine->setTitleText( titleText ); m_previewWindow->setFullWidth(); m_previewWindow->updatePagesCount(); m_printPreviewNeedsReloading = false; } if (backToPage0) m_previewWindow->goToPage(0); m_previewWindow->show(); m_previewWindow->raise(); // m_previewWindow->setPagesCount(INT_MAX); //will be properly set on demand return true; }
void KexiSimplePrintPreviewWindow::slotPageSetup() { lower(); emit pageSetupRequested(); }