summaryrefslogtreecommitdiffstats
path: root/kmail/kmailicalIface.h
diff options
context:
space:
mode:
Diffstat (limited to 'kmail/kmailicalIface.h')
-rw-r--r--kmail/kmailicalIface.h175
1 files changed, 175 insertions, 0 deletions
diff --git a/kmail/kmailicalIface.h b/kmail/kmailicalIface.h
new file mode 100644
index 00000000..81948fdf
--- /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