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