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.
107 lines
3.9 KiB
107 lines
3.9 KiB
/*
|
|
This file is part of libkpimexchange
|
|
Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.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 KDEPIM_EXCHANGE_MONITOR_H
|
|
#define KDEPIM_EXCHANGE_MONITOR_H
|
|
|
|
#include <qstring.h>
|
|
#include <qmap.h>
|
|
//#include <qwidget.h>
|
|
#include <qhostaddress.h>
|
|
|
|
#include <kurl.h>
|
|
#include <kio/job.h>
|
|
|
|
#include <libkcal/calendar.h>
|
|
#include <libkcal/event.h>
|
|
|
|
class QSocketDevice;
|
|
class QSocketNotifier;
|
|
class QTextStream;
|
|
|
|
namespace KPIM {
|
|
|
|
class ExchangeAccount;
|
|
|
|
class ExchangeMonitor : public QObject {
|
|
Q_OBJECT
|
|
public:
|
|
typedef long ID;
|
|
typedef QValueList<ID> IDList;
|
|
|
|
enum { CallBack, Poll };
|
|
enum { Delete, /** Any: 0 The message or folder subscribed to was deleted.
|
|
Folder 1 A message or folder was deleted from the folder. */
|
|
Move, /** Any: 0 The message or folder was moved.
|
|
Folder 1 A message or folder was moved from or to the folder. */
|
|
Newmail, /** Mailbox or Folder Any Special new mail update.
|
|
Message Any Not valid - return 400 (Bad Request). */
|
|
Update, /** Message 0 The message was modified (either properties or body).
|
|
Folder 0 Properties of the folder were modified.
|
|
Folder 1 A message or sub-folder was created in the folder, copied to
|
|
the folder, moved to or from the folder, deleted from the folder,
|
|
modified in the folder, or the folder properties were modified. */
|
|
UpdateNewMember, /** Any 0 Not valid - return 400 (Bad Request).
|
|
Existing Folder 1 A message or sub-folder was created in the folder, copied to
|
|
the folder, or moved to the folder. */
|
|
Any /** Message 1 Treat as depth = 0. */
|
|
};
|
|
|
|
ExchangeMonitor( ExchangeAccount* account, int pollMode, const QHostAddress& ownInterface );
|
|
~ExchangeMonitor();
|
|
void addWatch( const KURL &url, int mode, int depth );
|
|
void removeWatch( const KURL &url );
|
|
void removeWatch( ID id );
|
|
|
|
signals:
|
|
void notify( const QValueList<long>& IDs, const QValueList<KURL>& urls );
|
|
// void added( ID id, const KURL& url );
|
|
// void removed( ID id, const KURL& url );
|
|
|
|
void error( int result, const QString& moreInfo );
|
|
|
|
private slots:
|
|
void slotSubscribeResult( KIO::Job * );
|
|
void slotUnsubscribeResult( KIO::Job * );
|
|
void slotPollTimer();
|
|
void poll( const IDList& IDs );
|
|
void slotPollResult( KIO::Job * );
|
|
void slotRenewTimer();
|
|
void slotRenewResult( KIO::Job * );
|
|
void slotActivated(int socket);
|
|
|
|
private:
|
|
// void init();
|
|
|
|
QMap<ID,KURL> mSubscriptionMap;
|
|
QSocketDevice *mSocket;
|
|
QSocketNotifier* mNotifier;
|
|
QTextStream *mStream;
|
|
ExchangeAccount* mAccount;
|
|
int mSubscriptionLifetime;
|
|
// QString mSubscriptionId;
|
|
QTimer* mPollTimer;
|
|
QTimer* mRenewTimer;
|
|
int mPollMode;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|