[Okular-devel] Implement ODF export for TextDocumentGenerator

Brad Hards bradh at frogmouth.net
Sun Aug 24 12:22:21 CEST 2008


G'day team,

Qt 4.5 offers us an easy way to write an ODF text file from a QTextDocument. A 
few of our generators have such a thing. So here is the easy patch....

This only applies to those deriving from Okular::TextDocumentGenerator. It 
could be applied to Plucker generator, but I don't have any samples that 
work.

Thoughts / comments?

Brad

===================================================================
--- textdocumentgenerator.cpp   (revision 850712)
+++ textdocumentgenerator.cpp   (working copy)
@@ -19,6 +19,9 @@
 #include <QtGui/QImage>
 #include <QtGui/QPainter>
 #include <QtGui/QPrinter>
+#if QT_VERSION >= 0x040500
+#include <QtGui/QTextDocumentWriter>
+#endif

 #include <okular/core/action.h>
 #include <okular/core/annotations.h>
@@ -425,6 +428,11 @@
     if ( formats.isEmpty() ) {
         formats.append( Okular::ExportFormat::standardFormat( 
Okular::ExportFormat::PlainText ) );
         formats.append( Okular::ExportFormat::standardFormat( 
Okular::ExportFormat::PDF ) );
+#if QT_VERSION >= 0x040500
+       if ( 
QTextDocumentWriter::supportedDocumentFormats().contains( "ODF" ) ) {
+           formats.append( Okular::ExportFormat::standardFormat( 
Okular::ExportFormat::OpenDocumentText ) );
+       }
+#endif
     }

     return formats;
@@ -456,8 +464,13 @@
         out << d->mDocument->toPlainText();

         return true;
-    }
+#if QT_VERSION >= 0x040500
+    } else if ( format.mimeType()->name() == 
QLatin1String( "application/vnd.oasis.opendocument.text" ) ) {
+       QTextDocumentWriter odfWriter( fileName, "odf" );

+       return odfWriter.write( d->mDocument );
+    }
+#endif
     return false;
 }



More information about the Okular-devel mailing list