summaryrefslogtreecommitdiffstats
path: root/lib/kofficecore/KoOasisLoadingContext.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kofficecore/KoOasisLoadingContext.h')
-rw-r--r--lib/kofficecore/KoOasisLoadingContext.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/lib/kofficecore/KoOasisLoadingContext.h b/lib/kofficecore/KoOasisLoadingContext.h
new file mode 100644
index 000000000..cac1786b4
--- /dev/null
+++ b/lib/kofficecore/KoOasisLoadingContext.h
@@ -0,0 +1,122 @@
+/* This file is part of the KDE project
+ Copyright (C) 2005 David Faure <faure@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ 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.
+*/
+
+#ifndef KOOASISLOADINGCONTEXT_H
+#define KOOASISLOADINGCONTEXT_H
+
+class KoXmlWriter;
+class QDomElement;
+class KoDocument;
+class KoOasisStyles;
+class KoPictureCollection;
+class KoStore;
+
+#include <qmap.h>
+#include <koffice_export.h>
+#include <qstringlist.h>
+#include <KoStyleStack.h>
+
+/**
+ * Used during loading of Oasis format (and discarded at the end of the loading).
+ *
+ * @author David Faure <faure@kde.org>
+ */
+class KOFFICECORE_EXPORT KoOasisLoadingContext
+{
+public:
+ /**
+ * Stores reference to the KoOasisStyles and stored passed by KoDocument.
+ * Make sure that the KoOasisStyles instance outlives this KoOasisLoadingContext instance.
+ * (This is the case during loading, when using the KoOasisStyles given by KoDocument)
+ *
+ * @param doc the KoDocument being loaded
+ * @param styles reference to the KoOasisStyles parsed by KoDocument
+ * @param store pointer to store, if available, for e.g. loading images.
+ */
+ KoOasisLoadingContext( KoDocument* doc, KoOasisStyles& styles, KoStore* store );
+ ~KoOasisLoadingContext();
+
+ KoDocument* koDocument() { return m_doc; }
+ KoStore* store() { return m_store; }
+
+ KoOasisStyles& oasisStyles() { return m_styles; }
+ KoStyleStack& styleStack() { return m_styleStack; }
+
+ const QDomDocument& manifestDocument() const { return m_manifestDoc; }
+
+ /// Return the <meta:generator> of the document, e.g. "KOffice/1.4.0a"
+ QString generator() const;
+
+ /**
+ * Convenience method for loading the style of an object
+ * before loading that object.
+ *
+ * Read attribute (nsURI,attrName) from the given dom element,
+ * treat that attribute as a style name, and load that style
+ * including all its parent styles.
+ * @param element the dom element to read the attribute from
+ * @param nsURI the namespace URI of the attribute to read
+ * @param attrName the name of the attribute to read
+ * @param family the style family used for this object
+ */
+ void fillStyleStack( const QDomElement& element, const char* nsURI, const char* attrName, const char* family );
+
+ /**
+ * Add @p style to the stack, as well as all its parent styles
+ * and the default style for this style family.
+ *
+ * @param style the dom element containing the style to add to the stack
+ * @param family the family to use when looking up parent styles
+ * @param usingStylesAutoStyles if true, the parent styles are looked up
+ * in the automatic styles from styles.xml, instead of looking up
+ * in the automatic styles from content.xml as we usually do.
+ * This is useful for loading headers and footers for instance.
+ * See setUseStylesAutoStyles(), which makes fillStyleStack() set this bool.
+ *
+ * Usually you would call fillStyleStack() instead.
+ */
+ void addStyles( const QDomElement* style, const char* family, bool usingStylesAutoStyles = false );
+
+ /// Set to true while loading headers and footers, to remember to use auto styles
+ /// from styles.xml
+ void setUseStylesAutoStyles( bool useStylesAutoStyles ) { m_useStylesAutoStyles = useStylesAutoStyles; }
+ //bool useStylesAutoStyles() const { return m_useStylesAutoStyles; }
+
+private:
+ void parseMeta() const;
+
+private:
+ KoDocument* m_doc;
+ KoStore* m_store;
+ KoOasisStyles& m_styles;
+ KoStyleStack m_styleStack;
+
+ mutable QString m_generator;
+ mutable bool m_metaXmlParsed;
+ bool m_useStylesAutoStyles;
+ bool m_unused1; // padding, can be used later
+ bool m_unused2; // padding, can be used later
+
+ QDomDocument m_manifestDoc;
+
+ class Private;
+ Private *d;
+};
+
+#endif /* KOOASISLOADINGCONTEXT_H */
+