summaryrefslogtreecommitdiffstats
path: root/lib/kofficecore/KoDocumentChild.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /lib/kofficecore/KoDocumentChild.h
downloadkoffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz
koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/kofficecore/KoDocumentChild.h')
-rw-r--r--lib/kofficecore/KoDocumentChild.h180
1 files changed, 180 insertions, 0 deletions
diff --git a/lib/kofficecore/KoDocumentChild.h b/lib/kofficecore/KoDocumentChild.h
new file mode 100644
index 00000000..349961ed
--- /dev/null
+++ b/lib/kofficecore/KoDocumentChild.h
@@ -0,0 +1,180 @@
+/* This file is part of the KDE project
+ Copyright (C) 1998, 1999 Torben Weis <weis@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 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.
+*/
+#ifndef __koDocumentChild_h__
+#define __koDocumentChild_h__
+
+#include <KoChild.h>
+#include <koffice_export.h>
+class QDomDocument;
+class QDomElement;
+class KURL;
+class KoStore;
+class KoDocument;
+class KoDocumentChildPrivate;
+class KoDocumentEntry;
+class KoXmlWriter;
+
+/**
+ * @brief Holds an embedded object.
+ *
+ * In addition to its base class @ref KoChild it cares about the content
+ * of an embedded document. That means it supports operations like
+ * loading and saving.
+ *
+ * If you need a representation for embedded documents in your KOffice
+ * component then you should inherit from this class.
+ */
+class KOFFICECORE_EXPORT KoDocumentChild : public KoChild
+{
+ Q_OBJECT
+public:
+ KoDocumentChild( KoDocument* parent, KoDocument* doc, const QRect& geometry );
+
+ /**
+ * When using this constructor you must call @ref #setDocument before
+ * you can call any other function of this class.
+ */
+ KoDocumentChild( KoDocument* parent );
+
+ virtual ~KoDocumentChild();
+
+ /**
+ * Call this function only directly after calling the constructor
+ * that takes only a parent as argument.
+ */
+ virtual void setDocument( KoDocument *doc, const QRect &geometry );
+
+ /**
+ * @return document contained in this child
+ *
+ * @see KoDocument
+ */
+ KoDocument *document() const;
+
+ /**
+ * @return parent document of this child
+ *
+ * @see KoDocument
+ */
+ virtual KoDocument *parentDocument() const; // TODO: remove virtual, makes no sense
+
+ virtual KoDocument* hitTest( const QPoint& p, const QWMatrix& _matrix = QWMatrix() );
+
+ /**
+ * @note Can be empty (which is why it doesn't return a const KURL &)
+ */
+ KURL url() const;
+
+ /**
+ * Writes the "object" tag, but does NOT write the content of the
+ * embedded documents. Saving the embedded documents themselves
+ * is done in @ref KoDocument::saveChildren. This function just stores information
+ * about the position and id of the embedded document and should be
+ * called from within KoDocument::saveXML.
+ *
+ * The "object" element is not added to the document. It is just created
+ * and returned.
+ *
+ * @return the element containing the "object" tag.
+ */
+ virtual QDomElement save( QDomDocument& doc, bool uppercase=false );
+
+ /**
+ * Save an embedded object to OASIS.
+ * This method sets the attributes for the draw:object element in the parent XML document.
+ * It also prepares the embedded object for being saved into the store at
+ * the end of saving (see saveOasisToStore).
+ * Note that @p name is only used for "internal" documents (not extern).
+ */
+ void saveOasisAttributes( KoXmlWriter &xmlWriter, const QString& name );
+
+ /**
+ * Save an embedded object to an OASIS store.
+ * This is called automatically by the parent KoDocument's saveOasis
+ */
+ virtual bool saveOasis( KoStore* store, KoXmlWriter* manifestWriter );
+
+ /**
+ * Parses the "object" tag. This does NOT mean creating the child documents.
+ * AFTER the 'parser' has finished parsing, you must use @ref #loadDocument
+ * to actually load the embedded documents.
+ *
+ * What you should have in mind is that this method is called from within
+ * @ref KoDocument::loadXML while @ref #loadDocument is called from within
+ * @ref KoDocument::loadChildren, respectively from your implementation
+ * of these methods.
+ */
+ virtual bool load( const QDomElement& element, bool uppercase=false );
+
+ void loadOasis( const QDomElement &frameElement, const QDomElement& objectElement );
+
+ /**
+ * Actually loads the document from the disk/net or from the store,
+ * depending on @ref #url
+ */
+ virtual bool loadDocument( KoStore* );
+
+ /**
+ * Actually loads the document from the disk/net or from the store
+ * depending on the document's url
+ */
+ virtual bool loadOasisDocument( KoStore* store, const QDomDocument& manifestDoc );
+
+ virtual bool isStoredExtern() const;
+
+ /**
+ * This document (child) is deleted.
+ */
+ bool isDeleted() const;
+ void setDeleted( bool on = true );
+
+protected: // Should be private, but KWord needs access to the variables
+ // because it reimplements load/save (for uppercase tags)
+
+ /**
+ * Holds the source of this object, for example "file:/home/weis/image.gif"
+ * or "tar:/table1/2" if it is stored in a koffice store. This variable is
+ * set after parsing the OBJECT tag in @ref #load and is reset after
+ * calling @ref #loadDocument.
+ */
+ QString m_tmpURL;
+
+ /**
+ * This variable is
+ * set after parsing the OBJECT tag in @ref #load and is reset after
+ * calling @ref #loadDocument.
+ */
+ QRect m_tmpGeometry;
+
+ /**
+ * This variable is
+ * set after parsing the OBJECT tag in @ref #load and is reset after
+ * calling @ref #loadDocument.
+ */
+ QString m_tmpMimeType;
+
+private:
+ bool createUnavailDocument( KoStore* store, bool doOpenURL, const QString& mimeType );
+ bool loadDocumentInternal( KoStore* _store, const KoDocumentEntry& e, bool doOpenURL, bool oasis );
+
+private:
+ KoDocumentChildPrivate *d;
+};
+
+#endif