[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/kword/part
From:       Sebastian Sauer <mail () dipe ! org>
Date:       2008-05-19 20:00:09
Message-ID: 1211227209.394918.27070.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 809966 by sebsauer:

moved code related to saving into an own class+file to keep the bload-level a bit \
smaller ;)

 M  +1 -0      CMakeLists.txt  
 M  +9 -107    KWDocument.cpp  
 A             KWOdfWriter.cpp   [License: LGPL (v2+)]
 A             KWOdfWriter.h   [License: LGPL (v2+)]


--- trunk/koffice/kword/part/CMakeLists.txt #809965:809966
@@ -22,6 +22,7 @@
     KWViewModePreview.cpp
     KWStatusBar.cpp
     KWOdfLoader.cpp
+    KWOdfWriter.cpp
     KWOdfSharedLoadingData.cpp
     KWDLoader.cpp
 
--- trunk/koffice/kword/part/KWDocument.cpp #809965:809966
@@ -28,6 +28,7 @@
 #include "KWPage.h"
 #include "KWOdfLoader.h"
 #include "KWDLoader.h"
+#include "KWOdfWriter.h"
 #include "frames/KWFrameSet.h"
 #include "frames/KWTextFrameSet.h"
 #include "frames/KWFrame.h"
@@ -48,15 +49,12 @@
 #include <KoShapeFactory.h>
 #include <KoStyleManager.h>
 #include <KoInteractionTool.h>
-#include <KoStoreDevice.h>
-#include <KoXmlWriter.h>
 #include <KoInlineTextObjectManager.h>
 #include <KoImageCollection.h>
 #include <KoDocumentInfo.h>
 #include <KoCharacterStyle.h>
 #include <KoParagraphStyle.h>
 #include <KoDataCenter.h>
-#include <KoTextShapeData.h>
 
 // KDE + Qt includes
 #include <klocale.h>
@@ -64,7 +62,6 @@
 #include <kmessagebox.h>
 #include <kaction.h>
 #include <kdebug.h>
-#include <KTemporaryFile>
 #include <QIODevice>
 #include <QTimer>
 #include <QThread>
@@ -146,109 +143,6 @@
     // TODO
 }
 
-bool KWDocument::saveOdf( SavingContext &documentContext ) {
-    KoStore * store = documentContext.odfStore.store();
-    KoXmlWriter * manifestWriter = documentContext.odfStore.manifestWriter();
-    if ( !store->open( "content.xml" ) )
-        return false;
-
-    KoStoreDevice contentDev( store );
-    KoXmlWriter* contentWriter = KoOdfWriteStore::createOasisXmlWriter( &contentDev, \
                "office:document-content" );
-
-    // for office:master-styles
-    KTemporaryFile masterStyles;
-    masterStyles.open();
-    KoXmlWriter masterStylesTmpWriter( &masterStyles, 1 );
-
-    // for office:body
-    KTemporaryFile contentTmpFile;
-    contentTmpFile.open();
-    KoXmlWriter contentTmpWriter( &contentTmpFile, 1 );
-
-    contentTmpWriter.startElement( "office:body" );
-    contentTmpWriter.startElement( "office:text" );
-
-    KoGenStyles mainStyles;
-    KoShapeSavingContext context(contentTmpWriter, mainStyles, \
                documentContext.embeddedSaver);
-
-    KWTextFrameSet *mainTextFrame = 0;
-
-    foreach(KWFrameSet *fs, frameSets()) {
-        // TODO loop over all non-autocreated frames and save them.
-        KWTextFrameSet *tfs = dynamic_cast<KWTextFrameSet*> (fs);
-        if (tfs) {
-            if (tfs->textFrameSetType() == KWord::MainTextFrameSet) {
-                mainTextFrame = tfs;
-                continue;
-            }
-        }
-        foreach(KWFrame *frame, fs->frames()) {
-            //FIXME: Each text frame will save the entire document of the frameset.
-            frame->saveOdf(context);
-        }
-    }
-
-    if (mainTextFrame) {
-        if (! mainTextFrame->frames().isEmpty() && mainTextFrame->frames().first() ) \
                {
-            KoTextShapeData * shapeData = dynamic_cast<KoTextShapeData *>( \
                mainTextFrame->frames().first()->shape()->userData() );
-
-            if ( shapeData ) {
-                shapeData->saveOdf(context);
-            }
-        }
-    }
-
-/*
-    contentTmpWriter.startElement( odfTagName() );
-
-    paContext.setXmlWriter( contentTmpWriter );
-    paContext.setOptions( KoPASavingContext::DrawId );
-
-    // save pages
-    foreach ( KoPAPageBase *page, m_pages )
-    {
-        page->saveOdf( paContext );
-        paContext.incrementPage();
-    }
-*/
-    contentTmpWriter.endElement(); // office:text
-    contentTmpWriter.endElement(); // office:body
-
-    contentTmpFile.close();
-
-    mainStyles.saveOdfAutomaticStyles( contentWriter, false );
-
-    // And now we can copy over the contents from the tempfile to the real one
-    contentWriter->addCompleteElement( &contentTmpFile );
-
-    contentWriter->endElement(); // root element
-    contentWriter->endDocument();
-    delete contentWriter;
-
-    if ( !store->close() ) // done with content.xml
-        return false;
-
-    //add manifest line for content.xml
-    manifestWriter->addManifestEntry( "content.xml", "text/xml" );
-
-    if ( !mainStyles.saveOdfStylesDotXml( store, manifestWriter ) )
-        return false;
-
-    bool ok=true;
-    foreach(KoDataCenter *dataCenter, m_dataCenterMap)
-    {
-        ok = ok && dataCenter->completeSaving(store, manifestWriter);
-    }
-    if(!ok)
-        return false;
-
-#if 0 // tz: remove until data center is used
-    if (!context.saveImages(store, manifestWriter))
-        return false;
-#endif
-    return true;
-}
-
 KoView* KWDocument::createViewInstance(QWidget* parent) {
     KWView *view = new KWView(m_viewMode, this, parent);
     foreach(KWFrameSet *fs, m_frameSets) {
@@ -664,6 +558,14 @@
     return ok;
 }
 
+bool KWDocument::saveOdf( SavingContext &documentContext ) {
+    KWOdfWriter writer(this);
+    bool ok = writer.save(documentContext.odfStore, documentContext.embeddedSaver);
+    foreach(KoDataCenter *dataCenter, m_dataCenterMap) {
+        ok = ok && dataCenter->completeSaving(documentContext.odfStore.store(), \
documentContext.odfStore.manifestWriter()); +    }
+    return ok;
+}
 
 void KWDocument::requestMoreSpace(KWTextFrameSet *fs) {
 //kDebug(32002) <<"KWDocument::requestMoreSpace";


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic