bool CAPresentationHandler::openDocument (const QString& uri) { QString error; QString mimetype = KMimeType::findByPath (uri)->name(); KoDocumentEntry documentEntry = KoDocumentEntry::queryByMimeType(mimetype); KoPart *part = documentEntry.createKoPart(&error); if (!part) { kDebug() << "Doc can't be openend" << error; return false; } d->document = qobject_cast<KPrDocument*> (part->document()); d->document->openUrl (KUrl (uri)); KoCanvasBase* paCanvas = dynamic_cast<KoCanvasBase*>(part->canvasItem(d->document)); KoPACanvasItem* paCanvasItem = dynamic_cast<KoPACanvasItem*> (paCanvas); if (!paCanvasItem) { kDebug() << "Failed to fetch a canvas item"; return false; } if (paCanvasItem) { d->paView = new CAPAView (documentController()->canvasController(), dynamic_cast<KoPACanvasBase*> (paCanvas), d->document); paCanvasItem->setView (d->paView); documentController()->canvasController()->setZoomHandler (static_cast<KoZoomHandler*> (paCanvasItem->viewConverter())); d->paView->connectToZoomController(); // update the canvas whenever we scroll, the canvas controller must emit this signal on scrolling/panning connect (documentController()->canvasController()->canvasControllerProxyObject(), SIGNAL(moveDocumentOffset(QPoint)), paCanvasItem, SLOT(slotSetDocumentOffset(QPoint))); // whenever the size of the document viewed in the canvas changes, inform the zoom controller connect (paCanvasItem, SIGNAL(documentSize(QSize)), this, SLOT(tellZoomControllerToSetDocumentSize(QSize))); paCanvasItem->update(); } setCanvas (paCanvas); KoToolManager::instance()->addController (documentController()->canvasController()); connect(documentController()->canvasController(), SIGNAL(needsCanvasResize(QSizeF)), SLOT(resizeCanvas(QSizeF))); connect (documentController()->canvasController(), SIGNAL(needCanvasUpdate()), SLOT(updateCanvas())); d->paDocumentModel = new CAPADocumentModel(this, d->document); emit totalNumberOfSlidesChanged(); QTimer::singleShot(0, this, SLOT(nextSlide())); return true; }
bool CASpreadsheetHandler::openDocument (const QString& uri) { QString error; QString mimetype = KMimeType::findByPath (uri)->name(); KoPart *part = KMimeTypeTrader::createInstanceFromQuery<KoPart>(mimetype, QLatin1String("Calligra/Part"), 0, QString(), QVariantList(), &error); if (!part) { kDebug() << "Doc can't be openend" << error; return false; } d->document = static_cast<Calligra::Sheets::Doc*> (part->document()); d->document->openUrl (KUrl (uri)); setCanvas (dynamic_cast<KoCanvasBase*>(part->canvasItem(d->document))); KoToolManager::instance()->addController (documentController()->canvasController()); d->canvasItem = dynamic_cast<Calligra::Sheets::CanvasItem*> (canvas()); if (!d->canvasItem) { kDebug() << "Failed to fetch a canvas item"; return false; } KoZoomHandler* zoomHandler = new KoZoomHandler(); documentController()->canvasController()->setZoomHandler (zoomHandler); KoZoomController* zoomController = documentController()->canvasController()->zoomController(); zoomController->setZoom (KoZoomMode::ZOOM_CONSTANT, 1.0); documentController()->canvasController()->setCanvasMode (KoCanvasController::Spreadsheet); if (d->canvasItem) { // update the canvas whenever we scroll, the canvas controller must emit this signal on scrolling/panning connect (documentController()->canvasController()->canvasControllerProxyObject(), SIGNAL(moveDocumentOffset(QPoint)), d->canvasItem, SLOT(setDocumentOffset(QPoint))); // whenever the size of the document viewed in the canvas changes, inform the zoom controller connect (d->canvasItem, SIGNAL(documentSizeChanged(QSize)), this, SLOT(tellZoomControllerToSetDocumentSize(QSize))); d->canvasItem->update(); } connect (documentController()->canvasController(), SIGNAL(needsCanvasResize(QSizeF)), SLOT(resizeCanvas(QSizeF))); connect (documentController()->canvasController(), SIGNAL(needCanvasUpdate()), SLOT(updateCanvas())); updateCanvas(); documentController()->canvasController()->zoomToFit(); emit sheetCountChanged(); return true; }