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.
koffice/lib/kofficecore/KoDocumentInfo.h

197 lines
5.6 KiB

/* 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