emailservices/nmclientapi/src/nmapieventnotifier.cpp
changeset 49 00c7ae862740
parent 48 10eaf342f539
child 68 83cc6bae1de8
--- a/emailservices/nmclientapi/src/nmapieventnotifier.cpp	Tue Jun 29 17:12:28 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapieventnotifier.cpp	Fri Jul 02 15:55:16 2010 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * Copyright (c) 2009 - 2010 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"
@@ -18,24 +18,19 @@
 #include "nmapiheaders.h"
 
 
-const quint32 IntervalEmitingSignals = 10000;
 
 namespace EmailClientApi
 {
 /*!
    Constructor
  */
-NmApiEventNotifier::NmApiEventNotifier(QObject *parent) :
-    NmApiMessageTask(parent)
-
+NmApiEventNotifier::NmApiEventNotifier(QObject *parent) 
+:NmApiMessageTask(parent)
 {
     NM_FUNCTION;
     
-    //set timer
     mNmApiEventNotifierPrivate = new NmApiEventNotifierPrivate(this);
-    mNmApiEventNotifierPrivate->mEmitSignals = new QTimer(this);
-    mNmApiEventNotifierPrivate->mEmitSignals->setInterval(IntervalEmitingSignals);
-    connect(mNmApiEventNotifierPrivate->mEmitSignals, SIGNAL(timeout()), this, SLOT(
+    connect(mNmApiEventNotifierPrivate, SIGNAL(timedOut()), this, SLOT(
         sendEventsFromBuffer()), Qt::QueuedConnection);
 
 }
@@ -46,9 +41,8 @@
 NmApiEventNotifier::~NmApiEventNotifier()
 {
     NM_FUNCTION;
-    
-    if (mNmApiEventNotifierPrivate->mIsRunning) {
-        mNmApiEventNotifierPrivate->releaseEngine();
+    if (mNmApiEventNotifierPrivate) {
+        mNmApiEventNotifierPrivate->stop();
     }
 }
 
@@ -61,39 +55,14 @@
 {
     NM_FUNCTION;
     
-    bool result = false;
-
-    if (mNmApiEventNotifierPrivate->mIsRunning) {
-        result = true;
-    }
-    else {
-        if (!mNmApiEventNotifierPrivate->initializeEngine()) {
-            mNmApiEventNotifierPrivate->mIsRunning = false;
-            result = false;
-        }
-        else {
-            qRegisterMetaType<QList<quint64> > ("QList<quint64>");
-            qRegisterMetaType<NmApiMessage> ("NmApiMessage");
-
-            connect(mNmApiEventNotifierPrivate->mEngine, SIGNAL(emailStoreEvent(NmApiMessage)), mNmApiEventNotifierPrivate,
-                SLOT(emailStoreEvent(NmApiMessage)), Qt::QueuedConnection);
-            
-            // initiate event listening
-            mNmApiEventNotifierPrivate->mEngine->startCollectingEvents();
-            
-            mNmApiEventNotifierPrivate->mEmitSignals->start();
-            mNmApiEventNotifierPrivate->mIsRunning = true;
-            result = true;
-        }
-    }
-    return result;
+    return mNmApiEventNotifierPrivate->start();
 }
 
 /*!
    Cancels monitoring.
    
    In user responsibility is to cancel monitoring.
-   On end it clear buffer events and emits \sa NmApiMessageTask::canceled() signal.
+   On end it clears buffer events and emits \sa NmApiMessageTask::canceled() signal.
  */
 void NmApiEventNotifier::cancel()
 {
@@ -110,14 +79,13 @@
 {
     NM_FUNCTION;
     
-    return mNmApiEventNotifierPrivate->mIsRunning;
+    return mNmApiEventNotifierPrivate->isRunning();
 }
 
 /*!
-   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.
+   Checks each object in buffer and emits corresponding signal.
+   Uses scheduled transmission. Can be called also directly to force the 
+   signal sending.
  */
 void NmApiEventNotifier::sendEventsFromBuffer()
 {
@@ -126,53 +94,41 @@
     qRegisterMetaType<EmailClientApi::NmApiMailboxEvent> ("EmailClientApi::NmApiMailboxEvent");
     qRegisterMetaType<EmailClientApi::NmApiMessageEvent> ("EmailClientApi::NmApiMessageEvent");
     
-    NmApiMessage events;
-    while (!mNmApiEventNotifierPrivate->mBufferOfEvents.isEmpty()) {
-        events = mNmApiEventNotifierPrivate->mBufferOfEvents.takeFirst();
-        switch (events.objectType) {
+    QList<NmApiMessage> events;
+    mNmApiEventNotifierPrivate->events(events);
+    while (!events.isEmpty()) {
+        NmApiMessage event = events.takeFirst();
+        switch (event.objectType) {
             case EMailbox:
-                switch (events.action) {
-                    case ENew:
-                        emit mailboxEvent(MailboxCreated, events.objectIds);
-                        break;
-                    case EChange:
-
-                        break;
-                    case EDeleted:
-                        emit mailboxEvent(MailboxDeleted, events.objectIds);
-                        break;
-                    default:
-                        break;
-                }
-                break;
-            case EFolder:
-                switch (events.action) {
-                    case ENew:
-
-                        break;
-                    case EChange:
-
-                        break;
-                    case EDeleted:
-
-                        break;
+                switch (event.action) {
+                    case ENew: {
+                        emit mailboxEvent(MailboxCreated, event.objectIds);
+                    } 
+                    break;
+                    case EDeleted: {
+                        emit mailboxEvent(MailboxDeleted, event.objectIds);
+                    }
+                    break;
                     default:
                         break;
                 }
                 break;
             case EMessage:
-                switch (events.action) {
-                    case ENew:
-                        emit messageEvent(MessageCreated, events.mailboxId, events.folderId,
-                            events.objectIds);
+                switch (event.action) {
+                    case ENew: {
+                        emit messageEvent(MessageCreated, event.mailboxId, event.folderId,
+                            event.objectIds);
+                        }
                         break;
-                    case EChange:
-                        emit messageEvent(MessageChanged, events.mailboxId, events.folderId,
-                            events.objectIds);
+                    case EChange: {
+                        emit messageEvent(MessageChanged, event.mailboxId, event.folderId,
+                            event.objectIds);
+                        }
                         break;
-                    case EDeleted:
-                        emit messageEvent(MessageDeleted, events.mailboxId, events.folderId,
-                            events.objectIds);
+                    case EDeleted: {
+                        emit messageEvent(MessageDeleted, event.mailboxId, event.folderId,
+                            event.objectIds);
+                        }
                         break;
                     default:
                         break;
@@ -182,6 +138,7 @@
                 break;
         }
     }
+    events.clear();
 }
 
 } //End of EmailClientApi