email_plat/nmail_client_api/nmapieventnotifier.h
changeset 18 578830873419
child 23 2dc6caa42ec3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email_plat/nmail_client_api/nmapieventnotifier.h	Fri Apr 16 14:51:52 2010 +0300
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+#ifndef NMAPIEVENTNOTIFIER_H
+#define NMAPIEVENTNOTIFIER_H
+
+#include <QtCore>
+#include "nmapimessagetask.h"
+#include "nmenginedef.h"
+#include "nmcommon_api.h"
+
+struct NmApiMessage;
+
+namespace EmailClientApi
+{
+class NmEventNotifierPrivate;
+
+/*
+ * Notifier for mailbox and message events
+ * 
+ * Example of use:
+ * NmEventNotifier *notifier = new NmEventNotifier(this);
+ * notifier->start();
+ * connect(notifier,SIGNAL(messageEvent(MessageEvent,quint64,quint64,QList<quint64>)),this,
+ *                  SLOT(processMessage(MessageEvent,quint64,quint64,QList<quint64>)),Qt::QueuedConnection);
+ * 
+ * And then when want to end need to do:
+ * notifier->cancel();
+ * delete notifier; // or notifier->deleteLater();
+ */
+class NMENGINE_EXPORT NmEventNotifier : public NmMessageTask
+{
+    Q_OBJECT
+public:
+    /*!
+     * Constructor
+     */
+    NmEventNotifier(QObject *parent);
+
+    /*!
+     * Destructor
+     */
+    virtual ~NmEventNotifier();
+
+    /*!
+     * Start monitoring email events
+     * 
+     * Return value tells about monitoring system running
+     */
+    virtual bool start();
+
+    /*!
+     * Cancels monitoring.
+     * 
+     * In user responsibility is to cancel monitoring.
+     * On end it clear buffer events and emits \sa NmMessageTask::canceled() signal.
+     */
+    virtual void cancel();
+
+    /*!
+     * It check if if event notifier is running.
+     */
+    bool isRunning() const;
+
+    signals:
+    /*!
+     * This signal is emited when buffer of maiblox events is ready to send. Buffer is list of mailbox events with id.
+     * 
+     * 
+     * It emits signals grouped by events. So there will be as much signals as much there are events.
+     * For safety when connect it need to use \sa Qt::QueuedConnection.
+     * After that use \sa EmailClientApi::NmEmailService::getMailbox to get object.
+     * \arg Event of mailbox
+     * \arg List of mailbox ids where event occur.
+     */
+    void mailboxEvent(MailboxEvent event,QList<quint64> id);
+
+    /*!
+     * This signal is emited when buffer of messages events is ready to send. Buffer is list of messages events with id.
+     *
+     * It emits signals grouped by events, mailbox and folder. So there will be as much signals as much there are events.
+     * For safety when connect it need to use \sa Qt::QueuedConnection.
+     * After that use \sa EmailClientApi::NmEmailService::getEnvelope to get object.
+     * 
+     * \arg Event of messages
+     * \arg Message mailbox
+     * \arg Message folder
+     * \arg List of messages ids where event occur
+     */
+    void messageEvent(MessageEvent event,quint64 mailboxId,quint64 folderId,QList<quint64> envelopeIdList);
+
+public slots:
+    /*!
+     * It check each object in buffer and emit signal with it.
+     * 
+     * After end of work of this function buffer is empty.
+     * It is called by timeout signal from timer.
+     */
+    void sendEventsFromBuffer();
+
+private:
+    NmEventNotifierPrivate *mNmEventNotifierPrivate;
+};
+
+}
+
+Q_DECLARE_METATYPE(QList<quint64>)
+
+#endif