diff options
Diffstat (limited to 'lib/kofficecore/KoDocumentInfo.h')
-rw-r--r-- | lib/kofficecore/KoDocumentInfo.h | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/lib/kofficecore/KoDocumentInfo.h b/lib/kofficecore/KoDocumentInfo.h new file mode 100644 index 000000000..30e74cf7f --- /dev/null +++ b/lib/kofficecore/KoDocumentInfo.h @@ -0,0 +1,196 @@ +/* This file is part of the KDE project + Copyright (C) 1998, 1999, 2000 Torben Weis <weis@kde.org> + Copyright (C) 2004 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 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 KO_DOCUMENT_INFO_H +#define KO_DOCUMENT_INFO_H + +#include <qobject.h> +#include <qmap.h> +#include <kconfig.h> +#include <koffice_export.h> + +class QString; +class QStringList; +class QDomDocument; +class QDomElement; +class QDomNode; +class QDateTime; +class KoStore; +class KoDocumentInfoPage; +class KoXmlWriter; + +class KOFFICECORE_EXPORT KoDocumentInfo : public QObject +{ + Q_OBJECT +public: + KoDocumentInfo( QObject* parent = 0, const char* name = 0 ); + virtual ~KoDocumentInfo(); + + bool load( const QDomDocument& doc ); + bool loadOasis( const QDomDocument& metaDoc ); + + QDomDocument save(); + bool saveOasis( KoStore* store ); + + /** + * This info has an accessor because it's the most commonly used. + * Equivalent to page("about")->title() (but checking that the page exists) + */ + QString title() const; + QString creator() const; + + KoDocumentInfoPage* page( const QString& name ) const; + QStringList pages() const; + void documentInfochanged() { emit sigDocumentInfoModifed();} + signals: + void sigDocumentInfoModifed(); +}; + +class KOFFICECORE_EXPORT KoDocumentInfoPage : public QObject +{ +public: + KoDocumentInfoPage( QObject *parent, const char* name ); + + virtual bool load( const QDomElement& e ) = 0; + virtual QDomElement save( QDomDocument& doc ) = 0; + virtual bool loadOasis( const QDomNode& metaDoc ) = 0; + virtual bool saveOasis( KoXmlWriter &xmlWriter ) = 0; +}; + +class KOFFICECORE_EXPORT KoDocumentInfoAuthor : public KoDocumentInfoPage +{ + Q_OBJECT +public: + KoDocumentInfoAuthor( KoDocumentInfo* info ); + ~KoDocumentInfoAuthor(); + + virtual bool load( const QDomElement& e ); + virtual QDomElement save( QDomDocument& doc ); + virtual bool loadOasis( const QDomNode& metaDoc ); + virtual bool saveOasis( KoXmlWriter &xmlWriter ); + + QString fullName() const; + QString initial() const; + QString title() const; + QString company() const; + QString email() const; + QString telephoneHome() const; + QString telephoneWork() const; + QString fax() const; + QString country() const; + QString postalCode() const; + QString city() const; + QString street() const; + QString position() const; + + void setFullName( const QString& n ); + void setTitle( const QString& n ); + void setCompany( const QString& n ); + void setEmail( const QString& n ); + void setTelephoneHome( const QString& n ); + void setTelephoneWork( const QString& n ); + void setFax( const QString& n ); + void setCountry( const QString& n ); + void setPostalCode( const QString& n ); + void setCity( const QString& n ); + void setStreet( const QString& n ); + void setInitial( const QString& n ); + void setPosition( const QString& n ); + void initParameters(); + +private: + QString m_fullName; + QString m_title; + QString m_company; + QString m_email; + QString m_telephoneHome; + QString m_telephoneWork; + QString m_fax; + QString m_country; + QString m_postalCode; + QString m_city; + QString m_street; + QString m_initial; + QString m_position; + KConfig *m_emailCfg; +}; + +class KOFFICECORE_EXPORT KoDocumentInfoAbout : public KoDocumentInfoPage +{ + Q_OBJECT +public: + KoDocumentInfoAbout( KoDocumentInfo* info ); + + virtual bool load( const QDomElement& e ); + virtual QDomElement save( QDomDocument& doc ); + virtual bool loadOasis( const QDomNode& metaDoc ); + virtual bool saveOasis( KoXmlWriter &xmlWriter ); + + QString title() const; + QString abstract() const; + QString subject() const; + QString keywords() const; + QString initialCreator() const; + QString editingCycles() const; + QString creationDate() const; + QString modificationDate() const; + + void setKeywords( const QString &n ); + void setSubject( const QString& n ); + + void setTitle( const QString& n ); + void setAbstract( const QString& n ); + void saveParameters(); + +public slots: + void resetMetaData(); + +private: + KoDocumentInfo* m_docInfo; + QString m_title; + QString m_abstract; + QString m_keywords; + QString m_subject; + QString m_initialCreator; + QDateTime m_creationDate; + QDateTime m_modificationDate; + int m_editingCycles; + bool m_firstSave; +}; + +class KOFFICECORE_EXPORT KoDocumentInfoUserMetadata : public KoDocumentInfoPage +{ + Q_OBJECT +public: + KoDocumentInfoUserMetadata( KoDocumentInfo* info ); + + virtual bool load( const QDomElement& e ); + virtual QDomElement save( QDomDocument& doc ); + virtual bool loadOasis( const QDomNode& metaDoc ); + virtual bool saveOasis( KoXmlWriter &xmlWriter ); + + QMap<QString, QString>* metadataList() { return &m_metaList; } + +private: + QMap<QString, QString> m_metaList; + QStringList m_reserved; +}; + +#endif |