diff options
Diffstat (limited to 'kmail/kmailicalIface.h')
-rw-r--r-- | kmail/kmailicalIface.h | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/kmail/kmailicalIface.h b/kmail/kmailicalIface.h new file mode 100644 index 000000000..81948fdfa --- /dev/null +++ b/kmail/kmailicalIface.h @@ -0,0 +1,175 @@ +/* + This file is part of KMail. + Copyright (c) 2003 Steffen Hansen <steffen@klaralvdalens-datakonsult.se> + Copyright (c) 2003 - 2004 Bo Thorsen <bo@sonofthor.dk> + + 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. + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ +#ifndef KMAILICALIFACE_H +#define KMAILICALIFACE_H + +#include <dcopobject.h> +#include <qstringlist.h> +#include <kurl.h> + +// yes, this is this very header - but it tells dcopidl to include it +// in _stub.cpp and _skel.cpp files, to get the definition of the structs. +// ### dcopidlng bug: "" is copied verbatim... +// The kmail/ is so that it can be found by the resources easily +#include <kmail/kmailicalIface.h> + +class KMailICalIface : virtual public DCOPObject +{ + K_DCOP + +public: +k_dcop: + struct SubResource { + //dcopidl barfs on those constructors, but dcopidlng works + SubResource() {} // for QValueList + SubResource( const QString& loc, const QString& lab, bool rw, bool ar ) + : location( loc ), label( lab ), writable( rw ), alarmRelevant( ar ) {} + QString location; // unique + QString label; // shown to the user + bool writable; + bool alarmRelevant; + }; + + /// The format of the mails containing other contents than actual mail + /// (like contacts, calendar etc.) + /// This is currently either ical/vcard, or XML. + /// For actual mail folders this simply to know which resource handles it + /// This enum matches the one defined in kmail.kcfg + enum StorageFormat { StorageIcalVcard, StorageXML }; + + /// This bitfield indicates which changes have been made in a folder, at syncing time. + enum FolderChanges { NoChange = 0, Contents = 1, ACL = 2 }; + + virtual bool isWritableFolder( const QString& type, + const QString& resource ) = 0; + + virtual KMailICalIface::StorageFormat storageFormat( const QString& resource ) = 0; + + virtual KURL getAttachment( const QString& resource, + Q_UINT32 sernum, + const QString& filename ) = 0; + virtual QString attachmentMimetype( const QString &resource, + Q_UINT32 sernum, + const QString &filename ) = 0; + + virtual QStringList listAttachments( const QString &resource, Q_UINT32 sernum ) = 0; + + /// Update a kolab storage entry. Returns the new mail serial number, + /// or 0 if something went wrong. Can be used for adding as well. + virtual Q_UINT32 update( const QString& resource, + Q_UINT32 sernum, + const QString& subject, + const QString& plainTextBody, + const QMap<QCString, QString>& customHeaders, + const QStringList& attachmentURLs, + const QStringList& attachmentMimetypes, + const QStringList& attachmentNames, + const QStringList& deletedAttachments ) = 0; + + virtual bool deleteIncidenceKolab( const QString& resource, + Q_UINT32 sernum ) = 0; + + /// Return the number of mails that need to be looked at by incidencesKolab. + /// This allows to call incidencesKolab in chunks. + virtual int incidencesKolabCount( const QString& mimetype /*ignored*/, + const QString& resource ) = 0; + + virtual QMap<Q_UINT32, QString> incidencesKolab( const QString& mimetype, + const QString& resource, + int startIndex, + int nbMessages ) = 0; + /** + * Return list of subresources. @p contentsType is + * Mail, Calendar, Contact, Note, Task or Journal + */ + virtual QValueList<KMailICalIface::SubResource> subresourcesKolab( const QString& contentsType ) = 0; + + /** + * Trigger the creation of a new resource folder with name @param resource + * under parent @param. + * @return success or failure + */ + virtual bool addSubresource( const QString& resource, + const QString& parent, + const QString& contentsType ) = 0; + /** + * Trigger the deletion of a new resource folder with id @param resource. + * @return success or failure + */ + virtual bool removeSubresource( const QString& resource ) = 0; + + /** + * Causes all resource folders of the given type to be synced with the server. + */ + virtual bool triggerSync( const QString & ) = 0; + +k_dcop_signals: + void incidenceAdded( const QString& type, const QString& folder, + Q_UINT32 sernum, int format, const QString& entry ); + void asyncLoadResult( const QMap<Q_UINT32, QString>, const QString& type, + const QString& folder ); + void incidenceDeleted( const QString& type, const QString& folder, + const QString& uid ); + void signalRefresh( const QString& type, const QString& folder ); + void subresourceAdded( const QString& type, const QString& resource, + const QString& label, bool writable, bool alarmRelevant ); + void subresourceDeleted( const QString& type, const QString& resource ); +}; + +inline QDataStream& operator<<( QDataStream& str, const KMailICalIface::SubResource& subResource ) +{ + str << subResource.location << subResource.label << subResource.writable << subResource.alarmRelevant; + return str; +} +inline QDataStream& operator>>( QDataStream& str, KMailICalIface::SubResource& subResource ) +{ + str >> subResource.location >> subResource.label >> subResource.writable >> subResource.alarmRelevant; + return str; +} + +inline QDataStream& operator<<( QDataStream& str, const KMailICalIface::StorageFormat& format ) +{ + Q_UINT32 foo = format; + str << foo; + return str; +} + +inline QDataStream& operator>>( QDataStream& str, KMailICalIface::StorageFormat& format ) +{ + Q_UINT32 foo; + str >> foo; + format = ( KMailICalIface::StorageFormat )foo; + return str; +} + + +#endif |