1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
/* This file is part of the KDE project
* Copyright (C) 2008 Thorsten Zachmann <zachmann@kde.org>
* Copyright (C) 2011 Boudewijn Rempt <boud@valdyas.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include "KoTextOdfSaveHelper.h"
#include <KoXmlWriter.h>
#include <KoOdf.h>
#include "KoTextWriter.h"
#include <KoShapeSavingContext.h>
#include <KoTextDocument.h>
#include <QTextDocument>
struct Q_DECL_HIDDEN KoTextOdfSaveHelper::Private {
Private(const QTextDocument *document, int from, int to)
: context(0)
, document(document)
, from(from)
, to(to)
#ifdef SHOULD_BUILD_RDF
, rdfModel(0)
#endif
{
}
KoShapeSavingContext *context;
const QTextDocument *document;
int from;
int to;
#ifdef SHOULD_BUILD_RDF
QSharedPointer<Soprano::Model> rdfModel; //< This is so cut/paste can serialize the relevant RDF to the clipboard
#endif
};
KoTextOdfSaveHelper::KoTextOdfSaveHelper(const QTextDocument *document, int from, int to)
: d(new Private(document, from, to))
{
}
KoTextOdfSaveHelper::~KoTextOdfSaveHelper()
{
delete d;
}
bool KoTextOdfSaveHelper::writeBody()
{
if (d->to < d->from) {
qSwap(d->to, d->from);
}
Q_ASSERT(d->context);
KoXmlWriter & bodyWriter = d->context->xmlWriter();
bodyWriter.startElement("office:body");
bodyWriter.startElement(KoOdf::bodyContentElement(KoOdf::Text, true));
KoTextWriter writer(*d->context, 0);
writer.write(d->document, d->from, d->to);
bodyWriter.endElement(); // office:element
bodyWriter.endElement(); // office:body
return true;
}
KoShapeSavingContext * KoTextOdfSaveHelper::context(KoXmlWriter * bodyWriter,
KoGenStyles & mainStyles,
KoEmbeddedDocumentSaver & embeddedSaver)
{
d->context = new KoShapeSavingContext(*bodyWriter, mainStyles, embeddedSaver);
return d->context;
}
#ifdef SHOULD_BUILD_RDF
void KoTextOdfSaveHelper::setRdfModel(QSharedPointer<Soprano::Model> m)
{
d->rdfModel = m;
}
QSharedPointer<Soprano::Model> KoTextOdfSaveHelper::rdfModel() const
{
return d->rdfModel;
}
#endif
KoStyleManager *KoTextOdfSaveHelper::styleManager() const
{
return KoTextDocument(d->document).styleManager();
}
|