You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
5.8 KiB
181 lines
5.8 KiB
/* 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
|